Document buffer-swap-text+save-excursion interaction

* doc/lispref/buffers.texi (Swapping Text):
* src/buffer.c (Fbuffer_swap_text): Add warning about interaction of
`buffer-swap-text' and `save-excursion' (Bug #4655).
This commit is contained in:
Noam Postavsky 2016-07-10 21:52:23 -04:00
parent 452aa949bc
commit 9ba51edf62
2 changed files with 9 additions and 1 deletions

View file

@ -1211,6 +1211,12 @@ swapped as well: the positions of point and mark, all the markers, the
overlays, the text properties, the undo list, the value of the overlays, the text properties, the undo list, the value of the
@code{enable-multibyte-characters} flag (@pxref{Text Representations, @code{enable-multibyte-characters} flag (@pxref{Text Representations,
enable-multibyte-characters}), etc. enable-multibyte-characters}), etc.
@strong{Warning:} If this function is called from within a
@code{save-excursion} form, the current buffer will be set to
@var{buffer} upon leaving the form, since the marker used by
@code{save-excursion} to save the position and buffer will be swapped
as well.
@end defun @end defun
If you use @code{buffer-swap-text} on a file-visiting buffer, you If you use @code{buffer-swap-text} on a file-visiting buffer, you

View file

@ -2231,7 +2231,9 @@ advance_to_char_boundary (ptrdiff_t byte_pos)
DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text, DEFUN ("buffer-swap-text", Fbuffer_swap_text, Sbuffer_swap_text,
1, 1, 0, 1, 1, 0,
doc: /* Swap the text between current buffer and BUFFER. */) doc: /* Swap the text between current buffer and BUFFER.
Using this function from `save-excursion' might produce surprising
results, see Info node `(elisp)Swapping Text'. */)
(Lisp_Object buffer) (Lisp_Object buffer)
{ {
struct buffer *other_buffer; struct buffer *other_buffer;