Esistono librerie per i campi di input in Emacs?


10

Molte modalità Emacs usano (qualcosa di simile) moduli: l'interfaccia di personalizzazione è una di queste, la modalità Messaggio (leggi: la sua parte di intestazione) è un'altra; ce ne sono altri, purtroppo non sempre molto simili. Per "modulo" intendo qui un buffer con parti di sola lettura e luoghi designati per inserire il testo; può contenere o meno pulsanti (probabilmente dovrebbe essere accettato C-c C-ccome tasto di conferma / commit, indipendentemente dalla presenza di un pulsante OK ).

Sono particolarmente interessato al completamento automatico nei campi (e in particolare, abilitare i campi con elenchi di valori da un set designato, diciamo, separati da virgola). La mia domanda è: esiste una libreria Emacs che consente la creazione facile (per "facile", intendo non reinventare la ruota) di tali moduli, o dovrei codificare tutto da solo?

(Immagino che cosa devo fare in quest'ultimo caso sarebbe (1) impostare alcune parti del buffer di sola lettura, (2) preparare un modo maggiore speciale, in modo che ad esempio TABe S-TABpassare da "campi", e (3) forse usa qualcosa come Icicles o Helm per il completamento automatico.)


1
Modificato il tuo titolo per dire campi di input. Le forme hanno un significato molto speciale in elisp, il che potrebbe creare confusione.
Malabarba,

2
E sì, c'è una libreria di widget integrata. Ma non ne so nulla.
Malabarba,

@Malabarba: grazie, probabilmente è una formulazione migliore.
mbork,

(Anche se Emacs stesso usa la parola "forma" in questo senso - vedi il manuale dei widget menzionato nella risposta di Drew!)
mbork,

Risposte:


8

Vedi le librerie cus-edit.ele wid-edit.el(e le loro librerie di livello superiore custom.ele widget.el, e le librerie dei componenti associati), che sono incluse con GNU Emacs. Il primo si avvale del secondo. Quest'ultimo definisce le cose di base (e non così elementari) di entrata in forma, chiamate " widget ", in una gerarchia. È possibile utilizzare questi widget e funzioni predefiniti nella libreria per creare widget e tipi di widget personalizzati.

Tuttavia, tieni presente che il codice di queste librerie, in particolare quello di wid-edit.el, non è molto facile da seguire. La soluzione migliore è iniziare riutilizzando i widget esistenti o usando il codice di definizione dei widget esistente come guida.

(Due librerie di estensione minori per questo sono cus-edit+.ele wid-edit+.el. Presentano anche alcuni esempi di utilizzo.)

Esiste un manuale informativo per i widget, distribuito con GNU Emacs, intitolato " The Emacs Widget Library ".

C'è anche una libreria forms.el, inclusa in GNU Emacs, ma non ne ho familiarità. Forse qualcun altro ha qualcosa di utile da dire al riguardo. Esiste un manuale per i moduli, distribuito con GNU Emacs, intitolato " Modalità moduli ".


2
Un po 'più su forms.el: stackoverflow.com/questions/10166600/...
PHILS

1
@Drew: grazie per la tua risposta! Potresti chiarire un po ' la relazione tra \(custom\|widget\).ele \(cus\|wid\)-edit.el? Trovo particolarmente questa parte dai Widget incomprensibile manuale: (require 'widget) (eval-when-compile (require 'wid-edit)).
mbork,

1
Innanzitutto, non sono esperto in questo. Le volte in cui avevo bisogno di cambiare qualcosa di Personalizza ho immerso cus-edit.ele wid-edit.el. Gli altri file che menzioni sono file di livello superiore; i *-edit.elfile hanno il codice che mi interessava. Non so molto di più; scusa. La vera difficoltà è il codice stesso, che utilizza un particolare stile semi-OOP che non si presta bene né all'autocertificazione di Emacs (per dirla in parole povere) né al debugger di Emacs. Puoi indagare da solo o forse provare a contattare l'autore (buona fortuna con quello!). Forse altri qui saranno di aiuto.
Disegnò il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.