2014-11-06 1 views
0

Я пытаюсь создать «умные» аббревиатуры, которые расширяются до некоторого текста, а затем перемещают курсор. Например, в режиме C я хотел бы INC развернуть до #include <> с помощью указателя между знаками <. Или, в режиме HTML: BF расширен до <b></b> с курсором в нужном месте.Можно ли связать макро-постобработку с аббревиатурой Emacs?

Что такое умный способ обойти это (не считая определения функций для всего этого и связывания их с ключом, который я не хочу делать, потому что я предпочел бы сокращения)?

+2

Попробуйте https://github.com/capitaomorte/yasnippet –

ответ

0

Я думаю, что вы ищете это:

хиппи-расширения представляет собой интерактивный скомпилирован Lisp функция `хиппи-exp.el. Он связан с M-паузой. (hippie-expand arg)

Попробуйте развернуть текст перед точкой, используя несколько методов. Расширение функции в hippie-expand-try-functions-list' are tried in order, until a possible expansion is found. Repeated application of hippie-expand 'вставляет последовательно возможные расширения. С положительным числовым аргументом, прыгает непосредственно в следующую функцию arg в этот список. С отрицательным аргументом или просто C-u отменяет расширение .

[назад]

Он связан с M-паузы в моей системе, вероятно, не на твоей еще.

0

Определить аббревиатуру. Чем

М-х Edit-RET сокращений

Четвертый слот получает функцию. Например, напишите:

(lambda nil (forward-char -1)) 

, чтобы переместить назад один символ после расширения.

2

Я бы сердечно порекомендовал Yasnippets. Кажется, он предназначен для того, чтобы делать именно то, что вы хотите.

Вы можете установить его через Elpa, а также.

+0

Yasnippet определенно является моим фаворитом. Благодаря! –