From 27ec35160f10ef3b6960958294dfb2fddfe5daac Mon Sep 17 00:00:00 2001 From: blindfs Date: Sat, 8 Mar 2025 19:28:51 +0800 Subject: [PATCH] test: exportable --- crates/nu-cli/src/completions/completer.rs | 2 +- crates/nu-cli/tests/completions/mod.rs | 27 ++++++++++++++++++++++ crates/nu-lsp/src/completion.rs | 6 ++--- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/crates/nu-cli/src/completions/completer.rs b/crates/nu-cli/src/completions/completer.rs index 2470fd0792..637372233c 100644 --- a/crates/nu-cli/src/completions/completer.rs +++ b/crates/nu-cli/src/completions/completer.rs @@ -591,7 +591,7 @@ impl NuCompleter { ctx.prefix.len().min(pos.min(span.end) - ctx.span.start + 1); let new_ctx = Context::new( ctx.working_set, - Span::new(span.start, ctx.span.end.min(span.end).min(pos + 1)), + Span::new(span.start, ctx.span.end.min(span.end)), ctx.prefix.get(offset..end_offset).unwrap_or_default(), ctx.offset, ); diff --git a/crates/nu-cli/tests/completions/mod.rs b/crates/nu-cli/tests/completions/mod.rs index 2fb409239e..7d49120593 100644 --- a/crates/nu-cli/tests/completions/mod.rs +++ b/crates/nu-cli/tests/completions/mod.rs @@ -558,6 +558,33 @@ fn dotnu_stdlib_completions() { match_suggestions(&vec!["clip"], &suggestions); } +#[test] +fn exportable_completions() { + let (_, _, mut engine, stack) = new_dotnu_engine(); + assert!(load_standard_library(&mut engine).is_ok()); + let mut completer = NuCompleter::new(Arc::new(engine), Arc::new(stack)); + + let completion_str = "use std null"; + let suggestions = completer.complete(completion_str, completion_str.len()); + match_suggestions(&vec!["null-device", "null_device"], &suggestions); + + let completion_str = "export use std/assert eq"; + let suggestions = completer.complete(completion_str, completion_str.len()); + match_suggestions(&vec!["equal"], &suggestions); + + let completion_str = "use std/assert \"not eq"; + let suggestions = completer.complete(completion_str, completion_str.len()); + match_suggestions(&vec!["'not equal'"], &suggestions); + + let completion_str = "use std-rfc/clip ['prefi"; + let suggestions = completer.complete(completion_str, completion_str.len()); + match_suggestions(&vec!["prefix"], &suggestions); + + let completion_str = "use std/math [E, `TAU"; + let suggestions = completer.complete(completion_str, completion_str.len()); + match_suggestions(&vec!["TAU"], &suggestions); +} + #[test] fn dotnu_completions_const_nu_lib_dirs() { let (_, _, engine, stack) = new_dotnu_engine(); diff --git a/crates/nu-lsp/src/completion.rs b/crates/nu-lsp/src/completion.rs index 16ae33567f..279e660855 100644 --- a/crates/nu-lsp/src/completion.rs +++ b/crates/nu-lsp/src/completion.rs @@ -63,10 +63,8 @@ impl LanguageServer { } let span = r.suggestion.span; - let range = span_to_range(&Span::new(span.start, span.end), file, 0); - let text_edit = Some(CompletionTextEdit::Edit(TextEdit { - range, + range: span_to_range(&Span::new(span.start, span.end), file, 0), new_text: label_value.clone(), })); @@ -236,7 +234,7 @@ mod tests { "detail": "Edit nu configurations.", "textEdit": { "range": { "start": { "line": 0, "character": 0 }, "end": { "line": 0, "character": 8 }, }, "newText": "config nu " - } + }, }, ]) );