Emacs, вперед и назад в угловых скобках React - PullRequest
0 голосов
/ 11 июля 2019

Предположим, у вас есть

<Foo>
  <Bar>
    hello
  </Bar>
</Foo>

Когда я нахожусь на отметке <Foo>, я хочу перейти к </Foo> и наоборот.

Простой запрос, но мне было трудно его выполнить.

forward-sexp (не уверен, откуда он) переадресация работает нормально, но обратная переадресация плохо работает с backward-sexp

1 Ответ

0 голосов
/ 13 июля 2019

C-c C-f (привязано к sgml-skip-tag-forward) и C-c C-b (привязано к sgml-skip-tag-backward), кажется, нормально работает в mhtml-mode. Вы, вероятно, находитесь в js3-mode, когда редактируете код React.js, поэтому вы можете либо переключиться на mhtml-mode (что может быть нежелательно), либо привязать приведенные выше команды к удобным клавишам в js3-mode раскладке клавиатуры:

(define-key js3-mode-map (kbd "C-c C-c C-f") 'sgml-skip-tag-forward)
(define-key js3-mode-map (kbd "C-c C-c C-b") 'sgml-skip-tag-backward)

, поскольку C-c C-c является префиксом в js3-mode-map.

РЕДАКТИРОВАТЬ: ОП указал, что он использует rjsx-mode, а не js3-mode, что требует незначительных изменений в вышеуказанном. Основное отличие состоит в том, что нужно модифицировать rjsx-mode-map, а не js3-mode-map. Другое отличие состоит в том, что rjsx-mode-map не определяет C-c C-c в качестве префиксного ключа, поэтому либо привязки клавиш должны быть изменены на что-то другое, либо мы также делаем C-C C-c префиксным ключом на этой карте - вот один из способов сделать это последний:

(let ((foo (make-sparse-keymap)))
  (define-key rjsx-mode-map (kbd "C-c C-c") foo))

(define-key rjsx-mode-map (kbd "C-c C-c C-f") 'sgml-skip-tag-forward)
(define-key rjsx-mode-map (kbd "C-c C-c C-b") 'sgml-skip-tag-backward)

Если вы хотите сделать это постоянное изменение, то создайте функцию, которая выполняет эти три вещи, и добавьте ее в rjsx-mode-hook в вашем файле инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...