一个问题:在windows 的wsl下运行linux emacs能打开windows程序吗?
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
看看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 函数和模板代码都去掉了。
你怎么重现的?我刚才才测试过,没问题。
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 端那些函数全部去掉了
EAF已经具备 Elisp → Python → JavaScript 和 JavaScript → Python → Elisp 两条协作编程通道。
今天增加了两个接口 execute_js_function
和 eval_emacs_function
这两个接口分别实现 Elisp → JavaScript 和 JavaScript → Elisp 的直接调用。
到目前为止, EAF已经具备三种语言 (Elisp、Python、JavaScript)、两种图形引擎(Qt、WebEngine)、四种互调用通道的协作编程框架和体系。
Elisp专注于控制、Python专注于系统库调用和子线程并发、JavaScript专注于界面绘制。
方便开发者以自己喜欢的方式去扩展Emacs的图形功能。
GitHub - emacs-eaf/emacs-application-framework: EAF, an extensible framework that revolutionizes the graphical capabilities of Emacs 现在只保留 EAF 的最核心 core,所有应用都被分到不同的仓库了:
- GitHub - emacs-eaf/eaf-airshare: Share text between Emacs and your phone
- GitHub - emacs-eaf/eaf-browser: A modern, customizable and extensible browser in Emacs
- GitHub - emacs-eaf/eaf-camera: Camera in Emacs
- GitHub - emacs-eaf/eaf-demo: EAF app demo based on PyQt
- GitHub - emacs-eaf/eaf-file-browser: Browse computer files on your phone
- GitHub - emacs-eaf/eaf-file-manager: Fully multi-threaded replacement for dired-mode
- GitHub - emacs-eaf/eaf-file-sender: Share file between Emacs and mobile phone
- GitHub - emacs-eaf/eaf-image-viewer: Dynanmic image viewer
- GitHub - emacs-eaf/eaf-js-video-player: Please use EAF video-player instead
- GitHub - emacs-eaf/eaf-jupyter: Jupyter client
- GitHub - emacs-eaf/eaf-markdown-previewer: Real-time Markdown previewer
- GitHub - emacs-eaf/eaf-mindmap: Keyboard-driven Mindmap editor
- GitHub - emacs-eaf/eaf-music-player: Music player that supports playlist and audio visualization
- GitHub - emacs-eaf/eaf-netease-cloud-music: Play Netease Cloud Music from Emacs
- GitHub - emacs-eaf/eaf-org-previewer: Real-time Org-mode previewer
- GitHub - emacs-eaf/eaf-pdf-viewer: Fastest PDF Viewer in Emacs
- GitHub - emacs-eaf/eaf-system-monitor: Simple system monitor tool
- GitHub - emacs-eaf/eaf-terminal: Full-featured terminal in Emacs
- GitHub - emacs-eaf/eaf-video-player: Video Player in Emacs
- GitHub - emacs-eaf/eaf-vue-demo: EAF app demo base on Vue.js
意味这以后大家可以安装自己喜欢的EAF应用,不用安装所有应用以及相关依赖。
大家也可以参考上面的应用仓库,自己构建EAF应用,应用的代码可以放到自己的个人仓库中。
谢谢 manateelazycat !!
EAF已经彻底和应用分开了,所有的应用都可以在 Emacs Application Framework · GitHub 下面找到
最新版的EAF安装和更新步骤:
- 下载: GitHub - emacs-eaf/emacs-application-framework: EAF, an extensible framework that revolutionizes the graphical capabilities of Emacs
- 安装: install-eaf.py
- 更新: update-eaf.sh
国内的用户可以换成 gitee :
- 下载: emacs-application-framework: EAF,新一代的Emacs图形应用框架,扩展Emacs的多线程和图形渲染能力,实现Live In Emacs的理想
- 安装: install-eaf.py --use-gitee
- 更新: update-eaf.sh
@xhcoding 大佬能帮忙看一下,怎么让 install-eaf.py 支持 Windows 平台吗?
install-eaf.py 已经在Linux平台测试了,我们准备让 Windows 和 Mac平台都用 install-eaf.py 来维护,这样所有平台都用 Python 来维护,不用写 JavaScript 或者 Sh 来维护,兼容性更好。
嗯嗯,我有时间看一下
现在install-eaf.py
脚本已经非常强大了:
-
--install-all-apps
下载所有能下载的EAF应用和依赖 -
--install-core-deps
下载EAF核心依赖 -
--install-app FOO BOO
指定下载FOO
,BOO
应用及其依赖 -
--ignore-core-deps
忽略下载EAF核心依赖 -
--ignore-sys-deps
忽略下载系统依赖 -
--ignore-py-deps
忽略下载Python依赖 -
--ignore-node-deps
忽略下载NodeJS/npm依赖 -
--app-git-full-clone
下载EAF应用时git clone
完整git log
历史 -
--use-gitee
国内的用户可选择从Gitee镜像源下载EAF及其应用
如果用install-eaf.py
脚本下载了一部分应用并对其余应用不感兴趣,脚本会记住用户的选择,下次启用时可以选择只更新已下载的应用。
install-eaf.py
里面基本都是下载文件和执行命令,我觉得可以考虑用 elisp
写这些功能,甚至可以单独出个 emacs 包叫 eaf-pm
啥的,管理所有的 app,包括 core。完了把这个 eaf-pm
推到 melpa 上,感觉又可以方便一些
我同意 @xhcoding 的建议。Windows上面使用python维护安装脚本有点困难,版本、安装方式五花八门,很难统一。eaf支持Windows的最初一段时间似乎大部分的安装问题都是python版本或安装问题造成的。虽然微软已经官方支持python,但是需要1909版之后的win10。此外,Windows的内置脚本语言powershell和bat,一个不太受人待见,一个功能有限。elisp恐怕是最合适的选择。
eaf-core 暂时还没法分离,倒是三个操作系统平台的安装脚本可以统一一下,现在的一堆 sh 或者 js 都和特定操作系统的环境有关,一改就头大。
其实任意python3就应该可以跑这个安装脚本了,没多少关系吧?