Subject: Re: bug#16413: 24.3.50; Inconsistent behavior of text property functions in narrowed buffer

From: Daniel Colascione <[email-masked]>
Date: Fri, 10 Jan 2014 20:09:37 -0800

On 01/10/2014 08:05 PM, Daniel Colascione wrote:
> On 01/10/2014 07:05 PM, Nathan Trapuzzano wrote:
>> The various functions for examining text properties behave unintuitively
>> and incosistently at (point-max) on narrowed buffers.  Rather than
>> returning `nil', they return the prop(s) of the text at (point-max),
>> even though the text is not actually visible in the buffer, due to
>> narrowing.  By contrast, `char-after' always returns `nil' when passed
>> (point-max).  It seems to me the text property functions should also
>> return `nil', as they do at (eobp) on widened buffers.
>
> I agree that this behavior is unintuitive, but I wonder whether we can
> fix this bug without breaking existing elisp.

Which functions break, exactly? The following test passes.

(ert-deftest text-property-narrowing ()
   "Test that text properties outside narrowed buffer are invisible"
   (with-temp-buffer
     (insert "  ")
     (put-text-property (1- (point-max)) (point-max) 'foo 'bar)
     (should (eq (get-text-property (1- (point-max)) 'foo) 'bar))
     (narrow-to-region (point-min) (1- (point-max)))
     (should (null (get-text-property (1- (point-max)) 'foo)))))