mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-11 18:31:17 -08:00
(momentary): New face.
(momentary-string-display): Display the string via a temporary overlay using the new face, instead of inserting it in the buffer.
This commit is contained in:
parent
c2c923509d
commit
c8d554e95e
2 changed files with 25 additions and 29 deletions
|
|
@ -1,3 +1,9 @@
|
|||
2007-01-04 Kevin Rodgers <kevin.d.rodgers@gmail.com>
|
||||
|
||||
* 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.
|
||||
|
||||
2007-01-04 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* progmodes/ebrowse.el (ebrowse-global-prefix-key): Fix typo in
|
||||
|
|
|
|||
48
lisp/subr.el
48
lisp/subr.el
|
|
@ -1884,6 +1884,11 @@ menu bar menus and the frame title."
|
|||
(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.
|
||||
|
|
@ -1895,32 +1900,21 @@ input (as a command if nothing else).
|
|||
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)
|
||||
(let ((momentary-overlay (make-overlay pos pos nil t)))
|
||||
(overlay-put momentary-overlay 'before-string
|
||||
(propertize string 'face 'momentary))
|
||||
(unwind-protect
|
||||
(progn
|
||||
(save-excursion
|
||||
(goto-char pos)
|
||||
;; To avoid trouble with out-of-bounds position
|
||||
(setq pos (point))
|
||||
;; 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.
|
||||
(move-to-window-line 0)
|
||||
(if (> (point) pos)
|
||||
(progn
|
||||
(goto-char pos)
|
||||
(recenter 0))))
|
||||
;; 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.
|
||||
(move-to-window-line 0)
|
||||
(if (> (point) pos)
|
||||
(progn
|
||||
(goto-char pos)
|
||||
(recenter 0)))
|
||||
(message (or message "Type %s to continue editing.")
|
||||
(single-key-description exit-char))
|
||||
(let (char)
|
||||
|
|
@ -1940,11 +1934,7 @@ If MESSAGE is nil, instructions to type EXIT-CHAR are displayed there."
|
|||
(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))))
|
||||
(delete-overlay momentary-overlay))))
|
||||
|
||||
|
||||
;;;; Overlay operations
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue