我有一个简单的小部件设置:
(setq gobgen-widget-name
(widget-create 'editable-field
:size 25
:format "Name: %v"
:notify (lambda (widget &rest ignore)
(widget-value-set gobgen-widget-prefix (get-gobject-prefix (widget-value widget))))
"g_example_object"))
(widget-insert " ")
(setq gobgen-widget-prefix
(widget-create 'editable-field
:size 10
:format "Prefix: %vn"
"g"))
我想用 get-gobject-prefix
的返回值实时更新第二个小部件。
但是,每当我在Name
小部件中输入字符时,point都会自动跳转到Prefix
字段的最后一个字符,并在那里插入我的字符。
有没有办法实现我想要实现的目标?
注意:我使用的是 Emacs 24.3.1。
注2:移至 Emacs 站点
尽管迁移到了Emacs站点,我也在这里发布了我的解决方案。
事实证明,这比我预期的要容易:使用save-excursion
节省了一天(和我的点位置(。
(lambda (widget &rest ignore)
(save-excursion
(widget-value-set gobgen-widget-prefix (get-gobject-prefix (widget-value widget)))))
不过,并不完全完美,因为它改变了Prefix
小部件的宽度。