GNU bug report logs - #13824
24.3.50; :package-version not taking priority over :version

Previous Next

Package: emacs;

Reported by: Bastien Guerry <bzg <at> altern.org>

Date: Tue, 26 Feb 2013 21:31:02 UTC

Severity: minor

Tags: confirmed

Found in versions 26.2, 24.3.50

To reply to this bug, email your comments to 13824 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Tue, 26 Feb 2013 21:31:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Bastien Guerry <bzg <at> altern.org>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Tue, 26 Feb 2013 21:31:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Bastien Guerry <bzg <at> altern.org>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.3.50; :package-version not taking priority over :version
Date: Tue, 26 Feb 2013 18:28:59 +0100
The docstring of `defcustom' says:

:package-version
        VALUE should be a list with the form (PACKAGE . VERSION)
        specifying that the variable was first introduced, or its
        default value was changed, in PACKAGE version VERSION.  This
        keyword takes priority over :version.
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

but `describe-variable-custom-version-info' gives priority to :version
over :package-version.  Which one is correct here?

Thanks!




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Thu, 08 Aug 2019 04:00:01 GMT) Full text and rfc822 format available.

Message #8 received at 13824 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: Bastien Guerry <bzg <at> altern.org>
Cc: 13824 <at> debbugs.gnu.org
Subject: Re: bug#13824: 24.3.50;
 :package-version not taking priority over :version
Date: Thu, 8 Aug 2019 05:59:21 +0200
Bastien Guerry <bzg <at> altern.org> writes:

> The docstring of `defcustom' says:
>
> :package-version
>         VALUE should be a list with the form (PACKAGE . VERSION)
>         specifying that the variable was first introduced, or its
>         default value was changed, in PACKAGE version VERSION.  This
>         keyword takes priority over :version.
>         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
> but `describe-variable-custom-version-info' gives priority to :version
> over :package-version.  Which one is correct here?

This is still an issue on current master (and 26.2).

