@@ -40,6 +40,9 @@ fn dispatch_type(
4040 }
4141 LuaType :: DocFunction ( func) => {
4242 add_lambda_completion ( builder, & func) ;
43+ } ,
44+ LuaType :: DocStringConst ( key) => {
45+ add_string_completion ( builder, key. as_str ( ) ) ;
4346 }
4447 _ => { }
4548 }
@@ -141,6 +144,17 @@ fn add_union_member_completion(
141144 Some ( ( ) )
142145}
143146
147+ fn add_string_completion ( builder : & mut CompletionBuilder , str : & str ) -> Option < ( ) > {
148+ let completion_item = CompletionItem {
149+ label : to_enum_label ( builder, str) ,
150+ kind : Some ( lsp_types:: CompletionItemKind :: ENUM_MEMBER ) ,
151+ ..Default :: default ( )
152+ } ;
153+
154+ builder. add_completion_item ( completion_item) ;
155+ Some ( ( ) )
156+ }
157+
144158fn get_token_should_type ( builder : & mut CompletionBuilder ) -> Option < LuaType > {
145159 let token = builder. trigger_token . clone ( ) ;
146160 let mut parent_node = token. parent ( ) ?;
@@ -167,11 +181,19 @@ fn infer_call_arg_list(
167181 token : LuaSyntaxToken ,
168182) -> Option < LuaType > {
169183 let call_expr = call_arg_list. get_parent :: < LuaCallExpr > ( ) ?;
170- let param_idx = get_current_param_index ( & call_expr, & token) ?;
184+ let mut param_idx = get_current_param_index ( & call_expr, & token) ?;
171185 let call_expr_func = builder
172186 . semantic_model
173187 . infer_call_expr_func ( call_expr. clone ( ) , Some ( param_idx + 1 ) ) ?;
174-
188+ let colon_call = call_expr. is_colon_call ( ) ;
189+ let colon_define = call_expr_func. is_colon_define ( ) ;
190+ match ( colon_call, colon_define) {
191+ ( true , true ) | ( false , false ) => { }
192+ ( false , true ) => { }
193+ ( true , false ) => {
194+ param_idx += 1 ;
195+ }
196+ }
175197 let typ = call_expr_func. get_params ( ) . get ( param_idx) ?. 1 . clone ( ) ?;
176198 Some ( typ)
177199}
0 commit comments