@@ -15,7 +15,6 @@ pub fn add_completion(builder: &mut CompletionBuilder) -> Option<()> {
1515 if builder. is_cancelled ( ) {
1616 return None ;
1717 }
18-
1918 if check_can_add_completion ( builder) . is_none ( ) {
2019 return Some ( ( ) ) ;
2120 }
@@ -58,12 +57,15 @@ fn check_can_add_completion(builder: &CompletionBuilder) -> Option<()> {
5857 }
5958 } else if builder. trigger_kind == CompletionTriggerKind :: INVOKED {
6059 let parent = builder. trigger_token . parent ( ) ?;
61- let prev_token = builder. trigger_token . prev_token ( ) ?;
62- match prev_token. kind ( ) . into ( ) {
63- LuaTokenKind :: TkTagUsing | LuaTokenKind :: TkTagExport | LuaTokenKind :: TkTagNamespace => {
64- return None ;
60+ if let Some ( prev_token) = builder. trigger_token . prev_token ( ) {
61+ match prev_token. kind ( ) . into ( ) {
62+ LuaTokenKind :: TkTagUsing
63+ | LuaTokenKind :: TkTagExport
64+ | LuaTokenKind :: TkTagNamespace => {
65+ return None ;
66+ }
67+ _ => { }
6568 }
66- _ => { }
6769 }
6870
6971 // 即时是主动触发, 也不允许在函数定义的参数列表中添加
@@ -230,8 +232,15 @@ fn add_global_env(
230232
231233fn env_check_match_word ( trigger_text : & str , name : & str ) -> bool {
232234 // 如果首字母是`(`或者`,`则允许, 用于在函数参数调用处触发补全
233- match trigger_text. chars ( ) . next ( ) {
234- Some ( '(' ) | Some ( ',' ) => true ,
235- _ => check_match_word ( trigger_text, name) ,
235+ if matches ! ( trigger_text. chars( ) . next( ) , Some ( '(' ) | Some ( ',' ) ) {
236+ return true ;
237+ }
238+
239+ if check_match_word ( trigger_text, name) {
240+ // 如果首字母匹配, 则需要检查 trigger_text 的每个字符是否都存在于 name 中
241+
242+ return true ;
236243 }
244+
245+ false
237246}
0 commit comments