Конфлікт між emmet-mode і yasnippet, той же тригерний ключ

Я хочу мати тригер emmet-mode та yasnippet з тією ж клавішею C-return : в html-mode buffer, C-return спочатку слід спробувати yas-expand , а потім emmet-expand-line , якщо не знайдено відповідний фрагмент.

Мені здається, що мені не вистачає чогось пов'язаних ключових слів у use-package . В даний час лише буфер emmet-mode активний у буфері HTML.

lisp/init-emmet.el

(use-package emmet-mode
  :defer t
  :init
  (add-hook 'css-mode-hook 'emmet-mode)
  (add-hook 'sgml-mode-hook 'emmet-mode)
  :config
  (setq-default
   emmet-move-cursor-between-quotes t
   emmet-preview-default nil)
  (unbind-key "C-M-" emmet-mode-keymap)
  (unbind-key "C-M-" emmet-mode-keymap))

lisp/init-yasnippet.el

(use-package yasnippet
  :defer t
  :bind (:map yas-minor-mode-map ("" . yas-expand))
  :init
  (add-hook 'js-mode-hook 'yas-minor-mode)
  (add-hook 'sgml-mode-hook 'yas-minor-mode)
  :config
  (setq-default yas-snippet-dirs '("~/.emacs.d/snippets"))
  (yas-reload-all)
  (unbind-key "TAB" yas-minor-mode-map))
6
додано Автор alastairs, джерело
О, дорога, хтось повинен це зробити в загальнодоступній гіт-репо, і опублікував його в прес-релізі MELPA!
додано Автор Justin, джерело
Так, що я маю, насправді не має сенсу (просту та марну спробу після багатьох інших). Отже, як emmet-mode, так і yasnippet мають зв'язуватися з власною картою, але як встановити "пріоритет" (?) Одного над іншим?
додано Автор chyx, джерело
На відміну від передачі : map до bind-keys * (включаючи через : bind * ) нічого не робить; він буде ігнорувати аргумент карти та пов'язувати його ключі в override-global map .
додано Автор Aaron Harris, джерело

1 Відповіді

Я опинився за допомогою хіппі-розгорнути , який вбудований в Emacs (24+?).

emmet-mode

(use-package emmet-mode
  :defer t
  :init
  (add-hook 'css-mode-hook 'emmet-mode)
  (add-hook 'sgml-mode-hook 'emmet-mode)
  :config
  (setq-default emmet-move-cursor-between-quote t)
  (unbind-key "" emmet-mode-keymap)
  (unbind-key "C-M-" emmet-mode-keymap)
  (unbind-key "C-M-" emmet-mode-keymap))

хіппі-розгорнути

(use-package hippie-exp
  :ensure nil
  :defer t
  :bind ("" . хіппі-розгорнути)
  :config
  (setq-default хіппі-розгорнути-try-functions-list
                '(yas-hippie-try-expand emmet-expand-line)))

yasnippet

(use-package yasnippet
  :defer t
  :init
  (add-hook 'js-mode-hook 'yas-minor-mode)
  (add-hook 'sgml-mode-hook 'yas-minor-mode)
  :config
  (setq-default yas-snippet-dirs '("~/.emacs.d/snippets"))
  (yas-reload-all)
  (unbind-key "TAB" yas-minor-mode-map)
  (unbind-key "" yas-minor-mode-map))
4
додано