Removed struct, enum, opaque, union token types, added them to token modifiers
This commit is contained in:
		
							parent
							
								
									42cbcdf751
								
							
						
					
					
						commit
						d877019abe
					
				| @ -5,12 +5,7 @@ const analysis = @import("analysis.zig"); | |||||||
| const ast = std.zig.ast; | const ast = std.zig.ast; | ||||||
| 
 | 
 | ||||||
| pub const TokenType = enum(u32) { | pub const TokenType = enum(u32) { | ||||||
|     namespace, |  | ||||||
|     type, |     type, | ||||||
|     @"struct", |  | ||||||
|     @"enum", |  | ||||||
|     @"union", |  | ||||||
|     @"opaque", |  | ||||||
|     parameter, |     parameter, | ||||||
|     variable, |     variable, | ||||||
|     tagField, |     tagField, | ||||||
| @ -28,6 +23,11 @@ pub const TokenType = enum(u32) { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| pub const TokenModifiers = packed struct { | pub const TokenModifiers = packed struct { | ||||||
|  |     namespace: bool = false, | ||||||
|  |     @"struct": bool = false, | ||||||
|  |     @"enum": bool = false, | ||||||
|  |     @"union": bool = false, | ||||||
|  |     @"opaque": bool = false, | ||||||
|     definition: bool = false, |     definition: bool = false, | ||||||
|     @"async": bool = false, |     @"async": bool = false, | ||||||
|     documentation: bool = false, |     documentation: bool = false, | ||||||
| @ -35,14 +35,11 @@ pub const TokenModifiers = packed struct { | |||||||
| 
 | 
 | ||||||
|     fn toInt(self: TokenModifiers) u32 { |     fn toInt(self: TokenModifiers) u32 { | ||||||
|         var res: u32 = 0; |         var res: u32 = 0; | ||||||
|         if (self.definition) |         inline for (std.meta.fields(TokenModifiers)) |field, i| { | ||||||
|             res |= 1 << 0; |             if (@field(self, field.name)) { | ||||||
|         if (self.@"async") |                 res |= 1 << i; | ||||||
|             res |= 1 << 1; |             } | ||||||
|         if (self.documentation) |         } | ||||||
|             res |= 1 << 2; |  | ||||||
|         if (self.generic) |  | ||||||
|             res |= 1 << 3; |  | ||||||
|         return res; |         return res; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| @ -188,20 +185,19 @@ const GapHighlighter = struct { | |||||||
| 
 | 
 | ||||||
| fn colorIdentifierBasedOnType(builder: *Builder, type_node: analysis.TypeWithHandle, target_tok: ast.TokenIndex, tok_mod: TokenModifiers) !void { | fn colorIdentifierBasedOnType(builder: *Builder, type_node: analysis.TypeWithHandle, target_tok: ast.TokenIndex, tok_mod: TokenModifiers) !void { | ||||||
|     if (type_node.type.is_type_val) { |     if (type_node.type.is_type_val) { | ||||||
|         const tok_type = if (type_node.isNamespace()) |         var new_tok_mod = tok_mod; | ||||||
|             .namespace |         if (type_node.isNamespace()) | ||||||
|  |             new_tok_mod.set("namespace") | ||||||
|         else if (type_node.isStructType()) |         else if (type_node.isStructType()) | ||||||
|             .@"struct" |             new_tok_mod.set("struct") | ||||||
|         else if (type_node.isEnumType()) |         else if (type_node.isEnumType()) | ||||||
|             .@"enum" |             new_tok_mod.set("enum") | ||||||
|         else if (type_node.isUnionType()) |         else if (type_node.isUnionType()) | ||||||
|             .@"union" |             new_tok_mod.set("union") | ||||||
|         else if (type_node.isOpaqueType()) |         else if (type_node.isOpaqueType()) | ||||||
|             .@"opaque" |             new_tok_mod.set("opaque"); | ||||||
|         else |  | ||||||
|             TokenType.type; |  | ||||||
| 
 | 
 | ||||||
|         try writeTokenMod(builder, target_tok, tok_type, tok_mod); |         try writeTokenMod(builder, target_tok, .type, new_tok_mod); | ||||||
|     } else if (type_node.isTypeFunc()) { |     } else if (type_node.isTypeFunc()) { | ||||||
|         try writeTokenMod(builder, target_tok, .type, tok_mod); |         try writeTokenMod(builder, target_tok, .type, tok_mod); | ||||||
|     } else if (type_node.isFunc()) { |     } else if (type_node.isFunc()) { | ||||||
|  | |||||||
| @ -97,7 +97,7 @@ test "Open file, ask for semantic tokens" { | |||||||
|     try sendRequest(sem_toks_req, process); |     try sendRequest(sem_toks_req, process); | ||||||
|     try sendRequest(shutdown_message, process); |     try sendRequest(shutdown_message, process); | ||||||
|     try consumeOutputAndWait(process, .{ |     try consumeOutputAndWait(process, .{ | ||||||
|         \\{"jsonrpc":"2.0","id":2,"result":{"data":[0,0,5,12,0,0,6,3,0,1,0,4,1,16,0,0,2,7,17,0,0,8,5,14,0]}} |         \\{"jsonrpc":"2.0","id":0,"result":{"data":[0,0,5,7,0,0,6,3,0,33,0,4,1,11,0,0,2,7,12,0,0,8,5,9,0]}} | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -143,6 +143,6 @@ test "Requesting utf-8 offset encoding" { | |||||||
| 
 | 
 | ||||||
|     try sendRequest(shutdown_message, process); |     try sendRequest(shutdown_message, process); | ||||||
|     try consumeOutputAndWait(process, .{ |     try consumeOutputAndWait(process, .{ | ||||||
|         \\{"jsonrpc":"2.0","id":0,"result":{"offsetEncoding":"utf-8","capabilities":{"signatureHelpProvider":{"triggerCharacters":["(",","]},"textDocumentSync":1,"renameProvider":true,"completionProvider":{"resolveProvider":false,"triggerCharacters":[".",":","@"]},"documentHighlightProvider":false,"hoverProvider":true,"codeActionProvider":false,"declarationProvider":true,"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":false,"referencesProvider":true,"documentSymbolProvider":true,"colorProvider":false,"documentFormattingProvider":true,"documentRangeFormattingProvider":false,"foldingRangeProvider":false,"selectionRangeProvider":false,"workspaceSymbolProvider":false,"rangeProvider":false,"documentProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}},"semanticTokensProvider":{"documentProvider":true,"legend":{"tokenTypes":["namespace","type","struct","enum","union","opaque","parameter","variable","tagField","field","errorTag","function","keyword","comment","string","number","operator","builtin","label","keywordLiteral"],"tokenModifiers":["definition","async","documentation","generic"]}}},"serverInfo":{"name":"zls","version":"0.1.0"}}} |         \\{"jsonrpc":"2.0","id":0,"result":{"offsetEncoding":"utf-8","capabilities":{"signatureHelpProvider":{"triggerCharacters":["(",","]},"textDocumentSync":1,"renameProvider":true,"completionProvider":{"resolveProvider":false,"triggerCharacters":[".",":","@"]},"documentHighlightProvider":false,"hoverProvider":true,"codeActionProvider":false,"declarationProvider":true,"definitionProvider":true,"typeDefinitionProvider":true,"implementationProvider":false,"referencesProvider":true,"documentSymbolProvider":true,"colorProvider":false,"documentFormattingProvider":true,"documentRangeFormattingProvider":false,"foldingRangeProvider":false,"selectionRangeProvider":false,"workspaceSymbolProvider":false,"rangeProvider":false,"documentProvider":true,"workspace":{"workspaceFolders":{"supported":true,"changeNotifications":true}},"semanticTokensProvider":{"documentProvider":true,"legend":{"tokenTypes":["type","parameter","variable","tagField","field","errorTag","function","keyword","comment","string","number","operator","builtin","label","keywordLiteral"],"tokenModifiers":["namespace","struct","enum","union","opaque","definition","async","documentation","generic"]}}},"serverInfo":{"name":"zls","version":"0.1.0"}}} | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user