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

有个问题是,当文本文件比较大(一个bib文件,400k)时,预览文本的时候会卡一下。预览pdf的速度是很快。

PDF是通过插件读取的,文件目前是Python读取的,估计要做一个限制预览的大小。

目前Qt5只支持KDE和Gnome, 其他平台的图标要自己设置主题

已经限制只读 50kb 的内容,应该够大多数文件文件预览了。

@manateelazycat 在文件管理器里面上下移动的时候不够顺滑,不少时候有延迟,按了几次下,光标过一会才下去。有没有办法调节一下?

你更新到最新版了吗? 最新版我给文件管理器设定了 50kb 的限制,避免读大文件的时候卡顿。

我晚上回去试试 :+1:

大佬有没有兴趣把预览功能移植给dired?这样的话就没必要在开发文件管理相关的功能了。

不可能啊,Emacs没有线程的功能解决性能问题,Emacs的渲染性能不足以快速绘制富文本的预览图形。

这也是我开发EAF的初心,如果Emacs的线程和图形功能优秀到支持实时预览,我也不会开发EAF呀。

我的表达有问题。其实我的想法是eaf的文件管理器里面的预览功能和dired结合起来用。eaf负责预览,dired管理文件。

EAF的文件管理器已经有几个功能,光靠Elisp就很难实现:

  1. 快速浏览文件,子文件夹的预览非常快,是因为EAF的Python有真正的子线程的功能
  2. 不光操作多大的文件,EAF文件管理器都不会卡住,还是因为子线程特性
  3. 各种文件的预览,找找JS的库,基本上五分钟就可以加上,像图片和视频这种预览还可以实时缩放,Emacs现在连显示单张图片都卡
  4. 对齐分列,EAF的 Vue.js 很容易做,一行CSS就行了,Emacs要借助多个 window 做各种代码 hacking

Emacs没有真正的线程功能和性能太弱的绘制性能,这些在实用的场景下都是卡顿的关键:

  1. Emacs的异步子进程只能解决非图形计算的分解,但是如果结果需要大量绘制的时候还是会卡界面
  2. Emacs因为FSF的原因,只能放自由的代码,Emacs现在的图形框架和文本优先的绘制框架根本无法承载现代图形(Qt和Web)
4 个赞

我用 dired 很久了,我这段时间的目标就是下班后,每天写一点,最终写一个完整替代 Dired 的文件管理器:

  1. 操作借鉴dired的键盘操作,现在标记、删除和重命名已经弄完,拷贝和移动过几天弄
  2. 借鉴 ranger 的多栏设计,特别是批量查看图片的时候,比Gnome内置的图片管理器(没法快捷键切换)好用的多
  3. 借鉴JS的生态,对尽量多的文件提供预览功能,预览好了再用Emacs打开
  4. 利用Python的线程让所有文件操作都不要卡顿,一点卡顿都不能有
  5. 利用Vue.js来正常的实现像素对齐或者左右两边对齐,Emacs处理对齐各种麻烦
  6. wdired的功能,EAF弹出一个buffer给Emacs编辑后批量改名字
  7. 内置 grep find 的功能,再结合 wdired 功能和文件操作,方便快速管理大型项目的文件
  8. 其他有趣的功能, 比如文件显示图标,拷贝文件的时候临时显示一下目标文件夹的预览这种,还要进一步挖掘…

我觉得Elisp + Dired实现这些都是一堆针对 text 的正则表达式hacking, 我不想在一堆扭曲的dired extension拼凑这些体验,我就想每天写一点功能,直至完全不用鸡肋的dired

7 个赞

EAF的目标就是用Python的系统访问和多线程能力结合Qt以及Web现代图形渲染库,把以前那些通过 Text Regex Hacking 实现的功能正常实现,让Emacs专注于 Text World, 把编程这件事情做到极致,其他的事情交给EAF来实现。

4 个赞

重写了一下英文版的EAF愿景:

Emacs, the extensible text editor, is more than 45 years old. It is older than virtually all operating systems people use today, almost as old as the first UNIX system. During the decades of development, the world’s brightest hackers have contributed their intelligence and creativity, together they’ve constructed the most comprehensive and richest ecosystem that you can find in any software to date.

