Emacs中是否有用于输入字段的库?


10

有几种Emacs模式使用(类似)形式:自定义界面是其中的一种,消息模式(阅读:其标题部分)是另一种形式;有更多的人,不幸的是并不总是很相似。我所说的“表格”是指一个缓冲区,其中包含只读部分和指定用于输入文本的位置。它可能包含也可能不包含按钮(它可能应该接受C-c C-c为确认/提交键,而不管是否存在OK按钮)。

我对字段中的自动完成特别感兴趣(尤其是使字段具有某些指定集合(例如,逗号分隔)的值的列表)。我的问题是:是否有任何Emacs库可以轻松(通过“ easy”,我的意思是不重新发明轮子)来创建这种形式,还是我自己编写所有代码?

(我想,我应该在后一种情况下做的是(1)设置缓冲区的某些部分只读,(2)准备一个特殊的主要模式,使得例如TABS-TAB开关“场”之间,以及(3)可能使用Icicles或Helm等自动补全功能。)


1
将标题更改为说输入字段。形式在elisp中具有非常特殊的含义,这可能导致混乱。
马拉巴巴2014年

2
是的,有一个内置的小部件库。但是我对此一无所知。
马拉巴巴

@Malabarba:谢谢,这可能是一个更好的措辞。
mbork

(即使Emacs本身在这个含义中使用了“形式”一词-参见Drew的回答中提到的小部件手册!)
mbork

Answers:


8

请参阅GNU Emacs附带的库cus-edit.elwid-edit.el(以及它们的顶级库custom.elwidget.el以及相关的组件库)。前者利用后者。后者在层次结构中定义了基本的(但不是很基本的)表单输入事件,称为“ 小部件 ”。您可以在库中使用这些预定义的窗口小部件和函数来创建自己的窗口小部件和窗口小部件类型。

不过,需要提醒的是,这些库的代码,特别是的wid-edit.el,是不是很容易跟随。最好的选择是从重用现有的小部件或使用现有的小部件定义代码作为指南开始。

(两个次要扩展库是cus-edit+.elwid-edit+.el。它们还提供了一些用法示例。)

随GNU Emacs一起发布了有关小部件的信息手册,标题为“ The Emacs Widget Library ”。

还有forms.elGNU Emacs附带的库,但我对此并不熟悉。也许其他人有话要说。有一个与GNU Emacs一起分发的表单手册,标题为“ Forms Mode ”。



1
@德鲁:谢谢你的回答!你能否澄清之间的关系\(custom\|widget\).el\(cus\|wid\)-edit.el一个位?我觉得尤其是这部分从窗口小部件手动难以理解:(require 'widget) (eval-when-compile (require 'wid-edit))
mbork 2014年

1
首先,我不是这个专家。我需要修改自定义项的时候,我曾涉足于cus-edit.elwid-edit.el。您提到的其他文件是顶级文件。这些*-edit.el文件包含了我感兴趣的代码。抱歉。真正的困难是代码本身,它使用一种特殊的半OOP风格,无法很好地适合Emacs自我文档(稍微说些)或Emacs调试器。您可以自己进行调查,或者尝试与作者联系(祝您好运!)。也许其他人会有所帮助。
2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.