zig build config is here!
This commit is contained in:
parent
9c931ec715
commit
f5b30cfd6c
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -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
|
||||||
|
@ -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
|
||||||
|
80
build.zig
80
build.zig
@ -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
1
src/zinput
Submodule
@ -0,0 +1 @@
|
|||||||
|
Subproject commit 668b1ca36b6648230deec08b41656bef555750be
|
Loading…
Reference in New Issue
Block a user