;;; common-dev-settings.el --- Dev tooling shared across all hosts ;;; Completion (use-package company :defer 1 :config (global-company-mode) (setq company-idle-delay 0.2 company-minimum-prefix-length 2 company-show-numbers t company-tooltip-align-annotations t)) ;;; LSP (use-package eglot :ensure nil :defer t :commands (eglot eglot-ensure) :config (setq eglot-autoshutdown t eglot-send-changes-idle-time 0.5) (setq eldoc-echo-area-use-multiline-p nil) (add-to-list 'eglot-stay-out-of 'eldoc)) ;;; Tree-sitter mode management ;; Grammar sources and installation are host-specific; see dev-settings.el. (use-package treesit-auto :custom (treesit-auto-install 'prompt) :config (treesit-auto-add-to-auto-mode-alist 'all) (global-treesit-auto-mode)) ;;; Utilities (use-package helpful :defer t :commands (helpful-callable helpful-variable helpful-key)) (use-package smartparens :defer 1 :hook (prog-mode . smartparens-mode) :config (require 'smartparens-config)) (use-package yasnippet :defer 2 :config (yas-global-mode 1)) (use-package yasnippet-snippets :defer t :after yasnippet) ;;; Emacs Lisp (add-hook 'emacs-lisp-mode-hook #'eldoc-mode) (add-hook 'emacs-lisp-mode-hook #'company-mode) ;;; LSP Keybindings (with-eval-after-load 'eglot (keymap-set eglot-mode-map "C-c l d" #'xref-find-definitions) (keymap-set eglot-mode-map "C-c l r" #'xref-find-references) (keymap-set eglot-mode-map "C-c l i" #'eglot-find-implementation) (keymap-set eglot-mode-map "C-c l t" #'eglot-find-typeDefinition) (keymap-set eglot-mode-map "C-c l h" #'eldoc-doc-buffer) (keymap-set eglot-mode-map "C-c l s" #'eldoc) (keymap-set eglot-mode-map "C-c l a" #'eglot-code-actions) (keymap-set eglot-mode-map "C-c l n" #'eglot-rename) (keymap-set eglot-mode-map "C-c l e" #'flymake-show-buffer-diagnostics) (keymap-set eglot-mode-map "C-c l f" #'eglot-format-buffer)) (provide 'common-dev-settings) ;;; common-dev-settings.el ends here