From 6f05f2291140fbacb48f0288aa78c6e2d3dddf4a Mon Sep 17 00:00:00 2001 From: Ricardo Subtil Date: Mon, 18 Sep 2023 11:33:25 +0100 Subject: [PATCH 1/3] Add LSP/DAP section on external editors --- tutorials/editor/external_editor.rst | 40 +++++++++++++++++++++ tutorials/editor/img/lsp_vscode_status.png | Bin 0 -> 10302 bytes 2 files changed, 40 insertions(+) create mode 100644 tutorials/editor/img/lsp_vscode_status.png diff --git a/tutorials/editor/external_editor.rst b/tutorials/editor/external_editor.rst index 5aa87a76456..397861a12d1 100644 --- a/tutorials/editor/external_editor.rst +++ b/tutorials/editor/external_editor.rst @@ -68,3 +68,43 @@ We have official plugins for the following code editors: - `Visual Studio Code `_ - `Emacs `_ + +LSP/DAP support +--------------- + +Godot supports the `Language Server Protocol `_ (**LSP**) for code completion and the `Debug Adapter Protocol `_ (**DAP**) for debugging. You can check the `LSP client list `_ and `DAP client list `_ to find if your editor supports them, and if yes, you should be able to take advantage of these features without the need of a custom plugin. + +To use these protocols, a Godot instance must be running on your current project. You should then configure your editor to communicate to the running adapter ports in Godot, which by default are ``6005`` for **LSP**, and ``6006`` for **DAP**. You can change these ports and other settings in the **Editor Settings**, under the **Network > Language Server** and **Network > Debug Adapter** sections respectively. + +Below are some configuration steps for specific editors: + +- Visual Studio Code + +You need to install the official `Visual Studio Code plugin `_. + +For **LSP**, follow `these instructions `_ to change the default LSP port. The connection status can be checked on the status bar: + +.. image:: img/lsp_vscode_status.png + +For **DAP**, specify the ``debugServer`` property in your ``launch.json`` file: + +.. code-block:: json + + { + "version": "0.2.0", + "configurations": [ + { + "name": "GDScript Godot", + "type": "godot", + "request": "launch", + "project": "${workspaceFolder}", + "port": 6007, + "debugServer": 6006, + } + ] + } + +- Emacs + +Check the official instructions to configure `LSP `_, and `DAP `_. + diff --git a/tutorials/editor/img/lsp_vscode_status.png b/tutorials/editor/img/lsp_vscode_status.png new file mode 100644 index 0000000000000000000000000000000000000000..6303ffe1b40cea82f0844a96bf1e0c5ebdd768ad GIT binary patch literal 10302 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 literal 0 HcmV?d00001 From df1c24dde89b5b453f983b8867ba486bc4d7296a Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 9 Nov 2023 11:18:05 +0100 Subject: [PATCH 2/3] Apply suggestions from code review --- tutorials/editor/external_editor.rst | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/tutorials/editor/external_editor.rst b/tutorials/editor/external_editor.rst index 397861a12d1..d29591929c1 100644 --- a/tutorials/editor/external_editor.rst +++ b/tutorials/editor/external_editor.rst @@ -72,13 +72,14 @@ We have official plugins for the following code editors: LSP/DAP support --------------- -Godot supports the `Language Server Protocol `_ (**LSP**) for code completion and the `Debug Adapter Protocol `_ (**DAP**) for debugging. You can check the `LSP client list `_ and `DAP client list `_ to find if your editor supports them, and if yes, you should be able to take advantage of these features without the need of a custom plugin. +Godot supports the `Language Server Protocol `_ (**LSP**) for code completion and the `Debug Adapter Protocol `_ (**DAP**) for debugging. You can check the `LSP client list `_ and `DAP client list `_ to find if your editor supports them. If this is the case, you should be able to take advantage of these features without the need of a custom plugin. To use these protocols, a Godot instance must be running on your current project. You should then configure your editor to communicate to the running adapter ports in Godot, which by default are ``6005`` for **LSP**, and ``6006`` for **DAP**. You can change these ports and other settings in the **Editor Settings**, under the **Network > Language Server** and **Network > Debug Adapter** sections respectively. Below are some configuration steps for specific editors: -- Visual Studio Code +Visual Studio Code +^^^^^^^^^^^^^^^^^^ You need to install the official `Visual Studio Code plugin `_. @@ -104,7 +105,8 @@ For **DAP**, specify the ``debugServer`` property in your ``launch.json`` file: ] } -- Emacs +Emacs +^^^^^ Check the official instructions to configure `LSP `_, and `DAP `_. From fbf3367110cbcf9ab85262d53e58fa1c2e58758c Mon Sep 17 00:00:00 2001 From: Hugo Locurcio Date: Thu, 9 Nov 2023 12:45:27 +0100 Subject: [PATCH 3/3] Update codespell-ignore.txt Required as the typo is part of an external link we don't control. --- _tools/codespell-ignore.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/_tools/codespell-ignore.txt b/_tools/codespell-ignore.txt index aaf18813b9d..e0bc96bcd9c 100644 --- a/_tools/codespell-ignore.txt +++ b/_tools/codespell-ignore.txt @@ -4,3 +4,4 @@ lod que raison uint +implementors