;;; dev-settings.el --- Laptop development environment ;;; DAP Mode (use-package dap-mode :defer t :commands (dap-mode dap-debug) :config (require 'dap-gdb-lldb) (require 'dap-cpptools)) ;;; C / C++ (use-package c-ts-mode :ensure nil :mode (("\\.c\\'" . c-ts-mode) ("\\.h\\'" . c-ts-mode) ("\\.cpp\\'" . c++-ts-mode) ("\\.hpp\\'" . c++-ts-mode) ("\\.cc\\'" . c++-ts-mode) ("\\.cxx\\'" . c++-ts-mode)) :hook ((c-ts-mode . eglot-ensure) (c++-ts-mode . eglot-ensure)) :config (setq c-ts-mode-indent-offset 4)) ;;; Go (use-package go-ts-mode :ensure nil :mode "\\.go\\'" :hook (go-ts-mode . eglot-ensure) :config (setq go-ts-mode-indent-offset 4)) (with-eval-after-load 'dap-mode (require 'dap-dlv-go)) ;;; Rust (use-package rust-ts-mode :ensure nil :mode "\\.rs\\'" :hook (rust-ts-mode . eglot-ensure) :config (setq rust-ts-mode-indent-offset 4)) ;; rust-analyzer is installed via: rustup component add rust-analyzer (with-eval-after-load 'eglot (add-to-list 'eglot-server-programs '(rust-ts-mode . ("rust-analyzer")))) ;;; Common Lisp (use-package slime :defer t :commands slime :config (setq inferior-lisp-program "sbcl") (setq slime-contribs '(slime-fancy slime-company)) (setq slime-lisp-implementations '((sbcl ("sbcl") :coding-system utf-8-unix) (ccl ("ccl") :coding-system utf-8-unix)))) (use-package slime-company :defer t :after (slime company) :config (setq slime-company-completion 'fuzzy)) ;;; DAP Keybindings (with-eval-after-load 'dap-mode (keymap-set dap-mode-map "C-c d d" #'dap-debug) (keymap-set dap-mode-map "C-c d b" #'dap-breakpoint-toggle) (keymap-set dap-mode-map "C-c d c" #'dap-continue) (keymap-set dap-mode-map "C-c d n" #'dap-next) (keymap-set dap-mode-map "C-c d i" #'dap-step-in) (keymap-set dap-mode-map "C-c d o" #'dap-step-out) (keymap-set dap-mode-map "C-c d r" #'dap-restart-frame) (keymap-set dap-mode-map "C-c d q" #'dap-disconnect) (keymap-set dap-mode-map "C-c d e" #'dap-eval) (keymap-set dap-mode-map "C-c d l" #'dap-ui-locals) (keymap-set dap-mode-map "C-c d s" #'dap-ui-sessions)) (provide 'dev-settings) ;;; dev-settings.el ends here