Произвольные символы для forward-word / backward-word в Emacs - PullRequest
3 голосов
/ 25 сентября 2011

Как добавить произвольный символ (например, дефис) к функциональности «вперед / назад», чтобы Emacs обрабатывал такие слова, как «k-вектор», как одно слово Тот же вопрос о двойном щелчке по слову.

Ответы [ 4 ]

5 голосов
/ 25 сентября 2011

Синтаксические таблицы определяют, какой символ считается составной частью слова. Вы можете прочитать об этом здесь .

1 голос
/ 20 ноября 2017

Понятие слова "Emacs" довольно фиксировано и не совсем соответствует тому, что вы хотите.Вы можете связываться с синтаксической таблицей, но это может нарушить функциональность основного режима.

AFAICT, что вам нужно, это обрабатывать то, что Emacs называет «символами», а не «словами».Например, используйте команды forward-symbol и backward-symbol.

Самый простой способ использовать эти другие команды - включить superword-mode.

.
0 голосов
/ 18 ноября 2017

Добавьте следующее к вашему .emacs файлу, чтобы включить дефис в слова для каждого основного режима:

(add-hook 'after-change-major-mode-hook
  (lambda ()
    (modify-syntax-entry ?- "w")))
0 голосов
/ 25 сентября 2011

Вы можете использовать этот код, использовать регулярное выражение, использовать пробел или родителей в качестве разделителя слов

(defun backward-word-with-dash ()
  (interactive)
  (search-backward-regexp "[ ()][A-Za-z\-]+ *")
  (forward-char))

(defun forward-word-with-dash ()
  (interactive)
  (search-forward-regexp " *[A-Za-z\-]+[ ()]")
  (backward-char))

(global-set-key "\M-b" 'backward-word-with-dash)
(global-set-key "\M-f" 'forward-word-with-dash)

, если вы хотите, чтобы другие символы просто добавили его в регулярное выражение

...