feat: make --no-syntax just disable syntax highlighting and not language server support
This commit is contained in:
parent
5182756f1d
commit
f4dd30b1c2
2 changed files with 15 additions and 14 deletions
|
@ -26,7 +26,7 @@ query: *Query,
|
||||||
injections: *Query,
|
injections: *Query,
|
||||||
tree: ?*treez.Tree = null,
|
tree: ?*treez.Tree = null,
|
||||||
|
|
||||||
pub fn create(file_type: *const FileType, allocator: std.mem.Allocator, content: []const u8) !*Self {
|
pub fn create(file_type: *const FileType, allocator: std.mem.Allocator) !*Self {
|
||||||
const self = try allocator.create(Self);
|
const self = try allocator.create(Self);
|
||||||
self.* = .{
|
self.* = .{
|
||||||
.allocator = allocator,
|
.allocator = allocator,
|
||||||
|
@ -38,18 +38,17 @@ pub fn create(file_type: *const FileType, allocator: std.mem.Allocator, content:
|
||||||
};
|
};
|
||||||
errdefer self.destroy();
|
errdefer self.destroy();
|
||||||
try self.parser.setLanguage(self.lang);
|
try self.parser.setLanguage(self.lang);
|
||||||
try self.refresh_full(content);
|
|
||||||
return self;
|
return self;
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_file_type(allocator: std.mem.Allocator, content: []const u8, lang_name: []const u8) !*Self {
|
pub fn create_file_type(allocator: std.mem.Allocator, lang_name: []const u8) !*Self {
|
||||||
const file_type = FileType.get_by_name(lang_name) orelse return error.NotFound;
|
const file_type = FileType.get_by_name(lang_name) orelse return error.NotFound;
|
||||||
return create(file_type, allocator, content);
|
return create(file_type, allocator);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn create_guess_file_type(allocator: std.mem.Allocator, content: []const u8, file_path: ?[]const u8) !*Self {
|
pub fn create_guess_file_type(allocator: std.mem.Allocator, content: []const u8, file_path: ?[]const u8) !*Self {
|
||||||
const file_type = FileType.guess(file_path, content) orelse return error.NotFound;
|
const file_type = FileType.guess(file_path, content) orelse return error.NotFound;
|
||||||
return create(file_type, allocator, content);
|
return create(file_type, allocator);
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn destroy(self: *Self) void {
|
pub fn destroy(self: *Self) void {
|
||||||
|
|
|
@ -248,6 +248,7 @@ pub const Editor = struct {
|
||||||
} = .{},
|
} = .{},
|
||||||
|
|
||||||
syntax: ?*syntax = null,
|
syntax: ?*syntax = null,
|
||||||
|
syntax_no_render: bool = false,
|
||||||
syntax_refresh_full: bool = false,
|
syntax_refresh_full: bool = false,
|
||||||
syntax_token: usize = 0,
|
syntax_token: usize = 0,
|
||||||
syntax_refresh_update: bool = false,
|
syntax_refresh_update: bool = false,
|
||||||
|
@ -427,7 +428,7 @@ pub const Editor = struct {
|
||||||
if (self.buffer) |_| try self.close();
|
if (self.buffer) |_| try self.close();
|
||||||
self.buffer = new_buf;
|
self.buffer = new_buf;
|
||||||
|
|
||||||
self.syntax = if (tp.env.get().is("no-syntax")) null else syntax: {
|
self.syntax = syntax: {
|
||||||
if (new_buf.root.lines() > root_mod.max_syntax_lines)
|
if (new_buf.root.lines() > root_mod.max_syntax_lines)
|
||||||
break :syntax null;
|
break :syntax null;
|
||||||
const lang_override = tp.env.get().str("language");
|
const lang_override = tp.env.get().str("language");
|
||||||
|
@ -435,13 +436,14 @@ pub const Editor = struct {
|
||||||
defer content.deinit();
|
defer content.deinit();
|
||||||
try new_buf.root.store(content.writer(), new_buf.file_eol_mode);
|
try new_buf.root.store(content.writer(), new_buf.file_eol_mode);
|
||||||
const syn = if (lang_override.len > 0)
|
const syn = if (lang_override.len > 0)
|
||||||
syntax.create_file_type(self.allocator, content.items, lang_override) catch null
|
syntax.create_file_type(self.allocator, lang_override) catch null
|
||||||
else
|
else
|
||||||
syntax.create_guess_file_type(self.allocator, content.items, self.file_path) catch null;
|
syntax.create_guess_file_type(self.allocator, content.items, self.file_path) catch null;
|
||||||
if (syn) |syn_|
|
if (syn) |syn_|
|
||||||
project_manager.did_open(file_path, syn_.file_type, self.lsp_version, try content.toOwnedSlice()) catch {};
|
project_manager.did_open(file_path, syn_.file_type, self.lsp_version, try content.toOwnedSlice()) catch {};
|
||||||
break :syntax syn;
|
break :syntax syn;
|
||||||
};
|
};
|
||||||
|
self.syntax_no_render = tp.env.get().is("no-syntax");
|
||||||
|
|
||||||
const ftn = if (self.syntax) |syn| syn.file_type.name else "text";
|
const ftn = if (self.syntax) |syn| syn.file_type.name else "text";
|
||||||
const fti = if (self.syntax) |syn| syn.file_type.icon else "🖹";
|
const fti = if (self.syntax) |syn| syn.file_type.icon else "🖹";
|
||||||
|
@ -3063,6 +3065,7 @@ pub const Editor = struct {
|
||||||
if (self.syntax_token == token)
|
if (self.syntax_token == token)
|
||||||
return;
|
return;
|
||||||
if (self.syntax) |syn| {
|
if (self.syntax) |syn| {
|
||||||
|
if (self.syntax_no_render) return;
|
||||||
if (!self.syntax_refresh_update)
|
if (!self.syntax_refresh_update)
|
||||||
self.syntax_refresh_full = true;
|
self.syntax_refresh_full = true;
|
||||||
if (self.syntax_refresh_full) {
|
if (self.syntax_refresh_full) {
|
||||||
|
@ -3083,13 +3086,12 @@ pub const Editor = struct {
|
||||||
var content = std.ArrayList(u8).init(self.allocator);
|
var content = std.ArrayList(u8).init(self.allocator);
|
||||||
defer content.deinit();
|
defer content.deinit();
|
||||||
try root.store(content.writer(), eol_mode);
|
try root.store(content.writer(), eol_mode);
|
||||||
self.syntax = if (tp.env.get().is("no-syntax"))
|
self.syntax = syntax.create_guess_file_type(self.allocator, content.items, self.file_path) catch |e| switch (e) {
|
||||||
null
|
error.NotFound => null,
|
||||||
else
|
else => return e,
|
||||||
syntax.create_guess_file_type(self.allocator, content.items, self.file_path) catch |e| switch (e) {
|
};
|
||||||
error.NotFound => null,
|
if (self.syntax_no_render) return;
|
||||||
else => return e,
|
if (self.syntax) |syn| try syn.refresh_full(content.items);
|
||||||
};
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue