看完TI脑子有点乱,一句话一张图就能解释的问题扯这么久。这个问题你有解决思路或办法吗?
(framep (car (frame-list)))
找到一个变量window-system-version
, 它没有给它太多的信息, 在linux下可以用来在early-init.el判断运行环境。变量的值没有都列出来,从文件上面可以看到有针对不同系统赋的不同值。
但是这个变量要是不是被抛弃了?
在init.el中加载主题没啥问题吧,为啥非要在early-init.el中呢?
闲得无聊吧,就想试试在默认主题加载前,加载主题,字体什么的。
可以在终端导出一个环境变量:
$ cat early-init.el
(error (getenv "NOWIN"))
$ export NOWIN=-nw; emacs --debug-init $NOWIN
Debugger entered--Lisp error: (error "-nw")
signal(error ("-nw"))
error("-nw")
eval-buffer(#<buffer *load*> nil "~/.emacs.d/early-init.el" nil t) ; Reading at buffer position 25
load-with-code-conversion("~/.emacs.d/early-init.el" "~/.emacs.d/early-init.el" t t)
load("~/.emacs.d/early-init" noerror nomessage)
load-user-init-file(#f(compiled-function () #<bytecode 0x400c36a1>))
command-line()
normal-top-level()
本来以为 command-line-args
会包含完整的命令行参数 ("/path/to/emacs" "--debug-init" "-nw")
,然而在 early-init.el 中只能得到 ("/path/to/emacs")
,难道是有意阻止用户判断?
各种平台上的Emacs,这个变量都只能返回运行路径,没有参数。
原本是有的,但是在 (command-line)
函数执行的过程中一个个删除了,到 *init.el
文件就没了。