If you are a hacker who works with numerous languages and text, who’s keyboard-driven and desires maximum freedom, extensibility, and introspectivity over your tool, maybe to the extent of living in it, Emacs will be your best bet.

Unfortunately, this 45 years of age is also one of the greatest disadvantages of Emacs. Comparing with modern software, Emacs lacks performance, specifically Emacs Lisp lacks performance, it doesn’t have proper multithreading and its graphical capabilities are seriously limited. It is far from what you’d expect on every GUI application today (such as IDEA or VSCode). You may think that Emacs, as a text-centric editor, doesn’t need them, but have you ever run into a situation that, you sit comfortably typing commands and doing your Emacs sorcery, but can’t stop to ponder:

What if Emacs has a real browser?
What if this PDF or video file can be viewed efficiently in Emacs?

Emacs, although infinitely extensible in text, is very limited in graphics. It shouldn’t have to be this way. However, Emacs Lisp is the integral part of the Emacs culture, it carries decades of history with itself, it is what makes Emacs special. It is irreplaceable.

The vision of the Emacs Application Framework (EAF) project is that, while fully retaining the rich history, culture and ecosystem of Emacs and Emacs Lisp, to open up completely new doors to the ecosystems of Python, Qt5, and even JavaScript. EAF extends Emacs to the world of modern graphics, but still preserving the extensibility and customizability of Emacs, it will be the key to ultimately Live in Emacs.

6 个赞

最新版的文件管理器已经具备以下功能:

  1. 基本文件操作:标记、反标记、重命名、拷贝、删除、移动、新建文件或目录
  2. 全键盘操作,类似 vim 的风格
  3. 拷贝当前文件名或目录到Emacs keyring
  4. 隐藏文件临时切换显示
  5. 批量编辑文件名,类似 wdired, 弹出一个Emacs Text Buffer 任意编辑,C-c C-c 以后批量重命名

以上功能已经覆盖了dired的日常操作。

相对于dired增强的功能:

  1. 文件操作的性能,Python比Elisp快太多
  2. 子线程能力,快速预览文件夹,一点都不会卡光标
  3. 类似 ranger 的多栏界面,方便图片或者文件的快速查找
  4. 利用 JS 库实现了文件快速预览(覆盖图片、视频、PDF、音频、子目录、Html和源代码)
  5. 为每个文件都配上系统主题的图标

等再集成 grep 和 快速搜索就可以彻底替代 dired 了。

5 个赞

更新到最新版后,打开任何一个app都是白屏 :innocent:,如图:

没有任何错误输出:

Screenshot_20210820_074208

系统环境:manjaro + doom emacs;
配置部分为:
(add-to-list 'load-path "~/.emacs-application-framework/")
(setq eaf-kill-process-after-last-buffer-closed nil)
(setq eaf-start-python-process-when-require t)
(require 'eaf)
;; (require 'eaf-js-video-player)
(require 'eaf-org-previewer)
;; (require 'eaf-image-viewer)
;; (require 'eaf-music-player)
;; (require 'eaf-file-sender)
(require 'eaf-file-browser)
;; (require 'eaf-airshare)
;; (require 'eaf-system-monitor)
(require 'eaf-browser)
;; (require 'eaf-jupyter)
(require 'eaf-pdf-viewer)
;; (require 'eaf-video-player)
;; (require 'eaf-demo)
(require 'eaf-netease-cloud-music)
;; (require 'eaf-mindmap)
;; (require 'eaf-terminal)
;; (require 'eaf-markdown-previewer)
;; (require 'eaf-vue-demo)
(require 'eaf-file-manager)
;; (require 'eaf-camera)

看 eaf buffer 啥输出?你按照readme里面执行了 install-eaf.py 了吗?

有没有跑install-eaf.py或者重启Emacs?

最新版的文件管理器支持像 vimium 那样用字符快速跳转了。

这样操作比 dired 的 isearch 找文件快多了。

3 个赞

文件管理器中按 G 键,输入正则表达式,递归的在当前目录搜索文件,至此替换 dired 的所有功能都已经开发完毕。

同时增加了 eaf-open-in-file-manager 的命令,用于替换 dired-jump