Многие режимы Emacs используют (что-то вроде) формы: интерфейс настройки является одним из них, режим сообщений (читай: его часть заголовка) является другим; их больше, к сожалению, не всегда очень похожих. Под «формой» я подразумеваю здесь буфер с частями только для чтения и местами, предназначенными для ввода текста; он может содержать или не содержать кнопки (его, вероятно, следует принять C-c C-c
в качестве ключа подтверждения / подтверждения, независимо от наличия кнопки OK ).
Меня особенно интересует автозаполнение полей (и, в частности, включение полей со списками значений из некоторого определенного набора, скажем, через запятую). Мой вопрос: есть ли какая-либо библиотека Emacs, позволяющая легко (под словом «легкий», я имею в виду не изобретать колесо) создание таких форм, или я должен сам все кодировать?
(Я полагаю , что то , что я должен делать в последнем случае будет (1) установить некоторые части буфера только для чтения, (2) подготовить специальный основной режим, так что , например , TAB
и S-TAB
переключаться между «полей», и (3) возможно используйте что-то вроде Сосульки или Хелма для автозаполнения.)
Ответы:
Смотрите библиотеки
cus-edit.el
иwid-edit.el
(и их библиотеки верхнего уровняcustom.el
иwidget.el
, и библиотеки связанных компонентов), которые включены в GNU Emacs. Первый использует второй. Последний определяет базовые (и не очень базовые) вещи в форме ввода, называемые « виджетами », в иерархии. Вы можете использовать эти предопределенные виджеты и функции в библиотеке для создания собственных виджетов и типов виджетов.Однако следует помнить, что код этих библиотек, особенно код
wid-edit.el
, не очень прост для подражания. Лучше всего начать с повторного использования существующих виджетов или использования существующего кода определения виджета в качестве руководства.(Две библиотеки расширения второстепенный для этого
cus-edit+.el
иwid-edit+.el
. Они также приведены некоторые примеры использования.)Существует справочное руководство для виджетов, распространяемое вместе с GNU Emacs, под названием « Библиотека виджетов Emacs ».
Есть также библиотека
forms.el
, включенная в GNU Emacs, но я не знаком с ней. Возможно, кому-то еще есть что сказать об этом. Существует руководство для форм, распространяемое с GNU Emacs, под названием « Режим форм ».источник
\(custom\|widget\).el
и\(cus\|wid\)-edit.el
немного? Я считаю , особенно эта часть от виджетов вручную непостижимо:(require 'widget) (eval-when-compile (require 'wid-edit))
.cus-edit.el
иwid-edit.el
. Другие файлы, которые вы упоминаете, являются файлами верхнего уровня; эти*-edit.el
файлы имеют код , который я был заинтересован в Незнайке гораздо больше , чем это. Извините. Настоящая трудность заключается в самом коде, который использует особый стиль полу-ООП, который не подходит ни для самодокументирования Emacs (мягко говоря), ни для отладчика Emacs. Вы можете провести расследование самостоятельно или, возможно, попытаться связаться с автором (удачи в этом!). Может быть, другие здесь помогут.