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)
|
- [Usage](#usage)
|
||||||
- [VSCode](#vscode)
|
- [VSCode](#vscode)
|
||||||
- [Sublime Text 3](#sublime-text-3)
|
- [Sublime Text 3](#sublime-text-3)
|
||||||
|
- [Kate](#kate)
|
||||||
- [Related Projects](#related-projects)
|
- [Related Projects](#related-projects)
|
||||||
- [License](#license)
|
- [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
|
## Related Projects
|
||||||
- [`sublime-zig-language` by @prime31](https://github.com/prime31/sublime-zig-language)
|
- [`sublime-zig-language` by @prime31](https://github.com/prime31/sublime-zig-language)
|
||||||
- Supports basic language features
|
- Supports basic language features
|
||||||
|
30
build.zig
30
build.zig
@ -11,7 +11,7 @@ pub fn config(step: *std.build.Step) anyerror!void {
|
|||||||
std.debug.warn("Welcome to the ZLS configuration wizard! (insert mage emoji here)\n", .{});
|
std.debug.warn("Welcome to the ZLS configuration wizard! (insert mage emoji here)\n", .{});
|
||||||
|
|
||||||
// std.debug.warn("{}", .{dir.});
|
// std.debug.warn("{}", .{dir.});
|
||||||
|
|
||||||
const lib_path = try zinput.askDirPath(builder.allocator, "What is your Zig lib path (path that contains the 'std' folder)?", 512);
|
const lib_path = try zinput.askDirPath(builder.allocator, "What is your Zig lib path (path that contains the 'std' folder)?", 512);
|
||||||
const snippets = try zinput.askBool("Do you want to enable snippets?");
|
const snippets = try zinput.askBool("Do you want to enable snippets?");
|
||||||
const style = try zinput.askBool("Do you want to enable style warnings?");
|
const style = try zinput.askBool("Do you want to enable style warnings?");
|
||||||
@ -25,18 +25,16 @@ pub fn config(step: *std.build.Step) anyerror!void {
|
|||||||
const out = file.outStream();
|
const out = file.outStream();
|
||||||
|
|
||||||
std.debug.warn("Writing to config...\n", .{});
|
std.debug.warn("Writing to config...\n", .{});
|
||||||
|
|
||||||
const content = std.json.stringify(.{
|
|
||||||
|
|
||||||
|
const content = std.json.stringify(.{
|
||||||
.zig_lib_path = lib_path,
|
.zig_lib_path = lib_path,
|
||||||
.enable_snippets = snippets,
|
.enable_snippets = snippets,
|
||||||
.warn_style = style
|
.warn_style = style,
|
||||||
|
|
||||||
}, std.json.StringifyOptions{}, out);
|
}, std.json.StringifyOptions{}, out);
|
||||||
|
|
||||||
std.debug.warn("Successfully saved configuration options!\n", .{});
|
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", .{});
|
std.debug.warn("\n", .{});
|
||||||
|
|
||||||
switch (editor) {
|
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 => {
|
.Other => {
|
||||||
std.debug.warn(
|
std.debug.warn(
|
||||||
\\We might not *officially* support your editor, but you can definitely still use ZLS!
|
\\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!
|
\\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", .{});
|
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 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);
|
defer b.allocator.free(data_version);
|
||||||
exe.addBuildOption(
|
exe.addBuildOption(
|
||||||
[]const u8,
|
[]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,
|
.build_file = build_file,
|
||||||
.allocator = self.allocator,
|
.allocator = self.allocator,
|
||||||
.build_runner_path = self.build_runner_path,
|
.build_runner_path = self.build_runner_path,
|
||||||
}) catch {
|
}) catch |err| {
|
||||||
std.debug.warn("Failed to load packages of build file {}\n", .{build_file.uri});
|
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: {
|
} else if (self.has_zig and !in_std) associate_build_file: {
|
||||||
// Look into build files to see if we already have one that fits
|
// 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;
|
return;
|
||||||
|
|
||||||
std.debug.warn("Freeing document: {}\n", .{uri});
|
std.debug.warn("Freeing document: {}\n", .{uri});
|
||||||
|
|
||||||
entry.value.tree.deinit();
|
entry.value.tree.deinit();
|
||||||
self.allocator.free(entry.value.document.mem);
|
self.allocator.free(entry.value.document.mem);
|
||||||
|
|
||||||
@ -288,11 +287,10 @@ fn decrementCount(self: *DocumentStore, uri: []const u8) void {
|
|||||||
}
|
}
|
||||||
|
|
||||||
entry.value.import_uris.deinit();
|
entry.value.import_uris.deinit();
|
||||||
|
self.allocator.destroy(entry.value);
|
||||||
const uri_key = entry.key;
|
const uri_key = entry.key;
|
||||||
self.handles.removeAssertDiscard(uri);
|
self.handles.removeAssertDiscard(uri);
|
||||||
self.allocator.free(uri_key);
|
self.allocator.free(uri_key);
|
||||||
self.allocator.destroy(entry.value);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -426,8 +424,8 @@ pub fn applyChanges(
|
|||||||
.build_file = build_file,
|
.build_file = build_file,
|
||||||
.allocator = self.allocator,
|
.allocator = self.allocator,
|
||||||
.build_runner_path = self.build_runner_path,
|
.build_runner_path = self.build_runner_path,
|
||||||
}) catch {
|
}) catch |err| {
|
||||||
std.debug.warn("Failed to load packages of build file {}\n", .{build_file.uri});
|
std.debug.warn("Failed to load packages of build file {} (error: {})\n", .{build_file.uri, err});
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user