Anclar una lista abbrev en Emacs a un método de teclado
El abbrev-mode
de Emacs es muy útil a la hora de definir listas de autocompletado de palabras. De hecho, yo me
construí hace tiempo una larga lista para partículas de griego politónico que me facilita bastante la escritura de esta
lengua, pues basta con escribir la forma sin diacríticos para que el autocompletado haga el resto. La lista
contempla la posición y tipo de diacríticos más habituales. Por ejemplo, es más común encontrar καὶ, con acento grave,
que καί con agudo. Pero si quiero poner la partícula con agudo debo entonces teclear tras και la secuencia C-q
, que
desactiva en ese caso, momentáneamente, el autocompletado. La lista, que he llamado griego-abbrev
, es un tanto extensa
para ponerla aquí como bloque de código, pero quien desee usarla puede copiarla de este snippet de GitLab.
Por otra parte, como la lista sólo me tiene sentido usarla cuando escribo griego, se me ocurrió escribir una función que
la «activase» únicamente cuando el método de teclado para griego politónico de Emacs (greek-ibycus4
) estuviese también
activo. La función, bien sencilla, quedó así:
(defun mi-griego-input-abbrev () (when (equal current-input-method "greek-ibycus4") (setq local-abbrev-table griego-abbrev)))
Es decir, cuando el input-method
es greek-ibycus4
, la variable local-abbrev-table
toma el valor de mi lista
griego-abbrev
. Sólo queda, entonces, añadir la función al hook input-method-activate-hook
, para que se ejecute
cada vez que active el input method. Y al hook contrario, input-method-deactivate-hook
le añado una función
anónima que devuelva la variable local-abbrev-table
a nil
. Así mi lista deja de estar operativa cuando desactivo el
input method:
(add-hook 'input-method-activate-hook #'mi-griego-input-abbrev) (add-hook 'input-method-deactivate-hook (lambda () (setq local-abbrev-table nil)))
Estrambote: Por cierto, para activar rápidamente el método de teclado griego en Emacs tengo definido este atajo:
(global-set-key (kbd "C-x 3") '(lambda () (interactive) (set-input-method "greek-ibycus4")))
¿Por qué C-x 3
, cuando el método de teclado se llama «greek-ibycus4? Sencillamente, porque me resulta mucho más cómodo
acceder al 3 que al 4 en el teclado (toda la secuencia la pulso con la mano izquierda). Los atajos más habituales en
Emacs (pienso) deben ser ergonómicos; mientras que los que se ejecuten de pascuas en ramos conviene que sean
mnemotécnicos.
∞
Publicado: 17/10/2019
Última actualización: 17/10/2019
Esta obra está bajo una licencia de Creative Commons Reconocimiento-NoComercial 4.0 Internacional.