|
1 | 1 | use code_analysis::SemanticModel; |
2 | 2 | use emmylua_parser::{ |
3 | | - LuaAst, LuaAstNode, LuaAstToken, LuaDocFieldKey, LuaExpr, LuaSyntaxNode, LuaSyntaxToken, |
4 | | - LuaTokenKind, LuaVarExpr, |
| 3 | + LuaAst, LuaAstNode, LuaAstToken, LuaDocFieldKey, LuaDocObjectFieldKey, LuaExpr, LuaSyntaxNode, LuaSyntaxToken, LuaTokenKind, LuaVarExpr |
5 | 4 | }; |
6 | 5 | use lsp_types::{SemanticToken, SemanticTokenType}; |
7 | 6 | use rowan::NodeOrToken; |
@@ -94,7 +93,11 @@ fn build_tokens_semantic_token( |
94 | 93 | | LuaTokenKind::TkLen |
95 | 94 | | LuaTokenKind::TkBitAnd |
96 | 95 | | LuaTokenKind::TkBitOr |
97 | | - | LuaTokenKind::TkBitXor => { |
| 96 | + | LuaTokenKind::TkBitXor |
| 97 | + | LuaTokenKind::TkLeftBrace |
| 98 | + | LuaTokenKind::TkRightBrace |
| 99 | + | LuaTokenKind::TkLeftBracket |
| 100 | + | LuaTokenKind::TkRightBracket => { |
98 | 101 | builder.push(token, SemanticTokenType::OPERATOR); |
99 | 102 | } |
100 | 103 | LuaTokenKind::TkComplex | LuaTokenKind::TkInt | LuaTokenKind::TkFloat => { |
@@ -314,6 +317,19 @@ fn build_node_semantic_token( |
314 | 317 | let name = doc_name_type.get_name_token()?; |
315 | 318 | builder.push(name.syntax().clone(), SemanticTokenType::TYPE); |
316 | 319 | } |
| 320 | + LuaAst::LuaDocObjectType(doc_object_type) => { |
| 321 | + let fields = doc_object_type.get_fields(); |
| 322 | + for field in fields { |
| 323 | + if let Some(field_key) = field.get_field_key() { |
| 324 | + match &field_key { |
| 325 | + LuaDocObjectFieldKey::Name(name) => { |
| 326 | + builder.push(name.syntax().clone(), SemanticTokenType::PROPERTY); |
| 327 | + } |
| 328 | + _ => {} |
| 329 | + } |
| 330 | + } |
| 331 | + } |
| 332 | + } |
317 | 333 | _ => {} |
318 | 334 | } |
319 | 335 |
|
|
0 commit comments