diff --git a/README.md b/README.md index e396d5c..56762a1 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -![Zig Language Server](https://raw.githubusercontent.com/SuperAuguste/zls/master/.assets/zls.svg) +![Zig Language Server](https://raw.githubusercontent.com/zigtools/zls/master/.assets/zls.svg) ![CI](https://github.com/zigtools/zls/workflows/CI/badge.svg) ![Zig Tools](https://img.shields.io/static/v1?label=zigtools&message=for%20all%20of%20ziguanity&color=F7A41D&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAIAAACRXR/mAAAEDklEQVR4nOzYbUwbZRwA8Oe53vXuSltaa2lxc+KKBGcyBhLDgH3SiSMZ++TQRT8uJH4x8S0myL6YmUjUbIkfZvZtX3TJlAwjiYImxuBwa1hEtxAcQ8GFQrtBWXvXu17vTH1ux1lv99IeLcn6//Rw9/D0l+ft/28xsC2jyrISVZaV2KYsfCsGxSDYs5OIhPCAB0tlpFt3hF//yqYyUsVYrQ3Eaz2ew0/Tta7/rENOlCZnuTMTqZHLrJlxoF2ggAf7+FVff2eNfrf+U/HRaMZwNHtmqzGMf/NucNfDxqNFQqY+0QZWYxifGKoL1TrQnzlRGrvKXphio/M8ANLEUKjeL7+aW86e+5EpB4vEwRevBxTTtSX++Gd3rv6ZBQCEfdi3g3VqU8/J1dspsRysd454n3rUidq//MH1Dcc3WEkxNdUTalNsXTYFPNgr3TULcWE0qn0CStryXhoufPqIi8wfusWE0DEYW0sbm9Rvj52Oj1zROAElXacvd7mQCQAwdH4dmdwUNGkCAAwc9GiOXBKrp4VGjcWEcGFKXo6B59wmTQCA7mbSTWmsWEmstsflXfXdTEa8d4e375YfMpx46AM9EwDAgcGWXYSdLAyCkE8+Zdf/5pXnqxs51HCR2Pv9PgxqmJbXckr/HQGHnSx1cNnN9tnvU5msPHXHumvODjy0w194AvqGV5X+bkrDUDxLlPI3J2rXujb3x+9LwoufxNWymY/qC3Ybw22m7cTdnJ0sAMD8ioAaHU+Q6ucTv3FqmXJalRPQHnEqnW/GBJtZk7Mcajy/l/bSUEdWcCqP7pczejItXr+lwSr+lg/7sK5meZIoJ2x5jPhpli+QHTixcvxZd73fcfkGd2Y8hUqu1gbihX0U6vP1NCNqlWFF3vL/v8c7BmMsb/yPXhr+cKJOyVed78VQAi2IYhZRM7eYMflr4MjbQcV0/ue0pqkYln6+o53wwJNkwT5Dl9zR/fTUyXBnk7zuiwnhzXPr9/sUa3vLZA7OZKXxGfbSHJ9kRIqAe3YSB/dS6iIxsZHrG47rFDkW9pb5ukA/ri3xL52+fUPrXlDC7GzZYmI48dTY3eGLG5weyTTLkmluOTs5y3U1k5EQ7vg3I64kc9F5fnwm8/lkGhWJhmHMsmpSvy06DE5iRUwGrEqZ9FgYBF++EayISY91pJ1qu1dnltmkx+ptlev0JCOW2aTH8rvlWvbKPFdmkx5rNSkXjZ1NZGMYL6dJL/kc2kd99VYQtRlOvDTHt0ecys9DW2rKfyO634ubK0J3M9kQzM8TgcPdIZwiYHlMeiwJgNEo+0yjE8mUmF7gD38Y31KTcQWBQdDbSvW20XVex1paHJtmL0ZZzTL3gYht+ktzlWUlqiwrUWVZiX8CAAD//7jyYLmjqPd4AAAAAElFTkSuQmCC) @@ -20,7 +20,7 @@ Zig Language Server, or `zls`, is a language server for Zig. The Zig wiki states Installing `zls` is pretty simple; ```bash -git clone https://github.com/SuperAuguste/zls +git clone https://github.com/zigtools/zls cd zls zig build ``` @@ -44,6 +44,7 @@ The following options are currently available. | --- | --- | --- | --- | | `enable_snippets` | `bool` | `true` | Enables snippet completion, set to false for compatibility with language clients that do not support snippets (such as ale). | | `zig_lib_path` | `?[]const u8` | `null` | zig library path, used to analyze std library imports. | +| `warn_style` | `bool` | `false` | Enables warnings for style *guideline* mismatches | ## Usage diff --git a/src/config.zig b/src/config.zig index 1b70383..36c94cd 100644 --- a/src/config.zig +++ b/src/config.zig @@ -5,3 +5,7 @@ enable_snippets: bool = true, /// zig library path zig_lib_path: ?[]const u8 = null, + +/// Whether to pay attention to style issues. This is opt-in since the style +/// guide explicitly states that the style info provided is a guideline only. +warn_style: bool = false, diff --git a/src/main.zig b/src/main.zig index 7e25fc5..6db997a 100644 --- a/src/main.zig +++ b/src/main.zig @@ -137,34 +137,36 @@ fn publishDiagnostics(handle: DocumentStore.Handle, config: Config) !void { if (is_extern) break :blk; - if (func.name_token) |name_token| { - const loc = tree.tokenLocation(0, name_token); + if (config.warn_style) { + if (func.name_token) |name_token| { + const loc = tree.tokenLocation(0, name_token); - const is_type_function = switch (func.return_type) { - .Explicit => |node| if (node.cast(std.zig.ast.Node.Identifier)) |ident| - std.mem.eql(u8, tree.tokenSlice(ident.token), "type") - else - false, - .InferErrorSet, .Invalid => false, - }; + const is_type_function = switch (func.return_type) { + .Explicit => |node| if (node.cast(std.zig.ast.Node.Identifier)) |ident| + std.mem.eql(u8, tree.tokenSlice(ident.token), "type") + else + false, + .InferErrorSet, .Invalid => false, + }; - const func_name = tree.tokenSlice(name_token); - if (!is_type_function and !analysis.isCamelCase(func_name)) { - try diagnostics.append(.{ - .range = astLocationToRange(loc), - .severity = .Information, - .code = "BadStyle", - .source = "zls", - .message = "Functions should be camelCase", - }); - } else if (is_type_function and !analysis.isPascalCase(func_name)) { - try diagnostics.append(.{ - .range = astLocationToRange(loc), - .severity = .Information, - .code = "BadStyle", - .source = "zls", - .message = "Type functions should be PascalCase", - }); + const func_name = tree.tokenSlice(name_token); + if (!is_type_function and !analysis.isCamelCase(func_name)) { + try diagnostics.append(.{ + .range = astLocationToRange(loc), + .severity = .Information, + .code = "BadStyle", + .source = "zls", + .message = "Functions should be camelCase", + }); + } else if (is_type_function and !analysis.isPascalCase(func_name)) { + try diagnostics.append(.{ + .range = astLocationToRange(loc), + .severity = .Information, + .code = "BadStyle", + .source = "zls", + .message = "Type functions should be PascalCase", + }); + } } } },