先回答你的第一个问题,从源里默认安装的包会有默认的配置文件,在 /etc/<flavor>/site-start.{el, d} 与 /etc/emacs/ 下面。<flavor> 与你实际安装的 emacs 版本相对应。如果不想要这些文件,自己装就是了。另外,源里的 ecb 已经是 tooooooooooooold,自己装更好。稳妥的方案是 cedet 1.0 pre6 + ecb 2.4.0.
再回答配置文件加载的问题,由于您在帖子中表现出的水准,我只能指望上帝可以保佑您可以看明白。这种设置配置文件的方式源于 debian 中的 emacsen-common 机制。首先 emacs 命令执行时会调用 startup.el 中 的 command-line 函数,这函数很长,看这几行:
代码: 全选
(if site-run-file
(progn
;; Load all the debian package snippets.
;; It's in here because we want -q to kill it too.
(if (load "debian-startup" t t nil)
(debian-startup debian-emacs-flavor))
;; Now the normal site file...
(load site-run-file t t nil)))
接下来,执行 debian-startup 函数,在 debian-startup.el 中,这个文件是 emacsen-common 包的一部分。
代码: 全选
(if (not (boundp 'debian-emacs-flavor))
(defconst debian-emacs-flavor flavor
"A symbol representing the particular debian flavor of emacs that's
running. Something like 'emacs20, 'xemacs20, etc.")
(let ((common-dir "/etc/emacs/site-start.d")
(flavor-dir (concat "/etc/" (symbol-name flavor) "/site-start.d")))
(debian-run-directories flavor-dir common-dir)))
函数 debian-run-directories 在同一个文件里,它加载由参数指定的文件夹下所有形如 XXfilename.el{c} 的文件,其中,XX 必须是数字。这就是你在 /etc/emacs/site-start.d 或者 /etc/<flavor>/site-start.d 下看到那堆以数字开头的文件的原因。
加载完了这一堆文件之后,才会加载你家目录下的 .emacs 文件,command-line 函数的这几行:
代码: 全选
(cond
((eq system-type 'ms-dos)
(concat "~" init-file-user "/_emacs"))
((eq system-type 'windows-nt)
;; Prefer .emacs on Windows.
(if (directory-files "~" nil "^\\.emacs\\(\\.elc?\\)?$")
"~/.emacs"
;; Also support _emacs for compatibility.
(if (directory-files "~" nil "^_emacs\\(\\.elc?\\)?$")
"~/_emacs"
;; But default to .emacs if _emacs does not exist.
"~/.emacs")))
(t
(concat "~" init-file-user "/.emacs")))))
;; This tells `load' to store the file name found
;; into user-init-file.
(setq user-init-file t)
(load user-init-file-1 t t)
这样设计保证了你家目录下的配置文件具有比系统默认配置更高的优先级。所以,如果你不想加载系统默认配置的话,稍稍 hack 一下这几行代码就行了,就算完全不懂 lisp 想来也不困难,改写代码不会,删代码您总该会吧。
然后,你根本就搞不清楚 interpretation, compilation 这些基本概念,也就没有和你讨论这类问题的必要,或者不客气地说缺乏讨论的基础。
最后,完全不用把“有限的生命”投入到 elisp 中,这种小玩意儿只投入一到两个下午也就差不离了。难道你没发现神话 elisp 的是你自己?麻省理工那几门基础课仍然是以 lisp 作为工具语言,很大部分原因在于这玩意儿简单到令人发指,完全不用花精力在语言层面纠结。如果这都做不到,我很难想像你能体会到 C 的简洁高效。