Могу ли я связать некоторую макро-постобработку с аббревиатурой Emacs?
Я пытаюсь создать "умные" сокращения, которые расширяются до некоторого текста, а затем перемещают курсор. Например, в режиме C я бы хотел INC
расширить до #include <>
с курсором между знаками <>. Или в режиме HTML: BF
расширен до <b></b>
с курсором в нужном месте.
Каков разумный способ добиться этого (если не считать определения функций для всего этого и привязки их к ключу, чего я не хочу делать, потому что я предпочел бы сокращения)?
3 ответа
Я бы искренне рекомендовал Ясниппец. Кажется, он создан для того, чтобы делать именно то, что вы хотите.
Вы также можете установить его через Elpa.
Определить аббревиатуру. чем
Mx edit-abbrevs RET
Четвертый слот получает функцию. Например напишите:
(lambda nil (forward-char -1))
чтобы двигаться назад на один символ после расширения.
Я думаю, что вы ищете это:
hippie-expand - это интерактивная скомпилированная функция Lisp в `hippie-exp.el '. Это связано с М-паузой. (хиппи-расширить арг)
Попробуйте развернуть текст до точки, используя несколько методов. Функции расширения в
hippie-expand-try-functions-list' are tried in order, until a possible expansion is found. Repeated application of
hippie-expand 'вставляет последовательно возможные расширения. С положительным числовым аргументом непосредственно переходит к следующей функции arg в этом списке. С отрицательным аргументом или просто Cu отменяет расширение.[Назад]
Это связано с M-паузой в моей системе, возможно, еще не в вашей.