anewbie 写了:先回答你的第一个问题,从源里默认安装的包会有默认的配置文件,在 /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 函数,这函数很长,看这几行:接下来,执行 debian-startup 函数,在 debian-startup.el 中,这个文件是 emacsen-common 包的一部分。代码: 全选
(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-run-directories 在同一个文件里,它加载由参数指定的文件夹下所有形如 XXfilename.el{c} 的文件,其中,XX 必须是数字。这就是你在 /etc/emacs/site-start.d 或者 /etc/<flavor>/site-start.d 下看到那堆以数字开头的文件的原因。代码: 全选
(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)))
加载完了这一堆文件之后,才会加载你家目录下的 .emacs 文件,command-line 函数的这几行:这样设计保证了你家目录下的配置文件具有比系统默认配置更高的优先级。所以,如果你不想加载系统默认配置的话,稍稍 hack 一下这几行代码就行了,就算完全不懂 lisp 想来也不困难,改写代码不会,删代码您总该会吧。代码: 全选
(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)
然后,你根本就搞不清楚 interpretation, compilation 这些基本概念,也就没有和你讨论这类问题的必要,或者不客气地说缺乏讨论的基础。
最后,完全不用把“有限的生命”投入到 elisp 中,这种小玩意儿只投入一到两个下午也就差不离了。难道你没发现神话 elisp 的是你自己?麻省理工那几门基础课仍然是以 lisp 作为工具语言,很大部分原因在于这玩意儿简单到令人发指,完全不用花精力在语言层面纠结。如果这都做不到,我很难想像你能体会到 C 的简洁高效。
1, 你知道,前面那几段你表现的很有耐心,这应该得到新手的感谢。
2, 但后面表现的就很糟糕,你可能认为,你在一些事情是走在前面,感觉很好,就连interpretation, compilation 这些基本概念,搞的都相当的高调,如果从一个有经验但是对emacs和elis缺乏了解的我这么一位高手来说,你提的这些问题就不会向你想的那么复杂了。我就是想告诉你,想高调,谁都可以。
3, “简单到令人发指,只投入一到两个下午也就差不离了“,如果要是很严厉的告诉你,你这句话说的时候没经过大脑,你肯定很不爽,但是事实如此。就你一个人敢说一门语言可以发一个到2个下午就可以搞定,真不知道什么叫搞定,最低的要求要能运用这么语言吧,从根本不知道到能运用谁都没办法在这么短的时间掌握(创造未来不像回顾历史那么简单),你可能是海龟,但我要说你一定是个演员。
4, 在很多你不熟悉的项目上,比如说我们一同写一个c compiler,如果把我看做是天上的星星的话,你充其量不过是只小萤火虫,毕竟你没写过c compiler.
5, 我还是想告诉你,当你回答别人贴的时候,最好别装的nb,如果确实想装的时候,那也的想办法憋着。因为,我们都是独立的个体,希望你能清楚(贴子前面用“您”,后面又该了,好像我是2个人,这让人很不舒服,记得要表里如一)。最后再恶心你一下,我都能不装,你还有什么资格装。
谢谢。