diff options
| author | Stefan Monnier | 2015-03-25 09:47:12 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2015-03-25 09:47:12 -0400 |
| commit | 599ca626d760215b090012c69c749d391cfd6fbe (patch) | |
| tree | 6cc2d4c57d53e317d33bfc7fb2012908c14316c2 /doc/lispintro | |
| parent | 76040ddd8a4142e2933f1c24940d9e20c206ee6f (diff) | |
| download | emacs-599ca626d760215b090012c69c749d391cfd6fbe.tar.gz emacs-599ca626d760215b090012c69c749d391cfd6fbe.zip | |
`save-excursion' does not save&restore the mark any more
* src/editfns.c (save_excursion_save): Don't save the mark.
(save_excursion_restore): Don't restore the mark.
(Fsave_excursion): Fix docstring accordingly.
* doc/lispintro/emacs-lisp-intro.texi:
* doc/lispref/positions.texi (Excursions, Narrowing): `save-excursion' does
not save&restore the mark any more.
Diffstat (limited to 'doc/lispintro')
| -rw-r--r-- | doc/lispintro/ChangeLog | 4 | ||||
| -rw-r--r-- | doc/lispintro/emacs-lisp-intro.texi | 44 |
2 files changed, 26 insertions, 22 deletions
diff --git a/doc/lispintro/ChangeLog b/doc/lispintro/ChangeLog index 57ab03b1155..c54c165d22c 100644 --- a/doc/lispintro/ChangeLog +++ b/doc/lispintro/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2015-03-25 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * emacs-lisp-intro.texi: `save-excursion' doesn't save&restore the mark. | ||
| 4 | |||
| 1 | 2014-12-31 Paul Eggert <eggert@cs.ucla.edu> | 5 | 2014-12-31 Paul Eggert <eggert@cs.ucla.edu> |
| 2 | 6 | ||
| 3 | Less 'make' chatter for Emacs doc | 7 | Less 'make' chatter for Emacs doc |
diff --git a/doc/lispintro/emacs-lisp-intro.texi b/doc/lispintro/emacs-lisp-intro.texi index c67623d89cb..ed125bb3747 100644 --- a/doc/lispintro/emacs-lisp-intro.texi +++ b/doc/lispintro/emacs-lisp-intro.texi | |||
| @@ -352,7 +352,7 @@ How To Write Function Definitions | |||
| 352 | * if:: What if? | 352 | * if:: What if? |
| 353 | * else:: If--then--else expressions. | 353 | * else:: If--then--else expressions. |
| 354 | * Truth & Falsehood:: What Lisp considers false and true. | 354 | * Truth & Falsehood:: What Lisp considers false and true. |
| 355 | * save-excursion:: Keeping track of point, mark, and buffer. | 355 | * save-excursion:: Keeping track of point and buffer. |
| 356 | * Review:: | 356 | * Review:: |
| 357 | * defun Exercises:: | 357 | * defun Exercises:: |
| 358 | 358 | ||
| @@ -2966,7 +2966,7 @@ symbol refers to it.) | |||
| 2966 | * if:: What if? | 2966 | * if:: What if? |
| 2967 | * else:: If--then--else expressions. | 2967 | * else:: If--then--else expressions. |
| 2968 | * Truth & Falsehood:: What Lisp considers false and true. | 2968 | * Truth & Falsehood:: What Lisp considers false and true. |
| 2969 | * save-excursion:: Keeping track of point, mark, and buffer. | 2969 | * save-excursion:: Keeping track of point and buffer. |
| 2970 | * Review:: | 2970 | * Review:: |
| 2971 | * defun Exercises:: | 2971 | * defun Exercises:: |
| 2972 | @end menu | 2972 | @end menu |
| @@ -4159,11 +4159,11 @@ The @code{save-excursion} function is the third and final special form | |||
| 4159 | that we will discuss in this chapter. | 4159 | that we will discuss in this chapter. |
| 4160 | 4160 | ||
| 4161 | In Emacs Lisp programs used for editing, the @code{save-excursion} | 4161 | In Emacs Lisp programs used for editing, the @code{save-excursion} |
| 4162 | function is very common. It saves the location of point and mark, | 4162 | function is very common. It saves the location of point, |
| 4163 | executes the body of the function, and then restores point and mark to | 4163 | executes the body of the function, and then restores point to |
| 4164 | their previous positions if their locations were changed. Its primary | 4164 | its previous position if its location was changed. Its primary |
| 4165 | purpose is to keep the user from being surprised and disturbed by | 4165 | purpose is to keep the user from being surprised and disturbed by |
| 4166 | unexpected movement of point or mark. | 4166 | unexpected movement of point. |
| 4167 | 4167 | ||
| 4168 | @menu | 4168 | @menu |
| 4169 | * Point and mark:: A review of various locations. | 4169 | * Point and mark:: A review of various locations. |
| @@ -4201,7 +4201,7 @@ region}. Numerous commands work on the region, including | |||
| 4201 | @code{print-region}. | 4201 | @code{print-region}. |
| 4202 | 4202 | ||
| 4203 | The @code{save-excursion} special form saves the locations of point and | 4203 | The @code{save-excursion} special form saves the locations of point and |
| 4204 | mark and restores those positions after the code within the body of the | 4204 | restores this position after the code within the body of the |
| 4205 | special form is evaluated by the Lisp interpreter. Thus, if point were | 4205 | special form is evaluated by the Lisp interpreter. Thus, if point were |
| 4206 | in the beginning of a piece of text and some code moved point to the end | 4206 | in the beginning of a piece of text and some code moved point to the end |
| 4207 | of the buffer, the @code{save-excursion} would put point back to where | 4207 | of the buffer, the @code{save-excursion} would put point back to where |
| @@ -4212,16 +4212,16 @@ In Emacs, a function frequently moves point as part of its internal | |||
| 4212 | workings even though a user would not expect this. For example, | 4212 | workings even though a user would not expect this. For example, |
| 4213 | @code{count-lines-region} moves point. To prevent the user from being | 4213 | @code{count-lines-region} moves point. To prevent the user from being |
| 4214 | bothered by jumps that are both unexpected and (from the user's point of | 4214 | bothered by jumps that are both unexpected and (from the user's point of |
| 4215 | view) unnecessary, @code{save-excursion} is often used to keep point and | 4215 | view) unnecessary, @code{save-excursion} is often used to keep point in |
| 4216 | mark in the location expected by the user. The use of | 4216 | the location expected by the user. The use of |
| 4217 | @code{save-excursion} is good housekeeping. | 4217 | @code{save-excursion} is good housekeeping. |
| 4218 | 4218 | ||
| 4219 | To make sure the house stays clean, @code{save-excursion} restores the | 4219 | To make sure the house stays clean, @code{save-excursion} restores the |
| 4220 | values of point and mark even if something goes wrong in the code inside | 4220 | value of point even if something goes wrong in the code inside |
| 4221 | of it (or, to be more precise and to use the proper jargon, ``in case of | 4221 | of it (or, to be more precise and to use the proper jargon, ``in case of |
| 4222 | abnormal exit''). This feature is very helpful. | 4222 | abnormal exit''). This feature is very helpful. |
| 4223 | 4223 | ||
| 4224 | In addition to recording the values of point and mark, | 4224 | In addition to recording the value of point, |
| 4225 | @code{save-excursion} keeps track of the current buffer, and restores | 4225 | @code{save-excursion} keeps track of the current buffer, and restores |
| 4226 | it, too. This means you can write code that will change the buffer and | 4226 | it, too. This means you can write code that will change the buffer and |
| 4227 | have @code{save-excursion} switch you back to the original buffer. | 4227 | have @code{save-excursion} switch you back to the original buffer. |
| @@ -4386,9 +4386,9 @@ For example, | |||
| 4386 | @end smallexample | 4386 | @end smallexample |
| 4387 | 4387 | ||
| 4388 | @item save-excursion | 4388 | @item save-excursion |
| 4389 | Record the values of point and mark and the current buffer before | 4389 | Record the values of point and the current buffer before |
| 4390 | evaluating the body of this special form. Restore the values of point | 4390 | evaluating the body of this special form. Restore the value of point and |
| 4391 | and mark and buffer afterward. | 4391 | buffer afterward. |
| 4392 | 4392 | ||
| 4393 | @need 1250 | 4393 | @need 1250 |
| 4394 | For example, | 4394 | For example, |
| @@ -5201,8 +5201,8 @@ of the two-element list, @code{(oldbuf (current-buffer))}. | |||
| 5201 | The body of the @code{let} expression in @code{append-to-buffer} | 5201 | The body of the @code{let} expression in @code{append-to-buffer} |
| 5202 | consists of a @code{save-excursion} expression. | 5202 | consists of a @code{save-excursion} expression. |
| 5203 | 5203 | ||
| 5204 | The @code{save-excursion} function saves the locations of point and | 5204 | The @code{save-excursion} function saves the location of point, and restores it |
| 5205 | mark, and restores them to those positions after the expressions in the | 5205 | to that position after the expressions in the |
| 5206 | body of the @code{save-excursion} complete execution. In addition, | 5206 | body of the @code{save-excursion} complete execution. In addition, |
| 5207 | @code{save-excursion} keeps track of the original buffer, and | 5207 | @code{save-excursion} keeps track of the original buffer, and |
| 5208 | restores it. This is how @code{save-excursion} is used in | 5208 | restores it. This is how @code{save-excursion} is used in |
| @@ -5390,7 +5390,7 @@ Conventionally bound to @kbd{M-.} (that's a period following the | |||
| 5390 | @key{META} key). | 5390 | @key{META} key). |
| 5391 | 5391 | ||
| 5392 | @item save-excursion | 5392 | @item save-excursion |
| 5393 | Save the location of point and mark and restore their values after the | 5393 | Save the location of point and restore its value after the |
| 5394 | arguments to @code{save-excursion} have been evaluated. Also, remember | 5394 | arguments to @code{save-excursion} have been evaluated. Also, remember |
| 5395 | the current buffer and return to it. | 5395 | the current buffer and return to it. |
| 5396 | 5396 | ||
| @@ -5896,7 +5896,7 @@ the value of point, which will be at the end of the inserted text, is | |||
| 5896 | recorded in the variable @code{newmark}. | 5896 | recorded in the variable @code{newmark}. |
| 5897 | 5897 | ||
| 5898 | After the body of the outer @code{save-excursion} is evaluated, point | 5898 | After the body of the outer @code{save-excursion} is evaluated, point |
| 5899 | and mark are relocated to their original places. | 5899 | is relocated to its original place. |
| 5900 | 5900 | ||
| 5901 | However, it is convenient to locate a mark at the end of the newly | 5901 | However, it is convenient to locate a mark at the end of the newly |
| 5902 | inserted text and locate point at its beginning. The @code{newmark} | 5902 | inserted text and locate point at its beginning. The @code{newmark} |
| @@ -6685,8 +6685,8 @@ restored just before the completion of the function by the | |||
| 6685 | @code{save-restriction} special form. | 6685 | @code{save-restriction} special form. |
| 6686 | 6686 | ||
| 6687 | The call to @code{widen} is followed by @code{save-excursion}, which | 6687 | The call to @code{widen} is followed by @code{save-excursion}, which |
| 6688 | saves the location of the cursor (i.e., of point) and of the mark, and | 6688 | saves the location of the cursor (i.e., of point), and |
| 6689 | restores them after the code in the body of the @code{save-excursion} | 6689 | restores it after the code in the body of the @code{save-excursion} |
| 6690 | uses the @code{beginning-of-line} function to move point. | 6690 | uses the @code{beginning-of-line} function to move point. |
| 6691 | 6691 | ||
| 6692 | (Note that the @code{(widen)} expression comes between the | 6692 | (Note that the @code{(widen)} expression comes between the |
| @@ -6757,8 +6757,8 @@ it, and @code{count-lines} counts only the lines @emph{before} the | |||
| 6757 | current line. | 6757 | current line. |
| 6758 | 6758 | ||
| 6759 | After @code{count-lines} has done its job, and the message has been | 6759 | After @code{count-lines} has done its job, and the message has been |
| 6760 | printed in the echo area, the @code{save-excursion} restores point and | 6760 | printed in the echo area, the @code{save-excursion} restores point to |
| 6761 | mark to their original positions; and @code{save-restriction} restores | 6761 | its original position; and @code{save-restriction} restores |
| 6762 | the original narrowing, if any. | 6762 | the original narrowing, if any. |
| 6763 | 6763 | ||
| 6764 | @node narrow Exercise | 6764 | @node narrow Exercise |