Merge pull request #38 from pixelherodev/master

Make style guideline warnings opt-in
This commit is contained in:
Auguste Rame 2020-05-15 15:42:13 -04:00 committed by GitHub
commit d9e585954b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 33 additions and 26 deletions

View File

@ -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). | | `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. | | `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 ## Usage

View File

@ -5,3 +5,7 @@ enable_snippets: bool = true,
/// zig library path /// zig library path
zig_lib_path: ?[]const u8 = null, 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,

View File

@ -137,34 +137,36 @@ fn publishDiagnostics(handle: DocumentStore.Handle, config: Config) !void {
if (is_extern) if (is_extern)
break :blk; break :blk;
if (func.name_token) |name_token| { if (config.warn_style) {
const loc = tree.tokenLocation(0, name_token); if (func.name_token) |name_token| {
const loc = tree.tokenLocation(0, name_token);
const is_type_function = switch (func.return_type) { const is_type_function = switch (func.return_type) {
.Explicit => |node| if (node.cast(std.zig.ast.Node.Identifier)) |ident| .Explicit => |node| if (node.cast(std.zig.ast.Node.Identifier)) |ident|
std.mem.eql(u8, tree.tokenSlice(ident.token), "type") std.mem.eql(u8, tree.tokenSlice(ident.token), "type")
else else
false, false,
.InferErrorSet, .Invalid => false, .InferErrorSet, .Invalid => false,
}; };
const func_name = tree.tokenSlice(name_token); const func_name = tree.tokenSlice(name_token);
if (!is_type_function and !analysis.isCamelCase(func_name)) { if (!is_type_function and !analysis.isCamelCase(func_name)) {
try diagnostics.append(.{ try diagnostics.append(.{
.range = astLocationToRange(loc), .range = astLocationToRange(loc),
.severity = .Information, .severity = .Information,
.code = "BadStyle", .code = "BadStyle",
.source = "zls", .source = "zls",
.message = "Functions should be camelCase", .message = "Functions should be camelCase",
}); });
} else if (is_type_function and !analysis.isPascalCase(func_name)) { } else if (is_type_function and !analysis.isPascalCase(func_name)) {
try diagnostics.append(.{ try diagnostics.append(.{
.range = astLocationToRange(loc), .range = astLocationToRange(loc),
.severity = .Information, .severity = .Information,
.code = "BadStyle", .code = "BadStyle",
.source = "zls", .source = "zls",
.message = "Type functions should be PascalCase", .message = "Type functions should be PascalCase",
}); });
}
} }
} }
}, },