Интересно, что большинство из них движутся в другом направлении, так как я считаю, что 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 есть страница на Emacs против XEmacs , которая может послужить хорошей отправной точкой для поиска других советов по их сожительству. В частности, есть страница для , настраивающая оба .