Каков наилучший способ создания кода для Emacs?
В частности, что представляет собой лучший пакет отпечатков?
Особенности:
- легко определить новые фрагменты (обычный текст, пользовательский ввод с настройками по умолчанию)
- простая навигация между предопределенными позициями в фрагменте
- множественная вставка одного и того же пользовательского ввода
- принимает выбранный текст в качестве пользовательского ввода
- кросс-платформенный (Windows, Linux)
- динамически оцениваемые выражения (встроенный код), написанные на сжатом языке программирования (предпочтительны Perl, Python, Ruby).
- красиво сосуществует с другими пакетами в Emacs
Пример шаблона кода, простой цикл for
в C:
for (int i = 0; i < %N%; ++i) {
_
}
Очень много типизации для такого общего кода. Я хочу вызвать шаблон кода или фрагмент, который вставляет
этот шаблонный код для меня. Кроме того, он останавливается (на TAB или другой клавише) на %N%
(мой вход заменяет его), а конечная позиция курсора _
.
Ответы
Ответ 1
фрагменты TextMate являются самым близким соответствием, но это не кросс-платформенное решение, а не для Emacs.
Вторая ближайшая вещь: yasnippet (screencast показывает основные возможности). Но он вмешивается в пакет hippie-expand
в моей настройке, а встроенный язык - это EmacsLisp, который мне не удобно с внешним .emacs
.
РЕДАКТИРОВАТЬ. Отправленный мой ответ здесь, чтобы разрешить голосование yasnippet
.
Ответ 2
Лично я использовал Dmacro в течение многих лет (ftp://ftp.sgi.com/other/dmacro/dmacro.tar.gz).
Вот обзор, в котором также упоминаются некоторые альтернативы: http://linuxgazette.net/issue39/marsden.html
Ответ 3
В EmacsWiki есть страница страниц шаблонов.
Из них я использовал tempo в (удаленном) прошлом, чтобы добавить поддержку таблиц в html-helper-mode, но не знаю, как он прогрессировал за последние 15 лет.
Ответ 4
Я бы добавил свой голос за фрагменты темпа... легко настроить, мощный (вы можете запускать произвольный elisp в своем шаблоне - так что вы можете перемещать вещи, искать имена файлов и классы, подсчитывать и т.д.), устанавливать отступ, интегрировать с аббревиатурами... Я использую его много;)
Ответ 5
Я голосую за http://cedet.sourceforge.net/srecode.shtml
Он имеет очень чистый синтаксис и имеет доступ к среде кода через Semantic
.
Также он является частью большого поддерживаемого дистрибутива CEDET
(который был встроен в ряд версий Emacs для 24.x).
UPDATE https://github.com/capitaomorte/yasnippet также является мощным механизмом шаблонов. Но он использует уродливую схему имен файлов (имя вашего файла === имя шаблона), потому что вы не можете поместить несколько шаблонов в один файл и иметь проблемы с национальными наборами символов...