Update instructions for dap integration and update existing layers

The previous way of adding dap to a layer did add the mode
unconditionally to `spacemacs--dap-supported-modes` causing
dap bindings to be added also when no lsp backend was used.
This commit is contained in:
Maximilian Wolff 2020-05-16 23:32:30 +02:00
parent 04f2a5e58b
commit 1fd90fc1dc
No known key found for this signature in database
GPG Key ID: 2DD07025BFDBD89A
13 changed files with 238 additions and 227 deletions

View File

@ -1,6 +1,6 @@
;;; packages.el --- C/C++ Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,43 +9,43 @@
;;
;;; License: GPLv3
(setq c-c++-packages
'(
cc-mode
clang-format
(company-c-headers :requires company)
(cpp-auto-include
:location (recipe :fetcher github
:repo "syohex/emacs-cpp-auto-include"))
disaster
eldoc
flycheck
gdb-mi
google-c-style
helm-cscope
org
projectile
realgud
semantic
srefactor
stickyfunc-enhance
xcscope
;; lsp
(ccls :requires lsp-mode)
dap-mode
;; rtags
(company-rtags :requires (company rtags))
counsel-gtags
(flycheck-rtags :requires (flycheck rtags))
ggtags
helm-gtags
(helm-rtags :requires (helm rtags))
(ivy-rtags :requires (ivy rtags))
rtags
;; ycmd
(company-ycmd :requires company)
(flycheck-ycmd :requires flycheck)
ycmd))
(defconst c-c++-packages
'(
cc-mode
clang-format
(company-c-headers :requires company)
(cpp-auto-include
:location (recipe :fetcher github
:repo "syohex/emacs-cpp-auto-include"))
disaster
eldoc
flycheck
gdb-mi
google-c-style
helm-cscope
org
projectile
realgud
semantic
srefactor
stickyfunc-enhance
xcscope
;; lsp
(ccls :requires lsp-mode)
dap-mode
;; rtags
(company-rtags :requires (company rtags))
counsel-gtags
(flycheck-rtags :requires (flycheck rtags))
ggtags
helm-gtags
(helm-rtags :requires (helm rtags))
(ivy-rtags :requires (ivy rtags))
rtags
;; ycmd
(company-ycmd :requires company)
(flycheck-ycmd :requires flycheck)
ycmd))
(defun c-c++/init-cc-mode ()
(use-package cc-mode
@ -117,8 +117,11 @@
"ri" #'spacemacs/c++-organize-includes))))
(defun c-c++/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'c-mode)
(add-to-list 'spacemacs--dap-supported-modes 'c++-mode)
(pcase (spacemacs//c-c++-backend)
(`lsp-clangd (add-to-list 'spacemacs--dap-supported-modes 'c-mode)
(add-to-list 'spacemacs--dap-supported-modes 'c++-mode))
(`lsp-ccls (add-to-list 'spacemacs--dap-supported-modes 'c-mode)
(add-to-list 'spacemacs--dap-supported-modes 'c++-mode)))
(add-hook 'c-mode-local-vars-hook #'spacemacs//c-c++-setup-dap)
(add-hook 'c++-mode-local-vars-hook #'spacemacs//c-c++-setup-dap))

View File

@ -1,6 +1,6 @@
;;; packages.el --- Elixir Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,23 +9,22 @@
;;
;;; License: GPLv3
(setq elixir-packages
'(
alchemist
company
counsel-gtags
dap-mode
elixir-mode
evil-matchit
flycheck
flycheck-credo
flycheck-mix
ggtags
helm-gtags
ob-elixir
popwin
smartparens
))
(defconst elixir-packages
'(
alchemist
company
counsel-gtags
dap-mode
elixir-mode
evil-matchit
flycheck
flycheck-credo
flycheck-mix
ggtags
helm-gtags
ob-elixir
popwin
smartparens))
(defun elixir/init-alchemist ()
(use-package alchemist
@ -38,7 +37,7 @@
(setq alchemist-project-compile-when-needed t
alchemist-test-status-modeline nil)
(add-to-list 'spacemacs-jump-handlers-elixir-mode
'(alchemist-goto-definition-at-point :async t)))
'(alchemist-goto-definition-at-point :async t)))
:config
(spacemacs/declare-prefix-for-mode 'elixir-mode "mX" "hex")
(spacemacs/declare-prefix-for-mode 'elixir-mode "mc" "compile")
@ -153,7 +152,8 @@
(spacemacs/counsel-gtags-define-keys-for-mode 'elixir-mode))
(defun elixir/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'elixir-mode)
(pcase (spacemacs//elixir-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'elixir-mode)))
(add-hook 'elixir-mode-local-vars-hook #'spacemacs//elixir-setup-dap))
(defun elixir/post-init-evil-matchit ()

View File

@ -66,6 +66,12 @@
(lsp))
(message "`lsp' layer is not installed, please add `lsp' layer to your dotfile.")))
(defun spacemacs//go-setup-dap ()
"Conditionally setup go DAP integration."
;; currently DAP is only available using LSP
(pcase (spacemacs//go-backend)
(`lsp (spacemacs//go-setup-lsp-dap))))
(defun spacemacs//go-setup-lsp-dap ()
"Setup DAP integration."
(require 'dap-go)

View File

@ -1,6 +1,6 @@
;;; packages.el --- Go Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,29 +9,29 @@
;;
;;; License: GPLv3
(setq go-packages
'(
company
dap-mode
(company-go :requires company)
counsel-gtags
eldoc
flycheck
(flycheck-golangci-lint :toggle (and go-use-golangci-lint
(configuration-layer/package-used-p
'flycheck)))
ggtags
helm-gtags
go-eldoc
go-fill-struct
go-gen-test
go-guru
go-impl
go-mode
go-rename
go-tag
godoctor
popwin))
(defconst go-packages
'(
company
dap-mode
(company-go :requires company)
counsel-gtags
eldoc
flycheck
(flycheck-golangci-lint :toggle (and go-use-golangci-lint
(configuration-layer/package-used-p
'flycheck)))
ggtags
helm-gtags
go-eldoc
go-fill-struct
go-gen-test
go-guru
go-impl
go-mode
go-rename
go-tag
godoctor
popwin))
(defun go/init-company-go ()
(use-package company-go
@ -45,8 +45,9 @@
(add-hook 'go-mode-local-vars-hook #'spacemacs//go-setup-company))
(defun go/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'go-mode)
(add-hook 'go-mode-local-vars-hook #'spacemacs//go-setup-lsp-dap))
(pcase (spacemacs//go-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'go-mode)))
(add-hook 'go-mode-local-vars-hook #'spacemacs//go-setup-dap))
(defun go/post-init-counsel-gtags ()
(spacemacs/counsel-gtags-define-keys-for-mode 'go-mode))

View File

@ -1,6 +1,6 @@
;;; packages.el --- Java Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Lukasz Klich <klich.lukasz@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,30 +9,30 @@
;;
;;; License: GPLv3
(setq java-packages
'(
company
dap-mode
flycheck
ggtags
gradle-mode
counsel-gtags
helm-gtags
(java-mode :location built-in)
maven-test-mode
(meghanada :toggle (not (version< emacs-version "25.1")))
mvn
(lsp-java :requires lsp-mode)
org
smartparens
))
(defconst java-packages
'(
company
dap-mode
flycheck
ggtags
gradle-mode
counsel-gtags
helm-gtags
(java-mode :location built-in)
maven-test-mode
(meghanada :toggle (not (version< emacs-version "25.1")))
mvn
(lsp-java :requires lsp-mode)
org
smartparens))
(defun java/post-init-company ()
(add-hook 'java-mode-local-vars-hook #'spacemacs//java-setup-company))
(defun java/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'java-mode)
(add-hook 'java-mode-local-vars-hook #'spacemacs//java-setup-lsp-dap))
(pcase (spacemacs//java-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'java-mode)))
(add-hook 'java-mode-local-vars-hook #'spacemacs//java-setup-dap))
(defun java/post-init-flycheck ()
(add-hook 'java-mode-local-vars-hook #'spacemacs//java-setup-flycheck))

View File

@ -1,6 +1,6 @@
;;; packages.el --- Javascript Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,31 +9,30 @@
;;
;;; License: GPLv3
(setq javascript-packages
'(
add-node-modules-path
company
counsel-gtags
dap-mode
evil-matchit
flycheck
ggtags
helm-gtags
imenu
impatient-mode
import-js
js-doc
js2-mode
js2-refactor
livid-mode
nodejs-repl
org
prettier-js
skewer-mode
tern
tide
web-beautify
))
(defconst javascript-packages
'(
add-node-modules-path
company
counsel-gtags
dap-mode
evil-matchit
flycheck
ggtags
helm-gtags
imenu
impatient-mode
import-js
js-doc
js2-mode
js2-refactor
livid-mode
nodejs-repl
org
prettier-js
skewer-mode
tern
tide
web-beautify))
(defun javascript/post-init-add-node-modules-path ()
(spacemacs/add-to-hooks #'add-node-modules-path '(css-mode-hook
@ -46,7 +45,8 @@
(spacemacs/counsel-gtags-define-keys-for-mode 'js2-mode))
(defun javascript/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'js2-mode)
(pcase (spacemacs//javascript-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'js2-mode)))
(add-hook 'js2-mode-local-vars-hook #'spacemacs//javascript-setup-dap))
(defun javascript/post-init-evil-matchit ()
@ -221,8 +221,8 @@
(spacemacs/declare-prefix-for-mode 'js2-mode
"msL" "nodejs-send-line-and-focus")
(spacemacs/declare-prefix-for-mode 'js2-mode
"msR" "nodejs-send-region-and-focus")
))))
"msR" "nodejs-send-region-and-focus")))))
(defun javascript/pre-init-org ()
(spacemacs|use-package-add-hook org

View File

@ -20,7 +20,6 @@
(pcase php-backend
(`lsp (spacemacs//php-setup-lsp-dap))))
(defun spacemacs//php-setup-lsp-dap ()
"Setup DAP integration."
(require 'dap-php))

View File

@ -1,6 +1,6 @@
;;; packages.el --- PHP Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -27,11 +27,11 @@
(phpactor :toggle (not (eq php-backend 'lsp)))
(company-phpactor :requires company :toggle (not (eq php-backend 'lsp)))
(company-php :requires company :toggle (not (eq php-backend 'lsp)))
(geben :toggle (not (eq php-backend 'lsp)))
))
(geben :toggle (not (eq php-backend 'lsp)))))
(defun php/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'php-mode)
(pcase php-backend
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'php-mode)))
(add-hook 'php-mode-local-vars-hook #'spacemacs//php-setup-dap))
(defun php/init-drupal-mode ()

View File

@ -1,6 +1,6 @@
;;; packages.el --- Python Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,44 +9,43 @@
;;
;;; License: GPLv3
(setq python-packages
'(
blacken
company
counsel-gtags
cython-mode
dap-mode
eldoc
evil-matchit
flycheck
ggtags
helm-cscope
helm-gtags
(helm-pydoc :requires helm)
importmagic
live-py-mode
(nose :location local)
org
pip-requirements
pipenv
pippel
py-isort
pyenv-mode
(pylookup :location local)
pytest
(python :location built-in)
pyvenv
semantic
smartparens
stickyfunc-enhance
xcscope
yapfify
;; packages for anaconda backend
anaconda-mode
(company-anaconda :requires company)
;; packages for Microsoft LSP backend
(lsp-python-ms :requires lsp-mode)
))
(defconst python-packages
'(
blacken
company
counsel-gtags
cython-mode
dap-mode
eldoc
evil-matchit
flycheck
ggtags
helm-cscope
helm-gtags
(helm-pydoc :requires helm)
importmagic
live-py-mode
(nose :location local)
org
pip-requirements
pipenv
pippel
py-isort
pyenv-mode
(pylookup :location local)
pytest
(python :location built-in)
pyvenv
semantic
smartparens
stickyfunc-enhance
xcscope
yapfify
;; packages for anaconda backend
anaconda-mode
(company-anaconda :requires company)
;; packages for Microsoft LSP backend
(lsp-python-ms :requires lsp-mode)))
(defun python/init-anaconda-mode ()
(use-package anaconda-mode
@ -95,9 +94,9 @@
(defun python/init-company-anaconda ()
(use-package company-anaconda
:if (eq (spacemacs//python-backend) 'anaconda)
:defer t
;; see `spacemacs//python-setup-anaconda-company'
))
:defer t))
;; see `spacemacs//python-setup-anaconda-company'
(defun python/init-blacken ()
(use-package blacken
@ -120,7 +119,8 @@
"gu" 'anaconda-mode-find-references))))
(defun python/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'python-mode)
(pcase (spacemacs//python-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'python-mode)))
(add-hook 'python-mode-local-vars-hook #'spacemacs//python-setup-dap))
(defun python/post-init-eldoc ()

View File

@ -1,6 +1,6 @@
;;; packages.el --- Ruby Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -37,8 +37,7 @@
ruby-tools
rvm
seeing-is-believing
smartparens
))
smartparens))
(defun ruby/init-bundler ()
(use-package bundler
@ -70,8 +69,9 @@
(spacemacs/counsel-gtags-define-keys-for-mode 'enh-ruby-mode))
(defun ruby/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'ruby-mode)
(add-to-list 'spacemacs--dap-supported-modes 'enh-ruby-mode)
(pcase (spacemacs//ruby-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'ruby-mode)
(add-to-list 'spacemacs--dap-supported-modes 'enh-ruby-mode)))
(spacemacs/add-to-hooks #'spacemacs//ruby-setup-dap
'(ruby-mode-local-vars-hook
enh-ruby-mode-local-vars-hook)))

View File

@ -1,6 +1,6 @@
;;; packages.el --- Rust Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Chris Hoeppner <me@mkaito.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,21 +9,20 @@
;;
;;; License: GPLv3
(setq rust-packages
'(
cargo
company
counsel-gtags
dap-mode
flycheck
(flycheck-rust :requires flycheck)
ggtags
helm-gtags
racer
rust-mode
smartparens
toml-mode
))
(defconst rust-packages
'(
cargo
company
counsel-gtags
dap-mode
flycheck
(flycheck-rust :requires flycheck)
ggtags
helm-gtags
racer
rust-mode
smartparens
toml-mode))
(defun rust/init-cargo ()
(use-package cargo
@ -64,7 +63,8 @@
(spacemacs/counsel-gtags-define-keys-for-mode 'rust-mode))
(defun rust/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'rust-mode)
(pcase (spacemacs//rust-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'rust-mode)))
(add-hook 'rust-mode-local-vars-hook #'spacemacs//rust-setup-dap))
(defun rust/post-init-flycheck ()

View File

@ -1,6 +1,6 @@
;;; packages.el --- Scala Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2018 Sylvain Benner & Contributors
;; Copyright (c) 2012-2020 Sylvain Benner & Contributors
;;
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
;; URL: https://github.com/syl20bnr/spacemacs
@ -9,21 +9,20 @@
;;
;;; License: GPLv3
(setq scala-packages
'(
lsp-mode
dap-mode
eldoc
flycheck
flyspell
lsp-treemacs
counsel-gtags
ggtags
helm-gtags
(ensime :toggle (spacemacs//scala-backend-ensime-p))
sbt-mode
scala-mode
))
(defconst scala-packages
'(
lsp-mode
dap-mode
eldoc
flycheck
flyspell
lsp-treemacs
counsel-gtags
ggtags
helm-gtags
(ensime :toggle (spacemacs//scala-backend-ensime-p))
sbt-mode
scala-mode))
(defun scala/post-init-eldoc ()
(when (and scala-enable-eldoc (spacemacs//scala-backend-ensime-p))
@ -270,7 +269,8 @@ If it's part of a left arrow (`<-'),replace it with the unicode arrow."
scala-indent:operator-strategy))))
(defun scala/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'scala-mode)
(when (spacemacs//scala-backend-metals-p)
(add-to-list 'spacemacs--dap-supported-modes 'scala-mode))
(spacemacs//scala-setup-dap))
(defun scala/post-init-lsp-mode ()

View File

@ -47,17 +47,19 @@ file.
* Configuration
** DAP configuration in supported layers
By default ~dap~ layer registers global key binding defined under ~SPC m~. If you
By default ~dap~ layer registers global key binding defined under ~SPC d~. If you
want to have debug bindings under major mode leader you may do the following:
For instance the =java= layer:
#+BEGIN_SRC emacs-lisp
(defun java/pre-init-dap-mode ()
(add-to-list 'spacemacs--dap-supported-modes 'java-mode))
(pcase (spacemacs//java-backend)
(`lsp (add-to-list 'spacemacs--dap-supported-modes 'java-mode)))
(add-hook 'java-mode-local-vars-hook #'spacemacs//java-setup-dap))
#+END_SRC
See the =java= layer for further example on how to setup correctly =dap-mode=.
See the =java= layer for further example on how to setup =dap-mode= correctly
** Variables
@ -73,10 +75,10 @@ The following prefixes have been declared:
|-----------+-------------------|
| ~SPC d~ | debug |
| ~SPC d b~ | breakpoints |
| ~SPC d d~ | launching |
| ~SPC d d~ | debugging |
| ~SPC d e~ | eval |
| ~SPC d I~ | inspect |
| ~SPC d l~ | debug windows |
| ~SPC d w~ | debug windows |
| ~SPC d S~ | context switching |
| ~SPC d T~ | toggles |