Skip to content

Commit 7eb8cf4

Browse files
committed
update attribute
1 parent 07b7bd0 commit 7eb8cf4

File tree

5 files changed

+45
-18
lines changed

5 files changed

+45
-18
lines changed

crates/emmylua_ls/src/handlers/completion/providers/auto_require_provider.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use crate::{
1212
completion_data::CompletionData,
1313
},
1414
},
15-
util::{key_name_convert, module_name_convert},
15+
util::{flie_name_convert, module_name_convert},
1616
};
1717

1818
pub fn add_completion(builder: &mut CompletionBuilder) -> Option<()> {
@@ -136,7 +136,7 @@ fn try_add_member_completion_items(
136136
LuaType::TableConst(_) | LuaType::Def(_) => {
137137
let member_infos = builder.semantic_model.get_member_infos(export_type)?;
138138
for member_info in member_infos {
139-
let key_name = key_name_convert(
139+
let key_name = flie_name_convert(
140140
&member_info.key.to_path(),
141141
&member_info.typ,
142142
file_conversion,

crates/emmylua_ls/src/handlers/semantic_token/build_semantic_tokens.rs

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ use emmylua_code_analysis::{
1212
};
1313
use emmylua_parser::{
1414
LuaAst, LuaAstNode, LuaAstToken, LuaCallArgList, LuaCallExpr, LuaComment, LuaDocFieldKey,
15-
LuaDocObjectFieldKey, LuaExpr, LuaGeneralToken, LuaKind, LuaLiteralToken, LuaNameToken,
16-
LuaSyntaxKind, LuaSyntaxNode, LuaSyntaxToken, LuaTokenKind, LuaVarExpr,
15+
LuaDocObjectFieldKey, LuaDocType, LuaExpr, LuaGeneralToken, LuaKind, LuaLiteralToken,
16+
LuaNameToken, LuaSyntaxKind, LuaSyntaxNode, LuaSyntaxToken, LuaTokenKind, LuaVarExpr,
1717
};
1818
use emmylua_parser_desc::{CodeBlockHighlightKind, DescItem, DescItemKind};
1919
use lsp_types::{SemanticToken, SemanticTokenModifier, SemanticTokenType};
@@ -202,7 +202,8 @@ fn build_tokens_semantic_token(
202202
| LuaTokenKind::TkTagSource
203203
| LuaTokenKind::TkTagReturnCast
204204
| LuaTokenKind::TkTagExport
205-
| LuaTokenKind::TkLanguage => {
205+
| LuaTokenKind::TkLanguage
206+
| LuaTokenKind::TkTagAttribute => {
206207
builder.push_with_modifier(
207208
token,
208209
SemanticTokenType::KEYWORD,
@@ -784,13 +785,43 @@ fn build_node_semantic_token(
784785
}
785786
}
786787
LuaAst::LuaDocTagAttributeUse(tag_use) => {
787-
// 给 `@[]` 染色, @已经染色过了
788+
// 给 `@[` 染色
788789
if let Some(token) = tag_use.token_by_kind(LuaTokenKind::TkDocAttributeUse) {
789790
builder.push(token.syntax(), SemanticTokenType::KEYWORD);
790791
}
792+
// `]`染色
791793
if let Some(token) = tag_use.syntax().last_token() {
792794
builder.push(&token, SemanticTokenType::KEYWORD);
793795
}
796+
// 名称染色
797+
for attribute_use in tag_use.get_attribute_uses() {
798+
if let Some(token) = attribute_use.get_type()?.get_name_token() {
799+
builder.push_with_modifiers(
800+
token.syntax(),
801+
SemanticTokenType::DECORATOR,
802+
&[
803+
SemanticTokenModifier::DECLARATION,
804+
SemanticTokenModifier::DEFAULT_LIBRARY,
805+
],
806+
);
807+
}
808+
}
809+
}
810+
LuaAst::LuaDocTagAttribute(tag_attribute) => {
811+
if let Some(name) = tag_attribute.get_name_token() {
812+
builder.push_with_modifier(
813+
name.syntax(),
814+
SemanticTokenType::TYPE,
815+
SemanticTokenModifier::DECLARATION,
816+
);
817+
}
818+
if let Some(LuaDocType::Attribute(attribute)) = tag_attribute.get_type() {
819+
for param in attribute.get_params() {
820+
if let Some(name) = param.get_name_token() {
821+
builder.push(name.syntax(), SemanticTokenType::PARAMETER);
822+
}
823+
}
824+
}
794825
}
795826
_ => {}
796827
}

crates/emmylua_ls/src/util/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ mod module_name_convert;
33
mod time_cancel_token;
44

55
pub use desc::*;
6-
pub use module_name_convert::{key_name_convert, module_name_convert};
6+
pub use module_name_convert::{flie_name_convert, module_name_convert};
77
pub use time_cancel_token::time_cancel_token;

crates/emmylua_ls/src/util/module_name_convert.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,30 +29,30 @@ pub fn module_name_convert(
2929
module_name
3030
}
3131

32-
pub fn key_name_convert(
32+
pub fn flie_name_convert(
3333
key: &str,
3434
typ: &LuaType,
3535
file_conversion: EmmyrcFilenameConvention,
3636
) -> String {
37-
let mut key_name = key.to_string();
37+
let mut flie_name = key.to_string();
3838
match file_conversion {
3939
EmmyrcFilenameConvention::SnakeCase => {
40-
key_name = to_snake_case(&key_name);
40+
flie_name = to_snake_case(&flie_name);
4141
}
4242
EmmyrcFilenameConvention::CamelCase => {
43-
key_name = to_camel_case(&key_name);
43+
flie_name = to_camel_case(&flie_name);
4444
}
4545
EmmyrcFilenameConvention::PascalCase => {
46-
key_name = to_pascal_case(&key_name);
46+
flie_name = to_pascal_case(&flie_name);
4747
}
4848
EmmyrcFilenameConvention::Keep => {}
4949
EmmyrcFilenameConvention::KeepClass => {
5050
if let LuaType::Def(id) = typ {
51-
key_name = id.get_simple_name().to_string();
51+
flie_name = id.get_simple_name().to_string();
5252
}
5353
}
5454
}
55-
key_name
55+
flie_name
5656
}
5757

5858
fn to_snake_case(s: &str) -> String {

crates/emmylua_parser/src/lexer/lua_doc_lexer.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -619,10 +619,6 @@ impl LuaDocLexer<'_> {
619619
reader.bump();
620620
LuaTokenKind::TkComma
621621
}
622-
'=' => {
623-
reader.bump();
624-
LuaTokenKind::TkAssign
625-
}
626622
']' => {
627623
reader.bump();
628624
LuaTokenKind::TkRightBracket

0 commit comments

Comments
 (0)