* 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
This commit is contained in:
Juri Linkov 2013-08-28 19:39:51 +03:00
parent 121f8c95b2
commit 274919fde2
2 changed files with 20 additions and 1 deletions

View file

@ -1,3 +1,10 @@
2013-08-28 Juri Linkov <juri@jurta.org>
* 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 <juri@jurta.org>
* isearch.el (isearch-search): Change regexp error message for

View file

@ -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.