I reproduced this using:

    (progn
      (defcustom foobar nil
        "foo"
        :version "27.1"
        :package-version '(foo . "1"))
      (describe-variable-custom-version-info 'foobar))

Which results in:

    "This variable was introduced, or its default value was changed, in
    version 27.1 of Emacs.
    "

But C-h f defcustom says:

    :package-version
            VALUE should be a list with the form (PACKAGE . VERSION)
            specifying that the variable was first introduced, or its
            default value was changed, in PACKAGE version VERSION.  This
            keyword takes priority over :version.

Thanks,
Stefan Kangas




Added tag(s) confirmed. Request was from Stefan Kangas <stefan <at> marxist.se> to control <at> debbugs.gnu.org. (Thu, 08 Aug 2019 04:01:02 GMT) Full text and rfc822 format available.

bug Marked as found in versions 26.2. Request was from Stefan Kangas <stefan <at> marxist.se> to control <at> debbugs.gnu.org. (Thu, 08 Aug 2019 04:02:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Sat, 10 Aug 2019 09:23:01 GMT) Full text and rfc822 format available.

Message #15 received at 13824 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Stefan Kangas <stefan <at> marxist.se>, Bill Wohler <wohler <at> newt.com>
Cc: bzg <at> altern.org, 13824 <at> debbugs.gnu.org
Subject: Re: bug#13824: 24.3.50;
 :package-version not taking priority over :version
Date: Sat, 10 Aug 2019 12:22:02 +0300
> From: Stefan Kangas <stefan <at> marxist.se>
> Date: Thu, 8 Aug 2019 05:59:21 +0200
> Cc: 13824 <at> debbugs.gnu.org
> 
> Bastien Guerry <bzg <at> altern.org> writes:
> 
> > The docstring of `defcustom' says:
> >
> > :package-version
> >         VALUE should be a list with the form (PACKAGE . VERSION)
> >         specifying that the variable was first introduced, or its
> >         default value was changed, in PACKAGE version VERSION.  This
> >         keyword takes priority over :version.
> >         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> >
> > but `describe-variable-custom-version-info' gives priority to :version
> > over :package-version.  Which one is correct here?
> 
> This is still an issue on current master (and 26.2).
> 
> I reproduced this using:
> 
>     (progn
>       (defcustom foobar nil
>         "foo"
>         :version "27.1"
>         :package-version '(foo . "1"))
>       (describe-variable-custom-version-info 'foobar))
> 
> Which results in:
> 
>     "This variable was introduced, or its default value was changed, in
>     version 27.1 of Emacs.
>     "
> 
> But C-h f defcustom says:
> 
>     :package-version
>             VALUE should be a list with the form (PACKAGE . VERSION)
>             specifying that the variable was first introduced, or its
>             default value was changed, in PACKAGE version VERSION.  This
>             keyword takes priority over :version.

The implementation only prefers :package-version for the purposes of
customize-changed-options, i.e. the Options->Customize Emacs->New
Options menu item.  By contrast, describe-variable-custom-version-info
is used for displaying the doc strings of options.  For a package that
is bundled with Emacs, I think displaying :version in "C-h v" makes
sense.  If people agree, then this is a minor documentation bug (also
to be fixed in the ELisp manual), not a code bug.

Bill, what is your take on this?  Your change, which introduced this
attribute, only modified customize-changed-options.  Was that on
purpose?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Sat, 10 Aug 2019 14:15:01 GMT) Full text and rfc822 format available.

Message #18 received at 13824 <at> debbugs.gnu.org (full text, mbox):

From: Stefan Kangas <stefan <at> marxist.se>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: Bastien Guerry <bzg <at> altern.org>, Bill Wohler <wohler <at> newt.com>,
 13824 <at> debbugs.gnu.org
Subject: Re: bug#13824: 24.3.50;
 :package-version not taking priority over :version
Date: Sat, 10 Aug 2019 16:13:46 +0200
Eli Zaretskii <eliz <at> gnu.org> writes:

> For a package that
> is bundled with Emacs, I think displaying :version in "C-h v" makes
> sense.  If people agree, then this is a minor documentation bug (also
> to be fixed in the ELisp manual), not a code bug.

Yes, that makes sense.  Let's see what Bill says.

Thanks,
Stefan Kangas




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Sat, 10 Aug 2019 22:11:02 GMT) Full text and rfc822 format available.

Message #21 received at 13824 <at> debbugs.gnu.org (full text, mbox):

From: Bill Wohler <wohler <at> newt.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: bzg <at> altern.org, Stefan Kangas <stefan <at> marxist.se>, 13824 <at> debbugs.gnu.org
Subject: Re: bug#13824: 24.3.50;
 :package-version not taking priority over :version
Date: Sat, 10 Aug 2019 15:10:13 -0700
Eli Zaretskii <eliz <at> gnu.org> wrote:

> > From: Stefan Kangas <stefan <at> marxist.se>
> > Date: Thu, 8 Aug 2019 05:59:21 +0200
> > Cc: 13824 <at> debbugs.gnu.org
> > 
> > Bastien Guerry <bzg <at> altern.org> writes:
> > 
> > > The docstring of `defcustom' says:
> > >
> > > :package-version
> > >         VALUE should be a list with the form (PACKAGE . VERSION)
> > >         specifying that the variable was first introduced, or its
> > >         default value was changed, in PACKAGE version VERSION.  This
> > >         keyword takes priority over :version.
> > >         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > >
> > > but `describe-variable-custom-version-info' gives priority to :version
> > > over :package-version.  Which one is correct here?
> > 
> > This is still an issue on current master (and 26.2).
> > 
> > I reproduced this using:
> > 
> >     (progn
> >       (defcustom foobar nil
> >         "foo"
> >         :version "27.1"
> >         :package-version '(foo . "1"))
> >       (describe-variable-custom-version-info 'foobar))
> > 
> > Which results in:
> > 
> >     "This variable was introduced, or its default value was changed, in
> >     version 27.1 of Emacs.
> >     "
> > 
> > But C-h f defcustom says:
> > 
> >     :package-version
> >             VALUE should be a list with the form (PACKAGE . VERSION)
> >             specifying that the variable was first introduced, or its
> >             default value was changed, in PACKAGE version VERSION.  This
> >             keyword takes priority over :version.
> 
> The implementation only prefers :package-version for the purposes of
> customize-changed-options, i.e. the Options->Customize Emacs->New
> Options menu item.  By contrast, describe-variable-custom-version-info
> is used for displaying the doc strings of options.  For a package that
> is bundled with Emacs, I think displaying :version in "C-h v" makes
> sense.  If people agree, then this is a minor documentation bug (also
> to be fixed in the ELisp manual), not a code bug.
> 
> Bill, what is your take on this?  Your change, which introduced this
> attribute, only modified customize-changed-options.  Was that on
> purpose?

Thanks for asking. The original intent of package-version was to provide
more accurate version information in packages that were updated more
often than Emacs, regardless of whether they were packaged in Emacs
(like MH-E and Gnus) or not. I think that should apply to any function
that displays version information for an option. That is, any function
that looks for :version should also look for :package-version.

-- 
Bill Wohler <wohler <at> newt.com> aka <Bill.Wohler <at> nasa.gov>
http://www.newt.com/wohler/, GnuPG ID:610BD9AD




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Sat, 10 Aug 2019 22:42:02 GMT) Full text and rfc822 format available.

Message #24 received at 13824 <at> debbugs.gnu.org (full text, mbox):

From: Bill Wohler <wohler <at> newt.com>
To: Eli Zaretskii <eliz <at> gnu.org>, Stefan Kangas <stefan <at> marxist.se>,
 bzg <at> altern.org, 13824 <at> debbugs.gnu.org
Subject: Re: bug#13824: 24.3.50;
 :package-version not taking priority over :version
Date: Sat, 10 Aug 2019 15:40:40 -0700
Bill Wohler <wohler <at> newt.com> wrote:

> Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
> > > From: Stefan Kangas <stefan <at> marxist.se>
> > > Date: Thu, 8 Aug 2019 05:59:21 +0200
> > > Cc: 13824 <at> debbugs.gnu.org
> > > 
> > > Bastien Guerry <bzg <at> altern.org> writes:
> > > 
> > > > The docstring of `defcustom' says:
> > > >
> > > > :package-version
> > > >         VALUE should be a list with the form (PACKAGE . VERSION)
> > > >         specifying that the variable was first introduced, or its
> > > >         default value was changed, in PACKAGE version VERSION.  This
> > > >         keyword takes priority over :version.
> > > >         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> > > >
> > > > but `describe-variable-custom-version-info' gives priority to :version
> > > > over :package-version.  Which one is correct here?
> > > 
> > > This is still an issue on current master (and 26.2).
> > > 
> > > I reproduced this using:
> > > 
> > >     (progn
> > >       (defcustom foobar nil
> > >         "foo"
> > >         :version "27.1"
> > >         :package-version '(foo . "1"))
> > >       (describe-variable-custom-version-info 'foobar))
> > > 
> > > Which results in:
> > > 
> > >     "This variable was introduced, or its default value was changed, in
> > >     version 27.1 of Emacs.
> > >     "
> > > 
> > > But C-h f defcustom says:
> > > 
> > >     :package-version
> > >             VALUE should be a list with the form (PACKAGE . VERSION)
> > >             specifying that the variable was first introduced, or its
> > >             default value was changed, in PACKAGE version VERSION.  This
> > >             keyword takes priority over :version.
> > 
> > The implementation only prefers :package-version for the purposes of
> > customize-changed-options, i.e. the Options->Customize Emacs->New
> > Options menu item.  By contrast, describe-variable-custom-version-info
> > is used for displaying the doc strings of options.  For a package that
> > is bundled with Emacs, I think displaying :version in "C-h v" makes
> > sense.  If people agree, then this is a minor documentation bug (also
> > to be fixed in the ELisp manual), not a code bug.
> > 
> > Bill, what is your take on this?  Your change, which introduced this
> > attribute, only modified customize-changed-options.  Was that on
> > purpose?
> 
> Thanks for asking. The original intent of package-version was to provide
> more accurate version information in packages that were updated more
> often than Emacs, regardless of whether they were packaged in Emacs
> (like MH-E and Gnus) or not. I think that should apply to any function
> that displays version information for an option. That is, any function
> that looks for :version should also look for :package-version.

And to answer your question directly, if I didn't change other
functions, it was not on purpose.

By the way, I just checked and describe-variable-custom-version-info,
which was added in 2007, did not yet exist when I added :package-version
in 2006.

-- 
Bill Wohler <wohler <at> newt.com> aka <Bill.Wohler <at> nasa.gov>
http://www.newt.com/wohler/, GnuPG ID:610BD9AD




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Sun, 11 Aug 2019 14:03:02 GMT) Full text and rfc822 format available.

Message #27 received at 13824 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Bill Wohler <wohler <at> newt.com>
Cc: bzg <at> altern.org, stefan <at> marxist.se, 13824 <at> debbugs.gnu.org
Subject: Re: bug#13824: 24.3.50;
 :package-version not taking priority over :version
Date: Sun, 11 Aug 2019 17:01:59 +0300
> cc: Stefan Kangas <stefan <at> marxist.se>, bzg <at> altern.org,
>     13824 <at> debbugs.gnu.org
> From: Bill Wohler <wohler <at> newt.com>
> Date: Sat, 10 Aug 2019 15:10:13 -0700
> 
> > Bill, what is your take on this?  Your change, which introduced this
> > attribute, only modified customize-changed-options.  Was that on
> > purpose?
> 
> Thanks for asking. The original intent of package-version was to provide
> more accurate version information in packages that were updated more
> often than Emacs, regardless of whether they were packaged in Emacs
> (like MH-E and Gnus) or not. I think that should apply to any function
> that displays version information for an option. That is, any function
> that looks for :version should also look for :package-version.

Thanks.

Upon taking a better look, I conclude that there's more here than
originally met the eye.

First, the doc string of defcustom says:

  :package-version
	  VALUE should be a list with the form (PACKAGE . VERSION)
	  specifying that the variable was first introduced, or its
	  default value was changed, in PACKAGE version VERSION.  This
	  keyword takes priority over :version.  For packages which
	  are bundled with Emacs releases, the PACKAGE and VERSION
	  must appear in the alist `customize-package-emacs-version-alist'.
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

So Stefan's reproducer, viz.:

    (progn
      (defcustom foobar nil
        "foo"
        :version "27.1"
        :package-version '(foo . "1"))
      (describe-variable-custom-version-info 'foobar))

wasn't supposed to work, since it doesn't play by the rules.

Next, MH-E uses :package-version, but doesn't use :version.  So, for
example, "C-h v mh-whitelist-preserves-sequences-flag RET" produces
the expected

  This variable was introduced, or its default value was changed, in
  version 8.4 of the MH-E package that is part of Emacs 24.4.

By contrast, Org mode files use both :package-version and :version,
which I guess was the reason why Bastien filed this bug report in the
first place.

Now, since we _require_ the package versions to appear in
customize-package-emacs-version-alist, specifying :package-version
alone provides all the info we need about both the package version and
the corresponding Emacs version.  Therefore, specifying :version as
well is simply redundant when :package-version is given, and Org
shouldn't use :version (btw, Org is the only bundled package which
uses both these attributes).  IOW, if a package uses both attributes,
it's a mistake, we should document that to be a mistake (i.e. not just
say :package-version "overrides"), and it should probably be flagged
as a mistake by checkdoc.  And yes, functions that need the version
information should ignore :version if :package-version is available.
Which means describe-variable-custom-version-info should indeed be
fixed.

Thanks.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#13824; Package emacs. (Sun, 11 Aug 2019 18:07:02 GMT) Full text and rfc822 format available.

Message #30 received at 13824 <at> debbugs.gnu.org (full text, mbox):

From: Bill Wohler <wohler <at> newt.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: bzg <at> altern.org, stefan <at> marxist.se, 13824 <at> debbugs.gnu.org
Subject: Re: bug#13824: 24.3.50;
 :package-version not taking priority over :version
Date: Sun, 11 Aug 2019 11:06:04 -0700
Eli Zaretskii <eliz <at> gnu.org> wrote:

> > cc: Stefan Kangas <stefan <at> marxist.se>, bzg <at> altern.org,
> >     13824 <at> debbugs.gnu.org
> > From: Bill Wohler <wohler <at> newt.com>
> > Date: Sat, 10 Aug 2019 15:10:13 -0700
> > 
> > > Bill, what is your take on this?  Your change, which introduced this
> > > attribute, only modified customize-changed-options.  Was that on
> > > purpose?
> > 
> > Thanks for asking. The original intent of package-version was to provide
> > more accurate version information in packages that were updated more
> > often than Emacs, regardless of whether they were packaged in Emacs
> > (like MH-E and Gnus) or not. I think that should apply to any function
> > that displays version information for an option. That is, any function
> > that looks for :version should also look for :package-version.
> 
> Thanks.
> 
> Upon taking a better look, I conclude that there's more here than
> originally met the eye.
> 
> First, the doc string of defcustom says:
> 
>   :package-version
> 	  VALUE should be a list with the form (PACKAGE . VERSION)
> 	  specifying that the variable was first introduced, or its
> 	  default value was changed, in PACKAGE version VERSION.  This
> 	  keyword takes priority over :version.  For packages which
> 	  are bundled with Emacs releases, the PACKAGE and VERSION
> 	  must appear in the alist `customize-package-emacs-version-alist'.
>           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> 
> So Stefan's reproducer, viz.:
> 
>     (progn
>       (defcustom foobar nil
>         "foo"
>         :version "27.1"
>         :package-version '(foo . "1"))
>       (describe-variable-custom-version-info 'foobar))
> 
> wasn't supposed to work, since it doesn't play by the rules.
> 
> Next, MH-E uses :package-version, but doesn't use :version.  So, for
> example, "C-h v mh-whitelist-preserves-sequences-flag RET" produces
> the expected
> 
>   This variable was introduced, or its default value was changed, in
>   version 8.4 of the MH-E package that is part of Emacs 24.4.
> 
> By contrast, Org mode files use both :package-version and :version,
> which I guess was the reason why Bastien filed this bug report in the
> first place.
> 
> Now, since we _require_ the package versions to appear in
> customize-package-emacs-version-alist, specifying :package-version
> alone provides all the info we need about both the package version and
> the corresponding Emacs version.  Therefore, specifying :version as
> well is simply redundant when :package-version is given, and Org
> shouldn't use :version (btw, Org is the only bundled package which
> uses both these attributes).  IOW, if a package uses both attributes,
> it's a mistake, we should document that to be a mistake (i.e. not just
> say :package-version "overrides"), and it should probably be flagged
> as a mistake by checkdoc.  And yes, functions that need the version
> information should ignore :version if :package-version is available.
> Which means describe-variable-custom-version-info should indeed be
> fixed.

Thanks for digging in. That makes sense. A function that gets the
version info from :package-version or :version as appropriate could be
written (if it hasn't already). If used consistently throughout, it
would provide a good example for obtaining version information.

> 
> Thanks.
> 

-- 
Bill Wohler <wohler <at> newt.com> aka <Bill.Wohler <at> nasa.gov>
http://www.newt.com/wohler/, GnuPG ID:610BD9AD




This bug report was last modified 5 years and 306 days ago.

Previous Next


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