buncha keymaps
This commit is contained in:
155
dev-settings.el
155
dev-settings.el
@@ -4,7 +4,6 @@
|
||||
(setq byte-compile-warnings '(not free-vars unresolved noruntime lexical make-local))
|
||||
|
||||
;;; Package Management
|
||||
;; Package initialization already done in init.el
|
||||
(require 'use-package)
|
||||
(setq use-package-always-ensure t)
|
||||
|
||||
@@ -20,76 +19,57 @@
|
||||
company-show-numbers t
|
||||
company-tooltip-align-annotations t))
|
||||
|
||||
;; Flycheck - syntax checking
|
||||
(use-package flycheck
|
||||
:defer 2
|
||||
:config
|
||||
(global-flycheck-mode)
|
||||
;; Disable for emacs lisp in config directories
|
||||
(setq-default flycheck-disabled-checkers '(emacs-lisp-checkdoc)))
|
||||
|
||||
;; LSP Mode - language server protocol
|
||||
(use-package lsp-mode
|
||||
;; Eglot - Built-in LSP client (Emacs 29+)
|
||||
(use-package eglot
|
||||
:ensure nil ; Built-in to Emacs 29+
|
||||
:defer t
|
||||
:commands (lsp lsp-deferred)
|
||||
:init
|
||||
(setq lsp-keymap-prefix "C-c l")
|
||||
:commands (eglot eglot-ensure)
|
||||
:config
|
||||
(setq lsp-enable-snippet t
|
||||
lsp-enable-symbol-highlighting t
|
||||
lsp-enable-on-type-formatting nil
|
||||
lsp-signature-auto-activate t
|
||||
lsp-signature-render-documentation t
|
||||
lsp-completion-provider :capf
|
||||
lsp-headerline-breadcrumb-enable t))
|
||||
;; Disable intrusive features
|
||||
(setq eglot-autoshutdown t
|
||||
eglot-send-changes-idle-time 0.5)
|
||||
;; Disable eldoc signature help and documentation on hover
|
||||
(setq eldoc-echo-area-use-multiline-p nil)
|
||||
(add-to-list 'eglot-stay-out-of 'eldoc))
|
||||
|
||||
(use-package lsp-ui
|
||||
:defer t
|
||||
:commands lsp-ui-mode
|
||||
:config
|
||||
(setq lsp-ui-doc-enable t
|
||||
lsp-ui-doc-show-with-cursor t
|
||||
lsp-ui-doc-position 'at-point
|
||||
lsp-ui-sideline-enable t
|
||||
lsp-ui-sideline-show-hover t))
|
||||
|
||||
;; Company integration with LSP
|
||||
(use-package company-capf
|
||||
:ensure nil
|
||||
:after company)
|
||||
|
||||
;; Debugging with DAP
|
||||
;; DAP Mode - Debug Adapter Protocol
|
||||
(use-package dap-mode
|
||||
:defer t
|
||||
:after lsp-mode
|
||||
:commands dap-mode
|
||||
:commands (dap-mode dap-debug)
|
||||
:config
|
||||
(dap-auto-configure-mode)
|
||||
(require 'dap-gdb-lldb))
|
||||
(require 'dap-gdb-lldb) ; C/C++
|
||||
(require 'dap-cpptools))
|
||||
|
||||
;; Project management - already in init.el, just configure for dev
|
||||
;; Projectile configuration merged with init.el settings
|
||||
;;; Tree-sitter Configuration (Emacs 29+)
|
||||
;; Tree-sitter is built-in to Emacs 29+
|
||||
;; Language grammars need to be installed separately
|
||||
|
||||
;; Git integration - already in init.el
|
||||
;; Automatically install tree-sitter grammars
|
||||
(use-package treesit-auto
|
||||
:custom
|
||||
(treesit-auto-install t) ; Auto-install without prompting
|
||||
:config
|
||||
(treesit-auto-add-to-auto-mode-alist 'all)
|
||||
(global-treesit-auto-mode))
|
||||
|
||||
;;; C/C++ Configuration
|
||||
|
||||
(use-package cc-mode
|
||||
:ensure nil
|
||||
:hook ((c-mode . lsp-deferred)
|
||||
(c++-mode . lsp-deferred))
|
||||
(use-package c-ts-mode
|
||||
:ensure nil ; Built-in
|
||||
: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-basic-offset 4
|
||||
c-default-style "linux"))
|
||||
(setq c-ts-mode-indent-offset 4))
|
||||
|
||||
;; Install clangd for C/C++ LSP support
|
||||
;; You'll need to install clangd separately:
|
||||
;; - Windows: Download from LLVM releases
|
||||
;; - Linux: sudo apt install clangd
|
||||
|
||||
;; Modern C++ font-lock
|
||||
(use-package modern-cpp-font-lock
|
||||
:hook (c++-mode . modern-c++-font-lock-mode))
|
||||
;; Arch: sudo pacman -S clang
|
||||
;; Windows: Download from LLVM releases
|
||||
|
||||
;;; Common Lisp Configuration
|
||||
|
||||
@@ -97,7 +77,7 @@
|
||||
:defer t
|
||||
:commands slime
|
||||
:config
|
||||
(setq inferior-lisp-program "sbcl") ; or "ccl", "clisp", etc.
|
||||
(setq inferior-lisp-program "sbcl")
|
||||
(setq slime-contribs '(slime-fancy slime-company))
|
||||
(setq slime-lisp-implementations
|
||||
'((sbcl ("sbcl") :coding-system utf-8-unix)
|
||||
@@ -114,26 +94,15 @@
|
||||
(use-package elisp-mode
|
||||
:ensure nil
|
||||
:hook ((emacs-lisp-mode . eldoc-mode)
|
||||
(emacs-lisp-mode . company-mode))
|
||||
:config
|
||||
;; Disable checkdoc warnings in config files
|
||||
(add-hook 'emacs-lisp-mode-hook
|
||||
(lambda ()
|
||||
(when (or (string-match-p "\\.emacs\\.d" (or buffer-file-name ""))
|
||||
(string-match-p "init\\.el" (or buffer-file-name ""))
|
||||
(string-match-p "dev-settings" (or buffer-file-name "")))
|
||||
(setq-local flycheck-disabled-checkers '(emacs-lisp-checkdoc))))))
|
||||
(emacs-lisp-mode . company-mode)))
|
||||
|
||||
;; Better elisp docs
|
||||
(use-package helpful
|
||||
:bind (("C-h f" . helpful-callable)
|
||||
("C-h v" . helpful-variable)
|
||||
("C-h k" . helpful-key)))
|
||||
:defer t
|
||||
:commands (helpful-callable helpful-variable helpful-key))
|
||||
|
||||
;;; Additional Useful Packages
|
||||
|
||||
;; Parentheses management - rainbow-delimiters already in init.el
|
||||
|
||||
(use-package smartparens
|
||||
:defer 1
|
||||
:hook (prog-mode . smartparens-mode)
|
||||
@@ -150,21 +119,33 @@
|
||||
:defer t
|
||||
:after yasnippet)
|
||||
|
||||
;; Better search
|
||||
(use-package ag
|
||||
:defer t
|
||||
:commands ag
|
||||
:if (executable-find "ag"))
|
||||
|
||||
;; Treemacs for project navigation
|
||||
(use-package treemacs
|
||||
:defer t
|
||||
:commands treemacs
|
||||
:bind (("C-c t" . treemacs)))
|
||||
|
||||
(use-package treemacs-projectile
|
||||
:defer t
|
||||
:after (treemacs projectile))
|
||||
;;; LSP Keybindings
|
||||
(with-eval-after-load 'general
|
||||
(rh/leader-keys
|
||||
"g" '(:ignore t :which-key "lsp/go-to")
|
||||
"gd" '(xref-find-definitions :which-key "go to definition")
|
||||
"gr" '(xref-find-references :which-key "find references")
|
||||
"gi" '(eglot-find-implementation :which-key "go to implementation")
|
||||
"gt" '(eglot-find-typeDefinition :which-key "go to type definition")
|
||||
"gh" '(eldoc-doc-buffer :which-key "show documentation")
|
||||
"gs" '(eldoc :which-key "signature help")
|
||||
"ga" '(eglot-code-actions :which-key "code actions")
|
||||
"gn" '(eglot-rename :which-key "rename symbol")
|
||||
"ge" '(flymake-show-buffer-diagnostics :which-key "show diagnostics")
|
||||
"gf" '(eglot-format-buffer :which-key "format buffer")
|
||||
|
||||
"d" '(:ignore t :which-key "debug")
|
||||
"dd" '(dap-debug :which-key "start debugging")
|
||||
"db" '(dap-breakpoint-toggle :which-key "toggle breakpoint")
|
||||
"dc" '(dap-continue :which-key "continue")
|
||||
"dn" '(dap-next :which-key "step over")
|
||||
"di" '(dap-step-in :which-key "step into")
|
||||
"do" '(dap-step-out :which-key "step out")
|
||||
"dr" '(dap-restart-frame :which-key "restart")
|
||||
"dq" '(dap-disconnect :which-key "quit/disconnect")
|
||||
"de" '(dap-eval :which-key "eval expression")
|
||||
"dl" '(dap-ui-locals :which-key "show locals")
|
||||
"ds" '(dap-ui-sessions :which-key "show sessions")))
|
||||
|
||||
;;; Conditional loading of work-specific settings (Windows only)
|
||||
(when (eq system-type 'windows-nt)
|
||||
|
||||
Reference in New Issue
Block a user