2016-12-07 24 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的GUI版本和我的Shift鍵做工精細的其他 的東西。)

+1

'(global-set-key(kbd「M-Q」)'unfill-paragraph)' – 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