从今天开始,Emacs里面可以运行任何你想要的程序 (Linux & Windows & Mac & BSD)

一个问题:在windows 的wsl下运行linux emacs能打开windows程序吗? :sweat_smile:

Wrote /home/feng/.emacs.d/recentf [5 times]
if: Symbol’s function definition is void: eaf-epc-live-pError during redisplay: (eaf-monitor-window-size-change #<frame *Org Agenda* - GNU Emacs at debian 0x56128031c7b0>) signaled (void-function eaf-epc-live-p)
and: Symbol’s function definition is void: eaf-epc-live-pError during redisplay: (eaf-monitor-window-size-change #<frame *Org Agenda* - GNU Emacs at debian 0x56128031c7b0>) signaled (void-function eaf-epc-live-p)
and: Symbol’s function definition is void: eaf-epc-live-p
Mark set

没这么做过,但是可以打开windows程序吧,见 Emacs有哪些核弹级的功能与应用可以当作我们布道的弹药库? 这里的第二弹

看看emacs-application-framework/epc/在不在load-path,重启一下emacs

在 load-path, 我就是重启后测试的。

最新版EAF中,Vue.js 定义一个JS函数,比如叫 “myFunction”, 在 Elisp 端keymap用字符串 “js_my_function” 就可以了, EAF会自动从Elisp端调用JS函数,以前的 build_js_bridge_method 函数和模板代码都去掉了。

1 个赞

你怎么重现的?我刚才才测试过,没问题。

pdf浏览器又出问题了

Process *eaf* 已放弃
EAF process starting...
Session restored:  6673-277f-fd86-d0ce-2c52-ee66-1132 /home/feng/projects/emacs-packages/emacs-application-framework/app/pdf-viewer/buffer.py /home/feng/.emacs.d/eaf/session.json
Traceback (most recent call last):
  File "/home/feng/projects/emacs-packages/emacs-application-framework/app/pdf-viewer/buffer.py", line 782, in paintEvent
    qpixmap = self.get_page_pixmap(index, self.scale * hidpi_scale_factor, self.rotation)
  File "/home/feng/projects/emacs-packages/emacs-application-framework/app/pdf-viewer/buffer.py", line 704, in get_page_pixmap
    page = self.document[index]
  File "/home/feng/projects/emacs-packages/emacs-application-framework/app/pdf-viewer/buffer.py", line 255, in __getitem__
    page = PdfPage(self.document[index], self.document.is_pdf)
  File "/home/feng/projects/emacs-packages/emacs-application-framework/app/pdf-viewer/buffer.py", line 354, in __init__
    self._page_rawdict = self._init_page_rawdict()
  File "/home/feng/projects/emacs-packages/emacs-application-framework/app/pdf-viewer/buffer.py", line 362, in _init_page_rawdict
    if self.isPDFr:
  File "/home/feng/projects/emacs-packages/emacs-application-framework/app/pdf-viewer/buffer.py", line 359, in __getattr__
    return getattr(self.page, attr)
AttributeError: 'Page' object has no attribute 'isPDFr'

这个函数加上来之后感觉网易云音乐基本可以把 Python 端那些函数全部去掉了 :joy:

EAF已经具备 Elisp → Python → JavaScript 和 JavaScript → Python → Elisp 两条协作编程通道。

今天增加了两个接口 execute_js_functioneval_emacs_function 这两个接口分别实现 Elisp → JavaScript 和 JavaScript → Elisp 的直接调用。

到目前为止, EAF已经具备三种语言 (Elisp、Python、JavaScript)、两种图形引擎(Qt、WebEngine)、四种互调用通道的协作编程框架和体系。

Elisp专注于控制、Python专注于系统库调用和子线程并发、JavaScript专注于界面绘制。

方便开发者以自己喜欢的方式去扩展Emacs的图形功能。

15 个赞

GitHub - emacs-eaf/emacs-application-framework: EAF, an extensible framework that revolutionizes the graphical capabilities of Emacs 现在只保留 EAF 的最核心 core,所有应用都被分到不同的仓库了:

  1. GitHub - emacs-eaf/eaf-airshare: Share text between Emacs and your phone
  2. GitHub - emacs-eaf/eaf-browser: A modern, customizable and extensible browser in Emacs
  3. GitHub - emacs-eaf/eaf-camera: Camera in Emacs
  4. GitHub - emacs-eaf/eaf-demo: EAF app demo based on PyQt
  5. GitHub - emacs-eaf/eaf-file-browser: Browse computer files on your phone
  6. GitHub - emacs-eaf/eaf-file-manager: Fully multi-threaded replacement for dired-mode
  7. GitHub - emacs-eaf/eaf-file-sender: Share file between Emacs and mobile phone
  8. GitHub - emacs-eaf/eaf-image-viewer: Dynanmic image viewer
  9. GitHub - emacs-eaf/eaf-js-video-player: Please use EAF video-player instead
  10. GitHub - emacs-eaf/eaf-jupyter: Jupyter client
  11. GitHub - emacs-eaf/eaf-markdown-previewer: Real-time Markdown previewer
  12. GitHub - emacs-eaf/eaf-mindmap: Keyboard-driven Mindmap editor
  13. GitHub - emacs-eaf/eaf-music-player: Music player that supports playlist and audio visualization
  14. GitHub - emacs-eaf/eaf-netease-cloud-music: Play Netease Cloud Music from Emacs
  15. GitHub - emacs-eaf/eaf-org-previewer: Real-time Org-mode previewer
  16. GitHub - emacs-eaf/eaf-pdf-viewer: Fastest PDF Viewer in Emacs
  17. GitHub - emacs-eaf/eaf-system-monitor: Simple system monitor tool
  18. GitHub - emacs-eaf/eaf-terminal: Full-featured terminal in Emacs
  19. GitHub - emacs-eaf/eaf-video-player: Video Player in Emacs
  20. GitHub - emacs-eaf/eaf-vue-demo: EAF app demo base on Vue.js

意味这以后大家可以安装自己喜欢的EAF应用,不用安装所有应用以及相关依赖。

大家也可以参考上面的应用仓库,自己构建EAF应用,应用的代码可以放到自己的个人仓库中。

17 个赞

谢谢 manateelazycat !!

1 个赞

EAF已经彻底和应用分开了,所有的应用都可以在 Emacs Application Framework · GitHub 下面找到

最新版的EAF安装和更新步骤:

  1. 下载: GitHub - emacs-eaf/emacs-application-framework: EAF, an extensible framework that revolutionizes the graphical capabilities of Emacs
  2. 安装: install-eaf.py
  3. 更新: update-eaf.sh

国内的用户可以换成 gitee :

  1. 下载: emacs-application-framework: EAF,新一代的Emacs图形应用框架,扩展Emacs的多线程和图形渲染能力,实现Live In Emacs的理想
  2. 安装: install-eaf.py --use-gitee
  3. 更新: update-eaf.sh
1 个赞

@xhcoding 大佬能帮忙看一下,怎么让 install-eaf.py 支持 Windows 平台吗?

install-eaf.py 已经在Linux平台测试了,我们准备让 Windows 和 Mac平台都用 install-eaf.py 来维护,这样所有平台都用 Python 来维护,不用写 JavaScript 或者 Sh 来维护,兼容性更好。

嗯嗯,我有时间看一下

现在install-eaf.py脚本已经非常强大了:

  1. --install-all-apps下载所有能下载的EAF应用和依赖
  2. --install-core-deps下载EAF核心依赖
  3. --install-app FOO BOO指定下载FOO,BOO应用及其依赖
  4. --ignore-core-deps忽略下载EAF核心依赖
  5. --ignore-sys-deps忽略下载系统依赖
  6. --ignore-py-deps忽略下载Python依赖
  7. --ignore-node-deps忽略下载NodeJS/npm依赖
  8. --app-git-full-clone下载EAF应用时git clone完整git log历史
  9. --use-gitee国内的用户可选择从Gitee镜像源下载EAF及其应用

如果用install-eaf.py脚本下载了一部分应用并对其余应用不感兴趣,脚本会记住用户的选择,下次启用时可以选择只更新已下载的应用。

9 个赞

install-eaf.py 里面基本都是下载文件和执行命令,我觉得可以考虑用 elisp 写这些功能,甚至可以单独出个 emacs 包叫 eaf-pm 啥的,管理所有的 app,包括 core。完了把这个 eaf-pm 推到 melpa 上,感觉又可以方便一些

1 个赞

我同意 @xhcoding 的建议。Windows上面使用python维护安装脚本有点困难,版本、安装方式五花八门,很难统一。eaf支持Windows的最初一段时间似乎大部分的安装问题都是python版本或安装问题造成的。虽然微软已经官方支持python,但是需要1909版之后的win10。此外,Windows的内置脚本语言powershell和bat,一个不太受人待见,一个功能有限。elisp恐怕是最合适的选择。

eaf-core 暂时还没法分离,倒是三个操作系统平台的安装脚本可以统一一下,现在的一堆 sh 或者 js 都和特定操作系统的环境有关,一改就头大。

其实任意python3就应该可以跑这个安装脚本了,没多少关系吧?