查找Emacs site-lisp目录

hek*_*ran 9 emacs elisp dot-emacs

我试图让我为OS X编写的Emacs配置文件在Ubuntu上工作.我有这条线:

(add-to-list 'load-path "/usr/local/Cellar/emacs/23.3/share/emacs/site-lisp/w3m")
Run Code Online (Sandbox Code Playgroud)

它用于加载emacs-w3m.在OS XI上使用Homebrew安装了Emacs,因此它位于/usr/local/Cellar/,Ubuntu上的site-lisp目录位于不同的位置.如何以适用于两种操作系统的方式编写此行?是否有Emacs Lisp函数来检索site-lisp目录?

Mic*_*ert 8

不,没有办法.site-lisp目录是一个约定,只有它的存在而不是它的路径才被同意.

要么在Mac/Ubuntu上设置符号链接,要么使用系统开关:

(defconst my-lisp-dir (cond
    ((equal system-type 'gnu/linux) "/usr/share/emacs/site-lisp/")
    ((equal system-type 'darwin) (concat "/usr/local/Cellar/emacs/" (number-to-string emacs-major-version) "." (number-to-string emacs-minor-version) "/share/emacs/site-lisp/"))
    (t (concat "/usr/local/emacs/site-lisp/")))
Run Code Online (Sandbox Code Playgroud)

然后

(add-to-list 'load-path (concat my-lisp-dir "w3m"))
Run Code Online (Sandbox Code Playgroud)