File tree Expand file tree Collapse file tree 1 file changed +37
-36
lines changed
crates/emmylua_ls/src/handlers/semantic_token Expand file tree Collapse file tree 1 file changed +37
-36
lines changed Original file line number Diff line number Diff line change @@ -859,39 +859,42 @@ fn handle_name_node(
859859 return Some ( ( ) ) ;
860860 }
861861
862- // 检查是否是 Lua 内置全局变量
863- if matches ! (
864- name_text,
865- "_G" | "_ENV"
866- | "_VERSION"
867- | "arg"
868- | "package"
869- | "require"
870- | "load"
871- | "loadfile"
872- | "dofile"
873- | "print"
874- | "assert"
875- | "error"
876- | "warn"
877- | "type"
878- | "getmetatable"
879- | "setmetatable"
880- | "rawget"
881- | "rawset"
882- | "rawequal"
883- | "rawlen"
884- | "next"
885- | "pairs"
886- | "ipairs"
887- | "tostring"
888- | "tonumber"
889- | "select"
890- | "unpack"
891- | "pcall"
892- | "xpcall"
893- | "collectgarbage"
894- ) {
862+ // 先查找声明,如果找不到声明再检查是否是 Lua 内置全局变量
863+ let semantic_decl = semantic_model. find_decl ( node. clone ( ) . into ( ) , SemanticDeclLevel :: default ( ) ) ;
864+ if semantic_decl. is_none ( )
865+ && matches ! (
866+ name_text,
867+ "_G" | "_ENV"
868+ | "_VERSION"
869+ | "arg"
870+ | "package"
871+ | "require"
872+ | "load"
873+ | "loadfile"
874+ | "dofile"
875+ | "print"
876+ | "assert"
877+ | "error"
878+ | "warn"
879+ | "type"
880+ | "getmetatable"
881+ | "setmetatable"
882+ | "rawget"
883+ | "rawset"
884+ | "rawequal"
885+ | "rawlen"
886+ | "next"
887+ | "pairs"
888+ | "ipairs"
889+ | "tostring"
890+ | "tonumber"
891+ | "select"
892+ | "unpack"
893+ | "pcall"
894+ | "xpcall"
895+ | "collectgarbage"
896+ )
897+ {
895898 builder. push_with_modifiers (
896899 name_token. syntax ( ) ,
897900 SemanticTokenType :: FUNCTION ,
@@ -902,9 +905,7 @@ fn handle_name_node(
902905 ) ;
903906 return Some ( ( ) ) ;
904907 }
905-
906- let semantic_decl =
907- semantic_model. find_decl ( node. clone ( ) . into ( ) , SemanticDeclLevel :: default ( ) ) ?;
908+ let semantic_decl = semantic_decl?;
908909 match semantic_decl {
909910 LuaSemanticDeclId :: Member ( member_id) => {
910911 let decl_type = semantic_model. get_type ( member_id. into ( ) ) ;
You can’t perform that action at this time.
0 commit comments