Merge branch 'master' of https://github.com/SuperAuguste/zls into new_pos_context

This commit is contained in:
Alexandros Naskos 2020-05-27 13:47:12 +03:00
commit 54f3590b6d
3 changed files with 46 additions and 16 deletions

View File

@ -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

View File

@ -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,

View File

@ -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});
};
}
}