Чи є в Emacs бібліотеки для полів введення?


10

Досить декілька режимів Emacs використовують (щось на зразок) форми: інтерфейс налаштування є одним із них, режим Повідомлення (читайте: його заголовна частина) - інший; їх більше, на жаль, не завжди дуже схожі. Під "формою" я маю на увазі тут буфер з частинами лише для читання та місцями, призначеними для введення тексту; він може містити або не містити кнопок (він, ймовірно, повинен приймати C-c C-cяк ключ підтвердження / вчинення, незалежно від наявності кнопки ОК ).

Мене особливо цікавить автоматичне заповнення в полях (і, зокрема, включення полів зі списками значень із визначеного набору, скажімо, розділених комами). Моє запитання: чи існує якась бібліотека Emacs, що дозволяє легко (під «легким», я маю на увазі не винаходити колесо) створення таких форм, або я повинен сам кодувати все?

(Я вважаю , що то , що я повинен робити в останньому випадку буде (1) встановити деякі частини буфера тільки для читання, (2) підготувати спеціальний основний режим, так що , наприклад , TABі S-TABперемикатися між «полів», і (3) можливо, використовуйте щось на зразок Icicles або Helm для автозавершення.)


1
Змінено назву, щоб сказати поля введення. Форми мають дуже особливе значення в еліпсі, що може призвести до плутанини.
Малабарба

2
І так, є вбудована бібліотека віджетів. Але я нічого про це не знаю.
Малабарба

@Malabarba: дякую, це, мабуть, краще формулювання.
mbork

(Навіть хоча сам Emacs використовує слово "форма" в цьому значенні - див. Посібник із віджетами, згаданий у відповіді Дрю!)
mbork

Відповіді:


8

Перегляньте бібліотеки 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, під назвою " Режим форм ".


2
Трохи більше forms.el: stackoverflow.com/questions/10166600 / ...
Филс

1
@Drew: дякую за вашу відповідь! Не могли б ви уточнити співвідношення між \(custom\|widget\).elта \(cus\|wid\)-edit.elтрохи? Я вважаю , особливо ця частина від віджетів вручну незбагненно: (require 'widget) (eval-when-compile (require 'wid-edit)).
mbork

1
По-перше, я не фахівець з цього питання. Часи, коли мені потрібно було змінити щось wrt Налаштувати, я занурився в cus-edit.elта wid-edit.el. Інші файли, які ви згадуєте, - це файли вищого рівня; у *-edit.elфайлах є код, який мене зацікавив. Данно набагато більше, ніж це; вибачте. Справжня складність полягає в самому коді, який використовує певний напів-OOP-стиль, який не піддається ні самодокументації Emacs (м'яко кажучи), ні налагоджувачу Emacs. Ви можете розслідувати самостійно або, можливо, спробувати зв’язатися з автором (удачі з цим!). Можливо, інші тут допоможуть.
Дрю
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.