Предотвратить раскрытие сокращения после определенных символов в Emacs

Есть ли способ предотвратить автоматическое расширение аббревиатуры во встроенном abbrev-mode после определенных символов? Например. Я хочу, чтобы мое сокращение расширялось после пробела, новой строки, запятой и т. д., но не после тире или подчеркивания.

Я знаю, что могу нажать C-q перед вводом (скажем) символа подчеркивания, но автоматическое решение было бы намного лучше, так как это происходит со мной очень часто.

В руководстве есть несколько аббревиатур, но, поскольку я новичок в Elisp, я не вижу очевидного решения...

Большое спасибо!


person user673592    schedule 09.08.2011    source источник
comment
Встроенный сокращенный режим (т.е. статические)   -  person user673592    schedule 09.08.2011


Ответы (2)



Итак, намек на решение уже был в самом вопросе. Это то, что работает для меня:

(defun protect-underscore ()
 (interactive)
 (insert "_"))

(defun protect-dash ()
 (interactive)
 (insert "-"))

(defun protect-equal ()
 (interactive)
 (insert "="))

(global-set-key (kbd "_") 'protect-underscore)
(global-set-key (kbd "-") 'protect-dash)
(global-set-key (kbd "=") 'protect-equal)

Я уверен, что должно быть более элегантное решение... спасибо Магнару.

person user673592    schedule 17.08.2011