Configuración inicial de GNU Emacs

1. Descripción
2. Instalación
3. El archivo .emacs


1. Descripción

GNU Emacs es un programa extensible, de acuerdo a la filosofía de desarrollo que implica el lenguaje Lisp. Inicialmente un editor de macros, hoy en día es mucho más que eso. Contrariamente a la filosofía Unix de escribir programas que hagan una única y que la hagan bien, la orientacion Lisp es la de escribir programas extensibles, con una aproximación de abajo a arriba (bottom-up). Así, emacs es un editor de texto, "el único editor auténtico", segun sus apologistas; un intérprete Lisp; un entorno IDE para innumerables lenguajes de programación; un lector de correo y noticias; un programa para reproducir archivos de música, entre otras innumerables posibilidades.

GNU Emacs no es amigable, su curva de aprendizaje es empinada y no acaba nunca; por ello es importante empezar con una configuración mínima, que se establece en el archivo de configuración ~/.emacs, archivo que todo usuario debe llevar consigo para poder estar cómodo con GNU Emacs en cualquier máquina.

2. Instalación

En Debian "Lenny", la versión estable en el momento de escribir estas líneas, la versión de GNU Emacs disposible es la 22, que no tiene soporte para fuentes "True Type". Así puede ser recomendable instalar la versión 23 disponible en los repositorios de backports.org. Basta añadir la línea

deb http://www.backports.org/debian lenny-backports main contrib non-free

en el archivo /etc/apt/sources.list, e instalar normalmente

aptitude install -t lenny-backports emacs23

3. El archivo .emacs

Sirva este archivo de configuración como ejemplo y base para que cualquier nuevo usuario del programa pueda empezar algo más cómodo a remontar la ya citada curva de aprendizaje.

;; ================================================================
;; ~/.emacs para empezar con GNU Emacs
;;                                         Versión 0.3 (17.01.2010)
;; ================================================================

;; AJUSTES DE LA APLICACION =======================================
;; Realzado de la línea donde se encuentra al cursor
(global-hl-line-mode 1)
;; Realzado de sintaxis
(global-font-lock-mode t)
;; Realzado de la región marcada
(transient-mark-mode t)
;; Emparejar paréntesis
(show-paren-mode t)
;; Descomprimir archvos
(auto-compression-mode t)
;; Presentar número de columna
(column-number-mode t)
;; Salvar posición en los archivos entre sesiones
(setq-default save-place t)
;; Mostrar debug en errores
(setq debug-on-error t)
;; Pedir confirmación para salir de emacs
(setq confirm-kill-emacs 'y-or-n-p)   ;; Puede ser 'nil o 'y-or-n-p
;; Modos inicial y por defecto
(setq default-major-mode 'text-mode)         ;; El modo por defecto es texto
(setq initial-major-mode 'emacs-lisp-mode)   ;; Buffer inicial en modo lisp
;; Scroll contínuo
(setq scroll-step 1)
; Inhibir mensajes y pantalla de inicio
(setq inhibit-startup-buffer-menu t)
(setq inhibit-startup-screen t)
(setq inhibit-startup-message t)
(setq inhibit-startup-echo-area-message "usuario")
;; Mensaje en el buffer scratch
(setq initial-scratch-message ";; Hola, bienvenido a Emacs")
;; Formato del reloj
(setq display-time-24hr-format t     ;; 24 horas
      display-time-load-average nil) ;; No mostrar load-average 
; Reemplazar "yes" por "y" en el prompt
(fset 'yes-or-no-p 'y-or-n-p)

;; AJUSTES DEL DOCUMENTO ==========================================
;; Ajustar texto a 72 caracteres
(setq-default fill-column 72)
;; Ajustar tabulador a 4
(setq default-tab-width 4)

;; ENTORNO SLIME ==================================================
;; Requiere instalar 'slime' y 'clisp'
;; Orden: M-x slime
(setq inferior-lisp-program "/usr/bin/clisp")  ; el ejecutable
(add-to-list 'load-path "~/.slime/")           ; directorio SLIME
;; Habilitar *sólo* una de las dos siguientes:
;;(require 'slime)                             ; carga siempre
(require 'slime-autoloads)                     ; carga bajo demanda
(slime-setup)

;; CONTROL DE VERSIONES - BACKUPS =================================
;; Sin copias de seguridad (torvalds-mode)
(setq make-backup-files nil)
;; Si prefieres copias de segurdad, comenta la línea anterior y
;; descomenta las siguientes:
;; (setq version-control t      ;; activarlo                    
;;       delete-old-versions t  ;; Borrar versiones viejas
;;       ;; Directorio de backups:
;;       backup-directory-alist (quote ((".*" . "~/.emacs_backups/")))
;;       semanticdb-default-save-directory "~/.emacs_semantic/"
;;       kept-new-versions 3    ;; Número de versiones nuevas a guardar
;;       kept-old-versions 1)   ;; Número de versiones viejas a guardar

;; CORRECTOR ORTOGRAFICO ==========================================
;;; Corrección ortográfica (requiere ispell o aspell)
(setq-default ispell-program-name "ispell")
(setq-default ispell-check-comments nil)  
(setq ispell-enable-tex-parser t)         
(setq-default ispell-skip-html t)
(setq ispell-extra-args '("-T" "latin1"))
(setq ispell-dictionary "castellano8")
;; Usar modo flyspell (corrección automática) en archivos de texto
;; y latex
;; (¡Cuidado con archivos grandes!)
(add-hook 'latex-mode-hook 'flyspell-mode)
(add-hook 'LaTeX-mode-hook 'flyspell-mode)
(setq ispell-parser 'tex)

;; EXTRAS VARIOS ==================================================
;; Speedbar
(setq speedbar-show-unknown-files t)        
(global-set-key [(f12)] 'speedbar-get-focus) ;; F12 para mostrar/ocultar

;; Autoañadir paréntesis o llaves de cierre
(setq skeleton-pair t)
(global-set-key "[" 'skeleton-pair-insert-maybe)
(global-set-key "(" 'skeleton-pair-insert-maybe)
(global-set-key "{" 'skeleton-pair-insert-maybe)
(global-set-key "'" 'skeleton-pair-insert-maybe)
(global-set-key "\"" 'skeleton-pair-insert-maybe)
(global-set-key "<" 'skeleton-pair-insert-maybe)

;; Dar permisos de ejecución al fichero si es un script
(setq after-save-hook
      (quote (executable-make-buffer-file-executable-if-script-p)))

;; Activar interactively-do-things:
;;  minibufer interactivo para archivos, bufers
(ido-mode t)

;; Activar icomplete mode:
;;  minibufer interactivo para variables, funciones
(icomplete-mode t)

;; RELOJ ==========================================================
;; Si aparece el reloj, se ha leído todo el .emacs
(display-time)

;; EOF ============================================================
;; Han hecho aportaciones:
;; isi, antoine... @esdebian.org

La parte del entorno de slime no es necesaria; considérelo como una sugerencia.
Lo mismo sucede con la parte del corrector ortográfico y los extras.