Conflict tussen emmet-modus en yasnippet, dezelfde triggertoets

Ik wil zowel emmet-mode en yasnippet activeren met dezelfde sleutel C-return : in een html-modus buffer, C-return moet eerst yas-expand en vervolgens emmet-expand-line proberen als er geen geschikt fragment is gevonden.

Het lijkt erop dat ik iets mis over de bindende zoekwoorden in use-package . Momenteel is alleen de binding van emmet-modus actief in een HTML-buffer.

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
toegevoegd de auteur alastairs, de bron
Oh liefje, iemand moet dat in een publiekelijk ontvangen git repo krijgen, en gepubliceerd naar MELPA pronto!
toegevoegd de auteur Justin, de bron
Ja, wat ik heb, is eigenlijk niet logisch (een simpele en vergeefse poging na vele anderen). Dus zowel de emmet-modus als de yasnippet moeten gebonden zijn aan hun eigen kaart, maar hoe stel ik "prioriteit" (?) Van de ene boven de andere in?
toegevoegd de auteur chyx, de bron
Terzijde, het doorgeven van een : map aan bind-keys * (inclusief via : bind * ) doet niets; het negeert het kaartargument en bindt de sleutels in override-global-map .
toegevoegd de auteur Aaron Harris, de bron

1 antwoord

Ik heb uiteindelijk hippie expanderen gebruikt die is ingebouwd in Emacs (24+?).

Emmet-modus

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

hippie expanderen

(use-package hippie-exp
  :ensure nil
  :defer t
  :bind ("" . hippie expanderen)
  :config
  (setq-default hippie expanderen-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
toegevoegd