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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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("{}", .{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?");
 | 
			
		||||
@ -25,18 +25,16 @@ pub fn config(step: *std.build.Step) anyerror!void {
 | 
			
		||||
    const out = file.outStream();
 | 
			
		||||
 | 
			
		||||
    std.debug.warn("Writing to config...\n", .{});
 | 
			
		||||
    
 | 
			
		||||
    const content = std.json.stringify(.{
 | 
			
		||||
 | 
			
		||||
    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