]> git.eshelyaron.com Git - emacs.git/commitdiff
(calc-dispatch-map): Fix handling of upcased and
authorMartin Rudalics <rudalics@gmx.at>
Tue, 2 Sep 2008 08:49:49 +0000 (08:49 +0000)
committerMartin Rudalics <rudalics@gmx.at>
Tue, 2 Sep 2008 08:49:49 +0000 (08:49 +0000)
control-prefixed keys.  (Bug #835)

lisp/ChangeLog
lisp/calc/calc.el

index 86f7aa4f57b0f2ce0de1295324bfaf277c5a55b3..71f134449548109163035449c413200af2575d41 100644 (file)
@@ -1,3 +1,8 @@
+2008-09-02  Martin Rudalics  <rudalics@gmx.at>
+
+       * calc/calc.el (calc-dispatch-map): Fix handling of upcased and
+       control-prefixed keys.  (Bug #835)
+
 2008-09-02  Chong Yidong  <cyd@stupidchicken.com>
 
        * image-mode.el (image-mode): Fix 2008-07-19 change.
index 5b48938a6509d71228c2a6ff13e256653d2f2c6b..6666142200bac9acc4f0f0f86b6cdbc2213d4ae9 100644 (file)
@@ -1026,7 +1026,7 @@ Used by `calc-user-invocation'.")
     (define-key map "\C-j" 'calc-over)
     (define-key map "\C-y" 'calc-yank)
     (define-key map [mouse-2] 'calc-yank)
-      
+
     (mapc (lambda (x) (define-key map (char-to-string x) 'undefined))
           "lOW")
     (mapc (lambda (x) (define-key map (char-to-string x) 'calc-missing-key))
@@ -1096,11 +1096,17 @@ Used by `calc-user-invocation'.")
 (defvar calc-dispatch-map
   (let ((map (make-keymap)))
     (mapc (lambda (x)
-            (define-key map (char-to-string (car x)) (cdr x))
-            (when (string-match "abcdefhijklnopqrstuwxyz"
-                                (char-to-string (car x)))
-              (define-key map (char-to-string (- (car x) ?a -1)) (cdr x)))
-            (define-key map (format "\e%c" (car x)) (cdr x)))
+           (let* ((x-chr (car x))
+                  (x-str (char-to-string x-chr))
+                  (x-def (cdr x)))
+             (define-key map x-str x-def)
+             (when (string-match "[a-z]" x-str)
+               ;; Map upper case char to same definition.
+               (define-key map (upcase x-str) x-def)
+               (unless (string-match "[gmv]" x-str)
+                 ;; Map control prefixed char to same definition.
+                 (define-key map (vector (list 'control x-chr)) x-def)))
+             (define-key map (format "\e%c" x-chr) x-def)))
           '( ( ?a . calc-embedded-activate )
              ( ?b . calc-big-or-small )
              ( ?c . calc )