Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Helix crashes on long completions from helix-gpt LSP #9624

Closed
hnorkowski opened this issue Feb 13, 2024 · 3 comments · Fixed by #9649
Closed

Helix crashes on long completions from helix-gpt LSP #9624

hnorkowski opened this issue Feb 13, 2024 · 3 comments · Fixed by #9649
Labels
A-language-server Area: Language server client C-bug Category: This is a bug

Comments

@hnorkowski
Copy link
Contributor

hnorkowski commented Feb 13, 2024

Summary

When using helix-gpt and accepting a long completion helix sometimes crashes. Not sure if the LSP sends malformed completions or if helix has a bug. However, even if this is a problem of the LSP I think an LSP should not be able to cause a crash in helix itself.

Reproduction Steps

I tried this:

  1. Installing helix-gpt as LSP accoring to the provided instructions
  2. hx test.ts
  3. write const longString = "Lorem " and wait for a long copilot completion
  4. accept the completion
  5. crash

Console Output:

thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Invalid char range 1786..200: start must be <= end', /home/hendrik/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ropey-1.6.1/src/rope.rs:546:37
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Helix log

~/.cache/helix/helix.log
2024-02-13T15:49:21.230 helix_view::clipboard [DEBUG] Using xclip to interact with the system and selection (primary) clipboard
2024-02-13T15:49:21.258 helix_vcs [INFO] Error {
    context: "failed to open git repo",
    source: Discover(
        NoGitRepository {
            path: "/home/hendrik/tmp",
        },
    ),
}
2024-02-13T15:49:21.258 helix_vcs [INFO] failed to open diff base for /home/hendrik/tmp/test.ts
2024-02-13T15:49:21.258 helix_vcs [INFO] Error {
    context: "failed to open git repo",
    source: Discover(
        NoGitRepository {
            path: "/home/hendrik/tmp",
        },
    ),
}
2024-02-13T15:49:21.258 helix_vcs [INFO] failed to obtain current head name for /home/hendrik/tmp/test.ts
2024-02-13T15:49:21.258 helix_lsp::client [INFO] Using custom LSP config: {"hostInfo":"helix","javascript":{"inlayHints":{"includeInlayEnumMemberValueHints":true,"includeInlayFunctionLikeReturnTypeHints":true,"includeInlayFunctionParameterTypeHints":true,"includeInlayParameterNameHints":"all","includeInlayParameterNameHintsWhenArgumentMatchesName":true,"includeInlayPropertyDeclarationTypeHints":true,"includeInlayVariableTypeHints":true}},"typescript":{"inlayHints":{"includeInlayEnumMemberValueHints":true,"includeInlayFunctionLikeReturnTypeHints":true,"includeInlayFunctionParameterTypeHints":true,"includeInlayParameterNameHints":"all","includeInlayParameterNameHintsWhenArgumentMatchesName":true,"includeInlayPropertyDeclarationTypeHints":true,"includeInlayVariableTypeHints":true}}}
2024-02-13T15:49:21.258 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"positionEncodings":["utf-8","utf-32","utf-16"]},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"isPreferredSupport":true,"resolveSupport":{"properties":["edit","command"]}},"completion":{"completionItem":{"deprecatedSupport":true,"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{}},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"versionSupport":true},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":true},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":false},"executeCommand":{"dynamicRegistration":false},"fileOperations":{"didRename":true,"willRename":true},"inlayHint":{"refreshSupport":false},"symbol":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true,"failureHandling":"abort","normalizesLineEndings":false,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"helix","version":"23.10 (783ff27b)"},"initializationOptions":{"hostInfo":"helix","javascript":{"inlayHints":{"includeInlayEnumMemberValueHints":true,"includeInlayFunctionLikeReturnTypeHints":true,"includeInlayFunctionParameterTypeHints":true,"includeInlayParameterNameHints":"all","includeInlayParameterNameHintsWhenArgumentMatchesName":true,"includeInlayPropertyDeclarationTypeHints":true,"includeInlayVariableTypeHints":true}},"typescript":{"inlayHints":{"includeInlayEnumMemberValueHints":true,"includeInlayFunctionLikeReturnTypeHints":true,"includeInlayFunctionParameterTypeHints":true,"includeInlayParameterNameHints":"all","includeInlayParameterNameHintsWhenArgumentMatchesName":true,"includeInlayPropertyDeclarationTypeHints":true,"includeInlayVariableTypeHints":true}}},"processId":276453,"rootPath":"/home/hendrik/tmp","rootUri":null,"workspaceFolders":[]},"id":0}
2024-02-13T15:49:21.258 helix_view::editor [DEBUG] editor status: Loaded 1 file.
2024-02-13T15:49:21.258 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"positionEncodings":["utf-8","utf-32","utf-16"]},"textDocument":{"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"isPreferredSupport":true,"resolveSupport":{"properties":["edit","command"]}},"completion":{"completionItem":{"deprecatedSupport":true,"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{}},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"versionSupport":true},"rename":{"dynamicRegistration":false,"honorsChangeAnnotations":false,"prepareSupport":true},"signatureHelp":{"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown"],"parameterInformation":{"labelOffsetSupport":true}}}},"window":{"workDoneProgress":true},"workspace":{"applyEdit":true,"configuration":true,"didChangeConfiguration":{"dynamicRegistration":false},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":false},"executeCommand":{"dynamicRegistration":false},"fileOperations":{"didRename":true,"willRename":true},"inlayHint":{"refreshSupport":false},"symbol":{"dynamicRegistration":false},"workspaceEdit":{"documentChanges":true,"failureHandling":"abort","normalizesLineEndings":false,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"helix","version":"23.10 (783ff27b)"},"processId":276453,"rootPath":"/home/hendrik/tmp","rootUri":null,"workspaceFolders":[]},"id":0}
2024-02-13T15:49:21.258 helix_tui::backend::crossterm [DEBUG] The keyboard enhancement protocol is supported in this terminal (checked in 124.3µs)
2024-02-13T15:49:21.259 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:21.295 helix_lsp::transport [INFO] gpt <- {"jsonrpc":"2.0","method":"initialize","id":0,"result":{"capabilities":{"codeActionProvider":true,"executeCommandProvider":{"commands":["resolveDiagnostics","generateDocs","improveCode","refactorFromComment","writeTest"]},"completionProvider":{"resolveProvider":false,"triggerCharacters":["{","("," "]},"textDocumentSync":{"change":1,"openClose":true}}}}
2024-02-13T15:49:21.295 helix_lsp::transport [INFO] gpt <- {"capabilities":{"codeActionProvider":true,"completionProvider":{"resolveProvider":false,"triggerCharacters":["{","("," "]},"executeCommandProvider":{"commands":["resolveDiagnostics","generateDocs","improveCode","refactorFromComment","writeTest"]},"textDocumentSync":{"change":1,"openClose":true}}}
2024-02-13T15:49:21.295 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"initialized","params":{}}
2024-02-13T15:49:21.295 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: None, method: "initialized", params: None })))
2024-02-13T15:49:21.295 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"typescript","text":"const longString = \"\"","uri":"file:///home/hendrik/tmp/test.ts","version":0}}}
2024-02-13T15:49:21.329 helix_term::application [DEBUG] received editor event: Redraw
2024-02-13T15:49:21.330 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Using Typescript version (bundled) 5.3.3 from path \"/usr/lib/node_modules/typescript/lib/tsserver.js\""}}
2024-02-13T15:49:21.330 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Using Typescript version (bundled) 5.3.3 from path \"/usr/lib/node_modules/typescript/lib/tsserver.js\""), "type": Number(3)}) })))
2024-02-13T15:49:21.330 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":2,"completionProvider":{"triggerCharacters":[".","\"","'","/","@","<"],"resolveProvider":true},"codeActionProvider":{"codeActionKinds":["source.fixAll.ts","source.removeUnused.ts","source.addMissingImports.ts","source.organizeImports.ts","source.removeUnusedImports.ts","source.sortImports.ts","quickfix","refactor"]},"codeLensProvider":{"resolveProvider":true},"definitionProvider":true,"documentFormattingProvider":true,"documentRangeFormattingProvider":true,"documentHighlightProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["_typescript.applyWorkspaceEdit","_typescript.applyCodeAction","_typescript.applyRefactoring","_typescript.configurePlugin","_typescript.organizeImports","_typescript.applyRenameFile","_typescript.goToSourceDefinition"]},"hoverProvider":true,"inlayHintProvider":true,"linkedEditingRangeProvider":false,"renameProvider":{"prepareProvider":true},"referencesProvider":true,"selectionRangeProvider":true,"signatureHelpProvider":{"triggerCharacters":["(",",","<"],"retriggerCharacters":[")"]},"workspaceSymbolProvider":true,"implementationProvider":true,"typeDefinitionProvider":true,"foldingRangeProvider":true,"semanticTokensProvider":{"documentSelector":null,"legend":{"tokenTypes":["class","enum","interface","namespace","typeParameter","type","parameter","variable","enumMember","property","function","member"],"tokenModifiers":["declaration","static","async","readonly","defaultLibrary","local"]},"full":true,"range":true},"workspace":{"fileOperations":{"willRename":{"filters":[{"scheme":"file","pattern":{"glob":"**/*.{ts,js,jsx,tsx,mjs,mts,cjs,cts}","matches":"file"}},{"scheme":"file","pattern":{"glob":"**","matches":"folder"}}]}}}}}}
2024-02-13T15:49:21.330 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Using Typescript version (bundled) 5.3.3 from path \"/usr/lib/node_modules/typescript/lib/tsserver.js\"" }
2024-02-13T15:49:21.330 helix_lsp::transport [INFO] typescript-language-server <- {"capabilities":{"codeActionProvider":{"codeActionKinds":["source.fixAll.ts","source.removeUnused.ts","source.addMissingImports.ts","source.organizeImports.ts","source.removeUnusedImports.ts","source.sortImports.ts","quickfix","refactor"]},"codeLensProvider":{"resolveProvider":true},"completionProvider":{"resolveProvider":true,"triggerCharacters":[".","\"","'","/","@","<"]},"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["_typescript.applyWorkspaceEdit","_typescript.applyCodeAction","_typescript.applyRefactoring","_typescript.configurePlugin","_typescript.organizeImports","_typescript.applyRenameFile","_typescript.goToSourceDefinition"]},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inlayHintProvider":true,"linkedEditingRangeProvider":false,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"documentSelector":null,"full":true,"legend":{"tokenModifiers":["declaration","static","async","readonly","defaultLibrary","local"],"tokenTypes":["class","enum","interface","namespace","typeParameter","type","parameter","variable","enumMember","property","function","member"]},"range":true},"signatureHelpProvider":{"retriggerCharacters":[")"],"triggerCharacters":["(",",","<"]},"textDocumentSync":2,"typeDefinitionProvider":true,"workspace":{"fileOperations":{"willRename":{"filters":[{"pattern":{"glob":"**/*.{ts,js,jsx,tsx,mjs,mts,cjs,cts}","matches":"file"},"scheme":"file"},{"pattern":{"glob":"**","matches":"folder"},"scheme":"file"}]}}},"workspaceSymbolProvider":true}}
2024-02-13T15:49:21.331 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"initialized","params":{}}
2024-02-13T15:49:21.331 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: None, method: "initialized", params: None })))
2024-02-13T15:49:21.331 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"hostInfo":"helix","javascript":{"inlayHints":{"includeInlayEnumMemberValueHints":true,"includeInlayFunctionLikeReturnTypeHints":true,"includeInlayFunctionParameterTypeHints":true,"includeInlayParameterNameHints":"all","includeInlayParameterNameHintsWhenArgumentMatchesName":true,"includeInlayPropertyDeclarationTypeHints":true,"includeInlayVariableTypeHints":true}},"typescript":{"inlayHints":{"includeInlayEnumMemberValueHints":true,"includeInlayFunctionLikeReturnTypeHints":true,"includeInlayFunctionParameterTypeHints":true,"includeInlayParameterNameHints":"all","includeInlayParameterNameHintsWhenArgumentMatchesName":true,"includeInlayPropertyDeclarationTypeHints":true,"includeInlayVariableTypeHints":true}}}}}
2024-02-13T15:49:21.331 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"typescript","text":"const longString = \"\"","uri":"file:///home/hendrik/tmp/test.ts","version":0}}}
2024-02-13T15:49:21.332 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","method":"$/typescriptVersion","params":{"version":"5.3.3","source":"bundled"}}
2024-02-13T15:49:21.332 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "$/typescriptVersion", params: Map({"source": String("bundled"), "version": String("5.3.3")}) })))
2024-02-13T15:49:21.332 helix_term::application [ERROR] received malformed notification from Language Server: Unhandled
2024-02-13T15:49:21.364 helix_term::application [DEBUG] received editor event: Redraw
2024-02-13T15:49:21.943 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/hendrik/tmp/test.ts","diagnostics":[]}}
2024-02-13T15:49:21.943 helix_term::application [DEBUG] received editor event: LanguageServerMessage((0, Notification(Notification { jsonrpc: Some(V2), method: "textDocument/publishDiagnostics", params: Map({"diagnostics": Array [], "uri": String("file:///home/hendrik/tmp/test.ts")}) })))
2024-02-13T15:49:21.977 helix_term::application [DEBUG] received editor event: Redraw
2024-02-13T15:49:22.495 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:22.495 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":21,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":1}
2024-02-13T15:49:22.498 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":1,"result":[]}
2024-02-13T15:49:22.498 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:22.611 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:23.100 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/signatureHelp","params":{"position":{"character":20,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":2}
2024-02-13T15:49:23.103 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":2,"result":null}
2024-02-13T15:49:23.103 helix_lsp::transport [INFO] typescript-language-server <- null
2024-02-13T15:49:24.180 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":20,"line":0},"start":{"character":20,"line":0}},"text":"L"}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":1}}}
2024-02-13T15:49:24.180 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"const longString = \"L\""}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":1}}}
2024-02-13T15:49:24.189 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:24.189 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":22,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":3}
2024-02-13T15:49:24.189 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":21,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":1}
2024-02-13T15:49:24.189 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":21,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":4}
2024-02-13T15:49:24.195 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":3,"result":[]}
2024-02-13T15:49:24.195 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:24.212 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":4,"result":{"items":[],"isIncomplete":false}}
2024-02-13T15:49:24.212 helix_lsp::transport [INFO] typescript-language-server <- {"isIncomplete":false,"items":[]}
2024-02-13T15:49:24.368 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":21,"line":0},"start":{"character":21,"line":0}},"text":"o"}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":2}}}
2024-02-13T15:49:24.368 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"const longString = \"Lo\""}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":2}}}
2024-02-13T15:49:24.377 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:24.377 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":23,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":5}
2024-02-13T15:49:24.377 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":22,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":6}
2024-02-13T15:49:24.377 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":22,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":2}
2024-02-13T15:49:24.382 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":5,"result":[]}
2024-02-13T15:49:24.382 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:24.383 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":6,"result":{"items":[],"isIncomplete":false}}
2024-02-13T15:49:24.383 helix_lsp::transport [INFO] typescript-language-server <- {"isIncomplete":false,"items":[]}
2024-02-13T15:49:24.482 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":22,"line":0},"start":{"character":22,"line":0}},"text":"r"}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":3}}}
2024-02-13T15:49:24.482 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"const longString = \"Lor\""}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":3}}}
2024-02-13T15:49:24.491 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:24.491 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":24,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":7}
2024-02-13T15:49:24.491 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":23,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":8}
2024-02-13T15:49:24.491 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":23,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":3}
2024-02-13T15:49:24.495 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":7,"result":[]}
2024-02-13T15:49:24.495 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:24.495 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":8,"result":{"items":[],"isIncomplete":false}}
2024-02-13T15:49:24.495 helix_lsp::transport [INFO] typescript-language-server <- {"isIncomplete":false,"items":[]}
2024-02-13T15:49:24.550 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":23,"line":0},"start":{"character":23,"line":0}},"text":"e"}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":4}}}
2024-02-13T15:49:24.550 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"const longString = \"Lore\""}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":4}}}
2024-02-13T15:49:24.559 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:24.559 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":25,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":9}
2024-02-13T15:49:24.559 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":24,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":10}
2024-02-13T15:49:24.559 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":24,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":4}
2024-02-13T15:49:24.561 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":9,"result":[]}
2024-02-13T15:49:24.561 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:24.562 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":10,"result":{"items":[],"isIncomplete":false}}
2024-02-13T15:49:24.562 helix_lsp::transport [INFO] typescript-language-server <- {"isIncomplete":false,"items":[]}
2024-02-13T15:49:24.660 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":24,"line":0},"start":{"character":24,"line":0}},"text":"m"}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":5}}}
2024-02-13T15:49:24.660 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"const longString = \"Lorem\""}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":5}}}
2024-02-13T15:49:24.669 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:24.669 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":26,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":11}
2024-02-13T15:49:24.669 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":25,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":12}
2024-02-13T15:49:24.669 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":25,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":5}
2024-02-13T15:49:24.672 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":11,"result":[]}
2024-02-13T15:49:24.672 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:24.675 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":12,"result":{"items":[],"isIncomplete":false}}
2024-02-13T15:49:24.675 helix_lsp::transport [INFO] typescript-language-server <- {"isIncomplete":false,"items":[]}
2024-02-13T15:49:24.920 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":25,"line":0},"start":{"character":25,"line":0}},"text":" "}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":6}}}
2024-02-13T15:49:24.920 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"const longString = \"Lorem \""}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":6}}}
2024-02-13T15:49:24.920 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":26,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":13}
2024-02-13T15:49:24.920 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/completion","params":{"position":{"character":26,"line":0},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":6}
2024-02-13T15:49:24.923 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":13,"result":{"items":[],"isIncomplete":false}}
2024-02-13T15:49:24.923 helix_lsp::transport [INFO] typescript-language-server <- {"isIncomplete":false,"items":[]}
2024-02-13T15:49:25.322 helix_lsp::transport [INFO] gpt <- {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/hendrik/tmp/test.ts","diagnostics":[{"message":"Fetching completion...","severity":3,"range":{"start":{"line":0,"character":0},"end":{"line":1,"character":0}},"source":"helix-gpt"}]}}
2024-02-13T15:49:25.322 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "textDocument/publishDiagnostics", params: Map({"diagnostics": Array [Object {"message": String("Fetching completion..."), "range": Object {"end": Object {"character": Number(0), "line": Number(1)}, "start": Object {"character": Number(0), "line": Number(0)}}, "severity": Number(3), "source": String("helix-gpt")}], "uri": String("file:///home/hendrik/tmp/test.ts")}) })))
2024-02-13T15:49:25.322 helix_lsp::util [WARN] LSP position Position { line: 1, character: 0 } out of range assuming EOF
2024-02-13T15:49:25.356 helix_term::application [DEBUG] received editor event: Redraw
2024-02-13T15:49:30.368 helix_lsp::transport [INFO] gpt <- {"jsonrpc":"2.0","id":6,"result":{"isIncomplete":false,"items":[{"label":"ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed purus eget magna gravida aliquet. Sed ac eros at erat fringilla posuere. Suspendisse potenti. Sed nec ligula pharetra, suscipit felis in, malesuada metus. Aliquam erat volutpat. Nulla facilisi. Fusce auctor, eros vel aliquam ultrices, metus erat aliquam metus, nec dapibus justo libero eget magna","kind":1,"preselect":true,"detail":"ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed purus eget magna gravida aliquet. Sed ac eros at erat fringilla posuere. Suspendisse potenti. Sed nec ligula pharetra, suscipit felis in, malesuada metus. Aliquam erat volutpat. Nulla facilisi. Fusce auctor, eros vel aliquam ultrices, metus erat aliquam metus, nec dapibus justo libero eget magna","insertText":"ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed purus eget magna gravida aliquet. Sed ac eros at erat fringilla posuere. Suspendisse potenti. Sed nec ligula pharetra, suscipit felis in, malesuada metus. Aliquam erat volutpat. Nulla facilisi. Fusce auctor, eros vel aliquam ultrices, metus erat aliquam metus, nec dapibus justo libero eget magna","insertTextFormat":1,"additionalTextEdits":[{"newText":"","range":{"start":{"line":0,"character":387},"end":{"line":0,"character":200}}}]},{"label":"ipsum dolor sit amet, consectetur adipiscing elit. Mauris vel metus nec libero pharetra scelerisque. Sed sit amet nisl id libero sollicitudin sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent sed lacinia nunc. Phasellus nec dolor ac libero sodales aliquam. Praesent vitae magna eros. Pellentesque habitant morbi tristique sen","kind":1,"preselect":true,"detail":"ipsum dolor sit amet, consectetur adipiscing elit. Mauris vel metus nec libero pharetra scelerisque. Sed sit amet nisl id libero sollicitudin sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent sed lacinia nunc. Phasellus nec dolor ac libero sodales aliquam. Praesent vitae magna eros. Pellentesque habitant morbi tristique sen","insertText":"ipsum dolor sit amet, consectetur adipiscing elit. Mauris vel metus nec libero pharetra scelerisque. Sed sit amet nisl id libero sollicitudin sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent sed lacinia nunc. Phasellus nec dolor ac libero sodales aliquam. Praesent vitae magna eros. Pellentesque habitant morbi tristique sen","insertTextFormat":1,"additionalTextEdits":[{"newText":"","range":{"start":{"line":0,"character":412},"end":{"line":0,"character":200}}}]},{"label":"ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac","kind":1,"preselect":true,"detail":"ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac","insertText":"ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac","insertTextFormat":1,"additionalTextEdits":[{"newText":"","range":{"start":{"line":0,"character":1663},"end":{"line":0,"character":200}}}]}]}}
2024-02-13T15:49:30.368 helix_lsp::transport [INFO] gpt <- {"isIncomplete":false,"items":[{"additionalTextEdits":[{"newText":"","range":{"end":{"character":200,"line":0},"start":{"character":387,"line":0}}}],"detail":"ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed purus eget magna gravida aliquet. Sed ac eros at erat fringilla posuere. Suspendisse potenti. Sed nec ligula pharetra, suscipit felis in, malesuada metus. Aliquam erat volutpat. Nulla facilisi. Fusce auctor, eros vel aliquam ultrices, metus erat aliquam metus, nec dapibus justo libero eget magna","insertText":"ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed purus eget magna gravida aliquet. Sed ac eros at erat fringilla posuere. Suspendisse potenti. Sed nec ligula pharetra, suscipit felis in, malesuada metus. Aliquam erat volutpat. Nulla facilisi. Fusce auctor, eros vel aliquam ultrices, metus erat aliquam metus, nec dapibus justo libero eget magna","insertTextFormat":1,"kind":1,"label":"ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sed purus eget magna gravida aliquet. Sed ac eros at erat fringilla posuere. Suspendisse potenti. Sed nec ligula pharetra, suscipit felis in, malesuada metus. Aliquam erat volutpat. Nulla facilisi. Fusce auctor, eros vel aliquam ultrices, metus erat aliquam metus, nec dapibus justo libero eget magna","preselect":true},{"additionalTextEdits":[{"newText":"","range":{"end":{"character":200,"line":0},"start":{"character":412,"line":0}}}],"detail":"ipsum dolor sit amet, consectetur adipiscing elit. Mauris vel metus nec libero pharetra scelerisque. Sed sit amet nisl id libero sollicitudin sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent sed lacinia nunc. Phasellus nec dolor ac libero sodales aliquam. Praesent vitae magna eros. Pellentesque habitant morbi tristique sen","insertText":"ipsum dolor sit amet, consectetur adipiscing elit. Mauris vel metus nec libero pharetra scelerisque. Sed sit amet nisl id libero sollicitudin sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent sed lacinia nunc. Phasellus nec dolor ac libero sodales aliquam. Praesent vitae magna eros. Pellentesque habitant morbi tristique sen","insertTextFormat":1,"kind":1,"label":"ipsum dolor sit amet, consectetur adipiscing elit. Mauris vel metus nec libero pharetra scelerisque. Sed sit amet nisl id libero sollicitudin sollicitudin. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent sed lacinia nunc. Phasellus nec dolor ac libero sodales aliquam. Praesent vitae magna eros. Pellentesque habitant morbi tristique sen","preselect":true},{"additionalTextEdits":[{"newText":"","range":{"end":{"character":200,"line":0},"start":{"character":1663,"line":0}}}],"detail":"ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac","insertText":"ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac","insertTextFormat":1,"kind":1,"label":"ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac","preselect":true}]}
2024-02-13T15:49:30.368 helix_lsp::transport [INFO] gpt <- {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/hendrik/tmp/test.ts","diagnostics":[]}}
2024-02-13T15:49:30.369 helix_term::application [DEBUG] received editor event: LanguageServerMessage((1, Notification(Notification { jsonrpc: Some(V2), method: "textDocument/publishDiagnostics", params: Map({"diagnostics": Array [], "uri": String("file:///home/hendrik/tmp/test.ts")}) })))
2024-02-13T15:49:30.402 helix_term::application [DEBUG] received editor event: Redraw
2024-02-13T15:49:31.715 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:31.715 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":388,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":14}
2024-02-13T15:49:31.716 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":14,"result":[]}
2024-02-13T15:49:31.716 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:32.383 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:32.383 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":413,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":15}
2024-02-13T15:49:32.383 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":15,"result":[]}
2024-02-13T15:49:32.383 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:32.760 helix_term::application [DEBUG] received editor event: IdleTimer
2024-02-13T15:49:32.761 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":1664,"line":0},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts"}},"id":16}
2024-02-13T15:49:32.762 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":16,"result":[]}
2024-02-13T15:49:32.762 helix_lsp::transport [INFO] typescript-language-server <- []
2024-02-13T15:49:33.662 helix_lsp::transport [INFO] gpt -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"text":"const longString = \"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac\""}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":13}}}
2024-02-13T15:49:33.662 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"contentChanges":[{"range":{"end":{"character":26,"line":0},"start":{"character":26,"line":0}},"text":"ipsum dolor sit amet, consectetur adipiscing elit. Donec euismod egestas elit, in cursus ligula. Nullam et mauris at arcu ultrices finibus. Vivamus luctus, lectus sed pellentesque facilisis, mi nunc blandit leo, sit amet auctor enim tortor vitae odio. Nulla facilisi. Nunc nec nulla vitae justo ullamcorper scelerisque. Nulla facilisi. Cras auctor, dolor quis euismod suscipit, justo sapien tincidunt nunc, a imperdiet purus ligula non libero. Nam auctor, metus nec fringilla convallis, elit felis varius tortor, vitae gravida lorem mi sit amet nisl. Donec nec urna ac nulla vestibulum interdum. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac ex lacinia fermentum. Nulla facilisi. Nunc at finibus lorem. Nulla facilisi. Quisque non purus in ligula varius fermentum id id dui. Aenean sed urna ac"}],"textDocument":{"uri":"file:///home/hendrik/tmp/test.ts","version":13}}}

Platform

Linux

Terminal Emulator

alacritty

Installation Method

source

Helix Version

helix 23.10 (29ac2bb)

@the-mikedavis
Copy link
Member

It looks like the language server is using a hard-coded 200 for the completion response's end character https://github.com/leona/helix-gpt/blob/0b4293f26b14c3410af76bb2a96414e703b9aa26/src/events/completions.ts#L119

@hnorkowski
Copy link
Contributor Author

I was assuming that the LSP is sending malformed messages. However, an LSP should not be able to crash the editor with bad messages.

@the-mikedavis
Copy link
Member

Yeah in this case we should discard the completion item since the range isn't valid

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-language-server Area: Language server client C-bug Category: This is a bug
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants