Doom-emacs: [BUG] La liaison "SPC + SPC" pour + evil / easymotion donne une erreur de préfixe

Créé le 14 août 2019  ·  3Commentaires  ·  Source: hlissner/doom-emacs

Décrivez le problème
La tentative de mappage de SPC SPC à +evil/easymotion échoue avec l'erreur "SPC de clé non préfixe". Les autres fonctions correspondent très bien.

Le code défaillant ressemble à ceci:

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

Cependant, les deux fonctionnent très bien:

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

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

Cela suggère qu'il y a quelque chose dans les internes de +evil/easymotion qui n'aime pas être mappé à une clé de préfixe ... ce qui est étrange car le mappage par défaut g s utilise g comme un préfixe, qui a également d'autres clés.


Débogueur entré - Erreur Lisp: (erreur "La séquence de touches SPC SPC démarre avec une clé non préfixée SPC")
define-key ((keymap (remap keymap (avy-goto-word-or-subword-1. evil-avy-goto-word-or-subword-1) (avy-goto-word-1-below. evil-avy -goto-mot-1-ci-dessous) (avy-goto-word-1-above. evil-avy-goto-word-1-above) (avy-goto-word-1. evil-avy-goto-word-1 ) (avy-goto-word-0. evil-avy-goto-word-0) (avy-goto-symbol-1-below. evil-avy-goto-symbol-1-below) (avy-goto-symbol- 1-ci-dessus. Evil-avy-goto-symbol-1-above) (avy-goto-symbol-1. Evil-avy-goto-symbol-1) (avy-goto-subword-1. Evil-avy-goto- sous-mot-1) (avy-goto-sous-mot-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- ci-dessus. evil-avy-goto-char-2-above) (avy-goto-char-2. evil-avy-goto-char-2) (avy-goto-char. evil-avy-goto-char) (ace -jump-word-mode. evil-ace-jump-word-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) (down. 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 / previous) (106. + fold / next) (72. evil-scroll-left) (76. evil-scroll-right) (à gauche . "zh") (104. evil-scroll-column-left) (right. "zl") (108. evil-scroll-column-right) (45. "zb ^") (98. evil-scroll-line -to-bottom) (46. "zz ^") (122. evil-scroll-line-to-center) (13. [122 return]) (return. "zt ^") (116. evil-scroll-line -to-top) (43. evil-scroll-bottom-line-to-top) (94. evil-scroll-top-line-to- bas)) (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-previous-line-first-non-blank) (95. evil-next-line-1-first-non-blank) (43. evil-next-line-first-non- vide) (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-previous) (104. outline-previous-visible-header) (101. previous-error) (97. evil-backward-arg) (121. + evil: c-string-decode) (117. + evil: url -decode) (92. + evil / previous-comment) (42. + evil / previous-comment) (35. + evil / previous-preproc-directive) (77. + evil / previous-end-of-method) ( 109. + Mal / début-de-méthode-précédent ) (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-header) (101. next-error) (97. evil-forward -arg) (121. + evil: c-string-encode) (117. + evil: url-encode) (92. + evil / next-comment) (42. + evil / next-comment) (35. + evil / next-preproc-directive) (77. + evil / next-end-of-method) (109. + evil / next-begin-of-method) (115. evil-next-flyspell-error) (125. evil -next-close-brace) (41. evil-next-close-paren) (91. evil-forward-section-end) (93. evil-forward-section-begin)) (41. evil-forward-phrase- begin) (40. evil-backward-sentence-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 fermer e (t) nil (interactif) (let ((current-prefix-arg t)) (call-interactively (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-previous-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-sentence-begin) (40. evilem -motion-backward-phrase-begin) (93 keymap (91. evilem-motion-forward-section-end) (93. evilem-motion-forward-section-begin)) (91 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 -ligne-visuelle) (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-unbound-word-forward) (35. evil- ex-search-unbound-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-begin-of-visual-line) (107. evil-previous-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- définition)) ...) "" nul)
evil-define-key (mouvement global "" nul)(let ((prefix (this-command-keys))) (evil-define-key (quote motion) (quote global) prefix nil) (evilem-default-keybindings (key-description prefix)) (setq prefix-arg current -prefix-arg événements-de-commande-non lus (mapcar (fonction (lambda (e) (cons te))) (vconcat (if evil-this-operator (progn (where-is-internal evil-this-operator evil-normal- state-map t))) préfixe))))
+ mal / easymotion ()
funcall-interactivement (+ evil / easymotion)
appel interactivement (+ evil / easymotion nil nil)
commande-exécuter (+ evil / easymotion)

Informations système

  • Système d'exploitation: darwin (x86_64-apple-darwin14.5.0)
  • Shell: / bin / zsh
  • Emacs: 26.2 (12 avril 2019)
  • Doom: 2.0.9 (HEAD -> develop, _upgrade / develop f754d4ff 2019-07-23 18:23:17 +0200)
  • Affichage graphique: t (démon: nil)
  • Caractéristiques du système: NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS MODULES THREADS
  • Des détails:
    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

Commentaire le plus utile

À partir de 27cabea, vous pouvez lier +evil/easymotion où vous le souhaitez. J'ai trouvé un moyen de contourner les limitations techniques mentionnées précédemment.

Tous les 3 commentaires

Vous ne pouvez pas lier + evil / easymotion ailleurs que sur evil-motion-state-map , comme c'est le cas par défaut:

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

Il n'a pas été conçu pour être lié ailleurs (et ne peut pas l'être - de manière non fiable). C'est une astuce pour charger paresseusement evil-easymotion, puis lier evilem-map à la séquence de touches qui l'a déclenchée, sans compromettre l'intégration de quelle clé et sans avoir à dupliquer les raccourcis clavier intégrés sur evilem-map. Il n'y a pas de mécanisme fiable pour déterminer par quel keymap une commande a été appelée, il n'y a donc pas de solution simple à ce problème. Puisque ces touches sont censées être des touches de mouvement "augmentées" pour commencer, cela semblait être un compromis acceptable.

Sur une note non liée, vous devriez utiliser :leader au lieu de :map doom-leader-map . Ils sont équivalents.

Je suppose que le problème a été suffisamment résolu, mais marquez-le comme wontfix car le problème sous-jacent ne peut pas être résolu. Merci de l'avoir porté à mon attention!

À partir de 27cabea, vous pouvez lier +evil/easymotion où vous le souhaitez. J'ai trouvé un moyen de contourner les limitations techniques mentionnées précédemment.

Cette page vous a été utile?
0 / 5 - 0 notes