Skip to content

Commit 68860c2

Browse files
committed
completion: optimize env && clean code
1 parent 083ff32 commit 68860c2

File tree

6 files changed

+32
-28
lines changed

6 files changed

+32
-28
lines changed

crates/emmylua_code_analysis/src/diagnostic/checker/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ impl<'a> DiagnosticContext<'a> {
230230
}
231231
}
232232

233-
pub fn get_closure_expr_comment(closure_expr: &LuaClosureExpr) -> Option<LuaComment> {
233+
fn get_closure_expr_comment(closure_expr: &LuaClosureExpr) -> Option<LuaComment> {
234234
let comment = closure_expr
235235
.ancestors::<LuaStat>()
236236
.next()?

crates/emmylua_code_analysis/src/diagnostic/mod.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,5 @@ mod lua_diagnostic_code;
44
mod lua_diagnostic_config;
55
mod test;
66

7-
pub use checker::get_closure_expr_comment;
87
pub use lua_diagnostic::LuaDiagnostic;
98
pub use lua_diagnostic_code::DiagnosticCode;

crates/emmylua_ls/src/handlers/completion/completion_builder.rs

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,7 @@ pub struct CompletionBuilder<'a> {
1313
cancel_token: CancellationToken,
1414
stopped: bool,
1515
pub trigger_kind: CompletionTriggerKind,
16-
pub env_start_index: i32,
17-
pub env_end_index: i32,
16+
pub env_range: (usize, usize),
1817
}
1918

2019
impl<'a> CompletionBuilder<'a> {
@@ -32,8 +31,7 @@ impl<'a> CompletionBuilder<'a> {
3231
cancel_token,
3332
stopped: false,
3433
trigger_kind,
35-
env_start_index: -1,
36-
env_end_index: -1,
34+
env_range: (0, 0),
3735
}
3836
}
3937

@@ -63,16 +61,13 @@ impl<'a> CompletionBuilder<'a> {
6361
}
6462

6563
pub fn remove_env_completion_items(&mut self) {
66-
if self.env_start_index == -1 || self.env_end_index == -1 {
64+
if self.env_range == (0, 0) {
6765
return;
6866
}
69-
if self.env_start_index <= self.env_end_index
70-
&& self.env_end_index < self.completion_items.len() as i32
71-
{
67+
if self.env_range.0 <= self.env_range.1 && self.env_range.1 < self.completion_items.len() {
7268
self.completion_items
73-
.drain(self.env_start_index as usize..=self.env_end_index as usize);
69+
.drain(self.env_range.0..=self.env_range.1 - 1);
7470
}
75-
self.env_start_index = -1;
76-
self.env_end_index = -1;
71+
self.env_range = (0, 0);
7772
}
7873
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ pub fn add_completion(builder: &mut CompletionBuilder) -> Option<()> {
2929
};
3030

3131
let mut duplicated_name = HashSet::new();
32-
builder.env_start_index = builder.get_completion_items_mut().len() as i32;
32+
builder.env_range.0 = builder.get_completion_items_mut().len();
3333
add_local_env(builder, &mut duplicated_name, &node);
3434
add_global_env(builder, &mut duplicated_name);
35-
builder.env_end_index = builder.get_completion_items_mut().len() as i32 - 1;
35+
builder.env_range.1 = builder.get_completion_items_mut().len();
3636

3737
builder.env_duplicate_name.extend(duplicated_name);
3838

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

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
use emmylua_code_analysis::{
2-
get_closure_expr_comment, InferGuard, LuaDeclLocation, LuaFunctionType, LuaMember,
3-
LuaMemberKey, LuaMemberOwner, LuaMultiLineUnion, LuaPropertyOwnerId, LuaType, LuaTypeDeclId,
4-
LuaUnionType, RenderLevel,
2+
InferGuard, LuaDeclLocation, LuaFunctionType, LuaMember, LuaMemberKey, LuaMemberOwner,
3+
LuaMultiLineUnion, LuaPropertyOwnerId, LuaType, LuaTypeDeclId, LuaUnionType, RenderLevel,
54
};
65
use emmylua_parser::{
76
LuaAst, LuaAstNode, LuaAstToken, LuaCallArgList, LuaCallExpr, LuaClosureExpr, LuaComment,
8-
LuaDocTagParam, LuaNameToken, LuaParamList, LuaSyntaxId, LuaSyntaxKind, LuaSyntaxToken,
9-
LuaTokenKind, LuaVarExpr,
7+
LuaDocTagParam, LuaNameToken, LuaParamList, LuaStat, LuaSyntaxId, LuaSyntaxKind,
8+
LuaSyntaxToken, LuaTokenKind, LuaVarExpr,
109
};
1110
use itertools::Itertools;
1211
use lsp_types::{CompletionItem, Documentation};
@@ -579,3 +578,18 @@ fn get_enum_decl_variable_name(
579578

580579
None
581580
}
581+
582+
fn get_closure_expr_comment(closure_expr: &LuaClosureExpr) -> Option<LuaComment> {
583+
let comment = closure_expr
584+
.ancestors::<LuaStat>()
585+
.next()?
586+
.syntax()
587+
.prev_sibling()?;
588+
match comment.kind().into() {
589+
LuaSyntaxKind::Comment => {
590+
let comment = LuaComment::cast(comment)?;
591+
Some(comment)
592+
}
593+
_ => None,
594+
}
595+
}

crates/emmylua_ls/src/handlers/completion/test/completion_test.rs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -157,14 +157,10 @@ mod tests {
157157
local Test = {}
158158
Test.<??>
159159
"#,
160-
vec![
161-
VirtualCompletionItem {
162-
label: "event".to_string(),
163-
kind: CompletionItemKind::FUNCTION,
164-
},
165-
],
160+
vec![VirtualCompletionItem {
161+
label: "event".to_string(),
162+
kind: CompletionItemKind::FUNCTION,
163+
},],
166164
));
167165
}
168-
169-
170166
}

0 commit comments

Comments
 (0)