summary refs log tree commit diff
path: root/emacs/custom
diff options
context:
space:
mode:
authorFranck Cuny <franck@fcuny.net>2021-04-04 12:59:58 -0700
committerFranck Cuny <franck@fcuny.net>2021-04-04 12:59:58 -0700
commit3778c840afecec735758fbd217dd3021c5337233 (patch)
treeab4a65c9259fa7d7a5e5550cdf9b4f6afdb57fad /emacs/custom
parentsystemd: rsync music to the NAS (diff)
downloademacs.d-3778c840afecec735758fbd217dd3021c5337233.tar.gz
emacs: configure dap-mode and compile-mode
Debug Adapter Protocol (DAP) is wire protocol to communicate between a
client and debug server. This is similar to LSP, but for debuggers.

This initial configuration focuses on enabling the mode and setting the
layout for the various buffers (in this case I want the different
buffers on the right screen and keep the main part focused on the code).
I also disable some widget to use the debugger with hydra.

There's still a number of things that are incomplete when it comes to
integrate DAP and delve (the go debugger): there's no way to call
functions, to have access to the variables, etc. But this is a good
start though, to debug simple problems without relying on print
statement.

This also update the configuration for =go= so that =M-x compile=, when
editing a go file, by default will use =go build=. This is not what I
always need / want but this is a good default.
Diffstat (limited to 'emacs/custom')
-rw-r--r--emacs/custom/fcuny-navigation.el8
-rw-r--r--emacs/custom/fcuny-prog.el35
-rw-r--r--emacs/custom/fcuny-ui.el4
3 files changed, 46 insertions, 1 deletions
diff --git a/emacs/custom/fcuny-navigation.el b/emacs/custom/fcuny-navigation.el
index de17080..1a58666 100644
--- a/emacs/custom/fcuny-navigation.el
+++ b/emacs/custom/fcuny-navigation.el
@@ -152,4 +152,12 @@
   :config
   (which-key-mode))
 
+;; treemacs is being pulled by lsp/dap mode, so let's be explicit
+;; about getting it installed, and ensure that it writes its own data
+;; in our var directory.
+(use-package treemacs
+  :ensure t
+  :custom
+  (treemacs-persist-file (expand-file-name "treemacs-persist" fcuny/path-emacs-var)))
+
 (provide 'fcuny-navigation)
diff --git a/emacs/custom/fcuny-prog.el b/emacs/custom/fcuny-prog.el
index 3cc97d9..1ca50ca 100644
--- a/emacs/custom/fcuny-prog.el
+++ b/emacs/custom/fcuny-prog.el
@@ -55,6 +55,33 @@
   :ensure t
   :commands lsp-ivy-workspace-symbol)
 
+(use-package dap-mode
+  :ensure t
+  :after (lsp-mode)
+  :bind ("C-c d" . dap-hydra)
+  :init
+  (use-package dap-go)
+  :custom
+  (dap-utils-extension-path (expand-file-name ".extension" fcuny/path-emacs-var))
+  (dap-breakpoints-file (expand-file-name "dap-breakpoints" fcuny/path-emacs-var))
+  (dap-ui-controls-mode nil)
+  (dap-ui-buffer-configurations
+   `((,dap-ui--locals-buffer       . ((side . right) (slot . 1) (window-width . 0.2)))
+     (,dap-ui--expressions-buffer  . ((side . right) (slot . 2) (window-width . 0.2)))
+     (,dap-ui--sessions-buffer     . ((side . right) (slot . 3) (window-width . 0.2)))
+     (,dap-ui--breakpoints-buffer  . ((side . right) (slot . 4) (window-width . 0.2)))
+     (,dap-ui--repl-buffer         . ((side . bottom) (slot . 1) (window-width . 0.4)))
+     (,dap-ui--debug-window-buffer . ((side . bottom) (slot . 2) (window-height . 0.2)))))
+  :config
+  (dap-mode t)
+  (dap-ui-mode t)
+  (dap-tooltip-mode t)
+  (tooltip-mode t))
+
+;; I don't want to have the icons as an overlay in the UI, I prefer to
+;; use the bindings or the mapping provided by hydra
+(eval-after-load 'lsp-mode '(advice-add 'dap-ui--update-controls :override #'ignore))
+
 (use-package sh-script
   :mode ("bashrc" . sh-mode)
   :hook (after-save . executable-make-buffer-file-executable-if-script-p)
@@ -76,7 +103,8 @@
 (use-package go-mode
   :ensure t
   :hook ((before-save . lsp-format-buffer)
-         (before-save . lsp-organize-imports))
+         (before-save . lsp-organize-imports)
+         (go-mode . fcuny/setup-go-mode-compile))
   :config
   (when (memq window-system '(mac ns))
     (exec-path-from-shell-copy-env "GOPATH"))
@@ -96,4 +124,9 @@
   :bind (:map puppet-mode-map
               ("C-c |" . puppet-align-block)))
 
+(defun fcuny/setup-go-mode-compile ()
+  (if (not (string-match "go" compile-command))
+      (set (make-local-variable 'compile-command)
+           "go build -v")))
+
 (provide 'fcuny-prog)
diff --git a/emacs/custom/fcuny-ui.el b/emacs/custom/fcuny-ui.el
index 693c0a9..c350088 100644
--- a/emacs/custom/fcuny-ui.el
+++ b/emacs/custom/fcuny-ui.el
@@ -84,4 +84,8 @@
   (setq uniquify-buffer-name-style 'forward)
   (setq uniquify-separator "/"))
 
+;; required for dap-mode and dap-ui-mode
+(use-package posframe
+  :ensure t)
+
 (provide 'fcuny-ui)