Doom-emacs: [BUG] A ligação "SPC + SPC" para + evil / easymotion dá erro de prefixo

Criado em 14 ago. 2019  ·  3Comentários  ·  Fonte: hlissner/doom-emacs

Descreva o problema
A tentativa de mapear SPC SPC para +evil/easymotion falha com o erro "SPC de chave sem prefixo". Outras funções são mapeadas perfeitamente.

O código com falha é parecido com este:

(map! (:map doom-leader-map
        "SPC" #'+evil/easymotion))

No entanto, ambos funcionam perfeitamente:

  (map! (:map doom-leader-map
          "SPC" evilem-map))

  (map! (:map doom-leader-map
          "SPC" #'find-file))

Isso sugere que há algo nos internos de +evil/easymotion que não gosta de ser mapeado para uma chave de prefixo ... o que é estranho porque o mapeamento g s padrão usa g como um prefixo, que também possui outras chaves.


Depurador inserido - erro Lisp: (erro "Sequência de chave SPC SPC inicia com chave sem prefixo SPC")
define-key ((mapa de teclado (mapa de teclado remapeamento (avy-goto-palavra-ou-subpalavra-1. evil-avy-goto-palavra-ou-subpalavra-1) (avy-goto-palavra-1-abaixo. evil-avy -goto-word-1-below) (avy-goto-word-1-above. evil-avy-goto-word-1-above) (avy-goto-word-1. evil-avy-goto-word-1 ) (avy-goto-palavra-0. evil-avy-goto-palavra-0) (avy-goto-símbolo-1-abaixo. evil-avy-goto-símbolo-1-abaixo) (avy-goto-símbolo- 1 acima. Evil-avy-goto-symbol-1-above) (avy-goto-symbol-1. Evil-avy-goto-symbol-1) (avy-goto-subword-1. Evil-avy-goto- subpalavra-1) (avy-goto-subpalavra-0. evil-avy-goto-subword-0) (avy-goto-line-below. evil-avy-goto-line-below) (avy-goto-line-above) . evil-avy-goto-line-above) (avy-goto-line. evil-avy-goto-line) (avy-goto-char-timer. evil-avy-goto-char-timer) (avy-goto- char-in-line. evil-avy-goto-char-in-line) (avy-goto-char-2-below. evil-avy-goto-char-2-below) (avy-goto-char-2- acima. evil-avy-goto-char-2-above) (avy-goto-char-2. evil-avy-goto-char-2) (avy-goto-char. evil-avy-goto-char) (ace -pular-palavra-modo. mal-ás-pular-palavra-m ode) (ace-jump-line-mode. evil-ace-jump-line-mode) (ace-jump-char-mode. evil-ace-jump-char-mode)) (33. evil-shell-command) (58. evil-ex) (down-mouse -1. Evil-mouse-drag-region) (4. Evil-scroll-down) (21. Evil-scroll-up) (9. Evil-jump-forward) (26. Evil-emacs-state) (para baixo. evil-next-line) (up. evil-previous-line) (right. evil-forward-char) (left. evil-backward-char) (30. evil-buffer) (22. evil-visual-block) ( 86. Evil-visual-line) (118. Evil-visual-char) (122 keymap (69. Vimish-fold-delete-all) (100. Vimish-fold-delete) (70. Evil-vimish-fold / create -line) (102. evil-vimish-fold / create) (107. + fold / anterior) (106. + fold / next) (72. evil-scroll-left) (76. evil-scroll-right) (left . "zh") (104. evil-scroll-column-left) (right. "zl") (108. evil-scroll-column-right) (45. "zb ^") (98. evil-scroll-line -para-baixo) (46. "zz ^") (122. evil-scroll-line-center) (13. [122 return]) (return. "zt ^") (116. evil-scroll-line -to-topo) (43. evil-scroll-bottom-line-to-top) (94. evil-scroll-top-line-to- inferior)) (92. evil-execute-in-emacs-state) (13. evil-ret) (25. evil-scroll-line-up) (15. evil-jump-backward) (6. evil-scroll-page-down) (5 . evil-scroll-line-down) (2. evil-scroll-page-up) (29. evil-jump-to-tag) (67108918. evil-switch-to-windows-last-buffer) (23. evil -window-map) (45. evil-anterior-line-first-non-blank) (95. evil-next-line-1-first-non-blank) (43. evil-next-line-first-non- em branco) (94. evil-first-non-blank) (124. evil-goto-column) (63. evil-ex-search-backward) (59. evil-repeat-find-char) (47. evil-ex -search-forward) (44. evil-repeat-find-char-reverse) (42. evil-ex-search-word-forward) (91 keymap (100. git-gutter: previous-hunk) (116. hl- todo-anterior) (104. contorno-anterior-visível-cabeçalho) (101. anterior-erro) (97. evil-backward-arg) (121. + evil: c-string-decode) (117. + evil: url -decodificar) (92. + mau / comentário anterior) (42. + mau / comentário anterior) (35. + mau / diretriz-preproc anterior) (77. + mau / anterior-fim-do-método) ( 109. + Mal / início-anterior-do-método ) (115. evil-prev-flyspell-error) (123. evil-previous-open-brace) (40. evil-previous-open-paren) (93. evil-backward-section-end) (91. evil-backward-section- begin)) (93 keymap (100. git-gutter: next-hunk) (116. hl-todo-next) (104. outline-next-visible-encabeçado) (101. next-error) (97. evil-forward -arg) (121. + mal: c-string-codificar) (117. + mal: codificar url) (92. + mal / próximo comentário) (42. + mal / próximo comentário) (35. + mal / next-preproc-Directive) (77. + evil / next-end-of-method) (109. + evil / next-start-of-method) (115. evil-next-flyspell-error) (125. evil-next-flyspell-error) (125. -next-close-brace) (41. evil-next-close-paren) (91. evil-forward-section-end) (93. evil-forward-section-begin)) (41. evil-forward-frase- begin) (40. evil-backward-frase-begin) (39. evil-goto-mark-line) (96. evil-goto-mark) (37. evil-jump-item) (36. evil-end-of -line) (35. evil-ex-search-word-backward) (125. evil-forward-paragraph) (123. evil-backward-paragraph) (103. keymap (115 keymap (47. avy-goto-char-timer ) (32 fechamento e (t) nil (interativo) (let ((current-prefix-arg t)) (call-interively (function avy-goto-char-timer)))) (83. evil-easymotion-snipe-backward) (115. evil-easymotion-snipe-forward) (65. evilem - motion-function-evil-backward-arg) (97. evilem - motion-function-evil-forward-arg ) (43. Evilem-motion-next-line-first-non-blank) (45. Evilem-motion-anterior-line-first-non-blank) (35. Evilem-motion-search-word-backward) (42 . evilem-motion-search-word-forward) (78. evilem-motion-search-previous) (110. evilem-motion-search-next) (41. evilem-motion-forward-frase-begin) (40. evilem -motion-backward-frase-begin) (93 do keymap (91. evilem-motion-forward-section-end) (93. evilem-motion-forward-section-begin)) (91 do keymap (93. evilem-motion-backward -section-end) (91. evilem-motion-backward-section-begin)) (70. evilem-motion-find-char-backward) (102. evilem-motion-find-char) (84. evilem-motion- find-char-to-backward) (116. evilem-motion-find-char-to) (107. evilem-motion-previous-line) (106. evilem-motion-next-line) (103. keymap (107. evilem -motion-previous-visual-line) (106. evilem-motion-next -visual-line) (69. evilem-motion-backward-WORD-end) (101. evilem-motion-backward-word-end)) (66. evilem-motion-backward-WORD-begin) (98. evilem-motion-backward-word-begin) (69. Evilem-motion-forward-WORD-end) (101. Evilem-motion-forward-word-end) (87. Evilem-motion-forward-WORD-begin) (119. Evilem-motion-forward-word- begin)) (78. evil-previous-match) (110. evil-next-match) (118. evil-visual-restore) (42. evil-ex-search-unbounded-word-forward) (35. evil- ex-search-unbounded-word-backward) (29. evil-jump-to-tag) (36. evil-end-of-visual-line) (109. evil-middle-of-visual-line) (94. evil-first-non-blank-of-visual-line) (95. evil-last-non-blank) (48. evil-start-of-visual-line) (107. evil-anterior-visual-line) ( 106. Evil-next-visual-line) (103. Evil-goto-first-line) (69. Evil-backward-WORD-end) (101. Evil-backward-word-end) (100. Evil-goto- definição)) ...) "" nulo)
evil-define-key (movimento global "" nulo)(let ((prefix (this-command-keys))) (evil-define-key (movimento de aspas) (aspas global) prefixo nil) (evilem-default-keybindings (prefixo de descrição de tecla)) (setq prefixo-arg atual -prefix-arg unread-command-events (mapcar (function (lambda (e) (cons te))) (vconcat (if evil-this-operator (progn (where-is-internal evil-this-operator evil-normal- mapa de estados t))) prefixo))))
+ maldade / easymotion ()
funcall-interativamente (+ evil / easymotion)
chamar interativamente (+ evil / easymotion nil nil)
comando-execução (+ evil / easymotion)

Informação do sistema

  • SO: darwin (x86_64-apple-darwin14.5.0)
  • Shell: / bin / zsh
  • Emacs: 26.2 (12 de abril de 2019)
  • Doom: 2.0.9 (HEAD -> desenvolver, _atualizar / desenvolver f754d4ff 2019-07-23 18:23:17 +0200)
  • Exibição gráfica: t (daemon: nil)
  • Recursos do sistema: NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES THREADS
  • Detalhes:
    elisp env bootstrapper: envvar-file elc count: 0 uname -a: Darwin 17.7.0 Darwin Kernel Version 17.7.0: Sun Jun 2 20:31:42 PDT 2019; root:xnu-4570.71.46~1/RELEASE_X86_64 x86_64 modules: (:completion company ivy :ui doom doom-dashboard doom-quit hl-todo modeline nav-flash ophints (popup +all +defaults) treemacs vc-gutter vi-tilde-fringe window-select workspaces :editor evil file-templates fold lispy multiple-cursors rotate-text snippets :emacs dired electric vc :term eshell :tools bibtex editorconfig eval flycheck flyspell (lookup +docsets) macos magit :lang data emacs-lisp my-ess markdown (org +ipython +pandoc) polymode python sh :config default) packages: (dtrt-indent (fill-function-arguments :recipe (fill-function-arguments :fetcher github :repo davidshepherd7/fill-function-arguments)) deadgrep pandoc-mode) exec-path: (~/.gem/bin ~/.zplug/repos/zplug/zplug/bin ~/.zplug/bin ~/.cargo/bin ~/.nix-profile/bin ~/.gem/bin /usr/local/bin /usr/bin /bin /usr/sbin /sbin /Library/TeX/texbin /opt/X11/bin ~/.config/nvim/bundle/fzf/bin ~/.local/bin /Applications/Emacs.app/Contents/MacOS/bin-x86_64-10_10 /Applications/Emacs.app/Contents/MacOS/libexec-x86_64-10_10 ~/.local/bin /Applications/Emacs.app/Contents/MacOS/libexec/)
bug elisp keybinds resolved

Comentários muito úteis

A partir de 27cabea, você pode vincular +evil/easymotion qualquer lugar que desejar. Eu encontrei uma maneira de contornar as limitações técnicas mencionadas anteriormente.

Todos 3 comentários

Você não pode vincular + evil / easymotion em qualquer outro lugar, exceto em evil-motion-state-map , como é por padrão:

(map! :leader :m "gs" #'evil/easymotion)  ; note the :m 

Não foi projetado para ser vinculado a nenhum outro lugar (e não pode ser - não é confiável). É um truque preguiçosamente carregar evil-easymotion e então vincular evilem-map à sequência de teclas que o acionou, sem comprometer a integração de qual tecla e sem ter que duplicar os atalhos de teclado integrados no evilem-map. Não existe um mecanismo confiável para determinar por qual mapa de teclado um comando foi chamado, portanto, não há uma solução simples para esse problema. Uma vez que, para começar, estas são teclas de movimento "aumentadas", isso parecia um meio-termo aceitável.

Em uma nota não relacionada, você deve usar :leader vez de :map doom-leader-map . Eles são equivalentes.

Presumirei que o problema foi suficientemente resolvido, mas marque-o como wontfix pois o problema subjacente não pode ser resolvido. Obrigado por chamar minha atenção para isso!

A partir de 27cabea, você pode vincular +evil/easymotion qualquer lugar que desejar. Eu encontrei uma maneira de contornar as limitações técnicas mencionadas anteriormente.

Esta página foi útil?
0 / 5 - 0 avaliações