diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-15 15:10:19 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-15 15:10:19 -0500 |
| commit | 74cffcac0c9bb8e4a7ee33d51ff1f2cd9a2cd7f0 (patch) | |
| tree | 9f15fd69ddac57a6ec7476fac08938d6495a693a /modules | |
| parent | 45cdc8f41fdf337dfd8dd82f278c4c55654cf83e (diff) | |
| download | dotemacs-74cffcac0c9bb8e4a7ee33d51ff1f2cd9a2cd7f0.tar.gz dotemacs-74cffcac0c9bb8e4a7ee33d51ff1f2cd9a2cd7f0.zip | |
feat(yas): activate yasnippet globally with fundamental-mode extras
The yasnippet use-package block switches from `:hook (prog-mode . yas-minor-mode)` to `:demand t` + `(yas-global-mode 1)`. That makes yas-minor-mode active in every buffer, not just prog-mode-derived ones.
I added a small helper, `cj/--yas-activate-fundamental-extras`, attached as `:hook (yas-minor-mode . ...)`. It calls `(yas-activate-extra-mode 'fundamental-mode)` so the snippet table at `snippets/fundamental-mode/` is consulted in every buffer regardless of the buffer's own major mode. That's what makes universal triggers like `<cj` work everywhere.
The new `tests/test-prog-general-yas-activation.el` covers both wiring (yas-global-mode on, fundamental-mode in yas-extra-modes, yas-minor-mode active in org/text buffers) and end-to-end expansion (the marker snippet expands correctly in fundamental, text, org, emacs-lisp, and python-ts modes). 9 tests, all green; full unit suite green with no regressions.
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/prog-general.el | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/modules/prog-general.el b/modules/prog-general.el index 45b83ca7..e7dd4989 100644 --- a/modules/prog-general.el +++ b/modules/prog-general.el @@ -248,15 +248,23 @@ If no such file exists there, display a message." ;; ---------------------------------- Snippets --------------------------------- ;; reusable code and text +(defun cj/--yas-activate-fundamental-extras () + "Activate `fundamental-mode' as an extra yasnippet mode in this buffer. +Hooked onto `yas-minor-mode-hook' so every buffer also consults +`snippets/fundamental-mode/' regardless of the buffer's own major mode. +This is what makes universal snippets like =<cj= work in any buffer." + (yas-activate-extra-mode 'fundamental-mode)) + (use-package yasnippet - :commands (yas-new-snippet yas-visit-snippet-file yas-global-mode) - :hook (prog-mode . yas-minor-mode) + :demand t :bind ("C-c s n" . yas-new-snippet) ("C-c s e" . yas-visit-snippet-file) + :hook (yas-minor-mode . cj/--yas-activate-fundamental-extras) :config (setq yas-snippet-dirs (list snippets-dir)) - (yas-reload-all)) + (yas-reload-all) + (yas-global-mode 1)) ;; --------------------- Display Color On Color Declaration -------------------- ;; display the actual color as highlight to color hex code |
