Commit 59062dce authored by Lars Hansen's avatar Lars Hansen
Browse files

(find_field): Fix comment.

(Ffield_beginning): Fix bug when POS is at field beginning.
parent 01017e7c
2006-04-23 Lars Hansen <larsh@soem.dk>
* editfns.c (find_field): Fix comment.
(Ffield_beginning): Fix bug when POS is at field beginning.
2006-04-22 Eli Zaretskii <eliz@gnu.org> 2006-04-22 Eli Zaretskii <eliz@gnu.org>
* puresize.h (BASE_PURESIZE): Increase to 1205000. * puresize.h (BASE_PURESIZE): Increase to 1205000.
......
...@@ -491,24 +491,21 @@ get_pos_property (position, prop, object) ...@@ -491,24 +491,21 @@ get_pos_property (position, prop, object)
} }
/* Find the field surrounding POS in *BEG and *END. If POS is nil, /* Find the field surrounding POS in *BEG and *END. If POS is nil,
the value of point is used instead. If BEG or END null, the value of point is used instead. If BEG or END is null,
means don't store the beginning or end of the field. means don't store the beginning or end of the field.
BEG_LIMIT and END_LIMIT serve to limit the ranged of the returned BEG_LIMIT and END_LIMIT serve to limit the ranged of the returned
results; they do not effect boundary behavior. results; they do not effect boundary behavior.
If MERGE_AT_BOUNDARY is nonzero, then if POS is at the very first If MERGE_AT_BOUNDARY is nonzero, then if POS is at the very last
position of a field, then the beginning of the previous field is position of a field, then the end of the next field is returned
returned instead of the beginning of POS's field (since the end of a instead of the end of POS's field (since the end of a field is
field is actually also the beginning of the next input field, this actually also the beginning of the next input field, this behavior
behavior is sometimes useful). Additionally in the MERGE_AT_BOUNDARY is sometimes useful). Additionally in the MERGE_AT_BOUNDARY
true case, if two fields are separated by a field with the special true case, if two fields are separated by a field with the special
value `boundary', and POS lies within it, then the two separated value `boundary', and POS lies within it, then the two separated
fields are considered to be adjacent, and POS between them, when fields are considered to be adjacent, and POS between them, when
finding the beginning and ending of the "merged" field. finding the beginning and ending of the "merged" field. */
Either BEG or END may be 0, in which case the corresponding value
is not stored. */
static void static void
find_field (pos, merge_at_boundary, beg_limit, beg, end_limit, end) find_field (pos, merge_at_boundary, beg_limit, beg, end_limit, end)
...@@ -674,9 +671,14 @@ is before LIMIT, then LIMIT will be returned instead. */) ...@@ -674,9 +671,14 @@ is before LIMIT, then LIMIT will be returned instead. */)
(pos, escape_from_edge, limit) (pos, escape_from_edge, limit)
Lisp_Object pos, escape_from_edge, limit; Lisp_Object pos, escape_from_edge, limit;
{ {
int beg; int beg, end;
find_field (pos, escape_from_edge, limit, &beg, Qnil, 0); find_field (pos, escape_from_edge, limit, &beg, Qnil, &end);
return make_number (beg); /* When pos is at a field boundary and escape_from_edge (merge_at_boundary)
is nil, find_field returns the *previous* field. In this case we return
end instead of beg. */
return make_number (NILP (escape_from_edge)
&& XFASTINT (pos) == end
&& end != ZV ? end : beg);
} }
DEFUN ("field-end", Ffield_end, Sfield_end, 0, 3, 0, DEFUN ("field-end", Ffield_end, Sfield_end, 0, 3, 0,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment