Split laptop/work into independent stow packages with shared/ base

- Remove work/laptop detection logic from nvim and emacs configs; each
  package now has a self-contained init that requires no runtime checks
- Create shared/ stow package containing nvim/init.lua, emacs/init.el,
  common-dev-settings.el, org-bindings.el, tmux, ghostty, and ranger
- Rename laptop-languages.lua / work-languages.lua → languages.lua in
  each package; shared/init.lua uses require('languages') generically
- Rename work-dev-settings.el → dev-settings.el to match laptop naming
- Expand work/ to include the full set of dev tools (tmux, ghostty,
  ranger, emacs, neovim) without email/calendar tooling
- Add Makefile with `make laptop` and `make work` targets (each runs
  a single `stow shared <profile>` invocation)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-22 10:45:41 -04:00
parent 2a0813b861
commit 541564775a
12 changed files with 24 additions and 47 deletions

View File

@@ -0,0 +1,77 @@
;;; 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