]> git.eshelyaron.com Git - emacs.git/commitdiff
Change the Calc text input method to insert at point
authorTino Calancha <tino.calancha@gmail.com>
Tue, 11 Aug 2020 13:40:48 +0000 (15:40 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Tue, 11 Aug 2020 13:40:48 +0000 (15:40 +0200)
* lisp/calc/calc.el (calcDigit-delchar): New command to delete chars
forward in the calc minibuffer.
(calc-digit-map): Bind calcDigit-delchar to '\C-d'.
(calcDigit-key): Do not go to (point-max) in calc minibuffer
before insert a digit (Bug#24612).

etc/NEWS
lisp/calc/calc.el

index 49c0b8688c437e445d59586a91604e1f89f602b5..271a1904906d7f6f209bef46931dc69791c7494f 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -757,6 +757,15 @@ name.
 ** Recentf
 The recentf files are no longer backed up.
 
+** Calc
+
+---
+*** The behaviour when doing forward-delete has been changed.
+Previously, using the 'C-d' command would delete the final number in
+the input field, no matter where point was.  This has been changed to
+work more traditionally, with 'C-d' deleting the next character.
+Likewise, point isn't moved to the end of the string before inserting
+digits.
 
 ** Miscellaneous
 
index 09b4962107077bb38da125236e35875169c550de..fb1287baaa6f1cae3ab9ece4aa73a0877c7d77eb 100644 (file)
@@ -1087,8 +1087,26 @@ Used by `calc-user-invocation'.")
          (append (where-is-internal 'delete-backward-char global-map)
                  (where-is-internal 'backward-delete-char global-map)
                  (where-is-internal 'backward-delete-char-untabify global-map)
-                 '("\C-d"))
-       '("\177" "\C-d")))
+                 '("\177"))
+       '("\177")))
+
+(mapc (lambda (x)
+        (ignore-errors
+          (define-key calc-digit-map x 'calcDigit-delchar)
+          (define-key calc-mode-map x 'calc-pop)
+          (define-key calc-mode-map
+            (if (and (vectorp x) (featurep 'xemacs))
+                (if (= (length x) 1)
+                    (vector (if (consp (aref x 0))
+                                (cons 'meta (aref x 0))
+                              (list 'meta (aref x 0))))
+                  "\e\C-d")
+              (vconcat "\e" x))
+            'calc-pop-above)))
+      (if calc-scan-for-dels
+          (append (where-is-internal 'delete-forward-char global-map)
+                  '("\C-d"))
+        '("\C-d")))
 
 (defvar calc-dispatch-map
   (let ((map (make-keymap)))
@@ -2343,7 +2361,6 @@ the United States."
 
 (defun calcDigit-key ()
   (interactive)
-  (goto-char (point-max))
   (if (or (and (memq last-command-event '(?+ ?-))
               (> (buffer-size) 0)
               (/= (preceding-char) ?e))
@@ -2386,8 +2403,7 @@ the United States."
            (delete-char 1))
        (if (looking-at "-")
            (delete-char 1)
-         (insert "-")))
-      (goto-char (point-max)))
+         (insert "-"))))
      ((eq last-command-event ?p)
       (if (or (calc-minibuffer-contains ".*\\+/-.*")
              (calc-minibuffer-contains ".*mod.*")
@@ -2440,17 +2456,9 @@ the United States."
   (setq calc-prev-prev-char calc-prev-char
        calc-prev-char last-command-event))
 
-
 (defun calcDigit-backspace ()
   (interactive)
-  (goto-char (point-max))
-  (cond ((calc-minibuffer-contains ".* \\+/- \\'")
-        (backward-delete-char 5))
-       ((calc-minibuffer-contains ".* mod \\'")
-        (backward-delete-char 5))
-       ((calc-minibuffer-contains ".* \\'")
-        (backward-delete-char 2))
-       ((eq last-command 'calcDigit-start)
+  (cond ((eq last-command 'calcDigit-start)
         (erase-buffer))
        (t (backward-delete-char 1)))
   (if (= (calc-minibuffer-size) 0)
@@ -2925,6 +2933,20 @@ the United States."
                     (- (- (nth 2 a) (nth 2 b)) ldiff))))
 
 
+(defun calcDigit-delchar ()
+  (interactive)
+  (cond ((looking-at-p " \\+/- \\'")
+         (delete-char 5))
+       ((looking-at-p " mod \\'")
+        (delete-char 5))
+       ((looking-at-p " \\'")
+        (delete-char 2))
+       ((eq last-command 'calcDigit-start)
+        (erase-buffer))
+       (t (unless (eobp) (delete-char 1))))
+  (when (= (calc-minibuffer-size) 0)
+    (setq last-command-event 13)
+    (calcDigit-nondigit)))
 
 
 (defvar math-comp-selected)