| www.delorie.com/gnu/docs/emacs-lisp-intro/emacs-lisp-intro_107.html | search |
![]() Buy the book! | |
| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
save-restriction Special Form
In Emacs Lisp, you can use the save-restriction special form to
keep track of whatever narrowing is in effect, if any. When the Lisp
interpreter meets with save-restriction, it executes the code
in the body of the save-restriction expression, and then undoes
any changes to narrowing that the code caused. If, for example, the
buffer is narrowed and the code that follows save-restriction
gets rid of the narrowing, save-restriction returns the buffer
to its narrowed region afterwards. In the what-line command,
any narrowing the buffer may have is undone by the widen
command that immediately follows the save-restriction command.
Any original narrowing is restored just before the completion of the
function.
The template for a save-restriction expression is simple:
(save-restriction body... ) |
The body of the save-restriction is one or more expressions that
will be evaluated in sequence by the Lisp interpreter.
Finally, a point to note: when you use both save-excursion and
save-restriction, one right after the other, you should use
save-excursion outermost. If you write them in reverse order,
you may fail to record narrowing in the buffer to which Emacs switches
after calling save-excursion. Thus, when written together,
save-excursion and save-restriction should be written
like this:
(save-excursion
(save-restriction
body...))
|
In other circumstances, when not written together, the
save-excursion and save-restriction special forms must
be written in the order appropriate to the function.
For example,
(save-restriction
(widen)
(save-excursion
body...))
|
| webmaster donations bookstore | delorie software privacy |
| Copyright © 2003 by The Free Software Foundation | Updated Jun 2003 |