Mercurial > emacs
changeset 51939:d38453fdf2a0
(copy_overlays): Use EMACS_INT for positions.
(Fswitch_to_buffer): Don't signal an error when switching to the same
buffer in a dedicated window.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Tue, 15 Jul 2003 19:32:05 +0000 |
parents | 20d4eb1de9b0 |
children | 239ec6ce770c |
files | src/buffer.c |
diffstat | 1 files changed, 14 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/buffer.c Tue Jul 15 19:19:59 2003 +0000 +++ b/src/buffer.c Tue Jul 15 19:32:05 2003 +0000 @@ -447,7 +447,7 @@ for (; list; list = list->next) { Lisp_Object overlay, start, end, old_overlay; - int charpos; + EMACS_INT charpos; XSETMISC (old_overlay, list); charpos = marker_position (OVERLAY_START (old_overlay)); @@ -1630,6 +1630,11 @@ { char *err; + if (EQ (buffer, Fwindow_buffer (selected_window))) + /* Basically a NOP. Avoid signalling an error if the selected window + is dedicated, or a minibuffer, ... */ + return Fset_buffer (buffer); + err = no_switch_window (selected_window); if (err) error (err); @@ -4098,6 +4103,14 @@ overlay = Qnil; tail = NULL; + /* We used to run the functions as soon as we found them and only register + them in last_overlay_modification_hooks for the purpose of the `after' + case. But running elisp code as we traverse the list of overlays is + painful because the list can be modified by the elisp code so we had to + copy at several places. We now simply do a read-only traversal that + only collects the functions to run and we run them afterwards. It's + simpler, especially since all the code was already there. -stef */ + if (!after) { /* We are being called before a change.