2010-12-02 7 views
12

me gustaría utilizar Ctrl +Tab en Emacs para mi propio uso, pero el modo org Emacs ya tiene esta cota. ¿Cómo puedo usar mi propio enlace en lugar del enlace de modo orgánico?Invalidar Ctrl-TAB en Emacs org.mode

En mis .emacs archivo que utilizo:

(global-set-key (kbd "<C-tab>") 'switch-view) 

y funciona en todas partes excepto en el modo Org

Respuesta

19

La clave de unión que describes se define en org.el así:

(org-defkey org-mode-map [(control tab)] 'org-force-cycle-archived) 

Esto significa que solo es válido en org-mode-map, uno de los mapas de teclas locales de org-mode. El siguiente código agrega un gancho que se ejecuta cuando se inicia org-mode. Simplemente elimina ese enlace de clave de org-mode-map.

(add-hook 'org-mode-hook 
      '(lambda() 
      (define-key org-mode-map [(control tab)] nil))) 

Agregue este código a su archivo .emacs y luego reinicie emacs.

+0

¿Dónde puedo añadir esta línea "add-hook"? Si pudiera agregarlo a .emacs sería ideal :) – Zubair

+0

Agregué este gancho a mi archivo .emacs y no cambio también – Zubair

+0

También traté de comentar el ord-defkey en org.el, pero sin cambios. Supongo que hay algún tipo de precompilación, por lo que se ignora el archivo org.el modificado – Zubair

2

Esto no funciona porque, como dijiste, org-mode usa su propia combinación de teclas para C-TAB. En otras palabras, incluso si define un enlace de clave global, tan pronto como invoque org-mode, sobrescribirá ese enlace con sus combinaciones de teclas locales.

Lo que puede hacer, sin embargo, es añadir una función de devolución de llamada que se invoca cada vez que inicie org-mode, y en el que la función de devolución de llamada se restablece C-TAB para invocar interruptor de visión:

(add-hook 'org-mode-hook (lambda() (local-set-key [(control tab)] 'switch-view))) 

Put la línea anterior en su archivo .emacs y la próxima vez que inicie un nuevo Emacs debería estar listo.

+0

Agregué la línea de arriba al final de mi archivo .emacs pero no tuvo efecto en absoluto – Zubair

+0

¿Reinició Emacs después de agregar la línea a su archivo .emacs? ¿Qué versión de Emacs usas? – Thomas

+0

En realidad, creo que me gusta más la versión de paprika. He intentado eso también, y me funciona en GNU Emacs 23.1.1. – Thomas

5

Una forma más robusta de establecer las combinaciones de teclas que desea aplicar en todas partes independientemente del modo principal es definir un modo menor global con un mapa de teclas personalizado.

Los modos menores también pueden tener mapas de teclas locales; cada vez que un modo menor es, en efecto, las definiciones en su mapa de teclas anulan tanto el mapa de teclas local del modo mayor y el mapa de teclas global

(http://www.gnu.org/software/emacs/manual/html_node/emacs/Local-Keymaps.html)

De esa manera usted no tiene que meterse con el modo principal de mapa de teclas local cada vez que te encuentres con un modo que bloquee tu combinación de teclas.

Ver este Q & A para más detalles:
Globally override key binding in Emacs