1,Emacs的Status Bar在众多编辑器中别具一格,甚至在Terminal里也能显示,很想知道Emacs是怎么实现这个mode-line的?
2,Emacs的GUI既既提供了Windows或者Mac的图形界面,也提供了Terminal的命令行界面,用的什么GUI库?这些GUI库是跨平台的吗?GUI和Terminal里的实现一样吗?
3,Emacs的内核是elisp,我们能把Emacs的内核提取出来吗?通过docer,web,electron,QT等环境进行二次包装,形成新的GUI发行版吗?
hek14
2
对你提的第3个问题同样感兴趣,希望大神解答。隔壁neovim已经把内核和前端分开了,所以那边有oni这样的项目,期待emacs能有对等的
曾经在 hacker news 看到一篇文章,可以看看了解一下
Buttery Smooth Emacs 。
我找到一个Ymacs的在线类emacs实现,但应该不是emacs内核,而是自己实现了类Emacs的操作模式和命令,
刚刚在gitter上得到了部分解答。
Emacs将gui事件绑定到快捷键上,因此无论是在gui下,还是在terminal下,Emacs都可以相同的方式工作。
cireu
6
GUI以前Windows,X11,MacOS有分开的实现,现在应该已经统一换成Cairo了,Terminal的实现就是ncurses呗。
建议你上个图指出来,官方里没有叫status bar的东西,你是不是在说mode-line?
代价是性能有损失
Cairo应该只是2D的适量图形库吧,用来绘图的,应该有其他的gui组件库。
cireu
9
所以你觉得emacs里有什么好画的呢?看起来Emacs要显示图片,文字样式,button等widget这些花里胡哨的功能,实际上这些都是Emacs自绘的,以前用的是宿主提供的绘图API,现在换成了cairo而已。
是在说menu bar吧,“File Edit Options”那一堆东西,估计一般人的配置文件没有不把它藏起来的,所以就不太记得了。。
没多少需求,但是有套上yet another UI的可能还是好的,比如在Emacs里鼠标滚动卡顿这种小问题可以得到解决。
翻上面的帖子发现onivim2将会支持直接使用所有VSCode插件:
Onivim 2 leverages the VSCode Extension Host process in its entirety - meaning, eventually, complete support for VSCode extensions and configuration.