This commit is contained in:
Alexandros Naskos 2020-05-26 01:52:25 +03:00
commit 9bf0842697
5 changed files with 87 additions and 2 deletions

3
.gitmodules vendored
View File

@ -1,3 +1,6 @@
[submodule "src/known-folders"] [submodule "src/known-folders"]
path = src/known-folders path = src/known-folders
url = https://github.com/ziglibs/known-folders url = https://github.com/ziglibs/known-folders
[submodule "src/zinput"]
path = src/zinput
url = https://github.com/ziglibs/zinput

View File

@ -24,6 +24,9 @@ Installing `zls` is pretty simple;
git clone --recurse-submodules https://github.com/zigtools/zls git clone --recurse-submodules https://github.com/zigtools/zls
cd zls cd zls
zig build zig build
# To configure ZLS:
zig build config
``` ```
### Build Options ### Build Options

View File

@ -1,8 +1,82 @@
const std = @import("std"); const std = @import("std");
const builtin = @import("builtin"); const builtin = @import("builtin");
// const build_options = @import("build_options"); // const build_options = @import("build_options")
const zinput = @import("src/zinput/src/main.zig");
var builder: *std.build.Builder = undefined;
pub fn config(step: *std.build.Step) anyerror!void {
@setEvalBranchQuota(2500);
std.debug.warn("Welcome to the ZLS configuration wizard! (insert mage emoji here)\n", .{});
// 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 snippets = try zinput.askBool("Do you want to enable snippets?");
const style = try zinput.askBool("Do you want to enable style warnings?");
var dir = try std.fs.cwd().openDir(builder.exe_dir, .{});
defer dir.close();
var file = try dir.openFile("zls.json", .{ .write = true });
defer file.close();
const out = file.outStream();
std.debug.warn("Writing to config...\n", .{});
const content = std.json.stringify(.{
.zig_lib_path = lib_path,
.enable_snippets = snippets,
.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 });
std.debug.warn("\n", .{});
switch (editor) {
.VSCode => {
std.debug.warn(
\\To use ZLS in Visual Studio Code, install the 'ZLS for VSCode' extension.
\\Then, open VSCode's 'settings.json' file, and add `"zigLanguageClient.path": "[command_or_path_to_zls]"`.
, .{});
},
.Sublime => {
std.debug.warn(
\\To use ZLS in Sublime, install the `LSP` package from `https://github.com/sublimelsp/LSP/releases` or via Package Control.
\\Then, add the following snippet to `LSP`'s user settings:
\\
\\{{
\\ "clients": {{
\\ "zig": {{
\\ "command": ["zls"],
\\ "enabled": true,
\\ "languageId": "zig",
\\ "document_selector": "source.zig",
\\ "syntaxes": ["Packages/Zig/Syntaxes/Zig.tmLanguage"]
\\ }}
\\ }}
\\}}
, .{});
},
.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", .{});
}
pub fn build(b: *std.build.Builder) !void { pub fn build(b: *std.build.Builder) !void {
builder = b;
// Standard target options allows the person running `zig build` to choose // Standard target options allows the person running `zig build` to choose
// what target to build for. Here we do not override the defaults, which // what target to build for. Here we do not override the defaults, which
// means any target is allowed, and the default is native. Other options // means any target is allowed, and the default is native. Other options
@ -42,4 +116,8 @@ pub fn build(b: *std.build.Builder) !void {
const run_step = b.step("run", "Run the app"); const run_step = b.step("run", "Run the app");
run_step.dependOn(&run_cmd.step); run_step.dependOn(&run_cmd.step);
// const configure_step = std.build.Step.init("config", b.allocator, config);
const configure_step = b.step("config", "Configure zls");
configure_step.makeFn = config;
} }

@ -1 +1 @@
Subproject commit 42a32b0241a5aaeaa09d7edeceefc5384b4eb466 Subproject commit 010894998188603cfc7728dbd05447cb9891e551

1
src/zinput Submodule

@ -0,0 +1 @@
Subproject commit 668b1ca36b6648230deec08b41656bef555750be