2016-12-07 8 views
1

У меня есть следующие привязки:сдвинутой команда игнорируется, если несмещенная версия существует

M-q => fill-paragraph 
M-S-q => unfill-paragraph 

Но как ключевые результаты комбо в первом: fill-paragraph, так кажется, что Shift и, таким образом, unfill игнорируется. Я поставил второй сам:

(prelude-require-package 'unfill) 
(define-key prelude-mode-map "\M-\S-q" nil) ; don't let prelude dictate it 
(global-set-key (kbd "M-S-q") 'unfill-paragraph) 

Существует поведение Emacs, чтобы возвратиться к несмещенной последовательности когда смещенная версия не существует (это, кажется, хорошо, но должен не происходит в данном случае) , Поэтому, если у меня не было привязки M-S-q , тогда нажатие должно привести к fill-paragraph, что - это то, что я, к несчастью, вижу. Это говорит о том, что каким-то образом Emacs не знает о втором привязке. Но я проверял, что знает с C-h f unfill-paragraph, подтверждающий это. Вызов от M-x показывает, что он хорошо работает.

Почему игнорируется Shift?

(Это версия графического интерфейса пользователя Emacs и мои ключи сменной работа отлично подходит для других вещей.)

+1

как насчет '(глобальный-set-key (kbd" M-Q ") 'Неполный абзац)' – jenesaisquoi

+0

Спасибо, я думаю, что это работает. Вау. Но это раздражает, так как я видел использование «CS-» в нескольких местах (например, http://stackoverflow.com/questions/858713/can-emacs-differentiate-between-ctrl-r-and-ctrl-shift-r), и мне это нравится. –

+1

n.b. Это фактически дубликат [Почему ключевое связывание M-S-t не работает, пока работает C-S-t?] (Http://stackoverflow.com/q/38180797/324105) (которые видят некоторые объяснения/спекуляции) – phils

ответ

3

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

В этом случае, я думаю, вам понадобится ?\M-Q. Напротив, ?\C-Q - это то же самое, что и ?\C-q, поэтому вам нужно использовать ?\C-S-q, чтобы связать что-то с C-S-q.

Возможно, это заслуживает M-x report-emacs-bug.