2014-09-02 5 views
1

J'utilise à la fois GNU Emacs pour OSX et Aquamacs. J'aime définir les raccourcis clavier qui utilisent la touche de commande Mac .comment définir des raccourcis clavier pour GNU Emacs et Aquamacs?

Malheureusement, la syntaxe pour spécifier la clé est différente pour chacun.

En Aquamacs, il ressemble à ceci:

(define-key osx-key-mode-map (kbd "A-h") 'replace-string) 

Dans GNU Emacs pour OSX, il ressemble à ceci:

(define-key key-minor-mode-map (kbd "s-h") 'replace-string) 

Y at-il un moyen de spécifier ces raccourcis clavier d'une manière qui les deux GNU Emacs et Aquamacs comprendront, de sorte que je n'ai pas à maintenir et à mettre à jour deux fichiers .emacs séparés chaque fois que j'ajoute une nouvelle liaison de clé?

+0

Je n'utilise pas Aquamacs, mais je crois que la clé de commande Mac * est * la clé méta (lait écrémé [ce tutoriel] (http://ergoemacs.org/emacs/keyboard_shortcuts.html)). Il semble que vous devriez simplement pouvoir '(chaîne de remplacement global-set-key (kbd" M-h ") 'remplacer-chaîne)'. – Dan

+0

Non, ce sont deux clés séparées. Vous pensez à la clé d'option. – incandescentman

Répondre

2

Sur la base de suggestion lawlist, vous pouvez même définir une fonction pour le faire:

(defvar gnuemacs-flag (string-match "GNU" (emacs-version))) 
(defvar aquamacs-flag (string-match "Aquamacs" (emacs-version))) 

(defun define-hyper-key (key fun) 
    (cond 
    (aquamacs-flag 
    (define-key osx-key-mode-map (kbd (concat "A-" key)) fun)) 
    (gnuemacs-flag 
    (define-key key-minor-mode-map (kbd (concat "s-" key)) fun)))) 

;; The aquamacs/gnuemacs keybindings: 
(define-hyper-key "h" 'replace-string) 
+0

Whoa, c'est génial! – incandescentman

2

C'est quelque chose que j'emprunté ici: http://www.hulubei.net/tudor/configuration/download/.emacs

Je ne l'ai pas testé le code, mais il semble que cela devrait fonctionner. Avec ce type de configuration, l'affiche d'origine peut gérer un seul fichier .emacs et/ou charger le fichier de préférences.

(defvar gnuemacs-flag (string-match "GNU" (emacs-version))) 

(defvar aquamacs-flag (string-match "Aquamacs" (emacs-version))) 

(cond 
    (aquamacs-flag 
    (define-key osx-key-mode-map (kbd "A-h") 'replace-string)) 
    (gnuemacs-flag 
    (define-key key-minor-mode-map (kbd "s-h") 'replace-string))) 
Questions connexes