Doom-emacs: [ОШИБКА] Привязка "SPC + SPC" для + evil / easymotion дает ошибку префикса

Созданный на 14 авг. 2019  ·  3Комментарии  ·  Источник: hlissner/doom-emacs

Опишите проблему
Попытка сопоставить SPC SPC с +evil/easymotion завершается ошибкой "без префиксного ключа SPC". Другие функции отображаются просто отлично.

Неисправный код выглядит так:

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

Однако оба они работают нормально:

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

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

Это говорит о том, что во внутреннем устройстве +evil/easymotion что-то, что не нравится, когда его сопоставляют с префиксным ключом ... что странно, потому что отображение по умолчанию g s использует g как префикс, который также имеет другие ключи.


Введен отладчик - ошибка Lisp: (ошибка «Последовательность ключей SPC SPC начинается с 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-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-word-0. evil-avy-goto-word-0) (avy-goto-symbol-1-below. evil-avy-goto-symbol-1-below) (avy-goto-symbol- 1-выше. Зло-ави-гото-символ-1-выше) (avy-goto-symbol-1. Evil-avy-goto-symbol-1) (avy-goto-subword-1. Evil-avy-goto- подслово-1) (avy-goto-subword-0. evil-avy-goto-subword-0) (avy-goto-line-below. evil-avy-goto-line-below) (avy-goto-line-above . evil-avy-goto-line-выше) (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- выше. evil-avy-goto-char-2-выше) (avy-goto-char-2. evil-avy-goto-char-2) (avy-goto-char. evil-avy-goto-char) (ace -jump-word-mode. зло-туз-прыжок-слово-м ода) (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. Зло-мышь-область перетаскивания) (4. Зло-прокрутка вниз) (21. Зло-прокрутка вверх) (9. Зло-прыжок-вперед) (26. Зло-emacs-state) (вниз. зло-следующая-строка) (вверх. зло-предыдущая-строка) (право. зло-вперед-символ) (слева. зло-назад-символ) (30. зло-буфер) (22. зло-визуальный-блок) ( 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) (слева . "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- внизу)) (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. зло -window-map) (45. evil-previous-line-first-non-blank) (95. evil-next-line-1-first-non-blank) (43. evil-next-line-first-non- blank) (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 раскладка клавиатуры (100. git-gutter: previous-hunk) (116. hl- todo-previous) (104. outline-previous-visible-heading) (101. previous-error) (97. evil-backward-arg) (121. + evil: c-string-decode) (117. + evil: url -decode) (92. + зло / предыдущий-комментарий) (42. + зло / предыдущий-комментарий) (35. + зло / предыдущий-препроцесс-директива) (77. + зло / предыдущий-конец-метода) ( 109. + Зло / предыдущее начало метода ) (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-heading) (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. + зло / 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. зло-вперед-предложение- begin) (40. зло-обратное-предложение-начало) (39. зло-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 закрытия e (t) nil (интерактивный) (let ((current-prefix-arg t)) (интерактивный вызов (функция 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-движение-вперед-предложение-начало) (40. evilem -motion-backward-offer-begin) (93 раскладка клавиатуры (91. evilem-motion-forward-section-end) (93. evilem-motion-forward-section-begin)) (91 раскладка (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 раскладка клавиатуры (107. evilem -motion-previous-visual-line) (106. evilem-движение-вперед -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-движение-вперед-слово- begin)) (78. зло-предыдущее-совпадение) (110. зло-следующее-совпадение) (118. зло-визуальное-восстановление) (42. зло-экс-поиск-неограниченное-слово-вперед) (35. зло- ex-search-unbounded-word-backward) (29. зло-скачок-к-тегу) (36. зло-конец-визуальной-строки) (109. зло-середина-визуальной-строки) (94. зло-первое-непустой-визуальной-строки) (95. зло-последний-непустой) (48. зло-начало-визуальной-строки) (107. зло-предыдущая-визуальная-строка) ( 106. Evil-next-visual-line) (103. Evil-goto-first-line) (69. Evil-backward-WORD-end) (101. Evil-backward-word-end) (100. Evil-goto- определение)) ...) "" ноль)
evil-define-key (глобальное движение "" ноль)(let ((prefix (this-command-keys))) (evil-define-key (quote motion) (quote global) prefix nil) (evilem-default-keybindings (префикс описания ключа)) (setq prefix-arg current -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- (где-это-внутреннее зло) карта состояний t))) префикс))))
+ зло / легкое движение ()
funcall-интерактивно (+ зло / легкое движение)
интерактивный вызов (+ evil / easymotion nil nil)
команда-выполнить (+ зло / легкое движение)

Системная информация

  • ОС: darwin (x86_64-apple-darwin14.5.0)
  • Оболочка: / bin / zsh
  • Emacs: 26.2 (12 апреля 2019 г.)
  • Doom: 2.0.9 (ГОЛОВА -> разработка, _обновление / разработка f754d4ff 2019-07-23 18:23:17 +0200)
  • Графический дисплей: t (демон: ноль)
  • Системные функции: УВЕДОМЛЕНИЕ ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS МОДУЛИ НИТИ
  • Подробности:
    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

Самый полезный комментарий

Начиная с 27cabea, вы можете привязать +evil/easymotion где угодно. Я нашел способ обойти ранее упомянутые технические ограничения.

Все 3 Комментарий

Вы не можете привязать + evil / easymotion где-либо еще, кроме evil-motion-state-map , как это по умолчанию:

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

Он не был предназначен для привязки где-либо еще (и не может быть - ненадежно). Это уловка, позволяющая лениво загрузить evil-easymotion и затем привязать evilem-map к последовательности клавиш, которая ее запустила, без ущерба для интеграции ключей и без необходимости дублировать встроенные привязки клавиш на evilem-map. Не существует надежного механизма для определения, с помощью какой раскладки клавиатуры была вызвана команда, поэтому нет простого решения этой проблемы. Поскольку изначально это были «расширенные» клавиши перемещения, это казалось приемлемым компромиссом.

В несвязанной заметке вы должны использовать :leader вместо :map doom-leader-map . Они эквивалентны.

Я предполагаю, что проблема решена в достаточной степени, но пометьте ее как wontfix поскольку основная проблема не может быть решена. Спасибо, что обратили на это мое внимание!

Начиная с 27cabea, вы можете привязать +evil/easymotion где угодно. Я нашел способ обойти ранее упомянутые технические ограничения.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги