Лично мне xemacs пришлось в итоге попросту патчить. Ибо
MULE - извращение, а трюк с xmodmap не многим лучше.
К поведению TAB нужно привыкнуть. Лично мне в настоящее
время диким кажется уже поведение той же MS Visual Studio.
Ибо TAB - он для *правильной расстановки отступов*. Sic!
В действительности XEmacs - инструмент, который может быть
настроен для выполнения очень разных задач, и универсального
конфига здесь быть не может. Вот минимальный набор полезных
настроек в init.el:
(load "cc-mode")
(require 'efs)
(require 'filladapt)
(require 'paren)
(require 'func-menu)
(setq use-dialog-box nil)
(add-hook 'find-file-hooks 'turn-on-font-lock)
(add-hook 'dired-after-readin-hook 'turn-on-font-lock)
(add-hook 'compilation-mode-hook 'turn-on-font-lock)
(setq font-lock-maximum-decoration t)
(load "font-lock")
(add-hook 'font-lock-mode-hook 'turn-on-fast-lock)
(add-hook 'font-lock-mode-hook 'turn-on-lazy-lock)
(load "saveplace")
(setq-default save-place t)
(load "jka-compr")
(if (fboundp 'toggle-auto-compression)
(toggle-auto-compression 1))
(global-set-key [(f4)] 'switch-to-buffer)
(require 'ffap)
(global-set-key [f3] 'find-file-at-point)
(ad-enable-advice 'delete-char 'around 'delete-char-or-delete-region)
(ad-enable-advice 'backward-delete-char 'around
'backward-delete-char-or-delete-region)
(ad-enable-advice 'backward-delete-char-untabify 'around
'backward-delete-char-untabify-or-delete-region)
(ad-activate 'delete-char)
(ad-activate 'backward-delete-char)
(ad-activate 'backward-delete-char-untabify)
(setq default-major-mode 'indented-text-mode)
(setq line-number-mode 1)
(display-time)
(setq display-time-24hr-format t)
(setq frame-title-format `("emacs at " ,(system-name) ": %f"))
(setq-default indent-tabs-mode nil)
(setq next-line-add-newlines ())
(setq scroll-step 1)
(setq-default fill-column 70)
(setq query-replace-highlight t)
(setq search-highlight t)
(paren-set-mode 'paren)
(copy-face 'default 'paren-match)
(set-face-underline-p 'paren-match t)
(setq backup-by-copying-when-linked t)
(setq version-control 'never)
(setq trim-versions-without-asking t)
(setq minibuffer-max-depth nil)
(setq gnuserv-frame t)
(setq bar-cursor 666)
(blink-cursor-mode)
(setq auto-mode-alist
(append '(
("^[Mm]akefile.*" . makefile-mode)
("^[Mm]ake.*" . makefile-mode)
("[.]h$" . c++-mode)
("[.]c$" . c++-mode)
("[.]i" . c++-mode)
("[.]py$" . python-mode)
;("[.]sql$" . pls-mode)
;("[.]mhtml$" . mhtml-mode)
)
auto-mode-alist
)
)
(add-hook 'find-file-hooks 'fume-add-menubar-entry)
(define-key global-map '(shift button3) 'mouse-function-menu)
(define-key global-map "\C-cg" 'fume-prompt-function-goto)
(define-key global-map '(control button2) 'fume-mouse-function-goto)
(pending-delete)
(lazy-shot-mode)
(lazy-lock-mode)
(vc-load-vc-hooks)
(global-set-key [kp-0] (lambda (arg) (interactive "P") (insert "0")))
(global-set-key [kp-1] (lambda (arg) (interactive "P") (insert "1")))
(global-set-key [kp-2] (lambda (arg) (interactive "P") (insert "2")))
(global-set-key [kp-3] (lambda (arg) (interactive "P") (insert "3")))
(global-set-key [kp-4] (lambda (arg) (interactive "P") (insert "4")))
(global-set-key [kp-5] (lambda (arg) (interactive "P") (insert "5")))
(global-set-key [kp-6] (lambda (arg) (interactive "P") (insert "6")))
(global-set-key [kp-7] (lambda (arg) (interactive "P") (insert "7")))
(global-set-key [kp-8] (lambda (arg) (interactive "P") (insert "8")))
(global-set-key [kp-9] (lambda (arg) (interactive "P") (insert "9")))
(global-set-key [button4] (lambda (arg) (interactive "P") (scroll-down-one)))
(global-set-key [button5] (lambda (arg) (interactive "P") (scroll-up-one)))
(global-set-key [(control \\)] (lambda (arg) (interactive "P") (fill-paragraph-or-region nil)))