bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Re: bug in field-string and field-string-no-properties


From: Greg Hill
Subject: Re: Re: bug in field-string and field-string-no-properties
Date: Thu, 14 Aug 2003 18:00:38 -0700

 > There appears to be a bug in field-string and
 field-string-no-properties.  When (point) or the POS argument is at
 the first character of a field, the function returns an empty
 string. The following fragment of code, executed in the scratch
 buffer, illustrates the problem.

 > (progn
    (set-buffer (get-buffer-create "junk"))
    (erase-buffer)
    (insert "Test")
    (put-text-property (point-min) (point-max) 'field 1)
    (message "field-string at 1 = '%s'\nfield-string at 2 = '%s'"
    (field-string-no-properties 1) (field-string-no-properties 2)))

From (elisp) Fields Info node:

"When the characters before and after POS are part of the same field,
there is no doubt which field contains POS: the one those characters
both belong to.  When POS is at a boundary between fields, which field
it belongs to depends on the stickiness of the `field' properties of
the two surrounding characters (see *note Sticky Properties::).  The
field whose property would be inherited by text inserted at POS is the
field that contains POS."

If stickiness is the issue, then the default rear-stickiness of the last character of a field should identify the field-string "to the left of" a point; but as the example below shows, it does not. It seems to me that for a four-character field there ought to be at least four places at which field-string will return it.

As it stands, field-string returns a string only if the character to the left AND the character to the right of POS both have the same field property. That means, of course, that for a field that is one character long, there is no way you can ever get field-string to return anything but an empty string.

(progn
   (set-buffer (get-buffer-create "junk"))
   (erase-buffer)
   (insert "Test")
   (put-text-property (point-min) (point-max) 'field 1)
(message "field-string at 1 = '%s'\nfield-string at 2 = '%s'\nfield-string at (point-max) = '%s'"
            (field-string-no-properties 1)
            (field-string-no-properties 2)
            (field-string-no-properties (point-max)) ) )

--Greg




reply via email to

[Prev in Thread] Current Thread [Next in Thread]