Implement headless LSP mode (#488)

* adds new Headless LSP mode
* refactor and simplify LSP client control flow into new `ClientConnectionManager` class
* adds new setting: `godotTools.lsp.headless`, disabled by default
* split `godotTools.editorPath` into `godotTools.editorPath.godot3` and `.godot4`
* fix #373, broken formatting in hovers
* improve right click -> open docs to work on type-annotated variables

---------

Co-authored-by: David Kincaid <daelonsuzuka@gmail.com>
This commit is contained in:
Ryan Brue
2023-10-10 22:05:22 -05:00
committed by GitHub
parent 6a9f408d4e
commit f4e4b9c422
14 changed files with 1075 additions and 461 deletions

View File

@@ -15,7 +15,7 @@
"author": "The Godot Engine community",
"publisher": "geequlim",
"engines": {
"vscode": "^1.68.0"
"vscode": "^1.80.0"
},
"categories": [
"Programming Languages",
@@ -26,9 +26,6 @@
],
"activationEvents": [
"workspaceContains:project.godot",
"onLanguage:gdscript",
"onLanguage:gdshader",
"onLanguage:gdresource",
"onDebugResolve:godot"
],
"main": "./out/extension.js",
@@ -49,6 +46,14 @@
"command": "godotTools.openEditor",
"title": "Godot Tools: Open workspace with Godot editor"
},
{
"command": "godotTools.startLanguageServer",
"title": "Godot Tools: Start the GDScript Language Server for this workspace"
},
{
"command": "godotTools.stopLanguageServer",
"title": "Godot Tools: Stop the GDScript Language Server for this workspace"
},
{
"command": "godotTools.runProject",
"title": "Godot Tools: Run workspace as Godot project"
@@ -184,10 +189,20 @@
"default": 6008,
"description": "The server port of the GDScript language server"
},
"godotTools.editorPath": {
"godotTools.lsp.headless": {
"type": "boolean",
"default": false,
"description": "Whether to launch the LSP as a headless child process"
},
"godotTools.editorPath.godot3": {
"type": "string",
"default": "",
"description": "The absolute path to the Godot editor executable"
"default": "godot3",
"description": "The absolute path to the Godot 3 editor executable"
},
"godotTools.editorPath.godot4": {
"type": "string",
"default": "godot4",
"description": "The absolute path to the Godot 4 editor executable"
},
"godotTools.sceneFileConfig": {
"type": "string",
@@ -546,7 +561,7 @@
"editor/context": [
{
"command": "godotTools.openTypeDocumentation",
"when": "godotTools.context.connectedToEditor",
"when": "godotTools.context.connectedToLSP && godotTools.context.typeFound",
"group": "navigation@9"
},
{
@@ -560,15 +575,15 @@
"devDependencies": {
"@types/marked": "^0.6.5",
"@types/mocha": "^9.1.0",
"@types/node": "^10.12.21",
"@types/node": "^18.15.0",
"@types/prismjs": "^1.16.8",
"@types/vscode": "^1.68.0",
"@types/vscode": "^1.80.0",
"@types/ws": "^8.2.2",
"@vscode/vsce": "^2.21.0",
"esbuild": "^0.15.2",
"ts-node": "^10.9.1",
"tslint": "^5.20.1",
"typescript": "^3.5.1",
"vsce": "^2.10.0"
"typescript": "^5.2.2"
},
"dependencies": {
"await-notify": "^1.0.1",