изменить карту ключей Emacs (с C-c на C- \) - PullRequest
5 голосов
/ 13 июня 2011

Я пытаюсь изменить карты ключей в Emacs (для использования с cscope). Cscope имеет привязки типа

"C-c s s", "C-c s g", "C-c s G" ... etc

Поэтому я пытаюсь изменить карту на C-\ s, C-\ g, C-\ G ... etc

Я пытался использовать

(define-key global-map "\C-\\-s"  'cscope-find-this-symbol)

жалуется:

error: Key sequence C-\ - a starts with non-prefix key C-\

Как мне исправить это. Я новичок в Emacs и Elisp. Я попытался использовать функцию define-prefix-command, как предложено в Emacs Wiki Но это не помогло, может быть, я не правильно его использовал. Может кто-нибудь сообщить мне о любом ресурсе, который может помочь мне сделать это изменение. Пример фрагмента также будет полезен.

Спасибо.

Ответы [ 2 ]

7 голосов
/ 13 июня 2011

Вы пытаетесь изменить определение C - \ s . Однако C - \ уже связан с другой командой. (Вы можете узнать, с чем связан ключ с помощью C-h k .)

Основное объяснение таково: ваша команда никогда не будет выполнена. Эта другая команда уже выполняется после первого нажатия клавиши. Один из способов решить эту проблему - сначала отменить другой ключ. Затем Emacs может превратить его в « префиксный ключ ».

(define-key global-map "\C-\\" nil)

Вы также сказали "\ C - \\ - s", но вы имели в виду "\ C - \\ s". «-» означает «одновременно».

(define-key global-map "\C-\\s" 'cscope-find-this-symbol)
3 голосов
/ 13 июня 2011

Вместо изменения глобальной таблицы ключей имеет смысл адаптировать только локальную таблицу ключей в буфере Си. Вы можете достичь этого, добавив ловушку, которая вызывается каждый раз, когда вызывается режим cscope.

В зависимости от того, используете ли вы xscope.el (который входит в состав пакета cscope) или cscope.el, вам придется использовать немного другой код, поскольку они предоставляют разные переменные хука.

xscope.el

(add-hook 'cscope-minor-mode-hooks
          '(lambda ()
             (define-key cscope:map "\C-\\s" 'cscope-find-this-symbol)
             (define-key cscope:map ....)))

cscope.el

(add-hook 'cscope-bind-keys-hook
          '(lambda ()
             (local-set-key  "\C-\\s"  'cscope-find-this-symbol)
             (local-sey-key ....)))

В любом случае поместите приведенные выше строки в ваш файл .emacs. .... означает дальнейшие привязки клавиш, замените их более привязками по своему вкусу.

После перезапуска Emacs вы должны получить C - \ сочетаний клавиш в дополнение к привязкам клавиш по умолчанию для cscope.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...