From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.devel Subject: Re: momentary-string-display Date: Thu, 04 Jan 2007 08:31:04 -0700 Message-ID: References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Trace: sea.gmane.org 1167924727 17249 80.91.229.12 (4 Jan 2007 15:32:07 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 4 Jan 2007 15:32:07 +0000 (UTC) Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jan 04 16:32:05 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1H2UZO-0006sv-Mb for ged-emacs-devel@m.gmane.org; Thu, 04 Jan 2007 16:31:55 +0100 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1H2UZN-00087C-Rd for ged-emacs-devel@m.gmane.org; Thu, 04 Jan 2007 10:31:53 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1H2UZ9-00085X-7a for emacs-devel@gnu.org; Thu, 04 Jan 2007 10:31:39 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1H2UZ8-00084E-6p for emacs-devel@gnu.org; Thu, 04 Jan 2007 10:31:38 -0500 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1H2UZ7-00083u-VR for emacs-devel@gnu.org; Thu, 04 Jan 2007 10:31:38 -0500 Original-Received: from [80.91.229.2] (helo=ciao.gmane.org) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA:32) (Exim 4.52) id 1H2UZ7-00051m-6r for emacs-devel@gnu.org; Thu, 04 Jan 2007 10:31:37 -0500 Original-Received: from list by ciao.gmane.org with local (Exim 4.43) id 1H2UYr-0003RX-Ed for emacs-devel@gnu.org; Thu, 04 Jan 2007 16:31:21 +0100 Original-Received: from c-24-9-156-178.hsd1.co.comcast.net ([24.9.156.178]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 04 Jan 2007 16:31:21 +0100 Original-Received: from kevin.d.rodgers by c-24-9-156-178.hsd1.co.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 04 Jan 2007 16:31:21 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-To: emacs-devel@gnu.org Original-Lines: 99 Original-X-Complaints-To: usenet@sea.gmane.org X-Gmane-NNTP-Posting-Host: c-24-9-156-178.hsd1.co.comcast.net User-Agent: Thunderbird 1.5.0.9 (Macintosh/20061207) In-Reply-To: X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:64753 Archived-At: Richard Stallman wrote: > As I meant to say, the same heuristic can be used by replacing the > reference to insert-end with (+ pos (length string)) -- as long as > the new call to overlay-put causes a redisplay that updates window-end > just as the original call to insert does. > > I just made a change in window-end which I think will make it handle > that case correctly. > > So let's have your patch and install it. 2007-01-04 Kevin Rodgers * subr.el (momentary): New face. (momentary-string-display): Display the string via a temporary overlay using the new face, instead of inserting it in the buffer. *** subr.el~ Mon Dec 11 09:37:43 2006 --- subr.el Thu Jan 4 08:16:31 2007 *************** *** 1884,1889 **** --- 1884,1894 ---- (if all (save-excursion (set-buffer (other-buffer)))) (set-buffer-modified-p (buffer-modified-p))) + (defface momentary + '((t (:inherit mode-line))) + "Face for momentarily displaying text in the current buffer." + :group 'display) + (defun momentary-string-display (string pos &optional exit-char message) "Momentarily display STRING in the buffer at POS. Display remains until next event is input. *************** *** 1894,1915 **** Display MESSAGE (optional fourth arg) in the echo area. If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there." (or exit-char (setq exit-char ?\s)) ! (let ((inhibit-read-only t) ! ;; Don't modify the undo list at all. ! (buffer-undo-list t) ! (modified (buffer-modified-p)) ! (name buffer-file-name) ! insert-end) (unwind-protect (progn ! (save-excursion ! (goto-char pos) ! ;; defeat file locking... don't try this at home, kids! ! (setq buffer-file-name nil) ! (insert-before-markers string) ! (setq insert-end (point)) ;; If the message end is off screen, recenter now. ! (if (< (window-end nil t) insert-end) (recenter (/ (window-height) 2))) ;; If that pushed message start off the screen, ;; scroll to start it at the top of the screen. --- 1899,1911 ---- Display MESSAGE (optional fourth arg) in the echo area. If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there." (or exit-char (setq exit-char ?\s)) ! (let ((momentary-overlay (make-overlay pos pos nil t))) (unwind-protect (progn ! (overlay-put momentary-overlay 'before-string ! (propertize string 'face 'momentary)) ;; If the message end is off screen, recenter now. ! (if (< (window-end nil t) (+ pos (length string))) (recenter (/ (window-height) 2))) ;; If that pushed message start off the screen, ;; scroll to start it at the top of the screen. *************** *** 1937,1947 **** (or (eq char exit-char) (eq char (event-convert-list exit-char)) (setq unread-command-events (list char)))))) ! (if insert-end ! (save-excursion ! (delete-region pos insert-end))) ! (setq buffer-file-name name) ! (set-buffer-modified-p modified)))) ;;;; Overlay operations --- 1933,1941 ---- (or (eq char exit-char) (eq char (event-convert-list exit-char)) (setq unread-command-events (list char)))))) ! (when (overlayp momentary-overlay) ! (delete-overlay momentary-overlay))))) ! ;;;; Overlay operations -- Kevin Rodgers Denver, Colorado, USA