这个包有点超乎我的想像

有人用过没,看动画好像流畅度还有点欠 https://github.com/misohena/el-easydraw

6 个赞

我没有安装,按照我图形编程经验看这个包的原理是:

  1. 在Emacs捕获鼠标事件的坐标
  2. 根据事件状态生成新的SVG
  3. 最新的SVG实时刷新到Emacs

这三个循环给用户嵌入图形控件的错觉,这种方案有以下缺陷:

  1. 性能问题:图形库是在内存中保存状态更新一部分图形区域,这种方法每次都更新一个完整的SVG内容,Emacs渲染代码没有足够的性能,就会导致每次Emacs都重绘制所有区域,即使用户只操作了某一块区域
  2. 多线程问题:如果绘制背后是一个复杂的算法,比如三维建模这种,如果这个方案的代码是在Emacs进程中一定会遇到卡死的问题,如果在外部进程,就取决于传回的数据Emacs的图形处理性能,Emacs处理不过来也会卡
  3. 复杂界面:Emacs混合文字和图片的布局能力有限,无法弄复杂的界面

这个项目最大的优点是,生成的SVG嵌入Emacs Buffer后,可以和现有模式(比如 org-mode) 进行混合滚动。

3 个赞

老大一说就清楚了,性能是硬伤呀

在 Windows 上安装尝试了一下,有一点点延迟,但是能用。 有画图需求的,可以尝试一下。

README 里面最后的 color picker 看起来不错,而且这个对性能要求应该也不高。

感谢分享,日本的emacs高手确实厉害,当我发现在org-mode的链接里面可以做一些交互界面相关的事情时,只能在org-mode中实现一个 内容管理系统cms ,但没有想到在org-mode的链接里还能实现类似html的canvas标签这样的功能,这个确实也超乎我的想像

有时候想了想,EAF类似的技术,其实可以实现buffer嵌入滚动

canvas能更新一条线,这个只能更新一个图片,还是有差距的。

跟pdf-tools差不多,没有怎么超乎我的想象。