Назначение клавиш в emacs с использованием семантики с интерактивными функциями и вызовом параметров по умолчанию
В семантической; для перемещения по объявлениям функций можно использовать C-c , J
открыть декларацию, и просто C-u C-SPC
вернуться туда, где была вызвана функция. Однако, чтобы сопоставить эти функции с некоторыми другими короткими сочетаниями клавиш, как это M-right
(имеется в виду клавиша alt в сочетании со стрелкой вправо), поэтому в нашем .emacs мы можем иметь:
(define-key global-map [(M-right)] 'semantic-complete-jump).
Это действительно работает, потому что C-c , J
отображается для вызова функции семантического полного перехода.
Итак, два вопроса:
Как отобразить M-слева на
C-u C-SPC
? помня этоC-u
не является частью команды, это просто аргумент, передаваемый вызываемой функции.Есть ли способ вызвать семантический полный переход через
C-c , J
не будучи интерактивным и не используя по умолчанию всегда значение по умолчанию (то есть это в основном слово, под которым находится курсор)? Это позволит избежать еще одного нажатия клавиши, намного быстрее перемещающегося по коду.
Это можно сделать с M-.
(сопоставленный с тегом find) и M-*
(сопоставленный с pop-tag-mark), играющий с тегами и etags с emacs, но с использованием семантики он кажется гораздо более мощным и идеальным для больших проектов с большим количеством кода.
S̲o̲ ̲t̲h̲e̲ ̲p̲r̲e̲v̲i̲o̲u̲s̲ ̲t̲w̲o̲ ̲̲̲ M-right
перемещаться внутри объявлений функций (без запроса) и M-left
чтобы перейти к предыдущему пункту, где эта функция была вызвана с использованием семантики.
1 ответ
Вот что у меня есть:
(add-hook
'c-mode-common-hook
(lambda()
(define-key c-mode-base-map
(kbd "C-x C-h") 'semantic-ia-fast-jump)))
(global-set-key
(kbd "M-p")
(lambda()(interactive) (set-mark-command 4)))