Open yavorski opened 2 months ago
It looks like the language server isn't responding to the textDocument/rangeFormatting
request. Currently we block on this which freezes the editor: https://github.com/helix-editor/helix/blob/ff33b07756548935577aefc15cf48a1beb27b162/helix-term/src/commands.rs#L4602-L4618
Instead the formatting request should probably be handled asynchronously
Summary
Hi, selecting a line in typescript and pressing
x=
freezes the editor.Reproduction Steps
Save this as
file.ts
and pressx=
on the specified line.Helix log
~/.cache/helix/helix.log
``` 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/Dockerfile.*", re: "(?-u)^.*/Dockerfile\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('D'), Literal('o'), Literal('c'), Literal('k'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/dockerfile.*", re: "(?-u)^.*/dockerfile\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('d'), Literal('o'), Literal('c'), Literal('k'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/Containerfile.*", re: "(?-u)^.*/Containerfile\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('C'), Literal('o'), Literal('n'), Literal('t'), Literal('a'), Literal('i'), Literal('n'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/containerfile.*", re: "(?-u)^.*/containerfile\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('c'), Literal('o'), Literal('n'), Literal('t'), Literal('a'), Literal('i'), Literal('n'), Literal('e'), Literal('r'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/.*ignore", re: "(?-u)^.*/\\..*ignore$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('.'), ZeroOrMore, Literal('i'), Literal('g'), Literal('n'), Literal('o'), Literal('r'), Literal('e')]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/BUILD.*", re: "(?-u)^.*/BUILD\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('B'), Literal('U'), Literal('I'), Literal('L'), Literal('D'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/.env.*", re: "(?-u)^.*/\\.env\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('.'), Literal('e'), Literal('n'), Literal('v'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/.envrc.*", re: "(?-u)^.*/\\.envrc\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('.'), Literal('e'), Literal('n'), Literal('v'), Literal('r'), Literal('c'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/conf/*/*.{inc,conf}", re: "(?-u)^.*/conf/.*/.*\\.(?:conf|inc)$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('c'), Literal('o'), Literal('n'), Literal('f'), Literal('/'), ZeroOrMore, Literal('/'), ZeroOrMore, Literal('.'), Alternates([Tokens([Literal('c'), Literal('o'), Literal('n'), Literal('f')]), Tokens([Literal('i'), Literal('n'), Literal('c')])])]) } 2024-08-15T13:26:59.743 globset [DEBUG] glob converted to regex: Glob { glob: "*/Jenkinsfile.*", re: "(?-u)^.*/Jenkinsfile\\..*$", opts: GlobOptions { case_insensitive: false, literal_separator: false, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('/'), Literal('J'), Literal('e'), Literal('n'), Literal('k'), Literal('i'), Literal('n'), Literal('s'), Literal('f'), Literal('i'), Literal('l'), Literal('e'), Literal('.'), ZeroOrMore]) } 2024-08-15T13:26:59.743 globset [DEBUG] built glob set; 1 literals, 0 basenames, 0 extensions, 0 prefixes, 129 suffixes, 9 required extensions, 10 regexes 2024-08-15T13:26:59.748 helix_view::clipboard [DEBUG] Using wl-copy+wl-paste to interact with the system and selection (primary) clipboard 2024-08-15T13:26:59.750 helix_tui::backend::crossterm [DEBUG] The keyboard enhancement protocol is not supported in this terminal (checked in 1.708977ms) 2024-08-15T13:26:59.750 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:00.001 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:01.091 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:01.259 globset [DEBUG] glob converted to regex: Glob { glob: "*.{zip,gz,bz2,zst,lzo,sz,tgz,tbz2,lz,lz4,lzma,lzo,z,Z,xz,7z,rar,cab}", re: "(?-u)^[^/]*\\.(?:cab|rar|7z|xz|Z|z|lzo|lzma|lz4|lz|tbz2|tgz|sz|lzo|zst|bz2|gz|zip)$", opts: GlobOptions { case_insensitive: false, literal_separator: true, backslash_escape: true, empty_alternates: false }, tokens: Tokens([ZeroOrMore, Literal('.'), Alternates([Tokens([Literal('c'), Literal('a'), Literal('b')]), Tokens([Literal('r'), Literal('a'), Literal('r')]), Tokens([Literal('7'), Literal('z')]), Tokens([Literal('x'), Literal('z')]), Tokens([Literal('Z')]), Tokens([Literal('z')]), Tokens([Literal('l'), Literal('z'), Literal('o')]), Tokens([Literal('l'), Literal('z'), Literal('m'), Literal('a')]), Tokens([Literal('l'), Literal('z'), Literal('4')]), Tokens([Literal('l'), Literal('z')]), Tokens([Literal('t'), Literal('b'), Literal('z'), Literal('2')]), Tokens([Literal('t'), Literal('g'), Literal('z')]), Tokens([Literal('s'), Literal('z')]), Tokens([Literal('l'), Literal('z'), Literal('o')]), Tokens([Literal('z'), Literal('s'), Literal('t')]), Tokens([Literal('b'), Literal('z'), Literal('2')]), Tokens([Literal('g'), Literal('z')]), Tokens([Literal('z'), Literal('i'), Literal('p')])])]) } 2024-08-15T13:27:01.259 globset [DEBUG] built glob set; 0 literals, 0 basenames, 0 extensions, 0 prefixes, 0 suffixes, 0 required extensions, 1 regexes 2024-08-15T13:27:01.260 helix_term::ui [DEBUG] file_picker init 941.548µs 2024-08-15T13:27:01.263 ignore::walk [DEBUG] ignoring /home/wrx/dev/tmp/.git: Ignore(IgnoreMatch(Hidden)) 2024-08-15T13:27:01.264 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:01.510 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:01.511 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:01.560 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:01.739 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:01.992 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:01.992 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:02.099 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:02.171 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:02.244 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:02.372 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:02.623 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:02.623 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:03.172 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:03.424 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:03.424 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:04.076 helix_view::document [DEBUG] id 1 modified - last saved: 0, current: 0 2024-08-15T13:27:04.076 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-08-15T13:27:04.077 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":{}},"formatting":{"dynamicRegistration":false},"hover":{"contentFormat":["markdown"]},"inlayHint":{"dynamicRegistration":false},"publishDiagnostics":{"tagSupport":{"valueSet":[1,2]},"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":"24.7"},"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":10659,"rootPath":"/home/wrx/dev/tmp","rootUri":"file:///home/wrx/dev/tmp","workspaceFolders":[{"name":"tmp","uri":"file:///home/wrx/dev/tmp"}]},"id":0} 2024-08-15T13:27:04.077 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:04.175 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","method":"window/logMessage","params":{"type":3,"message":"Using Typescript version (bundled) 5.5.4 from path \"/usr/lib/node_modules/typescript/lib/tsserver.js\""}} 2024-08-15T13:27:04.176 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-08-15T13:27:04.176 helix_term::application [DEBUG] received editor event: LanguageServerMessage((LanguageServerId(1v1), Notification(Notification { jsonrpc: Some(V2), method: "window/logMessage", params: Map({"message": String("Using Typescript version (bundled) 5.5.4 from path \"/usr/lib/node_modules/typescript/lib/tsserver.js\""), "type": Number(3)}) }))) 2024-08-15T13:27:04.176 helix_term::application [INFO] window/logMessage: LogMessageParams { typ: Info, message: "Using Typescript version (bundled) 5.5.4 from path \"/usr/lib/node_modules/typescript/lib/tsserver.js\"" } 2024-08-15T13:27:04.176 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-08-15T13:27:04.176 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"initialized","params":{}} 2024-08-15T13:27:04.176 helix_term::application [DEBUG] received editor event: LanguageServerMessage((LanguageServerId(1v1), Notification(Notification { jsonrpc: None, method: "initialized", params: None }))) 2024-08-15T13:27:04.176 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-08-15T13:27:04.176 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"typescript","text":"export class Test {\n private test(html: string): string {\nreturn `Press \"x\" then \"=\" on this line`;\n }\n}\n","uri":"file:///home/wrx/dev/tmp/file.ts","version":0}}} 2024-08-15T13:27:04.177 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","method":"$/typescriptVersion","params":{"version":"5.5.4","source":"bundled"}} 2024-08-15T13:27:04.178 helix_term::application [DEBUG] received editor event: LanguageServerMessage((LanguageServerId(1v1), Notification(Notification { jsonrpc: Some(V2), method: "$/typescriptVersion", params: Map({"source": String("bundled"), "version": String("5.5.4")}) }))) 2024-08-15T13:27:04.178 helix_term::application [INFO] Ignoring Unhandled notification from Language Server 2024-08-15T13:27:04.211 helix_term::application [DEBUG] received editor event: Redraw 2024-08-15T13:27:04.211 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:04.325 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:05.132 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/wrx/dev/tmp/file.ts","diagnostics":[{"range":{"start":{"line":1,"character":10},"end":{"line":1,"character":14}},"message":"'test' is declared but its value is never read.","severity":4,"code":6133,"source":"typescript","tags":[1]},{"range":{"start":{"line":1,"character":15},"end":{"line":1,"character":19}},"message":"'html' is declared but its value is never read.","severity":4,"code":6133,"source":"typescript","tags":[1]}]}} 2024-08-15T13:27:05.132 helix_term::application [DEBUG] received editor event: LanguageServerMessage((LanguageServerId(1v1), Notification(Notification { jsonrpc: Some(V2), method: "textDocument/publishDiagnostics", params: Map({"diagnostics": Array [Object {"code": Number(6133), "message": String("'test' is declared but its value is never read."), "range": Object {"end": Object {"character": Number(14), "line": Number(1)}, "start": Object {"character": Number(10), "line": Number(1)}}, "severity": Number(4), "source": String("typescript"), "tags": Array [Number(1)]}, Object {"code": Number(6133), "message": String("'html' is declared but its value is never read."), "range": Object {"end": Object {"character": Number(19), "line": Number(1)}, "start": Object {"character": Number(15), "line": Number(1)}}, "severity": Number(4), "source": String("typescript"), "tags": Array [Number(1)]}], "uri": String("file:///home/wrx/dev/tmp/file.ts")}) }))) 2024-08-15T13:27:05.168 helix_term::application [DEBUG] received editor event: Redraw 2024-08-15T13:27:05.169 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:05.507 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:05.628 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:05.756 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:06.007 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:06.011 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:06.262 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:06.323 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:06.575 helix_term::application [DEBUG] received editor event: IdleTimer 2024-08-15T13:27:08.012 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"textDocument/rangeFormatting","params":{"options":{"insertSpaces":false,"tabSize":0},"range":{"end":{"character":0,"line":3},"start":{"character":0,"line":2}},"textDocument":{"uri":"file:///home/wrx/dev/tmp/file.ts"}},"id":1} 2024-08-15T13:27:28.013 helix_view::document [DEBUG] id 2 modified - last saved: 0, current: 0 2024-08-15T13:27:28.014 helix_term::job [DEBUG] waiting on jobs... 2024-08-15T13:27:28.015 helix_lsp::file_event [DEBUG] Removing LSP client: 1v1 2024-08-15T13:27:28.015 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"shutdown","id":2} 2024-08-15T13:27:28.017 helix_lsp::transport [INFO] typescript-language-server <- {"jsonrpc":"2.0","id":2,"result":null} 2024-08-15T13:27:28.017 helix_lsp::transport [INFO] typescript-language-server <- null 2024-08-15T13:27:28.017 helix_lsp::transport [INFO] typescript-language-server -> {"jsonrpc":"2.0","method":"exit"} ```Platform
Linux
Terminal Emulator
Alacritty
Installation Method
pacman
Helix Version
helix 24.7