我想逐步从GNU Emacs切换到Xemacs。有没有我可以使用的技巧让这两个发挥得很好?
目前,我看到以下问题:
xemacs改变了.emacs 这两个人不喜欢彼此.elc文件。
谢谢!
答案 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中加入条件加载