Delete snippet placeholders when accepting completion
When accepting a snippet completion we automatically delete the placeholders for now as doing so manual is quite cumbersome. In the future we should keep these as a mark + virtual text that is automatically removed once the cursor moves there.
This commit is contained in:
parent
ded4381728
commit
ba24cfe912
2 changed files with 13 additions and 4 deletions
|
@ -64,6 +64,7 @@ pub fn into_transaction<'a>(
|
|||
edit: &lsp_types::TextEdit,
|
||||
line_ending: &str,
|
||||
offset_encoding: OffsetEncoding,
|
||||
include_placeholer: bool,
|
||||
) -> helix_core::Transaction {
|
||||
use helix_core::{smallvec, Range, Selection, Transaction};
|
||||
use SnippetElement::*;
|
||||
|
@ -119,10 +120,14 @@ pub fn into_transaction<'a>(
|
|||
// https://doc.rust-lang.org/beta/unstable-book/language-features/box-patterns.html
|
||||
// would make this a bit nicer
|
||||
Text(text) => {
|
||||
if include_placeholer {
|
||||
let len_chars = text.chars().count();
|
||||
tabstops.push((tabstop, Range::new(offset, offset + len_chars + 1)));
|
||||
offset += len_chars;
|
||||
insert.push_str(text);
|
||||
} else {
|
||||
tabstops.push((tabstop, Range::point(offset)));
|
||||
}
|
||||
}
|
||||
other => {
|
||||
log::error!(
|
||||
|
|
|
@ -118,6 +118,7 @@ impl Completion {
|
|||
offset_encoding: helix_lsp::OffsetEncoding,
|
||||
start_offset: usize,
|
||||
trigger_offset: usize,
|
||||
include_placeholder: bool,
|
||||
) -> Transaction {
|
||||
use helix_lsp::snippet;
|
||||
|
||||
|
@ -144,6 +145,7 @@ impl Completion {
|
|||
&edit,
|
||||
doc.line_ending.as_str(),
|
||||
offset_encoding,
|
||||
include_placeholder,
|
||||
),
|
||||
Err(err) => {
|
||||
log::error!(
|
||||
|
@ -216,6 +218,7 @@ impl Completion {
|
|||
offset_encoding,
|
||||
start_offset,
|
||||
trigger_offset,
|
||||
true,
|
||||
);
|
||||
|
||||
// initialize a savepoint
|
||||
|
@ -238,6 +241,7 @@ impl Completion {
|
|||
offset_encoding,
|
||||
start_offset,
|
||||
trigger_offset,
|
||||
false,
|
||||
);
|
||||
|
||||
doc.apply(&transaction, view.id);
|
||||
|
|
Loading…
Add table
Reference in a new issue