让GNU emacs和xemacs共同居住的好方法是什么

时间:2009-06-05 11:32:42

标签: emacs

我想逐步从GNU Emacs切换到Xemacs。有没有我可以使用的技巧让这两个发挥得很好?

目前,我看到以下问题:

xemacs改变了.emacs 这两个人不喜欢彼此.elc文件。

谢谢!

4 个答案:

答案 0 :(得分:6)

有趣的是,大多数人似乎正朝着另一个方向前进,因为我认为XEmacs处于相当休眠状态(基于xemacs-announce列表的活动)。简单的包可以共存,但许多人已放弃使他们的包在XEmacs和Emacs中工作。

但是,在回答你的问题时,为了让你的.emacs在两者中工作,我会开始编写一些例程来在两者之间进行函数转换。例如,有一点我需要这个让我的.emacs在XEmacs中工作:

(if (not (fboundp 'tags-table-files))
    (defun tags-table-files ()
      (tag-table-files tags-file-name)))

其他事情是在Emacs变种上触发的,我将其存储在变量GNU中:

(setq GNU (not (string-match "XEmacs\\|Lucid" (emacs-version))))
(if GNU 
    (do-emacs-thing)
  (do-xemacs-thing))

我保留了已编译的.emacs文件并执行了此操作:

(setq compiled-dot-emacs-name (format ".emacs-%d%s" emacs-major-version 
                                                    (if GNU "" "X")))

关于已编译的软件包,我可能会将所有.el文件存储在一个目录(例如emacs-lisp)中,但是有一个xemacs变体(xemacs-lisp),其中包含.el文件的符号链接。然后你只需从相应的Emacs变体中编译每个目录,并确保你的加载路径指向正确的。

Emacs wiki在Emacs versus XEmacs上有一个页面,这可能是一个很好的起点,可以找出让他们同居的其他提示。具体来说,有customizing both的页面。

答案 1 :(得分:4)

我不使用xemacs,但是新的GNU emacs也会检查.emacs.d/init.el,所以将.emacs内容移动到init.el是有意义的。此外,如果您设法保持自定义适用于两者,则可以将其链接到.xemacs/init.el

还讨论了emacswiki上喜欢的emacs。

答案 2 :(得分:3)

我刚刚开始从Xemacs到Emacs的缓慢移动。我现在每天都使用它们。为了使转换更顺畅(一组初始化文件),我从http://xemacs.seanm.ca/_emacs窃取了以下.emacs文件(但链接现在已经死了)。

(setq user-init-file
      (expand-file-name "init.el"
                        (expand-file-name ".xemacs" "~")))
(setq custom-file
      (expand-file-name "custom.el"
                        (expand-file-name ".xemacs" "~")))

(if (file-exists-p user-init-file)
    (load-file user-init-file))
(if (file-exists-p custom-file)
    (load-file custom-file))

我的〜/ .xemacs / init.el以:

开头
(unless (boundp 'running-xemacs)
  (defvar running-xemacs nil))
(setq load-path (cons "~/.elisp" load-path))             ; packages for both emacsen
(if running-xemacs
    (setq load-path (cons "~/.elisp/xemacs" load-path))  ; packages for Xemacs only
  (setq load-path (cons "~/.elisp/gnuemacs" load-path))) ; packages for Gnuemacs only

从那时起我很清楚(偶尔(如果运行xemacs)...)。我还删除了〜/ .elisp中的所有.elc文件,但我认为Trey Jackson的建议可行。

答案 3 :(得分:2)

在现代系统上我不再需要预编译的elisp文件了。查看和正在更改.el文件的好处要高得多。

.emacs:将您自己的定义放在.emacs_startup(或您喜欢的名称)中,并将所有gnu-enmacs内容放在那里并在.emacs中加入条件加载