Подтвердить что ты не робот

Каков наилучший способ создания кода для Emacs?

В частности, что представляет собой лучший пакет отпечатков?

Особенности:

  • легко определить новые фрагменты (обычный текст, пользовательский ввод с настройками по умолчанию)
  • простая навигация между предопределенными позициями в фрагменте
  • множественная вставка одного и того же пользовательского ввода
  • принимает выбранный текст в качестве пользовательского ввода
  • кросс-платформенный (Windows, Linux)
  • динамически оцениваемые выражения (встроенный код), написанные на сжатом языке программирования (предпочтительны Perl, Python, Ruby).
  • красиво сосуществует с другими пакетами в Emacs

Пример шаблона кода, простой цикл for в C:

for (int i = 0; i < %N%; ++i) {
  _
}

Очень много типизации для такого общего кода. Я хочу вызвать шаблон кода или фрагмент, который вставляет этот шаблонный код для меня. Кроме того, он останавливается (на TAB или другой клавише) на %N% (мой вход заменяет его), а конечная позиция курсора _.

4b9b3361

Ответ 1

фрагменты TextMate являются самым близким соответствием, но это не кросс-платформенное решение, а не для Emacs.

Вторая ближайшая вещь: yasnippet (screencast показывает основные возможности). Но он вмешивается в пакет hippie-expand в моей настройке, а встроенный язык - это EmacsLisp, который мне не удобно с внешним .emacs.

РЕДАКТИРОВАТЬ. Отправленный мой ответ здесь, чтобы разрешить голосование yasnippet.

Ответ 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 также является мощным механизмом шаблонов. Но он использует уродливую схему имен файлов (имя вашего файла === имя шаблона), потому что вы не можете поместить несколько шаблонов в один файл и иметь проблемы с национальными наборами символов...