]> git.eshelyaron.com Git - emacs.git/commitdiff
(calc-edit-top): New variable.
authorJay Belanger <jay.p.belanger@gmail.com>
Sun, 2 Jan 2005 17:04:37 +0000 (17:04 +0000)
committerJay Belanger <jay.p.belanger@gmail.com>
Sun, 2 Jan 2005 17:04:37 +0000 (17:04 +0000)
(calc-edit-mode): Set calc-edit-top to be the beginning of the edited
object. Change header properties.
(calc-edit-finish, calc-edit-finish-stack-object)
(calc-edit-show-buffer): Use calc-edit-top to find the beginning of the
edited object.

lisp/calc/calc-yank.el

index 6f75613b0147a09d45db0a99ab347638ff21bf43..53d5946e073cf3316e75c1c11f4b09f3972bb3b3 100644 (file)
 (defvar calc-edit-handler)
 (defvar calc-restore-trail)
 (defvar calc-allow-ret)
+(defvar calc-edit-top)
 
 (defun calc-edit-mode (&optional handler allow-ret title)
   "Calculator editing mode.  Press RET, LFD, or C-c C-c to finish.
@@ -470,7 +471,9 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
               "Press `C-c C-c'"
               (if allow-ret "" " or RET")
               " to finish, `C-x k RET' to cancel.\n\n")
-             'font-lock-face 'italic))))
+             'font-lock-face 'italic 'read-only t 'rear-nonsticky t 'front-sticky t))
+    (make-local-variable 'calc-edit-top)
+    (setq calc-edit-top (point))))
 (put 'calc-edit-mode 'mode-class 'special)
 
 (defun calc-show-edit-buffer ()
@@ -487,8 +490,7 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
          (if win
              (delete-window win))))
     (set-buffer-modified-p nil)
-    (goto-char (point-min))
-    (forward-line 2)))
+    (goto-char calc-edit-top)))
 
 (defun calc-edit-return ()
   (interactive)
@@ -522,11 +524,7 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
                  (set-buffer original)
                  (not (eq major-mode 'calc-mode))))
        (error "Original calculator buffer has been corrupted")))
-    (goto-char (point-min))
-    (when (looking-at "Calc Edit\\|Editing ")
-      (forward-line 1))
-    (if (looking-at "^ *$")
-        (forward-line 1))
+    (goto-char calc-edit-top)
     (if (buffer-modified-p)
        (eval calc-edit-handler))
     (if one-window
@@ -551,7 +549,7 @@ To cancel the edit, simply kill the *Calc Edit* buffer."
 
 (defun calc-finish-stack-edit (num)
   (let ((buf (current-buffer))
-       (str (buffer-substring (point) (point-max)))
+       (str (buffer-substring calc-edit-top (point-max)))
        (start (point))
        pos)
     (if (and (integerp num) (> num 1))