Revise docker layer
Adjust the documentation to be more clear how to activate the new lsp feature. Simplify layer setup code. Provide missing company-lsp integration in feature list. Remove obsolete tests for a loaded lsp layer as the docker layer loads it itself already.
This commit is contained in:
parent
b26430df2a
commit
64b607ce14
|
@ -11,7 +11,6 @@
|
||||||
- [[#docker][Docker]]
|
- [[#docker][Docker]]
|
||||||
- [[#linting][Linting]]
|
- [[#linting][Linting]]
|
||||||
- [[#lsp][LSP]]
|
- [[#lsp][LSP]]
|
||||||
- [[#options][Options]]
|
|
||||||
- [[#usage][Usage]]
|
- [[#usage][Usage]]
|
||||||
- [[#tramp-access-to-docker-containers][TRAMP access to docker containers]]
|
- [[#tramp-access-to-docker-containers][TRAMP access to docker containers]]
|
||||||
- [[#key-bindings][Key bindings]]
|
- [[#key-bindings][Key bindings]]
|
||||||
|
@ -26,6 +25,7 @@ This layer integrates basic container management into Spacemacs.
|
||||||
- =Docker= container and image management via [[https://github.com/Silex/docker.el][docker.el]]
|
- =Docker= container and image management via [[https://github.com/Silex/docker.el][docker.el]]
|
||||||
- =docker-compose= integration via [[https://github.com/Silex/docker.el][docker.el]]
|
- =docker-compose= integration via [[https://github.com/Silex/docker.el][docker.el]]
|
||||||
- Syntax checking via [[https://github.com/hadolint/hadolint][hadolint]]
|
- Syntax checking via [[https://github.com/hadolint/hadolint][hadolint]]
|
||||||
|
- Code-Completion via =company-lsp=
|
||||||
|
|
||||||
* Install
|
* Install
|
||||||
** Docker
|
** Docker
|
||||||
|
@ -37,31 +37,27 @@ You will also need the native package [[https://www.docker.com/][Docker]] for th
|
||||||
|
|
||||||
** Linting
|
** Linting
|
||||||
For syntax checking the external library [[https://github.com/hadolint/hadolint][hadolint]] is necessary.
|
For syntax checking the external library [[https://github.com/hadolint/hadolint][hadolint]] is necessary.
|
||||||
|
It can either be downloaded from [[https://github.com/hadolint/hadolint/releases/latest][=here=]] or
|
||||||
|
build locally with stack as shown below:
|
||||||
|
#+BEGIN_SRC sh
|
||||||
|
stack install hadolint
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
** LSP
|
** LSP
|
||||||
This layer can be used with [[https://github.com/rcjsuen/dockerfile-language-server-nodejs][=dockerfile-language-server-nodejs=]] and emacs
|
This layer can be enhanced with [[https://github.com/rcjsuen/dockerfile-language-server-nodejs][=dockerfile-language-server-nodejs=]] and emacs
|
||||||
[[https://github.com/emacs-lsp/lsp-mode][=lsp-mode=]] to provide richer, IDE-like capabilities.
|
[[https://github.com/emacs-lsp/lsp-mode][=lsp-mode=]] to provide richer, IDE-like capabilities.
|
||||||
To use this layer with lsp, you must do the following:
|
To do so set the layer variable =docker-dockerfile-backend= to =lsp= like shown below:
|
||||||
|
|
||||||
1. Add =lsp= to =dotspacemacs-configuration-layers=.
|
|
||||||
2. Install =dockerfile-language-server-nodejs= package with:
|
|
||||||
|
|
||||||
#+BEGIN_SRC sh
|
|
||||||
npm i -g dockerfile-language-server-nodejs
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
3. Enable layer integration with lsp as described in section below.
|
|
||||||
|
|
||||||
* Options
|
|
||||||
This layer also includes experimental support for =lsp-mode=. To enable language
|
|
||||||
server functionality with this layer, follow [[#lsp][the instructions for installation]],
|
|
||||||
and then install this layer with:
|
|
||||||
|
|
||||||
#+BEGIN_SRC emacs-lisp
|
#+BEGIN_SRC emacs-lisp
|
||||||
(setq-default dotspacemacs-configuration-layers
|
(setq-default dotspacemacs-configuration-layers
|
||||||
'((docker :variables docker-dockerfile-backend 'lsp)))
|
'((docker :variables docker-dockerfile-backend 'lsp)))
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
In addition you need to install the lsp server's executable in your system.
|
||||||
|
This can be done via npm:
|
||||||
|
#+BEGIN_SRC sh
|
||||||
|
npm i -g dockerfile-language-server-nodejs
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
* Usage
|
* Usage
|
||||||
** TRAMP access to docker containers
|
** TRAMP access to docker containers
|
||||||
This relies on the [[https://github.com/emacs-pe/docker-tramp.el][docker-tramp]] package which uses =docker exec= available in
|
This relies on the [[https://github.com/emacs-pe/docker-tramp.el][docker-tramp]] package which uses =docker exec= available in
|
||||||
|
|
|
@ -13,5 +13,5 @@
|
||||||
|
|
||||||
;; Variables
|
;; Variables
|
||||||
|
|
||||||
(defvar docker-dockerfile-backend nil
|
(defvar docker-dockerfile-backend 'nil
|
||||||
"The backend to use for IDE features. Possible values are `lsp'.")
|
"The backend to use for IDE features. Possible values are `lsp' or `nil'.")
|
||||||
|
|
|
@ -9,21 +9,7 @@
|
||||||
;;
|
;;
|
||||||
;;; License: GPLv3
|
;;; License: GPLv3
|
||||||
|
|
||||||
(defun spacemacs//docker-dockerfile-backend ()
|
|
||||||
"Returns selected backend."
|
|
||||||
;; backend must be choosed explicitly with this layer
|
|
||||||
docker-dockerfile-backend)
|
|
||||||
|
|
||||||
(defun spacemacs//docker-dockerfile-setup-backend ()
|
(defun spacemacs//docker-dockerfile-setup-backend ()
|
||||||
"Conditionally setup docker backend."
|
"Conditionally setup docker backend."
|
||||||
(pcase (spacemacs//docker-dockerfile-backend)
|
(pcase docker-dockerfile-backend
|
||||||
(`lsp (spacemacs//docker-dockerfile-setup-lsp))))
|
(`lsp (lsp))))
|
||||||
|
|
||||||
|
|
||||||
;; lsp
|
|
||||||
|
|
||||||
(defun spacemacs//docker-dockerfile-setup-lsp ()
|
|
||||||
"Setup lsp backend."
|
|
||||||
(if (configuration-layer/layer-used-p 'lsp)
|
|
||||||
(lsp)
|
|
||||||
(message "`lsp' layer is not installed, please add `lsp' layer to your dotfile.")))
|
|
||||||
|
|
|
@ -54,15 +54,12 @@
|
||||||
(defun docker/init-dockerfile-mode ()
|
(defun docker/init-dockerfile-mode ()
|
||||||
(use-package dockerfile-mode
|
(use-package dockerfile-mode
|
||||||
:defer t
|
:defer t
|
||||||
:init
|
:init (add-hook 'dockerfile-mode-local-vars-hook #'spacemacs//docker-dockerfile-setup-backend)
|
||||||
(add-hook 'dockerfile-mode-hook #'spacemacs//docker-dockerfile-setup-backend)
|
|
||||||
:config
|
:config
|
||||||
(progn
|
(spacemacs/declare-prefix-for-mode 'dockerfile-mode "mc" "compile")
|
||||||
(spacemacs/declare-prefix-for-mode 'dockerfile-mode
|
(spacemacs/set-leader-keys-for-major-mode 'dockerfile-mode
|
||||||
"mc" "compile")
|
"cb" 'dockerfile-build-buffer
|
||||||
(spacemacs/set-leader-keys-for-major-mode 'dockerfile-mode
|
"cB" 'dockerfile-build-no-cache-buffer)))
|
||||||
"cb" 'dockerfile-build-buffer
|
|
||||||
"cB" 'dockerfile-build-no-cache-buffer))))
|
|
||||||
|
|
||||||
(defun docker/post-init-flycheck ()
|
(defun docker/post-init-flycheck ()
|
||||||
(spacemacs/enable-flycheck 'dockerfile-mode))
|
(spacemacs/enable-flycheck 'dockerfile-mode))
|
||||||
|
|
Loading…
Reference in a new issue