You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Ada & SPARK Extension Version: 26.0.202411173 and older
Bug Summary and Reproducer
Bug Summary:
During active editing of a GPR file, it seems the LS lags behind processing all of the intermediate edits such that it's responsiveness becomes very noticeable. The screen capture (in the "Additional Context" section) and log shows an example of typing a "package" skeleton and then waiting for a completion response for an attribute declaration, which takes nearly 8 seconds before a response is provided. In more complex GPR files I've seen completion timeout and not function at all.
Steps to reproduce:
Perform normal modifications of the GPR file and then trigger completion immediately after completing the edits. It should be very noticeable that completion is being delayed by the previous edits.
I'd expect the LS would not be bogged down processing previous versions of the file which were only transitional to get to the point where completion is requested. This provides an unappealing user experience where requests sent to the server can be delayed significantly or caused to timeout due to this.
Configuration and Logs
[ALS.MAIN] ALS version: 26.0w (20241117) (08:05:16.860)
[ALS.MAIN] Initializing server ... (08:05:16.860)
[ALS.MAIN] GPR PATH: (08:05:16.860)
[ALS.MAIN] PATH: /home/troy/.cargo/bin:/home/troy/bin:/home/troy/.local/bin:/home/troy/.cargo/bin:/home/troy/bin:/home/troy/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/lib/jvm/java-10-oracle/bin:/usr/lib/jvm/java-10-oracle/db/bin:/usr/lib/jvm/java-10-oracle/bin:/usr/lib/jvm/java-10-oracle/db/bin (08:05:16.860)
[ALS.IN] {"jsonrpc":"2.0","id":0,"method":"initialize","params":{"processId":1828064,"clientInfo":{"name":"Visual Studio Code","version":"1.95.3"},"locale":"en","rootPath":"/home/troy/ada/hello_world","rootUri":"file:///home/troy/ada/hello_world","capabilities":{"workspace":{"applyEdit":true,"workspaceEdit":{"documentChanges":true,"resourceOperations":["create","rename","delete"],"failureHandling":"textOnlyTransactional","normalizesLineEndings":true,"changeAnnotationSupport":{"groupsOnLabel":true}},"configuration":true,"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"symbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]},"resolveSupport":{"properties":["location.range"]}},"codeLens":{"refreshSupport":true},"executeCommand":{"dynamicRegistration":true},"didChangeConfiguration":{"dynamicRegistration":true},"workspaceFolders":true,"foldingRange":{"refreshSupport":true},"semanticTokens":{"refreshSupport":true},"fileOperations":{"dynamicRegistration":true,"didCreate":true,"didRename":true,"didDelete":true,"willCreate":true,"willRename":true,"willDelete":true},"inlineValue":{"refreshSupport":true},"inlayHint":{"refreshSupport":true},"diagnostics":{"refreshSupport":true}},"textDocument":{"publishDiagnostics":{"relatedInformation":true,"versionSupport":false,"tagSupport":{"valueSet":[1,2]},"codeDescriptionSupport":true,"dataSupport":true},"synchronization":{"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true,"didSave":true},"completion":{"dynamicRegistration":true,"contextSupport":true,"completionItem":{"snippetSupport":true,"commitCharactersSupport":true,"documentationFormat":["markdown","plaintext"],"deprecatedSupport":true,"preselectSupport":true,"tagSupport":{"valueSet":[1]},"insertReplaceSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true},"insertTextMode":2,"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode","data"]}},"hover":{"dynamicRegistration":true,"contentFormat":["markdown","plaintext"]},"signatureHelp":{"dynamicRegistration":true,"signatureInformation":{"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true},"activeParameterSupport":true},"contextSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"references":{"dynamicRegistration":true},"documentHighlight":{"dynamicRegistration":true},"documentSymbol":{"dynamicRegistration":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"hierarchicalDocumentSymbolSupport":true,"tagSupport":{"valueSet":[1]},"labelSupport":true},"codeAction":{"dynamicRegistration":true,"isPreferredSupport":true,"disabledSupport":true,"dataSupport":true,"resolveSupport":{"properties":["edit"]},"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"honorsChangeAnnotations":true},"codeLens":{"dynamicRegistration":true},"formatting":{"dynamicRegistration":true},"rangeFormatting":{"dynamicRegistration":true,"rangesSupport":true},"onTypeFormatting":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1,"honorsChangeAnnotations":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"colorProvider":{"dynamicRegistration":true},"foldingRange":{"dynamicRegistration":true,"rangeLimit":5000,"lineFoldingOnly":true,"foldingRangeKind":{"valueSet":["comment","imports","region"]},"foldingRange":{"collapsedText":false}},"declaration":{"dynamicRegistration":true,"linkSupport":true},"selectionRange":{"dynamicRegistration":true},"callHierarchy":{"dynamicRegistration":true},"semanticTokens":{"dynamicRegistration":true,"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","operator","decorator"],"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"formats":["relative"],"requests":{"range":true,"full":{"delta":true}},"multilineTokenSupport":false,"overlappingTokenSupport":false,"serverCancelSupport":true,"augmentsSyntaxTokens":true},"linkedEditingRange":{"dynamicRegistration":true},"typeHierarchy":{"dynamicRegistration":true},"inlineValue":{"dynamicRegistration":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":false}},"window":{"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"showDocument":{"support":true},"workDoneProgress":true},"general":{"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]},"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"markdown":{"parser":"marked","version":"1.1.0"},"positionEncodings":["utf-16"]},"notebookDocument":{"synchronization":{"dynamicRegistration":true,"executionSummarySupport":true}}},"trace":"verbose","workspaceFolders":[{"uri":"file:///home/troy/ada/hello_world","name":"hello_world"}]}} (08:05:16.861)
[ALS.OUT] {"jsonrpc":"2.0","id":0,"result":{"capabilities":{"textDocumentSync":{"openClose":true,"change":1},"completionProvider":{"triggerCharacters":["",".","'"],"resolveProvider":true},"hoverProvider":true,"declarationProvider":true,"definitionProvider":true,"documentSymbolProvider":{}}}} (08:05:16.865)
[ALS.IN] {"jsonrpc":"2.0","method":"initialized","params":{}} (08:05:16.869)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","languageId":"gpr","version":1,"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\nend Hello_World;\n"}}} (08:05:16.876)
[ALS.MAIN] In Text_Document_Did_Open (08:05:16.877)
[ALS.MAIN] Uri : file:///home/troy/ada/hello_world/hello_world.gpr (08:05:16.877)
[ALS.IN] {"jsonrpc":"2.0","method":"workspace/didChangeConfiguration","params":{"settings":{"ada":{"projectFile":"hello_world.gpr","scenarioVariables":{},"projectDiagnostics":true,"defaultCharset":"iso-8859-1","relocateBuildTree":"","rootDir":"","useGnatformat":true,"onTypeFormatting":{"indentOnly":true},"documentationStyle":"gnat","displayMethodAncestryOnNavigation":"usage_and_abstract_only","enableDiagnostics":true,"foldComments":true,"namedNotationThreshold":3,"useCompletionSnippets":false,"insertWithClauses":false,"renameInComments":false,"enableIndexing":true,"followSymlinks":true,"trace":{"server":"verbose"}}}}} (08:05:16.877)
[ALS.IN] {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"verbose"}} (08:05:17.039)
[ALS.IN] {"jsonrpc":"2.0","id":1,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:17.308)
[ALS.IN] {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"verbose"}} (08:05:18.258)
[ALS.IN] {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"verbose"}} (08:05:18.258)
[ALS.IN] {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"verbose"}} (08:05:18.258)
[ALS.IN] {"jsonrpc":"2.0","method":"$/setTrace","params":{"value":"verbose"}} (08:05:18.531)
[ALS.IN] {"jsonrpc":"2.0","id":2,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:18.550)
[ALS.MAIN] Finished Text_Document_Did_Open (08:05:19.181)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:19.181)
[ALS.OUT] {"jsonrpc":"2.0","id":1,"result":[{"name":"Hello_World","kind":2,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"selectionRange":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"children":[{"name":"Main","kind":7,"range":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}},"selectionRange":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}}},{"name":"Source_Dirs","kind":7,"range":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}},"selectionRange":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}}},{"name":"Object_Dir","kind":7,"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}}},{"name":"Create_Missing_Dirs","kind":7,"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}},"selectionRange":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}}}]}]} (08:05:21.155)
[ALS.OUT] {"jsonrpc":"2.0","id":2,"result":[{"name":"Hello_World","kind":2,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"selectionRange":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"children":[{"name":"Main","kind":7,"range":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}},"selectionRange":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}}},{"name":"Source_Dirs","kind":7,"range":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}},"selectionRange":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}}},{"name":"Object_Dir","kind":7,"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}}},{"name":"Create_Missing_Dirs","kind":7,"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}},"selectionRange":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}}}]}]} (08:05:21.155)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":2},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n \nend Hello_World;\n"}]}} (08:05:32.672)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":3},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n \nend Hello_World;\n"}]}} (08:05:32.967)
[ALS.IN] {"jsonrpc":"2.0","id":3,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:33.069)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":4},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n p\nend Hello_World;\n"}]}} (08:05:33.405)
[ALS.IN] {"jsonrpc":"2.0","id":4,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":6,"character":3},"context":{"triggerKind":1}}} (08:05:33.406)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":3}} (08:05:33.444)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":8},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n packa\nend Hello_World;\n"}]}} (08:05:34.063)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":9},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n packag\nend Hello_World;\n"}]}} (08:05:34.166)
[ALS.IN] {"jsonrpc":"2.0","id":5,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:34.166)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":5}} (08:05:34.206)
[ALS.IN] {"jsonrpc":"2.0","id":6,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:34.507)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:34.621)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":6}} (08:05:34.667)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":4}} (08:05:34.699)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":11},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package \nend Hello_World;\n"}]}} (08:05:34.700)
[ALS.IN] {"jsonrpc":"2.0","id":7,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":6,"character":10},"context":{"triggerKind":2,"triggerCharacter":""}}} (08:05:34.701)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":7}} (08:05:35.886)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":20},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler \nend Hello_World;\n"}]}} (08:05:35.887)
[ALS.IN] {"jsonrpc":"2.0","id":8,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":6,"character":19},"context":{"triggerKind":2,"triggerCharacter":""}}} (08:05:35.887)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":8}} (08:05:36.271)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:36.507)
[ALS.OUT] {"jsonrpc":"2.0","id":3,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:36.507)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":23},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n \nend Hello_World;\n"}]}} (08:05:36.517)
[ALS.IN] {"jsonrpc":"2.0","id":9,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:36.620)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":24},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n e\nend Hello_World;\n"}]}} (08:05:36.719)
[ALS.IN] {"jsonrpc":"2.0","id":10,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":7,"character":3},"context":{"triggerKind":1}}} (08:05:36.719)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":9}} (08:05:36.759)
[ALS.MAIN] hello_world.gpr:8:01: error: Expected ':=', got 'end' (08:05:36.773)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":7,"character":0},"end":{"line":7,"character":0}},"severity":1,"source":"project","message":"Expected ':=', got 'end'"}]}} (08:05:36.774)
[ALS.OUT] {"jsonrpc":"2.0","id":4,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:36.774)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":10}} (08:05:36.980)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":27},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n end \nend Hello_World;\n"}]}} (08:05:36.981)
[ALS.IN] {"jsonrpc":"2.0","id":11,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":7,"character":6},"context":{"triggerKind":2,"triggerCharacter":""}}} (08:05:36.982)
[ALS.MAIN] hello_world.gpr:8:01: error: Expected ':=', got 'end' (08:05:37.054)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":7,"character":0},"end":{"line":7,"character":0}},"severity":1,"source":"project","message":"Expected ':=', got 'end'"}]}} (08:05:37.055)
[ALS.OUT] {"jsonrpc":"2.0","id":5,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:37.055)
[ALS.OUT] {"jsonrpc":"2.0","id":6,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:37.055)
[ALS.MAIN] hello_world.gpr:8:01: error: Expected Identifier, got 'end' (08:05:37.338)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":7,"character":0},"end":{"line":7,"character":0}},"severity":1,"source":"project","message":"Expected Identifier, got 'end'"}]}} (08:05:37.339)
[ALS.OUT] {"jsonrpc":"2.0","id":7,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:37.339)
[ALS.MAIN] hello_world.gpr:8:01: error: Expected 'is', got 'end' (08:05:37.614)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":7,"character":0},"end":{"line":7,"character":0}},"severity":1,"source":"project","message":"Expected 'is', got 'end'"}]}} (08:05:37.614)
[ALS.OUT] {"jsonrpc":"2.0","id":8,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:37.615)
[ALS.MAIN] hello_world.gpr:10:01: error: Expected 'end', got Termination (08:05:37.895)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":9,"character":0},"end":{"line":9,"character":0}},"severity":1,"source":"project","message":"Expected 'end', got Termination"}]}} (08:05:37.895)
[ALS.OUT] {"jsonrpc":"2.0","id":9,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:37.896)
[ALS.MAIN] hello_world.gpr:9:01: error: Expected ':=', got 'end' (08:05:38.173)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":8,"character":0},"end":{"line":8,"character":0}},"severity":1,"source":"project","message":"Expected ':=', got 'end'"}]}} (08:05:38.174)
[ALS.OUT] {"jsonrpc":"2.0","id":10,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:38.174)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":36},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n end Compiler;\nend Hello_World;\n"}]}} (08:05:38.392)
[ALS.MAIN] hello_world.gpr:9:01: error: Expected Identifier, got 'end' (08:05:38.444)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":8,"character":0},"end":{"line":8,"character":0}},"severity":1,"source":"project","message":"Expected Identifier, got 'end'"}]}} (08:05:38.445)
[ALS.OUT] {"jsonrpc":"2.0","id":11,"result":{"isIncomplete":false,"items":[]}} (08:05:38.445)
[ALS.IN] {"jsonrpc":"2.0","id":12,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:38.494)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":12}} (08:05:39.250)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":37},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n \n end Compiler;\nend Hello_World;\n"}]}} (08:05:39.448)
[ALS.IN] {"jsonrpc":"2.0","id":13,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:39.550)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":38},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n \n end Compiler;\nend Hello_World;\n"}]}} (08:05:39.578)
[ALS.IN] {"jsonrpc":"2.0","id":14,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":7,"character":3},"context":{"triggerKind":2,"triggerCharacter":""}}} (08:05:39.579)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":13}} (08:05:39.626)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":14}} (08:05:39.743)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":39},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n \n end Compiler;\nend Hello_World;\n"}]}} (08:05:39.744)
[ALS.IN] {"jsonrpc":"2.0","id":15,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":7,"character":4},"context":{"triggerKind":2,"triggerCharacter":""}}} (08:05:39.745)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":15}} (08:05:39.909)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":40},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n \n end Compiler;\nend Hello_World;\n"}]}} (08:05:39.909)
[ALS.IN] {"jsonrpc":"2.0","id":16,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":7,"character":5},"context":{"triggerKind":2,"triggerCharacter":""}}} (08:05:39.910)
[ALS.IN] {"jsonrpc":"2.0","method":"$/cancelRequest","params":{"id":16}} (08:05:40.324)
[ALS.IN] {"jsonrpc":"2.0","method":"textDocument/didChange","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","version":44},"contentChanges":[{"text":"project Hello_World is\n for Main use (\"hello_world.adb\");\n for Source_Dirs use (\".\");\n for Object_Dir use \"obj\";\n for Create_Missing_Dirs use \"true\";\n\n package Compiler is\n for \n end Compiler;\nend Hello_World;\n"}]}} (08:05:40.325)
[ALS.IN] {"jsonrpc":"2.0","id":17,"method":"textDocument/completion","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"},"position":{"line":7,"character":9},"context":{"triggerKind":2,"triggerCharacter":""}}} (08:05:40.325)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:40.373)
[ALS.OUT] {"jsonrpc":"2.0","id":12,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:40.373)
[ALS.IN] {"jsonrpc":"2.0","id":18,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:40.672)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:42.210)
[ALS.OUT] {"jsonrpc":"2.0","id":13,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:42.210)
[ALS.IN] {"jsonrpc":"2.0","id":19,"method":"textDocument/documentSymbol","params":{"textDocument":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr"}}} (08:05:42.974)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:44.028)
[ALS.OUT] {"jsonrpc":"2.0","id":14,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:44.028)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:45.878)
[ALS.OUT] {"jsonrpc":"2.0","id":15,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:45.878)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[]}} (08:05:47.736)
[ALS.OUT] {"jsonrpc":"2.0","id":16,"error":{"code":-32800,"message":"Request was canceled"}} (08:05:47.737)
[ALS.MAIN] hello_world.gpr:9:03: error: Expected Identifier, got 'end' (08:05:48.012)
[ALS.OUT] {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"uri":"file:///home/troy/ada/hello_world/hello_world.gpr","diagnostics":[{"range":{"start":{"line":8,"character":2},"end":{"line":8,"character":2}},"severity":1,"source":"project","message":"Expected Identifier, got 'end'"}]}} (08:05:48.013)
[ALS.OUT] {"jsonrpc":"2.0","id":17,"result":{"isIncomplete":false,"items":[{"label":"Default_Switches","data":["Compiler","Default_Switches"]},{"label":"Driver","data":["Compiler","Driver"]},{"label":"Required_Switches","data":["Compiler","Required_Switches"]},{"label":"Switches","data":["Compiler","Switches"]},{"label":"Config_Body_File_Name","data":["Compiler","Config_Body_File_Name"]},{"label":"Config_Body_File_Name_Index","data":["Compiler","Config_Body_File_Name_Index"]},{"label":"Config_Body_File_Name_Pattern","data":["Compiler","Config_Body_File_Name_Pattern"]},{"label":"Config_File_Switches","data":["Compiler","Config_File_Switches"]},{"label":"Config_File_Unique","data":["Compiler","Config_File_Unique"]},{"label":"Config_Spec_File_Name","data":["Compiler","Config_Spec_File_Name"]},{"label":"Config_Spec_File_Name_Index","data":["Compiler","Config_Spec_File_Name_Index"]},{"label":"Config_Spec_File_Name_Pattern","data":["Compiler","Config_Spec_File_Name_Pattern"]},{"label":"Dependency_Driver","data":["Compiler","Dependency_Driver"]},{"label":"Dependency_Kind","data":["Compiler","Dependency_Kind"]},{"label":"Dependency_Switches","data":["Compiler","Dependency_Switches"]},{"label":"Include_Path","data":["Compiler","Include_Path"]},{"label":"Include_Path_File","data":["Compiler","Include_Path_File"]},{"label":"Include_Switches","data":["Compiler","Include_Switches"]},{"label":"Include_Switches_Via_Spec","data":["Compiler","Include_Switches_Via_Spec"]},{"label":"Language_Kind","data":["Compiler","Language_Kind"]},{"label":"Leading_Required_Switches","data":["Compiler","Leading_Required_Switches"]},{"label":"Local_Config_File","data":["Compiler","Local_Config_File"]},{"label":"Local_Configuration_Pragmas","data":["Compiler","Local_Configuration_Pragmas"]},{"label":"Mapping_Body_Suffix","data":["Compiler","Mapping_Body_Suffix"]},{"label":"Mapping_File_Switches","data":["Compiler","Mapping_File_Switches"]},{"label":"Mapping_Spec_Suffix","data":["Compiler","Mapping_Spec_Suffix"]},{"label":"Max_Command_Line_Length","data":["Compiler","Max_Command_Line_Length"]},{"label":"Multi_Unit_Object_Separator","data":["Compiler","Multi_Unit_Object_Separator"]},{"label":"Multi_Unit_Switches","data":["Compiler","Multi_Unit_Switches"]},{"label":"Object_File_Suffix","data":["Compiler","Object_File_Suffix"]},{"label":"Object_File_Switches","data":["Compiler","Object_File_Switches"]},{"label":"Object_Path_Switches","data":["Compiler","Object_Path_Switches"]},{"label":"Path_Syntax","data":["Compiler","Path_Syntax"]},{"label":"Pic_Option","data":["Compiler","Pic_Option"]},{"label":"Response_File_Format","data":["Compiler","Response_File_Format"]},{"label":"Response_File_Switches","data":["Compiler","Response_File_Switches"]},{"label":"Source_File_Switches","data":["Compiler","Source_File_Switches"]},{"label":"Trailing_Required_Switches","data":["Compiler","Trailing_Required_Switches"]}]}} (08:05:48.014)
[ALS.OUT] {"jsonrpc":"2.0","id":18,"result":[{"name":"Hello_World","kind":2,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"selectionRange":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"children":[{"name":"Main","kind":7,"range":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}},"selectionRange":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}}},{"name":"Source_Dirs","kind":7,"range":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}},"selectionRange":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}}},{"name":"Object_Dir","kind":7,"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}}},{"name":"Create_Missing_Dirs","kind":7,"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}},"selectionRange":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}}},{"name":"Compiler","kind":4,"range":{"start":{"line":6,"character":10},"end":{"line":6,"character":18}},"selectionRange":{"start":{"line":6,"character":10},"end":{"line":6,"character":18}}}]}]} (08:05:48.014)
[ALS.OUT] {"jsonrpc":"2.0","id":19,"result":[{"name":"Hello_World","kind":2,"range":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"selectionRange":{"start":{"line":0,"character":0},"end":{"line":0,"character":7}},"children":[{"name":"Main","kind":7,"range":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}},"selectionRange":{"start":{"line":1,"character":6},"end":{"line":1,"character":10}}},{"name":"Source_Dirs","kind":7,"range":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}},"selectionRange":{"start":{"line":2,"character":6},"end":{"line":2,"character":17}}},{"name":"Object_Dir","kind":7,"range":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}},"selectionRange":{"start":{"line":3,"character":6},"end":{"line":3,"character":16}}},{"name":"Create_Missing_Dirs","kind":7,"range":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}},"selectionRange":{"start":{"line":4,"character":6},"end":{"line":4,"character":25}}},{"name":"Compiler","kind":4,"range":{"start":{"line":6,"character":10},"end":{"line":6,"character":18}},"selectionRange":{"start":{"line":6,"character":10},"end":{"line":6,"character":18}}}]}]} (08:05:48.014)
[ALS.IN] {"jsonrpc":"2.0","id":20,"method":"completionItem/resolve","params":{"label":"Config_Body_File_Name","insertTextFormat":1,"data":["Compiler","Config_Body_File_Name"]}} (08:05:48.042)
[ALS.OUT] {"jsonrpc":"2.0","id":20,"result":{"label":"Config_Body_File_Name","documentation":"Index is a language name. Value is the template to be used to indicate a configuration specific to a body of the language in a configuration file.","insertTextFormat":1,"data":["Compiler","Config_Body_File_Name"]}} (08:05:48.043)
Other VS Code Extensions
N/A
Additional context
The text was updated successfully, but these errors were encountered:
Environment
Bug Summary and Reproducer
Bug Summary:
During active editing of a GPR file, it seems the LS lags behind processing all of the intermediate edits such that it's responsiveness becomes very noticeable. The screen capture (in the "Additional Context" section) and log shows an example of typing a "package" skeleton and then waiting for a completion response for an attribute declaration, which takes nearly 8 seconds before a response is provided. In more complex GPR files I've seen completion timeout and not function at all.
Steps to reproduce:
Perform normal modifications of the GPR file and then trigger completion immediately after completing the edits. It should be very noticeable that completion is being delayed by the previous edits.
hello_world.zip
Expected behavior:
I'd expect the LS would not be bogged down processing previous versions of the file which were only transitional to get to the point where completion is requested. This provides an unappealing user experience where requests sent to the server can be delayed significantly or caused to timeout due to this.
Configuration and Logs
Other VS Code Extensions
N/A
Additional context
The text was updated successfully, but these errors were encountered: