Fix handling of end-of-file (#60)
* Fix underflow on empty line * Update crates/llm-ls/src/main.rs Co-authored-by: Luc Georges <McPatate@users.noreply.github.com> * Update crates/llm-ls/src/main.rs Co-authored-by: Luc Georges <McPatate@users.noreply.github.com> --------- Co-authored-by: Luc Georges <McPatate@users.noreply.github.com>
This commit is contained in:
parent
16606e5371
commit
c9a44e591c
|
@ -57,6 +57,10 @@ impl Display for CompletionType {
|
||||||
fn should_complete(document: &Document, position: Position) -> Result<CompletionType> {
|
fn should_complete(document: &Document, position: Position) -> Result<CompletionType> {
|
||||||
let row = position.line as usize;
|
let row = position.line as usize;
|
||||||
let column = position.character as usize;
|
let column = position.character as usize;
|
||||||
|
if document.text.len_chars() == 0 {
|
||||||
|
warn!("Document is empty");
|
||||||
|
return Ok(CompletionType::Empty);
|
||||||
|
}
|
||||||
if let Some(tree) = &document.tree {
|
if let Some(tree) = &document.tree {
|
||||||
let current_node = tree.root_node().descendant_for_point_range(
|
let current_node = tree.root_node().descendant_for_point_range(
|
||||||
tree_sitter::Point { row, column },
|
tree_sitter::Point { row, column },
|
||||||
|
@ -111,10 +115,11 @@ fn should_complete(document: &Document, position: Position) -> Result<Completion
|
||||||
.text
|
.text
|
||||||
.try_line_to_char(row)
|
.try_line_to_char(row)
|
||||||
.map_err(internal_error)?;
|
.map_err(internal_error)?;
|
||||||
|
// XXX: We treat the end of a document as a newline
|
||||||
let next_char = document
|
let next_char = document
|
||||||
.text
|
.text
|
||||||
.get_char(start_idx + column)
|
.get_char(start_idx + column)
|
||||||
.ok_or_else(|| internal_error(format!("failed to find char at {}", start_idx + column)))?;
|
.unwrap_or('\n');
|
||||||
if next_char.is_whitespace() {
|
if next_char.is_whitespace() {
|
||||||
Ok(CompletionType::SingleLine)
|
Ok(CompletionType::SingleLine)
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Reference in a new issue