Skip to content

Commit 10a2b44

Browse files
authored
Merge pull request #34 from xuhuanzy/overload
fix: `DocFunction` literal prompt
2 parents 8045c04 + 8749840 commit 10a2b44

File tree

1 file changed

+24
-2
lines changed

1 file changed

+24
-2
lines changed

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

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
144158
fn 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

Comments
 (0)