Pregunta:
¿Cómo puedo configurar Emacs para establecer el método de entrada predeterminado para todos los búferes nuevos? Me gustaría usar polish-slash
todas partes.
Yo uso Emacs 24.3.1.
Estoy interesado en una solución que se pueda pegar en init.el
para poder reutilizar fácilmente esta configuración entre mis máquinas.
Usar solo (setq default-input-method "polish-slash")
en init.el
no funciona para mí:
-
Ch v default-input-method
devuelve"polish-slash"
. -
Ch v current-input-method
devuelvenil
en probablemente cualquier búfer.init.el
y*scratch*
.
Respuesta:
Configuración default-input-method
En la interfaz Personalizar ( Mx customize
o “Opciones” → “Personalizar Emacs” → “Grupo de personalización de nivel superior”), navegue hasta “Entorno” → “I18n” → “MULE”. Establezca el "Método de entrada predeterminado": elija "Cadena" en el menú de valores y establezca la cadena en polish-slash
. Utilice el botón "Estado" para establecer el valor de la sesión actual o para guardarlo.
También puede acceder a esta configuración de Mx customize-variable
o mediante el menú “Opciones” → “Personalizar Emacs” → “Opción específica”, luego ingresando el default-input-method
.
Alternativamente, configure la variable default-input-method
en su .emacs
:
(setq default-input-method "polish-slash")
Una vez hecho esto, polish-slash
será el método de entrada predeterminado. Sin embargo, de forma predeterminada, no hay ningún método de entrada activo (que es diferente, internamente, de algún tipo de método de entrada "ninguno" o "paso a través"). El método de entrada predeterminado es el que se activa escribiendo C-\
( toggle-input-method
).
Activar el método de entrada por defecto
Si desea que el método de entrada esté activado de forma predeterminada, necesita un paso adicional. No puedo encontrar una forma de alto nivel para hacerlo. Una forma de bajo nivel es agregar las siguientes líneas a su archivo de inicio:
(defvar use-default-input-method t)
(make-variable-buffer-local 'use-default-input-method)
(defun activate-default-input-method ()
(interactive)
(if use-default-input-method
(activate-input-method default-input-method)
(inactivate-input-method)))
(add-hook 'after-change-major-mode-hook 'activate-default-input-method)
(add-hook 'minibuffer-setup-hook 'activate-default-input-method)
(defun inactivate-default-input-method ()
(setq use-default-input-method nil))
(add-hook 'c-mode-hook 'inactivate-default-input-method)
La variable use-default-input-method
y la función inactivate-default-input-method
proporcionan una forma de desactivar el método de entrada (puede ser molesto, por ejemplo, en los modos de programación). Si desea desactivar el método predeterminado en algunos modos, registre la función inactivate-default-input-method
en el enlace de inicio de ese modo, como en el ejemplo anterior para el modo C y los modos derivados (C ++, Java, etc.).
El código anterior activa sistemáticamente el método de entrada predeterminado en el minibúfer (comente esa línea para desactivarla de forma predeterminada). El código más inteligente podría usar el mismo método de entrada o la falta del mismo que el búfer que estaba activo anteriormente, o podría elegir un método de entrada dependiendo de lo que se solicite al minibúfer (por ejemplo, se usa para cadenas de búsqueda pero no para nombres de archivos), pero declaro esto más allá del alcance de esta respuesta.
Si prefiere incluir los modos en la lista blanca donde el método de entrada se activa automáticamente, agregue la función activate-default-input-method
continuación al gancho de inicio de estos modos, como en el ejemplo siguiente para el modo Texto y los modos derivados.
(defun activate-default-input-method ()
(interactive)
(activate-input-method default-input-method))
(add-hook 'text-mode-hook 'activate-default-input-method)