diff --git a/modules/editor/snippets/autoload/snippets.el b/modules/editor/snippets/autoload/snippets.el index b03d3f354..062bdc8cd 100644 --- a/modules/editor/snippets/autoload/snippets.el +++ b/modules/editor/snippets/autoload/snippets.el @@ -102,6 +102,13 @@ buggy behavior when is pressed in an empty field." (yas-activate-extra-mode mode) (yas-deactivate-extra-mode mode))) +;;;###autoload +(defun +snippets|read-only-maybe () + "Enable `read-only-mode' if snippet is built-in." + (when (file-in-directory-p default-directory doom-local-dir) + (read-only-mode 1) + (message "This is a built-in snippet, enabling read only mode. Use `yas-new-snippet' to redefine snippets"))) + ;; ;; Commands diff --git a/modules/editor/snippets/config.el b/modules/editor/snippets/config.el index 06a8496a3..4b57aa44b 100644 --- a/modules/editor/snippets/config.el +++ b/modules/editor/snippets/config.el @@ -45,6 +45,9 @@ ;; tell smartparens overlays not to interfere with yasnippet keybinds (advice-add #'yas-expand :before #'sp-remove-active-pair-overlay)) + ;; Enable `read-only-mode' for built-in snippets (in `doom-local-dir') + (add-hook 'snippet-mode-hook #'+snippets|read-only-maybe) + (when (featurep! :editor evil) ;; evil visual-mode integration for `yas-insert-snippet' (define-key yas-minor-mode-map [remap yas-insert-snippet] #'+snippets/expand-on-region)))