Refactor feature/snippets

+ Don't clear yas-minor-mode-map; the default keybinds can be useful,
  esp to non-evil users.
+ Moved +snippets|enable-project-modes hook to autoloads file.
+ Reformat yasnippet config.
This commit is contained in:
Henrik Lissner 2018-06-19 13:00:05 +02:00
parent ae6c3cacf2
commit 8f76ee9a8a
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 19 additions and 19 deletions

View file

@ -66,3 +66,15 @@ buggy behavior when <delete> is pressed in an empty field."
(let ((sof (marker-position (yas--field-start field))))
(when (and field (> (point) sof))
(delete-region sof (point))))))
;;
;; Hooks
;;
(defun +snippets|enable-project-modes (mode &rest _)
"Automatically enable snippet libraries for project minor modes defined with
`def-project-mode!'."
(if (symbol-value mode)
(yas-activate-extra-mode mode)
(yas-deactivate-extra-mode mode)))

View file

@ -11,13 +11,6 @@
(def-package! yasnippet
:commands (yas-minor-mode-on yas-expand yas-expand-snippet yas-lookup-snippet
yas-insert-snippet yas-new-snippet yas-visit-snippet-file)
:preface
(defvar yas-minor-mode-map
(let ((map (make-sparse-keymap)))
(when (featurep! :feature evil)
(define-key map [remap yas-insert-snippet] #'+snippets/expand-on-region))
map))
:init
;; Ensure `yas-reload-all' is called as late as possible. Other modules could
;; have additional configuration for yasnippet. For example, file-templates.
@ -31,23 +24,18 @@
yas-also-auto-indent-first-line t
yas-prompt-functions (delq #'yas-dropdown-prompt yas-prompt-functions)
yas-triggers-in-field t) ; Allow nested snippets
(add-to-list 'yas-snippet-dirs '+snippets-dir nil #'eq)
(defun +snippets|enable-project-modes (mode &rest _)
"Automatically enable snippet libraries for project minor modes defined with
`def-project-mode!'."
(if (symbol-value mode)
(yas-activate-extra-mode mode)
(yas-deactivate-extra-mode mode)))
;; Register `def-project-mode!' modes with yasnippet. This enables project
;; specific snippet libraries (e.g. for Laravel, React or Jekyll projects).
(add-hook 'doom-project-hook #'+snippets|enable-project-modes)
;; Exit snippets on ESC from normal mode
(add-hook 'doom-escape-hook #'yas-abort-snippet)
;; Fix an error caused by smartparens interfering with yasnippet bindings
(after! smartparens
;; fix an error caused by smartparens interfering with yasnippet bindings
(advice-add #'yas-expand :before #'sp-remove-active-pair-overlay)))
(advice-add #'yas-expand :before #'sp-remove-active-pair-overlay))
;; Better `yas-insert-snippet' for evil users
(when (featurep! :feature evil)
(define-key yas-minor-mode-map [remap yas-insert-snippet] #'+snippets/expand-on-region)))
;; `auto-yasnippet'