Ago 11 2008
Ispell, flyspell y abbrev
Emacs incluye ispell para la corrección automática de texto. Cada diccionario es guardado en el fichero .ispell_<lenguaje> donde lenguaje es cualquier lenguaje, que por defecto es english.
Para instalar los diccionarios e ispell (si es que no se tiene ya) desde gentoo podemos instalarlo haciendo:
# emerge aspell aspell-en aspell-es
O bien si utilizamos debian podemos hacer:
# apt-get install aspell aspell-en aspell-es
Con esto instalaremos los diccionarios en inglés y castellano, aunque hay muchos otros, disponibles en la web oficial de aspell.
Para lanzar ispell tan sólo debemos invocarlo mediante M-x ispell-buffer. Esto nos resaltará la palabra y nos mostrará las posibles alternativas, las cuales son:
- un número o letra en las opciones mostradas : cambiar la palabra mediante el índice asociado a cada palabra.
- ? : para más opciones.
- SPC (espacio) : para no modificar dicha palabra.
- u : convertir la palabra en minúsculas.
- i : saltar a la siguiente palabra no conocida.
- r : reemplazar la palabra.
- R : reemplazar las palabras usando query-replace.
- a : aceptar la palabra para el resto de la sesión para todos los buffers (y por lo tanto no volver a resaltarla como inválida).
- A : aceptar la palabra para el resto de la sesión para este buffer (y por lo tanto no volver a resaltarla como inválida).
- C-r : edición recursiva.
- C-M-c : salir de la edición recursiva.
- ! : reemplazar todas las ocurrencias después de haber presionado R (evitar el query del replace).
Para analizar una sola palabra y no todo el buffer tan sólo debemos pulsar M-$ el cual tiene el comando asociado ispell-word. Si en cambio queremos completar una palabra podemos usar el comando M-tab que tiene el comando asociado ispell-complete-word.
Además de ispell, tenemos flyspell, que tiene el mismo efecto que ispell, pero este se realiza en tiempo real, a medida que vamos escribiendo cualquier palabra ‘on the fly’. Para lanzar flyspell tan sólo debemos invocarlo mediante M-x flyspell-mode. Existe otro modo el cual se invoca mediante M-x flyspell-prog-mode diseñado para programadores. En este modo podremos hacer que flyspell analice texto en nuestro código fuente pero sólo para el código comentado o cadenas.
Otra alternativa es usar M-x flyspell-buffer para lanzar flyspell sobre el buffer actual, el cual nos resaltará las palabras que no encuentre o reconozca en nuestro diccionario.
Resumiendo los comandos que podemos realizar con ispell y flyspell:
- M-$ : ‘ispell-word‘; analiza la palabra sobre el cursor.
- (sin keystroke asociada) : ‘ispell-region‘; analiza una región.
- (sin keystroke asociada) : ‘ispell-buffer‘; analiza un buffer.
- (sin keystroke asociada) : ‘ispell-message‘; analiza el cuerpo de un mail.
- (sin keystroke asociada) : ‘ispell-comments-and-strings‘; analiza los comentarios y cadenas en el código de un programa.
- (sin keystroke asociada) : ‘ispell-continue‘; continua ispell desde la última vez que se finalizó con C-g.
- (sin keystroke asociada) : ‘ispell-kill-ispell‘; finaliza el proceso de análisis.
- M-TAB : ‘ispell-complete-word‘; imprime las posibles opciones para la palabra actual.
- (sin keystroke asociada) : ‘flyspell-mode‘; analiza el texto en tiempo real (on the fly).
- (sin keystroke asociada) : ‘flyspell-buffer‘; analiza el texto en tiempo real para dicho buffer.
Si queremos activar flyspell por defecto podemos añadir en nuestro .emacs la línea:
(setq-default flyspell-mode t)
Por ultimo podemos usar abbrev para completar palabras técnicas, para ello podemos usar M-/ para dabbrev-expand y emacs completará la palabra a la mas cercana. Para entrar en el modo abreviado tan sólo debemos lanzar M-x abbrev-mode. Emacs guarda las abreviaturas en el fichero .abbrev_defs.
- Añadir abreviaturas: debemos entrar en el modo citado anteriormente y pulsar C-x a i g para añadir abreviaciones globales add-inverse-global o C-x a i l para añadir abreviaciones locales add-inverse-local.
- Para cargar el fichero de abreviaturas por defecto: y estar en dicho modo podemos añadir éstas líneas en nuestro .emacs:
(setq-default abbrev-mode t)
(read-abbrev-file «~/.abbrev_defs»)
(setq save-abbrevs t)
- Eliminar abreviaturas: Si lo que queremos es eliminar una abreviatura debemos pulsar M-x edit-abbrevs. Debemos eliminar líneas completas con C-k o similar, no debemos editar o añadir líneas ya que Emacs mantiene su propio formato. Para guardar los cambios despues de eliminar líneas debemos usar M-x write-abbrev-file.
- Listar abreviaturas: Si lo que queremos en cambio es listar pero no editar abreviaturas podemos lanzar el comando M-x list-abbrevs.
- Deshabilitar abreviaturas: Debemos pulsar M-x kill-all-abbrevs o bien M-x read-abbrev-file y eliminar la línea deseada.
- Cancelar la última abreviatura: Debemos pulsar M-x unexpand-abbrev.