GNU bug report logs - #26317
26.0.50; Small incompatibility in ibuffer.el (ibuffer-compile-format)

Previous Next

Package: emacs;

Reported by: John Mastro <john.b.mastro <at> gmail.com>

Date: Thu, 30 Mar 2017 23:09:01 UTC

Severity: normal

Found in version 26.0.50

Done: Mark Oteiza <mvoteiza <at> udel.edu>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Mark Oteiza <mvoteiza <at> udel.edu>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#26317: closed (26.0.50; Small incompatibility in ibuffer.el
 (ibuffer-compile-format))
Date: Fri, 31 Mar 2017 00:26:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 30 Mar 2017 20:25:06 -0400
with message-id <8737dumgwt.fsf <at> holos>
and subject line Re: bug#26317: 26.0.50; Small incompatibility in ibuffer.el (ibuffer-compile-format)
has caused the debbugs.gnu.org bug report #26317,
regarding 26.0.50; Small incompatibility in ibuffer.el (ibuffer-compile-format)
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
26317: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=26317
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: John Mastro <john.b.mastro <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.0.50; Small incompatibility in ibuffer.el (ibuffer-compile-format)
Date: Thu, 30 Mar 2017 16:07:59 -0700
In commit 7e2a8b1, ibuffer.el was change to use `string-width' in a couple
places where it previously used `length'. The result is that custom columns
which can return nil, which worked in Emacs 25, will now cause an error.

To reproduce, run `emacs -Q', yank the following into *scratch*, and evaluate
it:

    (require 'ibuffer)

    (define-ibuffer-column my-column
      (:name "X")
      (and (equal (buffer-name) "*scratch*") "Y"))

    (setq ibuffer-formats '((mark modified read-only
                                  " " (name 18 18 :left :elide)
                                  " " (my-column 5 5 :left)
                                  " " filename-and-process)))

    (ibuffer)

It works in Emacs 25, but in Emacs 26 an error is signaled:

    Debugger entered--Lisp error: (wrong-type-argument stringp nil)
      string-width(nil)

I came across this because I use the `ibuffer-vc' package, which defines a
column (`vc-status') whose implementation returns nil for some buffers (by
default, non-file-visiting buffers and buffers visiting remote files).

I will follow up with a patch in a separate email (so I can include the bug
number in the commit message).

        John


[Message part 3 (message/rfc822, inline)]
From: Mark Oteiza <mvoteiza <at> udel.edu>
To: John Mastro <john.b.mastro <at> gmail.com>
Cc: 26317-done <at> debbugs.gnu.org
Subject: Re: bug#26317: 26.0.50;
 Small incompatibility in ibuffer.el (ibuffer-compile-format)
Date: Thu, 30 Mar 2017 20:25:06 -0400
John Mastro <john.b.mastro <at> gmail.com> writes:

> John Mastro <john.b.mastro <at> gmail.com> wrote:
>> In commit 7e2a8b1, ibuffer.el was change to use `string-width' in a couple
>> places where it previously used `length'. The result is that custom columns
>> which can return nil, which worked in Emacs 25, will now cause an error.
>
> I've attached a patch that fixes this. Rather than touching the calls to
> `string-width' directly, it translates nil to the empty string. Either
> way restores compatibility with Emacs 25, but translating nil to the
> empty string seems preferable in that it saves later code from caring.
>
> Even though it's a tiny change, I'm not a regular contributor or
> particularly familiar with ibuffer's implementation, so any review is
> appreciated. My copyright assignment is on file.

LGTM.  Sorry for breaking it, and thanks for the fix!

Applied as eeaa707.


This bug report was last modified 8 years and 113 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.