我想让Emacs光标在实际文本之外自由移动(类似于Vim中的virtualedit = all)。
“哦,”我想,“我会跟踪一个虚拟光标并自己将它画到屏幕上。”
但事实证明,实际的本地C绘图例程(例如draw_glyphs
)似乎会引用缓冲区内容来决定要绘制的内容(尽管我可能错了)。
我的下一个想法是对所有空间进行重叠,这样我就可以完全自由地放置东西。但是叠加层只会覆盖实际文本的范围,所以再一次,这似乎并不能满足我的需求。
这是否是一个合理的目标而不会破坏C代码?
答案 0 :(得分:3)
我认为窗口的可写区域本质上仅限于与其关联的缓冲区,即您必须在存在缓冲区内容的区域中绘制。
(这个限制的一个例子是不可能在第80列中绘制垂直引导线以帮助用户识别长线;目前这种功能的最佳可能实现是突出每个的“溢出” - 长线。)
答案 1 :(得分:2)
您可以执行与artist-mode
相同的操作,而无需向缓冲区添加空格:
当尝试将光标放在行尾之后,只需使用具有after-string
属性的叠加层,该属性会在显示中添加空格,而无需修改缓冲区。
答案 2 :(得分:1)
查看“艺术家模式”( M-x artist-mode RET ) - 它允许您在Emacs中绘图。
从功能文档:“艺术家可让您使用鼠标和/或键盘绘制线条,正方形,矩形和多边形线,椭圆和圆形。”
答案 3 :(得分:0)
您可以从自动完成包中查看popup.el,它可以在任何位置弹出工具提示和菜单等,包括缓冲区内容之外的位置。也许这会告诉你如何做到这一点。