Existem bibliotecas para campos de entrada no Emacs?

10

Muitos modos do Emacs usam formas (algo como): a interface de personalização é uma delas, o modo de mensagem (leia-se: parte do cabeçalho) é outra; existem mais deles, infelizmente nem sempre são muito parecidos. Por "formulário", quero dizer aqui um buffer com partes somente leitura e locais designados para inserir texto; pode ou não conter botões (provavelmente deve aceitar C-c C-ccomo a chave de confirmação / confirmação, independentemente da presença de um botão OK ).

Estou particularmente interessado no preenchimento automático nos campos (e, em particular, em ativar campos com listas de valores de algum conjunto designado, por exemplo, separado por vírgula). Minha pergunta é: existe alguma biblioteca do Emacs que permita a criação fácil (por "fácil", quero dizer, de não reinventar a roda) de tais formas, ou devo codificar tudo sozinha?

(Eu imagino que o que devo fazer neste último caso seria (1) definir algumas partes do buffer de somente leitura, (2) preparar um modo maior especial, de modo que, por exemplo TABe S-TABalternar entre "campos", e (3) talvez use algo como Sincelos ou Helm para preenchimento automático.)

mbork
fonte
11
O título foi alterado para dizer campos de entrada. As formas têm um significado muito especial no elisp, o que pode levar à confusão.
Malabarba 27/10/2014
2
E sim, há uma biblioteca de widgets embutida. Mas eu não sei nada sobre isso.
Malabarba 27/10
@ Malabarba: obrigado, essa é provavelmente uma redação melhor.
mbork
(Mesmo que em si Emacs usa a palavra "forma" neste sentido - ver os widgets manual do mencionado na resposta de Drew!)
mbork

Respostas:

8

Veja bibliotecas cus-edit.ele wid-edit.el(e suas bibliotecas de nível superior custom.ele widget.el, e bibliotecas de componentes associadas), incluídas no GNU Emacs. O primeiro faz uso do último. O último define coisas básicas (e não tão básicas) de entrada de formulário, chamadas " widgets ", em uma hierarquia. Você pode usar esses widgets e funções predefinidos na biblioteca para criar seus próprios widgets e tipos de widget.

No entanto, esteja ciente de que o código dessas bibliotecas, particularmente o de wid-edit.el, não é muito fácil de seguir. Sua melhor aposta é começar reutilizando os widgets existentes ou usando o código de definição de widget existente como guia.

(Duas bibliotecas de extensão menores para isso são cus-edit+.ele wid-edit+.el. Eles também apresentam alguns exemplos de uso.)

Existe um manual de informações para widgets, distribuído com o GNU Emacs, intitulado " The Emacs Widget Library ".

Há também uma biblioteca forms.el, incluída no GNU Emacs, mas não estou familiarizada com isso. Talvez alguém tenha algo útil a dizer sobre isso. Existe um manual para formulários, distribuído com o GNU Emacs, intitulado " Modo de formulários ".

Desenhou
fonte
2
Um pouco mais sobre forms.el: stackoverflow.com/questions/10166600/…
phils
11
@ Drew: obrigado pela sua resposta! Você poderia esclarecer a relação entre \(custom\|widget\).ele \(cus\|wid\)-edit.elum pouco? Eu acho especialmente esta parte dos Widgets incompreensível manual: (require 'widget) (eval-when-compile (require 'wid-edit)).
mbork
11
Primeiro, não sou especialista nisso. As vezes em que eu precisava mudar algo personalizado, mergulhei cus-edit.ele wid-edit.el. Os outros arquivos mencionados são de nível superior; os *-edit.elarquivos têm o código que eu estava interessado. Não sei muito mais do que isso; desculpa. A dificuldade real é o próprio código, que usa um estilo semi-OOP específico que não se presta bem à autodocumentação do Emacs (para dizer o mínimo) ou ao depurador do Emacs. Você pode investigar por conta própria ou tentar entrar em contato com o autor (boa sorte com isso!). Talvez outros aqui ajudem.
Drew