Skip to content

Commit 4e18cf1

Browse files
authored
feat(clients): Add Cucumber support (#4372)
1 parent b6b8da4 commit 4e18cf1

File tree

5 files changed

+100
-22
lines changed

5 files changed

+100
-22
lines changed

Diff for: CHANGELOG.org

+1
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@
174174
* Add support for signatureHelp using ~posframe~. #1999
175175
* Add ~iedit~ integration. #2478
176176
* Add client for Verible SystemVerilog language Server ([[https://github.com/chipsalliance/verible]])
177+
* Add Cucumber support.
177178

178179
** Release 7.0.1
179180
* Introduced ~lsp-diagnostics-mode~.

Diff for: clients/lsp-cucumber.el

+66
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
;;; lsp-cucumber.el --- LSP Clients for Cucumber -*- lexical-binding: t; -*-
2+
3+
;; Copyright (C) 2024 Shen, Jen-Chieh
4+
5+
;; This file is not part of GNU Emacs.
6+
7+
;; This program is free software: you can redistribute it and/or modify
8+
;; it under the terms of the GNU General Public License as published by
9+
;; the Free Software Foundation, either version 3 of the License, or
10+
;; (at your option) any later version.
11+
12+
;; This program is distributed in the hope that it will be useful,
13+
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
;; GNU General Public License for more details.
16+
17+
;; You should have received a copy of the GNU General Public License
18+
;; along with this program. If not, see <https://www.gnu.org/licenses/>.
19+
20+
;;; Commentary:
21+
;;
22+
;; LSP server implementation for Cucumber
23+
;;
24+
25+
;;; Code:
26+
27+
(defgroup lsp-cucumber nil
28+
"LSP server implementation for Cucumber."
29+
:group 'lsp-mode
30+
:link '(url-link "https://github.com/cucumber/language-server"))
31+
32+
(defcustom lsp-cucumber-server-path nil
33+
"Path points for Cucumber language server.
34+
35+
This is only for development use."
36+
:type 'string
37+
:group 'lsp-cucumber)
38+
39+
(defcustom lsp-cucumber-active-modes
40+
'( feature-mode)
41+
"List of major mode that work with Cucumber language server."
42+
:type 'list
43+
:group 'lsp-cucumber)
44+
45+
(defun lsp-cucumber--server-command ()
46+
"Generate startup command for Cucumber language server."
47+
(or (and lsp-cucumber-server-path
48+
(list lsp-cucumber-server-path "--stdio"))
49+
(list (lsp-package-path 'cucumber-language-server) "--stdio")))
50+
51+
(lsp-dependency 'cucumber-language-server
52+
'(:system "cucumber-language-server")
53+
'(:npm :package "@cucumber/language-server"
54+
:path "cucumber-language-server"))
55+
56+
(lsp-register-client
57+
(make-lsp-client
58+
:new-connection (lsp-stdio-connection #'lsp-cucumber--server-command)
59+
:major-modes lsp-cucumber-active-modes
60+
:priority -1
61+
:server-id 'cucumber-language-server
62+
:download-server-fn (lambda (_client callback error-callback _update?)
63+
(lsp-package-ensure 'cucumber-language-server callback error-callback))))
64+
65+
(provide 'lsp-cucumber)
66+
;;; lsp-cucumber.el ends here

Diff for: docs/lsp-clients.json

+16-7
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,15 @@
188188
"lsp-install-server": "css-ls",
189189
"debugger": "Not available"
190190
},
191+
{
192+
"name": "cucumber",
193+
"full-name": "Cucumber",
194+
"server-name": "cucumber-language-server",
195+
"server-url": "https://github.com/cucumber/language-server",
196+
"installation": "npm install -g @cucumber/language-server",
197+
"lsp-install-server": "cucumber-language-server",
198+
"debugger": "Not available"
199+
},
191200
{
192201
"name": "cypher",
193202
"full-name": "Cypher",
@@ -923,13 +932,13 @@
923932
"debugger": "Yes"
924933
},
925934
{
926-
"name": "solidity",
927-
"full-name": "nomicfoundation/solidity-language-server",
928-
"server-name": "solidity-language-server",
929-
"installation": "npx @nomicfoundation/solidity-language-server",
930-
"server-url": "https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md",
931-
"installation-url": "https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md",
932-
"debugger": "Not available"
935+
"name": "solidity",
936+
"full-name": "nomicfoundation/solidity-language-server",
937+
"server-name": "solidity-language-server",
938+
"installation": "npx @nomicfoundation/solidity-language-server",
939+
"server-url": "https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md",
940+
"installation-url": "https://github.com/NomicFoundation/hardhat-vscode/blob/development/server/README.md",
941+
"debugger": "Not available"
933942
},
934943
{
935944
"name": "sorbet",

Diff for: lsp-mode.el

+16-15
Original file line numberDiff line numberDiff line change
@@ -174,21 +174,22 @@ As defined by the Language Server Protocol 3.16."
174174
:package-version '(lsp-mode . "6.1"))
175175

176176
(defcustom lsp-client-packages
177-
'( ccls lsp-actionscript lsp-ada lsp-angular lsp-ansible lsp-autotools lsp-awk lsp-asm lsp-astro
178-
lsp-bash lsp-beancount lsp-bufls lsp-clangd lsp-clojure lsp-cmake lsp-credo
179-
lsp-crystal lsp-csharp lsp-css lsp-cypher lsp-d lsp-dart lsp-dhall lsp-docker
180-
lsp-dockerfile lsp-elm lsp-elixir lsp-emmet lsp-erlang lsp-eslint lsp-fortran
181-
lsp-fsharp lsp-gdscript lsp-go lsp-golangci-lint lsp-gleam lsp-glsl lsp-graphql
182-
lsp-hack lsp-grammarly lsp-groovy lsp-haskell lsp-haxe lsp-idris lsp-java
183-
lsp-javascript lsp-json lsp-kotlin lsp-latex lsp-ltex lsp-lua lsp-markdown
184-
lsp-marksman lsp-mdx lsp-mint lsp-move lsp-nginx lsp-nim lsp-nix lsp-magik
185-
lsp-mojo lsp-metals lsp-mssql lsp-ocaml lsp-openscad lsp-pascal lsp-perl
186-
lsp-perlnavigator lsp-pls lsp-php lsp-pwsh lsp-pyls lsp-pylsp lsp-pyright
187-
lsp-python-ms lsp-purescript lsp-r lsp-racket lsp-remark lsp-ruff-lsp lsp-rf
188-
lsp-rubocop lsp-rust lsp-semgrep lsp-shader lsp-solargraph lsp-sorbet
189-
lsp-sourcekit lsp-sonarlint lsp-tailwindcss lsp-tex lsp-terraform lsp-toml
190-
lsp-ttcn3 lsp-typeprof lsp-v lsp-vala lsp-verilog lsp-vetur lsp-volar
191-
lsp-vhdl lsp-vimscript lsp-xml lsp-yaml lsp-ruby-lsp lsp-ruby-syntax-tree
177+
'( ccls lsp-actionscript lsp-ada lsp-angular lsp-ansible lsp-autotools lsp-awk
178+
lsp-asm lsp-astro lsp-bash lsp-beancount lsp-bufls lsp-clangd lsp-clojure
179+
lsp-cmake lsp-credo lsp-crystal lsp-csharp lsp-css lsp-cucumber lsp-cypher
180+
lsp-d lsp-dart lsp-dhall lsp-docker lsp-dockerfile lsp-elm lsp-elixir
181+
lsp-emmet lsp-erlang lsp-eslint lsp-fortran lsp-fsharp lsp-gdscript lsp-go
182+
lsp-golangci-lint lsp-gleam lsp-glsl lsp-graphql lsp-hack lsp-grammarly
183+
lsp-groovy lsp-haskell lsp-haxe lsp-idris lsp-java lsp-javascript lsp-json
184+
lsp-kotlin lsp-latex lsp-ltex lsp-lua lsp-markdown lsp-marksman lsp-mdx
185+
lsp-mint lsp-move lsp-nginx lsp-nim lsp-nix lsp-magik lsp-mojo lsp-metals
186+
lsp-mssql lsp-ocaml lsp-openscad lsp-pascal lsp-perl lsp-perlnavigator
187+
lsp-pls lsp-php lsp-pwsh lsp-pyls lsp-pylsp lsp-pyright lsp-python-ms
188+
lsp-purescript lsp-r lsp-racket lsp-remark lsp-ruff-lsp lsp-rf lsp-rubocop
189+
lsp-rust lsp-semgrep lsp-shader lsp-solargraph lsp-sorbet lsp-sourcekit
190+
lsp-sonarlint lsp-tailwindcss lsp-tex lsp-terraform lsp-toml lsp-ttcn3
191+
lsp-typeprof lsp-v lsp-vala lsp-verilog lsp-vetur lsp-volar lsp-vhdl
192+
lsp-vimscript lsp-xml lsp-yaml lsp-ruby-lsp lsp-ruby-syntax-tree
192193
lsp-solidity lsp-sqls lsp-svelte lsp-steep lsp-tilt lsp-zig lsp-jq)
193194
"List of the clients to be automatically required."
194195
:group 'lsp-mode

Diff for: mkdocs.yml

+1
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ nav:
6464
- CMake: page/lsp-cmake.md
6565
- Crystal: page/lsp-crystal.md
6666
- CSS/LessCSS/SASS/SCSS: page/lsp-css.md
67+
- Cucumber: page/lsp-cucumber.md
6768
- Cypher: page/lsp-cypher.md
6869
- D: page/lsp-d.md
6970
- Dart: https://emacs-lsp.github.io/lsp-dart

0 commit comments

Comments
 (0)