Mi archivo ~/.emacs
Con el tiempo he descubriendo cada vez más cosas del Emacs (leyendo grupos de noticias, páginas web, manuales, etc) y he decidido compartir las cosas que he aprendido, que no es que sean muchas, pero a lo mejor a alguien le ahorran algunas horas de darse cabezazos con la pared o le impulsan a probar el Emacs.
Mi archivo .emacs tiene mas de 600 lineas y lo uso en tres ordenadores distintos (Linux, WinNT y Win2K) por lo que no resulta útil compartirlo completamente. Estos son los fragmentos más interesantes:
;; Lenguaje
(set-language-environment "Spanish")
;; Colorines
(custom-set-faces
'(font-lock-comment-face ((t (:foreground "forest green"))))
'(highlight ((t (:foreground "blue" :background "indian red"))))
'(isearch ((t (:inherit region))))
'(modeline ((t (:foreground "black" :background "steelblue"))))
'(region ((t (:foreground "white" :background "midnight blue"))))
'(show-paren-match-face ((t (:foreground "black"
:background "steel blue")))))
;; Teclas
;; Si usas o has usado windows estas teclas te ayudarán a no
;; volverte loco.
(global-set-key [end] 'end-of-line)
(global-set-key [home] 'beginning-of-line)
(global-set-key [delete] 'delete-char)
(global-set-key [C-home] 'beginning-of-buffer)
(global-set-key [C-end] 'end-of-buffer)
(global-set-key [?\C-z] 'undo)
(global-set-key [M-f4] 'delete-frame)
;; Backups
;; Normalmente el Emacs crea backups de los ficheros que es editan,
;; lo cual es una ventaja. Pero esto tiene el inconveniente de dejar
;; ficheros de backup (que terminan con ~) por todas partes. Con la
;; siguiente función se centralizan todos los ficheros de backup y
;; además se van guardando todas las versiones.
(setq make-backup-files t)
(setq auto-save-default nil)
(setq delete-old-versions t)
(defun make-backup-file-name (file)
"Create the non-numeric backup file name for FILE."
(require 'dired)
(let (path)
(cond ((eq system-type 'windows-nt)
(setq file (dired-replace-in-string ":" "" file))
(setq path "D:/Eduardo/Programacion/Backup/"))
(t
(setq path "~/.backups/")))
(concat path
(dired-replace-in-string "/" "~" file)
(format-time-string "~%Y%m%d%H%M%S~")
;; Repeat the name at the end so we'll have font-lock if
;; we open the bakup file.
(car (last (split-string file "/"))))))
;; Desktop
;; Esta es una funcionalidad del Emacs que es de lo más útil que se
;; puede encontrar. Llevas horas programando, compilando, depurando y
;; tienes los ojos rojos de tanto mirar la pantalla. Decides que ya
;; está bien, que mañana seguirás. Llega el día siguiente y ... donde
;; estabas?. Con el siguiente fragmento de código instalado en tu
;; fichero .emacs no hace falta que te acuerdes, Emacs lo hace por
;; ti. También recordará los últimos 100 ficheros visitados, los
;; últimos 50 comandos usados en la shell o las últimas 20
;; expresiones regulares usadas.
(when (fboundp 'desktop-load-default)
(desktop-load-default)
(mapcar
(lambda (sym) (add-to-list 'desktop-globals-to-save sym))
'((buffer-name-history . 20)
(dired-regexp-history . 20)
(extended-command-history . 30)
(file-name-history . 100)
(grep-history . 30)
(minibuffer-history . 50)
(query-replace-history . 60)
(read-expression-history . 60)
(regexp-history . 60)
(regexp-search-ring . 20)
(search-ring . 20)
(shell-command-history . 50)))
(desktop-read))