;; Copyright (C) 1990, 1991, 1992, 1993, 2001 Free Software Foundation, Inc.
;; Author: David Gillespie <daveg@synaptics.com>
-;; Maintainers: D. Goel <deego@gnufans.org>
-;; Colin Walters <walters@debian.org>
+;; Maintainer: Jay Belanger <belanger@truman.edu>
;; This file is part of GNU Emacs.
;;; Code:
;; This file is autoloaded from calc-ext.el.
-(require 'calc-ext)
+(require 'calc-ext)
(require 'calc-macs)
-(defun calc-Need-calc-yank () nil)
-
-
;;; Kill ring commands.
(defun calc-kill (nn &optional no-delete)
(define-key calc-edit-mode-map "\r" 'calc-edit-return)
(define-key calc-edit-mode-map "\C-c\C-c" 'calc-edit-finish))
+(defvar calc-original-buffer)
+(defvar calc-return-buffer)
+(defvar calc-one-window)
+(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.
To cancel the edit, simply kill the *Calc Edit* buffer."
(setq calc-restore-trail (get-buffer-window (calc-trail-buffer)))
(make-local-variable 'calc-allow-ret)
(setq calc-allow-ret allow-ret)
- (erase-buffer)
- (insert (or title title "Calc Edit Mode")
- ". Press "
- (if (eq (lookup-key (current-global-map) "\e#") 'calc-dispatch)
- "M-# M-# or C-c C-c"
- (if allow-ret "C-c C-c" "RET"))
- " to finish, "
- (if (eq (lookup-key (current-global-map) "\e#") 'calc-dispatch)
- "M-# x"
- "C-x k RET")
- " to cancel.\n")))
+ (let ((inhibit-read-only t))
+ (erase-buffer))
+ (add-hook 'kill-buffer-hook (lambda ()
+ (let ((calc-edit-handler nil))
+ (calc-edit-finish t))
+ (message "(Cancelled)")) t t)
+ (insert (propertize
+ (concat
+ (or title title "Calc Edit Mode. ")
+ "Press `C-c C-c'"
+ (if allow-ret "" " or RET")
+ " to finish, `C-x k RET' to cancel.\n\n")
+ '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 ()
(if win
(delete-window win))))
(set-buffer-modified-p nil)
- (goto-char (point-min))
- (forward-line 1)))
+ (goto-char calc-edit-top)))
(defun calc-edit-return ()
(interactive)
(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))
+ (goto-char calc-edit-top)
(if (buffer-modified-p)
(eval calc-edit-handler))
(if one-window
(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))
(calc-enter-result num "edit" vals)
(calc-enter-result 1 "edit" vals (- num))))))))))
+(provide 'calc-yank)
+
;;; arch-tag: ca61019e-caca-4daa-b32c-b6afe372d5b5
;;; calc-yank.el ends here