Skip to content

Commit 6184254

Browse files
authored
terraform-ls: Prefill required fields and ability to validate on save (#3976)
* Implement additional features supporting latest terraform-ls * docs: Prefill required fields * Update changelog
1 parent b45dea4 commit 6184254

File tree

4 files changed

+39
-1
lines changed

4 files changed

+39
-1
lines changed

CHANGELOG.org

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
* Changelog
22
** Unreleased 8.0.1
3+
* terraform-ls now supports prefill requied fields and the ability to validate on save.
34
* ~lsp-bash~ now supports ~bash-ts-mode~
45
* ~lsp-ruby-syntax-tree~, ~lsp-solargraph~, ~lsp-sorbet~, ~lsp-steep~, and ~lsp-typeprof~ now support ~ruby-ts-mode~
56
* Drop support for emacs 26.1 and 26.2

clients/lsp-terraform.el

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
;; terraform-lsp
3333

3434
(defgroup lsp-terraform nil
35-
"LSP support for Terraform, using terraform-lsp"
35+
"LSP support for Terraform, using terraform-lsp."
3636
:group 'lsp-mode
3737
:link '(url-link "https://github.com/juliosueiras/terraform-lsp")
3838
:package-version `(lsp-mode . "6.2"))
@@ -96,6 +96,24 @@ language server."
9696
:type 'boolean
9797
:package-version '(lsp-mode . "8.0.1"))
9898

99+
(defcustom lsp-terraform-ls-validate-on-save nil
100+
"Enable validating the current open file on save.
101+
102+
This is an experimental feature provided by the language server."
103+
:group 'lsp-terraform-ls
104+
:type 'boolean
105+
:package-version '(lsp-mode . "8.0.1"))
106+
107+
(defcustom lsp-terraform-ls-prefill-required-fields nil
108+
"Enable completion of required fields.
109+
110+
Enable autocompletion for required fields when completing
111+
Terraform blocks. This is an experimental feature provided by the
112+
language server."
113+
:group 'lsp-terraform-ls
114+
:type 'boolean
115+
:package-version '(lsp-mode . "8.0.1"))
116+
99117
(defcustom lsp-terraform-ls-providers-position-params nil
100118
"The optional providers tree position params.
101119
Defaults to side following treemacs default."
@@ -128,6 +146,11 @@ Defaults to side following treemacs default."
128146
(when lsp-terraform-ls-enable-show-reference
129147
'((experimental . ((showReferencesCommandId . "client.showReferences"))))))
130148

149+
(defun lsp-terraform-ls--init-options ()
150+
"Construct initialization options for the lanague server."
151+
`((experimentalFeatures . ((validateOnSave . ,(lsp-json-bool lsp-terraform-ls-validate-on-save))
152+
(prefillRequiredFields . ,(lsp-json-bool lsp-terraform-ls-prefill-required-fields))))))
153+
131154
(defcustom lsp-terraform-semantic-token-faces
132155
'(("namespace" . lsp-face-semhl-namespace)
133156
("type" . lsp-face-semhl-type)
@@ -209,6 +232,7 @@ Defaults to side following treemacs default."
209232
:discard-default-types t
210233
:modifiers ,lsp-terraform-semantic-token-modifier-faces
211234
:types ,lsp-terraform-semantic-token-faces)
235+
:initialization-options (lsp-terraform-ls--init-options)
212236
:custom-capabilities (lsp-terraform-ls--custom-capabilities)))
213237

214238
(defun lsp-terraform-ls-validate ()

docs/manual-language-docs/lsp-terraform-ls.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,19 @@ There are two ways to open the link:
106106
- Key binding: Alt + Enter
107107
- Clicking the middle button of your mouse
108108

109+
### Prefill required fields
110+
111+
This is an experimental feature which can be enabled via the option
112+
`lsp-terraform-ls-prefill-required-fields`:
113+
114+
``` emacs-lisp
115+
(setq lsp-terraform-ls-prefill-required-fields t)
116+
```
117+
118+
This gif demonstrates how this feature is used:
119+
120+
![](../examples/terraform-ls-prefill.gif)
121+
109122
### Treeview controls
110123

111124
For this feature to work, make sure that you have [lsp-treemacs](https://github.com/emacs-lsp/lsp-treemacs)

examples/terraform-ls-prefill.gif

331 KB
Loading

0 commit comments

Comments
 (0)