Могу ли я связать некоторую макро-постобработку с аббревиатурой 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-паузой в моей системе, возможно, еще не в вашей.

Другие вопросы по тегам