Шаблонизатор для Emacs?

Я видел разные механизмы шаблонов для Emacs (включая yasnippet), но мне нужен другой зверь. Большинство движков шаблонов помогают вам во время написания. Мне нужен скорее «генератор текста», чем заставка для набора текста. Я собираюсь попытаться реализовать это, но просто задайте вопрос, чтобы узнать, можете ли вы дать мне подсказки по реализации пакетов emacs, которые делают что-то подобное.

Подводя итог, я хочу включить код emacs-lisp в строку в документе (в комментариях на заданном языке или в текстовом формате), чтобы генерировать текст в маркерах и обновлять его с помощью любой комбинации клавиш. Например, предположим, что я хочу сгенерировать некоторый код LaTeX, который будет несколько длинным и повторяющимся, но который я могу параметризовать некоторыми переменными:

... rest of the normal text...
# (deftemplate my-repetitive-latex-code (parameter)
#   ("blah blah" parameter "more blah blah")
# 
# (defvar *latex-code-parameters* '("abc" "def"))
# 
# (apply-template #'my-repetitive-latex-code *latex-code-paramters*)
#
# START GENERATED TEXT
# END GENERATED TEXT
... rest of the normal text...

Идея состоит в том, что, когда я «оцениваю» закомментированный код emacs-lisp, система будет искать следующий тег START GENERATED TEXT и вставлять результат оценки выбранного кода (а именно, включать текст с параметрами abc , а затем def ), что-то вроде:

# START GENERATED TEXT
blah blah abc more blah blah
blah blah def more blah blah
# END GENERATED TEXT

Или, что еще лучше, какой-нибудь шаблонизатор, похожий на Perl Text :: Template , который может различать биты, написанные на Perl (с помощью маркеров), и подставлять результаты в строку , но,в этом случае, конечно, используя emacs-lisp в качестве языка программирования. (Например, я использовал этот Perl Text :: Template для генерации графики PGF / TikZ моей докторской степени, и это была действительно хорошая комбинация, но мне пришлось использовать внешнюю программу (Perl) для фильтрации файлов перед загрузкой в LaTeX.)

7
задан Diego Sevilla 27 July 2011 в 23:54
поделиться