【发布时间】:2022-01-09 02:40:41
【问题描述】:
如果我删除我的 .emacs 文件和 .emacs.d 文件夹,只是为了确保我观察到的不是由我的个人配置中的问题引起的,然后我调用
emacs foo.txt
emacs 窗口打开,使用“Lisp Interaction ElDoc”保持空白至少 5 秒
写在底部栏的中心,通常指示主要模式。然后(即在几秒钟后),窗口垂直分成两部分,底部为初始屏幕,顶部为文档 foo.txt,“Lisp Interaction ElDoc”被替换为“(文本) ' 符合预期。
如果我随后关闭文档并立即调用
emacs foo.txt
再次,然后我直接获得最终窗口(一分为二,带有启动屏幕和所有内容),而不会卡在第一个状态几秒钟。
但是,如果我关闭文档并等待一段时间(一分钟左右),然后调用
emacs foo.txt
再次,emacs 窗口打开,它保持空白至少 5 秒钟,底部栏的中心写有“(基本)”,消息“正在加载 /usr/share/emacs/site-lisp/site-start .d/rpmdev-init.el... done'(如果您想知道,这是从 /usr/share/emacs/site-lisp/site-start.d/ 加载的最后一个文件)。然后,弹出文件,还有启动画面等。
*Messages* 的内容没有给我任何关于 emacs 在完成加载 rpmdev-init.el 和显示启动屏幕之间可以尝试做什么的信息(带有消息“有关 GNU Emacs 和 GNU 系统的信息,请键入 Ch钙。”)。这里是*Messages*的内容:
Loading /usr/share/emacs/site-lisp/site-start.d/auctex.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/autoconf-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/clang-format.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/clang-include-fixer.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/clang-rename.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/cmake-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/desktop-entry-mode-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/mercurial-site-start.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/pg-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/preview-latex.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/protobuf-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/rpmdev-init.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
这种行为(有时要等待几秒钟才能编辑文件)很烦人。我知道我可以将 emacs 作为服务器启动,以避免每次我想打开 emacs 窗口时重新加载所有内容,但是,我想了解幕后发生的事情,因为这似乎是某种异常的痕迹。所以我的问题是:有没有人知道是什么导致 emacs 有这种行为?或者关于如何着手解决的任何线索?
我尝试使用emacs -q 和emacs -Q 并观察到同样的现象。我在 Fedora 34 上使用 emacs 27.2。
编辑: 类似的问题经常发布在 StackOverflow 上(据我所知,在 SO 上发布的问题比在任何其他 StackExchange 网站上都多)。例如:
通常的嫌疑人是错误的配置(此处排除,因为即使使用 -Q 也会出现问题)或错误的主机名配置(据我所知,应该在现代版本的 emacs 上修复,而且,无论如何,我的主机名是正确配置)。
我仍在尝试比较作为结果获得的痕迹emacs_slow.strace 和emacs_fast.strace
strace -tt -o emacs_slow.strace emacs foo.txt -eval '(kill-emacs)' && \
strace -tt -o emacs_fast.strace emacs foo.txt -eval '(kill-emacs)'
它们都是大约 21k 行并且非常相似。如果有人知道具体要检查什么,欢迎提出建议。
【问题讨论】:
-
这种题比较适合ServerFault或者SuperUser这里的Linux标签只针对编程相关的问题
-
好的。我可以在超级用户上转发。我在这里发帖是因为我发现了许多其他关于 emacs 在 stackoverflow 上运行缓慢的问题,当我用谷歌搜索试图理解这个问题时。我放了“linux”标签,因为我在 Linux 上运行,并且由于我不知道问题的原因,我认为它可能与 Linux 有关。但我删除它,因为它不合适。
-
好吧,我刚刚检查了ServerFault、SuperUser 和StackOverflow,后者是唯一一个返回接近我的问题的问题和答案的人。所以,虽然我知道,从理论上讲,他们会更适合我的问题,但实践表明 StackOverflow 是最好的地方。
标签: emacs