Question

Je voudrais utiliser Ctrl + Tab emacs pour mon propre usage, mais le mode d'Emacs a déjà cette borne. Comment puis-je utiliser mon propre liant au lieu de la mode org obligatoire.

Dans mon emacs fichier je utiliser:

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

et il fonctionne partout, sauf dans org-mode

Était-ce utile?

La solution

La clé que vous décrivez la liaison est définie dans org.el comme ceci:

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

Cela signifie qu'il est seulement valable dans org-mode-map, l'un des keymaps locaux org-mode. Le code suivant ajoute un crochet qui est exécuté lorsque org-mode démarre. Il supprime simplement cette clé de liaison de org-mode-map.

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

Ajoutez ce code à votre fichier .emacs puis emacs restart.

Autres conseils

A plus de façon robuste pour définir les raccourcis clavier que vous voulez prendre effet partout quel que soit le mode majeur est de définir un mode global mineur avec un keymap personnalisé.

  

modes secondaires peuvent aussi avoir keymaps locales; chaque fois qu'un mode mineur est en vigueur, les définitions figurant dans la correction de plan de codage à la fois keymap locale est le mode principal et le plan de codage global

( http: //www.gnu. org / logiciel / emacs / manuel / html_node / emacs / local-Keymaps.html )

De cette façon, vous n'avez pas besoin de jouer avec les grands keymap local en mode chaque fois que vous rencontrez un mode qui aplatit votre raccourci clavier.

Voir ce Q & A pour plus de détails:
Globalement touche de remplacement obligatoire dans Emacs

Cela ne fonctionne pas parce que, comme vous l'avez dit, org-mode utilise son propre raccourci clavier pour C-TAB. En d'autres termes, même si vous définissez un raccourci clavier global, dès que vous invoquez org-mode, il écrasera que la liaison avec ses raccourcis clavier locaux.

Qu'est-ce que vous pouvez faire, cependant, est d'ajouter une fonction de rappel qui est appelée chaque fois que vous démarrez org-mode, et dans cette fonction de rappel vous remis à zéro C-TAB pour Invoke commutateur vue:

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

Mettre la ligne ci-dessus dans votre .emacs et la prochaine fois que vous démarrez une nouvelle Emacs vous devriez être bon d'aller.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top