mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-29 07:58:28 +00:00
(get_char_property_and_overlay): New function.
(Fget_char_property): Use it.
This commit is contained in:
parent
beed66fe18
commit
8d41abc445
@ -557,17 +557,22 @@ If POSITION is at the end of OBJECT, the value is nil.")
|
||||
return textget (Ftext_properties_at (position, object), prop);
|
||||
}
|
||||
|
||||
DEFUN ("get-char-property", Fget_char_property, Sget_char_property, 2, 3, 0,
|
||||
"Return the value of POSITION's property PROP, in OBJECT.\n\
|
||||
OBJECT is optional and defaults to the current buffer.\n\
|
||||
If POSITION is at the end of OBJECT, the value is nil.\n\
|
||||
If OBJECT is a buffer, then overlay properties are considered as well as\n\
|
||||
text properties.\n\
|
||||
If OBJECT is a window, then that window's buffer is used, but window-specific\n\
|
||||
overlays are considered only if they are associated with OBJECT.")
|
||||
(position, prop, object)
|
||||
/* Return the value of POSITION's property PROP, in OBJECT.
|
||||
OBJECT is optional and defaults to the current buffer.
|
||||
If OVERLAY is non-0, then in the case that the returned property is from
|
||||
an overlay, the overlay found is returned in *OVERLAY, otherwise nil is
|
||||
returned in *OVERLAY.
|
||||
If POSITION is at the end of OBJECT, the value is nil.
|
||||
If OBJECT is a buffer, then overlay properties are considered as well as
|
||||
text properties.
|
||||
If OBJECT is a window, then that window's buffer is used, but
|
||||
window-specific overlays are considered only if they are associated
|
||||
with OBJECT. */
|
||||
Lisp_Object
|
||||
get_char_property_and_overlay (position, prop, object, overlay)
|
||||
Lisp_Object position, object;
|
||||
register Lisp_Object prop;
|
||||
Lisp_Object *overlay;
|
||||
{
|
||||
struct window *w = 0;
|
||||
|
||||
@ -617,12 +622,37 @@ overlays are considered only if they are associated with OBJECT.")
|
||||
{
|
||||
tem = Foverlay_get (overlay_vec[noverlays], prop);
|
||||
if (!NILP (tem))
|
||||
return (tem);
|
||||
{
|
||||
if (overlay)
|
||||
/* Return the overlay we got the property from. */
|
||||
*overlay = overlay_vec[noverlays];
|
||||
return tem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (overlay)
|
||||
/* Indicate that the return value is not from an overlay. */
|
||||
*overlay = Qnil;
|
||||
|
||||
/* Not a buffer, or no appropriate overlay, so fall through to the
|
||||
simpler case. */
|
||||
return (Fget_text_property (position, prop, object));
|
||||
return Fget_text_property (position, prop, object);
|
||||
}
|
||||
|
||||
DEFUN ("get-char-property", Fget_char_property, Sget_char_property, 2, 3, 0,
|
||||
"Return the value of POSITION's property PROP, in OBJECT.\n\
|
||||
OBJECT is optional and defaults to the current buffer.\n\
|
||||
If POSITION is at the end of OBJECT, the value is nil.\n\
|
||||
If OBJECT is a buffer, then overlay properties are considered as well as\n\
|
||||
text properties.\n\
|
||||
If OBJECT is a window, then that window's buffer is used, but window-specific\n\
|
||||
overlays are considered only if they are associated with OBJECT.")
|
||||
(position, prop, object)
|
||||
Lisp_Object position, object;
|
||||
register Lisp_Object prop;
|
||||
{
|
||||
return get_char_property_and_overlay (position, prop, object, 0);
|
||||
}
|
||||
|
||||
DEFUN ("next-char-property-change", Fnext_char_property_change,
|
||||
|
Loading…
Reference in New Issue
Block a user