Merge branch 'master' of https://github.com/SuperAuguste/zls into new_pos_context
This commit is contained in:
commit
54f3590b6d
18
README.md
18
README.md
@ -13,6 +13,7 @@ Zig Language Server, or `zls`, is a language server for Zig. The Zig wiki states
|
||||
- [Usage](#usage)
|
||||
- [VSCode](#vscode)
|
||||
- [Sublime Text 3](#sublime-text-3)
|
||||
- [Kate](#kate)
|
||||
- [Related Projects](#related-projects)
|
||||
- [License](#license)
|
||||
|
||||
@ -82,6 +83,23 @@ Install the `zls-vscode` extension from [here](https://github.com/zigtools/zls-v
|
||||
}
|
||||
```
|
||||
|
||||
### Kate
|
||||
|
||||
- Enable `LSP client` plugin in Kate settings.
|
||||
- Add this snippet to `LSP client's` user settings (e.g. /$HOME/.config/kate/lspclient)
|
||||
(or paste it in `LSP client's` GUI settings)
|
||||
```json
|
||||
{
|
||||
"servers": {
|
||||
"zig": {
|
||||
"command": ["zls"],
|
||||
"url": "https://github.com/zigtools/zls",
|
||||
"highlightingModeRegex": "^Zig$"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Related Projects
|
||||
- [`sublime-zig-language` by @prime31](https://github.com/prime31/sublime-zig-language)
|
||||
- Supports basic language features
|
||||
|
26
build.zig
26
build.zig
@ -27,16 +27,14 @@ pub fn config(step: *std.build.Step) anyerror!void {
|
||||
std.debug.warn("Writing to config...\n", .{});
|
||||
|
||||
const content = std.json.stringify(.{
|
||||
|
||||
.zig_lib_path = lib_path,
|
||||
.enable_snippets = snippets,
|
||||
.warn_style = style
|
||||
|
||||
.warn_style = style,
|
||||
}, std.json.StringifyOptions{}, out);
|
||||
|
||||
std.debug.warn("Successfully saved configuration options!\n", .{});
|
||||
|
||||
const editor = try zinput.askSelectOne("Which code editor do you use?", enum { VSCode, Sublime, Other });
|
||||
const editor = try zinput.askSelectOne("Which code editor do you use?", enum { VSCode, Sublime, Kate, Other });
|
||||
std.debug.warn("\n", .{});
|
||||
|
||||
switch (editor) {
|
||||
@ -64,12 +62,28 @@ pub fn config(step: *std.build.Step) anyerror!void {
|
||||
\\}}
|
||||
, .{});
|
||||
},
|
||||
.Kate => {
|
||||
std.debug.warn(
|
||||
\\To use ZLS in Kate, enable `LSP client` plugin in Kate settings.
|
||||
\\Then, add the following snippet to `LSP client's` user settings:
|
||||
\\(or paste it in `LSP client's` GUI settings)
|
||||
\\{{
|
||||
\\ "servers": {{
|
||||
\\ "zig": {{
|
||||
\\ "command": ["zls"],
|
||||
\\ "url": "https://github.com/zigtools/zls",
|
||||
\\ "highlightingModeRegex": "^Zig$"
|
||||
\\ }}
|
||||
\\ }}
|
||||
\\}}
|
||||
, .{});
|
||||
},
|
||||
.Other => {
|
||||
std.debug.warn(
|
||||
\\We might not *officially* support your editor, but you can definitely still use ZLS!
|
||||
\\Simply configure your editor for use with language servers and point it to the ZLS executable!
|
||||
, .{});
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
std.debug.warn("\nYou can find the ZLS executable in the \"zig-cache/bin\" by default.\nNOTE: Make sure that if you move the ZLS executable, you move the `zls.json` config file with it as well!\n\nAnd finally: Thanks for choosing ZLS!\n\n", .{});
|
||||
@ -89,7 +103,7 @@ pub fn build(b: *std.build.Builder) !void {
|
||||
|
||||
const exe = b.addExecutable("zls", "src/main.zig");
|
||||
|
||||
const data_version = try std.mem.concat(b.allocator, u8, &[3][]const u8{"\"", b.option([]const u8, "data_version", "The data version - either 0.6.0 or master.") orelse "0.6.0", "\""});
|
||||
const data_version = try std.mem.concat(b.allocator, u8, &[3][]const u8{ "\"", b.option([]const u8, "data_version", "The data version - either 0.6.0 or master.") orelse "0.6.0", "\"" });
|
||||
defer b.allocator.free(data_version);
|
||||
exe.addBuildOption(
|
||||
[]const u8,
|
||||
|
@ -130,7 +130,7 @@ fn loadPackages(context: LoadPackagesContext) !void {
|
||||
}
|
||||
}
|
||||
},
|
||||
else => {},
|
||||
else => return error.RunFailed,
|
||||
}
|
||||
}
|
||||
|
||||
@ -178,8 +178,8 @@ fn newDocument(self: *DocumentStore, uri: []const u8, text: []u8) anyerror!*Hand
|
||||
.build_file = build_file,
|
||||
.allocator = self.allocator,
|
||||
.build_runner_path = self.build_runner_path,
|
||||
}) catch {
|
||||
std.debug.warn("Failed to load packages of build file {}\n", .{build_file.uri});
|
||||
}) catch |err| {
|
||||
std.debug.warn("Failed to load packages of build file {} (error: {})\n", .{build_file.uri, err});
|
||||
};
|
||||
} else if (self.has_zig and !in_std) associate_build_file: {
|
||||
// Look into build files to see if we already have one that fits
|
||||
@ -278,7 +278,6 @@ fn decrementCount(self: *DocumentStore, uri: []const u8) void {
|
||||
return;
|
||||
|
||||
std.debug.warn("Freeing document: {}\n", .{uri});
|
||||
|
||||
entry.value.tree.deinit();
|
||||
self.allocator.free(entry.value.document.mem);
|
||||
|
||||
@ -288,11 +287,10 @@ fn decrementCount(self: *DocumentStore, uri: []const u8) void {
|
||||
}
|
||||
|
||||
entry.value.import_uris.deinit();
|
||||
|
||||
self.allocator.destroy(entry.value);
|
||||
const uri_key = entry.key;
|
||||
self.handles.removeAssertDiscard(uri);
|
||||
self.allocator.free(uri_key);
|
||||
self.allocator.destroy(entry.value);
|
||||
}
|
||||
}
|
||||
|
||||
@ -426,8 +424,8 @@ pub fn applyChanges(
|
||||
.build_file = build_file,
|
||||
.allocator = self.allocator,
|
||||
.build_runner_path = self.build_runner_path,
|
||||
}) catch {
|
||||
std.debug.warn("Failed to load packages of build file {}\n", .{build_file.uri});
|
||||
}) catch |err| {
|
||||
std.debug.warn("Failed to load packages of build file {} (error: {})\n", .{build_file.uri, err});
|
||||
};
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user