mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-27 07:37:33 +00:00
Simplify after adding internal function to enter a labeled restriction
* src/editfns.c: (Finternal__labeled_narrow_to_region): Merge the code of Finternal__label_restriction into this function. (Finternal__label_restriction): Remove this function. (syms_of_editfns): Remove the 'outermost-restriction' buffer local variable, which is not used anymore, and the symbol of 'internal--label-restriction'. (Fwiden): Remove the call to reset the 'outermost-restriction' buffer local variable.
This commit is contained in:
parent
b741dc7fcd
commit
01fb898420
@ -2682,11 +2682,12 @@ DEFUN ("delete-and-extract-region", Fdelete_and_extract_region,
|
||||
records the restriction bounds that were current when the first
|
||||
labeled restriction was entered (which may be a narrowing that was
|
||||
set by the user and is visible on display). This alist is used
|
||||
internally by narrow-to-region, widen, internal--label-restriction,
|
||||
internal--unlabel-restriction and save-restriction. For efficiency
|
||||
reasons, an alist is used instead of a buffer-local variable:
|
||||
otherwise reset_outermost_restrictions, which is called during each
|
||||
redisplay cycle, would have to loop through all live buffers. */
|
||||
internally by narrow-to-region, internal--labeled-narrow-to-region,
|
||||
widen, internal--unlabel-restriction and save-restriction. For
|
||||
efficiency reasons, an alist is used instead of a buffer-local
|
||||
variable: otherwise reset_outermost_restrictions, which is called
|
||||
during each redisplay cycle, would have to loop through all live
|
||||
buffers. */
|
||||
static Lisp_Object labeled_restrictions;
|
||||
|
||||
/* Add BUF with its list of labeled RESTRICTIONS in the
|
||||
@ -2884,7 +2885,6 @@ To gain access to other portions of the buffer, use
|
||||
`without-restriction' with the same label. */)
|
||||
(void)
|
||||
{
|
||||
Fset (Qoutermost_restriction, Qnil);
|
||||
Lisp_Object buf = Fcurrent_buffer ();
|
||||
Lisp_Object label = labeled_restrictions_peek_label (buf);
|
||||
|
||||
@ -2981,20 +2981,18 @@ argument. To gain access to other portions of the buffer, use
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
DEFUN ("internal--label-restriction", Finternal__label_restriction,
|
||||
Sinternal__label_restriction, 1, 1, 0,
|
||||
doc: /* Label the current restriction with LABEL.
|
||||
DEFUN ("internal--labeled-narrow-to-region", Finternal__labeled_narrow_to_region,
|
||||
Sinternal__labeled_narrow_to_region, 3, 3, 0,
|
||||
doc: /* Restrict editing in this buffer to START-END, and label the restriction with LABEL.
|
||||
|
||||
This is an internal function used by `with-restriction'. */)
|
||||
(Lisp_Object label)
|
||||
(Lisp_Object start, Lisp_Object end, Lisp_Object label)
|
||||
{
|
||||
Lisp_Object buf = Fcurrent_buffer ();
|
||||
Lisp_Object outermost_restriction
|
||||
= buffer_local_value (Qoutermost_restriction, buf);
|
||||
/* If internal--label-restriction is ever called without being
|
||||
preceded by narrow-to-region, do nothing. */
|
||||
if (NILP (outermost_restriction))
|
||||
return Qnil;
|
||||
Lisp_Object outermost_restriction = list3 (Qoutermost_restriction,
|
||||
Fpoint_min_marker (),
|
||||
Fpoint_max_marker ());
|
||||
Fnarrow_to_region (start, end);
|
||||
if (NILP (labeled_restrictions_peek_label (buf)))
|
||||
labeled_restrictions_push (buf, outermost_restriction);
|
||||
labeled_restrictions_push (buf, list3 (label,
|
||||
@ -3003,24 +3001,6 @@ This is an internal function used by `with-restriction'. */)
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
DEFUN ("internal--labeled-narrow-to-region", Finternal__labeled_narrow_to_region,
|
||||
Sinternal__labeled_narrow_to_region, 3, 3, 0,
|
||||
doc: /* Restrict editing to START-END, and label the restriction with LABEL.
|
||||
|
||||
This is an internal function used by `with-restriction'. */)
|
||||
(Lisp_Object start, Lisp_Object end, Lisp_Object label)
|
||||
{
|
||||
/* Record the accessible range of the buffer when narrow-to-region
|
||||
is called, that is, before applying the narrowing. That
|
||||
information is used only by internal--label-restriction. */
|
||||
Fset (Qoutermost_restriction, list3 (Qoutermost_restriction,
|
||||
Fpoint_min_marker (),
|
||||
Fpoint_max_marker ()));
|
||||
Fnarrow_to_region (start, end);
|
||||
Finternal__label_restriction (label);
|
||||
return Qnil;
|
||||
}
|
||||
|
||||
DEFUN ("internal--unlabel-restriction", Finternal__unlabel_restriction,
|
||||
Sinternal__unlabel_restriction, 1, 1, 0,
|
||||
doc: /* If the current restriction is labeled with LABEL, remove its label.
|
||||
@ -4875,10 +4855,6 @@ This variable is experimental; email 32252@debbugs.gnu.org if you need
|
||||
it to be non-nil. */);
|
||||
binary_as_unsigned = false;
|
||||
|
||||
DEFVAR_LISP ("outermost-restriction", Voutermost_restriction,
|
||||
doc: /* Outermost narrowing bounds, if any. Internal use only. */);
|
||||
Voutermost_restriction = Qnil;
|
||||
Fmake_variable_buffer_local (Qoutermost_restriction);
|
||||
DEFSYM (Qoutermost_restriction, "outermost-restriction");
|
||||
Funintern (Qoutermost_restriction, Qnil);
|
||||
|
||||
@ -4973,7 +4949,6 @@ it to be non-nil. */);
|
||||
defsubr (&Sdelete_and_extract_region);
|
||||
defsubr (&Swiden);
|
||||
defsubr (&Snarrow_to_region);
|
||||
defsubr (&Sinternal__label_restriction);
|
||||
defsubr (&Sinternal__labeled_narrow_to_region);
|
||||
defsubr (&Sinternal__unlabel_restriction);
|
||||
defsubr (&Ssave_restriction);
|
||||
|
Loading…
Reference in New Issue
Block a user