Как определить привязки клавиш для GNU Emacs и Aquamacs?
Я использую как GNU Emacs для OSX, так и Aquamacs. Мне нравится определять привязки клавиш, которые используют командную клавишу Mac ⌘.
К сожалению, синтаксис для указания клавиши different отличается для каждого.
В Aquamacs это выглядит так:
(define-key osx-key-mode-map (kbd "A-h") 'replace-string)
В GNU Emacs для OSX это выглядит так:
(define-key key-minor-mode-map (kbd "s-h") 'replace-string)
Есть ли способ указать эти привязки клавиш так, чтобы они понимали и GNU Emacs, и Aquamacs, чтобы мне не приходилось поддерживать и обновлять два отдельных файла.emacs каждый раз, когда я добавляю новую привязку ключей?
2 ответа
Основываясь на предложении юридического списка, вы могли бы даже определить функцию для этого:
(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)
Это то, что я позаимствовал здесь: http://www.hulubei.net/tudor/configuration/download/.emacs
Я не проверял код, но похоже, что он должен работать. При таком типе настройки оригинальный постер может поддерживать только один .emacs
файл и / или загрузить файл настроек.
(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)))