2011-06-24 19 views
5

Cuando corro emacsclient que no responde a los clics del ratón. Mi proceso principal Emacs se ejecuta en un terminal y responde a los clics del ratón correctamente porque tengo el siguiente código en mi archivo de configuración de Emacs:emacsclient no responde a los clics del ratón

(xterm-mouse-mode 1) 

¿Por qué no emacsclient responder a los clics del ratón? ¿Hay alguna manera de hacerlo?

Respuesta

10

Esto es probablemente porque ciertas configuraciones en Emacs son específicas del terminal , y la manipulación de tales configuraciones en su archivo init solo afectará al terminal que está activo en el momento en que se evaluó el archivo init.

El siguiente Q + A se ocupa de la misma cuestión, y entra en los detalles:

Run command on new frame with daemon/client in Emacs

Para su problema, creo que esto debería hacer el truco:

(defun my-terminal-config (&optional frame) 
    "Establish settings for the current terminal." 
    (if (not frame) ;; The initial call. 
     (xterm-mouse-mode 1) 
    ;; Otherwise called via after-make-frame-functions. 
    (if xterm-mouse-mode 
     ;; Re-initialise the mode in case of a new terminal. 
     (xterm-mouse-mode 1)))) 
;; Evaluate both now (for non-daemon emacs) and upon frame creation 
;; (for new terminals via emacsclient). 
(my-terminal-config) 
(add-hook 'after-make-frame-functions 'my-terminal-config) 
+0

Excelente ! Realmente estaba teniendo este problema solo en las sesiones de pantalla de GNU, pero esto lo soluciona. – hekevintran

+0

Bueno para escuchar. Me acabo de dar cuenta de que como 'xterm-mouse-mode' es un modo minoritario global, mi código tenía fallas porque si intencionalmente deshabilita ese modo, y luego crea un nuevo cuadro, volvería a encenderlo nuevamente. He editado el código en consecuencia. Creo que el modo es lo suficientemente inteligente como para no necesitar la verificación 'window-system' que inicialmente incluí (y que no fue suficiente para identificar un xterm en cualquier caso). – phils

Cuestiones relacionadas