Nicht wenige Emacs-Modi verwenden (so etwas wie) Formulare: Die Anpassungsoberfläche ist eine davon, der Nachrichtenmodus (sprich: sein Header-Teil) ist eine andere; es gibt mehr von ihnen, leider nicht immer sehr ähnlich. Mit "Formular" meine ich hier einen Puffer mit schreibgeschützten Teilen und Stellen, die zur Eingabe von Text bestimmt sind. Es kann Schaltflächen enthalten oder nicht (es sollte wahrscheinlich C-c C-c
als Bestätigungs- / Festschreibungsschlüssel akzeptiert werden , unabhängig davon, ob eine OK- Schaltfläche vorhanden ist).
Ich bin besonders an der automatischen Vervollständigung in den Feldern interessiert (und insbesondere an der Aktivierung von Feldern mit Wertelisten aus einer bestimmten Menge, z. B. durch Kommas getrennt). Meine Frage ist: Gibt es eine Emacs-Bibliothek, die die einfache Erstellung solcher Formulare ermöglicht (mit "einfach" meine ich, das Rad nicht neu zu erfinden), oder sollte ich alles selbst codieren?
(Ich stelle mir vor, dass ich im letzteren Fall (1) einige Teile des Puffers schreibgeschützt einstellen würde, (2) einen speziellen Hauptmodus vorbereiten würde, so dass zB TAB
und S-TAB
zwischen "Feldern" wechseln und (3) Verwenden Sie möglicherweise etwas wie Eiszapfen oder Helm für die automatische Vervollständigung.)
Antworten:
Siehe Bibliotheken
cus-edit.el
undwid-edit.el
(und ihre Bibliotheken der obersten Ebenecustom.el
undwidget.el
und zugehörige Komponentenbibliotheken), die in GNU Emacs enthalten sind. Ersteres nutzt Letzteres. Letzteres definiert grundlegende (und nicht so grundlegende) Formulareingabe-Dinge, die als " Widgets " bezeichnet werden, in einer Hierarchie. Mit diesen vordefinierten Widgets und Funktionen in der Bibliothek können Sie Ihre eigenen Widgets und Widgettypen erstellen.Seien Sie jedoch gewarnt, dass der Code dieser Bibliotheken, insbesondere der von
wid-edit.el
, nicht sehr einfach zu befolgen ist. Am besten verwenden Sie zunächst vorhandene Widgets wieder oder verwenden vorhandenen Widget-Definitionscode als Leitfaden.(Zwei kleinere Erweiterungsbibliotheken hierfür sind
cus-edit+.el
undwid-edit+.el
. Sie enthalten auch einige Verwendungsbeispiele.)Es gibt ein mit GNU Emacs vertriebenes Info-Handbuch für Widgets mit dem Titel " The Emacs Widget Library ".
Es gibt auch eine Bibliothek
forms.el
, die in GNU Emacs enthalten ist, aber ich bin nicht damit vertraut. Vielleicht hat jemand anderes etwas Nützliches dazu zu sagen. Es gibt ein Handbuch für Formulare mit dem Titel " Formularmodus " , das mit GNU Emacs vertrieben wird .quelle
\(custom\|widget\).el
und\(cus\|wid\)-edit.el
ein bisschen klären ? Ich finde vor allem diesen Teil aus dem Widgets-Handbuch unverständlich :(require 'widget) (eval-when-compile (require 'wid-edit))
.cus-edit.el
und einwid-edit.el
. Die anderen Dateien, die Sie erwähnen, sind Dateien der obersten Ebene. Die*-edit.el
Dateien haben den Code, an dem ich interessiert war. Keine Ahnung mehr als das; Es tut uns leid. Die eigentliche Schwierigkeit ist der Code selbst, der einen bestimmten Semi-OOP-Stil verwendet, der sich weder für die Emacs-Selbstdokumentation (gelinde gesagt) noch für den Emacs-Debugger eignet. Sie können selbst nachforschen oder versuchen, den Autor zu kontaktieren (viel Glück damit!). Vielleicht helfen andere hier.