From: Juri Linkov Date: Wed, 28 Aug 2013 16:39:51 +0000 (+0300) Subject: * lisp/isearch.el (isearch-reread-key-sequence-naturally): Use non-nil X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1686^2~77 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=274919fde2998e88a7f52e8076f0e39322921f70;p=emacs.git * lisp/isearch.el (isearch-reread-key-sequence-naturally): Use non-nil arg DONT-DOWNCASE-LAST of `read-key-sequence'. (isearch-other-meta-char): Handle an undefined shifted printing character by downshifting it. Fixes: debbugs:15200 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index efd6d7b3fac..0a07d90dd8f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2013-08-28 Juri Linkov + + * isearch.el (isearch-reread-key-sequence-naturally): Use non-nil + arg DONT-DOWNCASE-LAST of `read-key-sequence'. + (isearch-other-meta-char): Handle an undefined shifted printing + character by downshifting it. (Bug#15200) + 2013-08-28 Juri Linkov * isearch.el (isearch-search): Change regexp error message for diff --git a/lisp/isearch.el b/lisp/isearch.el index 58f50eb9054..131ab5893d4 100644 --- a/lisp/isearch.el +++ b/lisp/isearch.el @@ -2249,7 +2249,9 @@ the bottom." Return the key sequence as a string/vector." (isearch-unread-key-sequence keylist) (let (overriding-terminal-local-map) - (read-key-sequence nil))) ; This will go through function-key-map, if nec. + ;; This will go through function-key-map, if nec. + ;; The arg DONT-DOWNCASE-LAST prevents premature shift-translation. + (read-key-sequence nil nil t))) (defun isearch-lookup-scroll-key (key-seq) "If KEY-SEQ is bound to a scrolling command, return it as a symbol. @@ -2307,6 +2309,16 @@ Isearch mode." (lookup-key local-function-key-map key))) (while keylist (setq key (car keylist)) + ;; Handle an undefined shifted printing character + ;; by downshifting it if that makes it printing. + ;; (As read-key-sequence would normally do, + ;; if we didn't have a default definition.) + (if (and (integerp key) + (memq 'shift (event-modifiers key)) + (>= key (+ ?\s (- ?\S-a ?a))) + (/= key (+ 127 (- ?\S-a ?a))) + (< key (+ 256 (- ?\S-a ?a)))) + (setq key (- key (- ?\S-a ?a)))) ;; If KEY is a printing char, we handle it here ;; directly to avoid the input method and keyboard ;; coding system translating it.