Czy są jakieś biblioteki dla pól wejściowych w Emacsie?

10

Całkiem kilka trybów Emacsa używa (coś w tym rodzaju): interfejs dostosowywania jest jednym z nich, tryb wiadomości (czytaj: część nagłówka) jest inny; jest ich więcej, niestety nie zawsze bardzo podobne. Przez „formularz” rozumiem tu bufor z częściami tylko do odczytu i miejscami przeznaczonymi do wprowadzania tekstu; może, ale nie musi zawierać przycisków (prawdopodobnie powinien przyjąć C-c C-cjako klawisz potwierdzenia / zatwierdzenia, niezależnie od obecności przycisku OK ).

Szczególnie interesuje mnie automatyczne uzupełnianie w polach (w szczególności włączanie pól z listami wartości z określonego zestawu, powiedzmy rozdzielonego przecinkami). Moje pytanie brzmi: czy jest jakakolwiek biblioteka Emacsa umożliwiająca łatwe (przez „łatwe”, to znaczy nie wynajdowanie koła) tworzenie takich formularzy, czy też powinienem wszystko kodować sam?

(Wyobrażam sobie, że to, co należy zrobić w takim przypadku byłoby (1) ustawić kilka części bufora tylko do odczytu (2) przygotowuje specjalny tryb główną, tak że np TABi S-TABprzełączać się między „pola”, oraz (3) może użyć czegoś takiego jak Sople lub Hełm do autouzupełniania).

Mbork
źródło
1
Zmieniono tytuł, by powiedzieć pola wprowadzania. Formy mają bardzo szczególne znaczenie w elisp, co może prowadzić do zamieszania.
Malabarba
2
I tak, jest wbudowana biblioteka widżetów. Ale nic o tym nie wiem.
Malabarba
@Malabarba: dzięki, to chyba lepsze sformułowanie.
mbork
(Chociaż sam Emacs używa w tym znaczeniu słowa „forma” - patrz podręcznik widżetów wspomniany w odpowiedzi Drew!)
mbork

Odpowiedzi:

8

Zobacz bibliotek cus-edit.eli wid-edit.el(i ich biblioteki najwyższym poziomie custom.eli widget.el, oraz związane z bibliotek komponentów), które są dołączone do GNU Emacs. Pierwsza wykorzystuje drugą. Ten ostatni definiuje w hierarchii podstawowe (i nie tak podstawowe) rzeczy do wprowadzania formularzy, zwane „ widżetami ”. Możesz użyć tych predefiniowanych widżetów i funkcji w bibliotece do tworzenia własnych widżetów i typów widżetów.

Ostrzegamy jednak, że kod tych bibliotek, zwłaszcza tych wid-edit.el, nie jest bardzo łatwy do naśladowania. Najlepszym rozwiązaniem jest ponowne użycie istniejących widżetów lub użycie istniejącego kodu definicji widgetów jako przewodnika.

(Dwie mniejsze biblioteki rozszerzeń do tego to cus-edit+.eli wid-edit+.el. Przedstawiają także przykłady użycia.)

Istnieje podręcznik informacyjny dla widżetów, rozpowszechniany z GNU Emacs, zatytułowany „ Biblioteka widżetów Emacs ”.

Istnieje także biblioteka forms.eldołączona do GNU Emacs, ale nie jestem z nią zaznajomiona. Być może ktoś inny ma coś na ten temat do powiedzenia. Istnieje podręcznik dla formularzy, rozpowszechniany z GNU Emacs, zatytułowany „ Tryb formularzy ”.

Rysował
źródło
2
Trochę więcej na forms.el: stackoverflow.com/questions/10166600/...
phils
1
@Drew: dziękuję za odpowiedź! Czy mógłby Pan wyjaśnić zależność pomiędzy \(custom\|widget\).eli \(cus\|wid\)-edit.eltrochę? Uważam, zwłaszcza tę część z widżetów ręcznego niezrozumiałe: (require 'widget) (eval-when-compile (require 'wid-edit)).
mbork
1
Po pierwsze, nie jestem ekspertem w tej dziedzinie. Czasy, w których potrzebowałem zmienić coś wrt Dostosuj, zanurzyłem się w cus-edit.eli wid-edit.el. Pozostałe wymienione pliki to pliki najwyższego poziomu; te *-edit.elpliki mają kod, który był zainteresowany Nie wiem o wiele więcej niż to.; Przepraszam. Prawdziwą trudnością jest sam kod, który korzysta ze szczególnego stylu semi-OOP, który nie nadaje się dobrze ani do auto-dokumentacji Emacsa (delikatnie mówiąc), ani do debuggera Emacsa. Możesz to zbadać samodzielnie lub spróbować skontaktować się z autorem (powodzenia!). Może inni tutaj będą potrzebować pomocy.
Drew