aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2013-06-25 12:13:49 -0400
committerStefan Monnier2013-06-25 12:13:49 -0400
commit120597093d51973b0328cf7db2b23e3f089c06b3 (patch)
tree1f09ded40b2d2997221e41bab343f92f7da49de6
parent3179b27616c0e763e019a2233591d6adc8e50964 (diff)
downloademacs-120597093d51973b0328cf7db2b23e3f089c06b3.tar.gz
emacs-120597093d51973b0328cf7db2b23e3f089c06b3.zip
* lisp/emacs-lisp/package.el: Include obsolete packages from archives.
Use lexical-binding. (package-archive-contents): Change format; include obsolete packages. (package-desc): Use `dir' to mark builtin packages. (package--from-builtin): Set the `dir' field to `builtin'. (generated-autoload-file, version-control): Declare. (package-compute-transaction): Change first arg and return value to be lists of package-descs. Adjust to new package-archive-contents format. (package--add-to-archive-contents): Adjust to new package-archive-contents format. (package-download-transaction): Arg is now a list of package-descs. (package-install): If `pkg' is a package name, pass it as a requirement, so it is subject to the usual (e.g. disabled) checks. (describe-package): Accept package-desc as well. (describe-package-1): Describe a specific package-desc. Add links to other package-descs for the same package name. (package-menu-describe-package): Pass the actual package-desc. (package-menu-mode): Add to tabulated-list-revert-hook so revert-buffer works correctly. (package-desc-status): New function. (package-menu--refresh): New function, extracted from package-menu--generate. (package-menu--generate): Use it. (package-delete): Update package-alist. (package-menu-execute): Don't call package-initialize. * lisp/progmodes/idlw-toolbar.el, lisp/progmodes/idlw-shell.el, lisp/progmodes/idlw-help.el, lisp/progmodes/idlw-complete-structtag.el, lisp/progmodes/ebnf-yac.el, lisp/progmodes/ebnf-otz.el, lisp/progmodes/ebnf-iso.el, lisp/progmodes/ebnf-ebx.el, lisp/progmodes/ebnf-dtd.el, lisp/progmodes/ebnf-bnf.el, lisp/progmodes/ebnf-abn.el, lisp/emacs-lisp/package-x.el, lisp/emacs-lisp/cl-seq.el, lisp/emacs-lisp/cl-macs.el lisp/cedet/data-debug.el, lisp/cedet/cedet-idutils.el: Neuter the "Version:" header.
-rw-r--r--lisp/ChangeLog35
-rw-r--r--lisp/cedet/ChangeLog4
-rw-r--r--lisp/cedet/cedet-idutils.el2
-rw-r--r--lisp/cedet/data-debug.el2
-rw-r--r--lisp/emacs-lisp/cl-macs.el2
-rw-r--r--lisp/emacs-lisp/cl-seq.el2
-rw-r--r--lisp/emacs-lisp/package-x.el1
-rw-r--r--lisp/emacs-lisp/package.el445
-rw-r--r--lisp/progmodes/ebnf-abn.el2
-rw-r--r--lisp/progmodes/ebnf-bnf.el2
-rw-r--r--lisp/progmodes/ebnf-dtd.el2
-rw-r--r--lisp/progmodes/ebnf-ebx.el2
-rw-r--r--lisp/progmodes/ebnf-iso.el2
-rw-r--r--lisp/progmodes/ebnf-otz.el2
-rw-r--r--lisp/progmodes/ebnf-yac.el2
-rw-r--r--lisp/progmodes/idlw-complete-structtag.el2
-rw-r--r--lisp/progmodes/idlw-help.el1
-rw-r--r--lisp/progmodes/idlw-shell.el1
-rw-r--r--lisp/progmodes/idlw-toolbar.el1
19 files changed, 303 insertions, 209 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index d5417a8c2c5..e4a42f955d3 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,38 @@
12013-06-25 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * emacs-lisp/package.el: Use lexical-binding. Include obsolete
4 packages from archives.
5 (package-archive-contents): Change format; include obsolete packages.
6 (package-desc): Use `dir' to mark builtin packages.
7 (package--from-builtin): Set the `dir' field to `builtin'.
8 (generated-autoload-file, version-control): Declare.
9 (package-compute-transaction): Change first arg and return value to be
10 lists of package-descs. Adjust to new package-archive-contents format.
11 (package--add-to-archive-contents): Adjust to new
12 package-archive-contents format.
13 (package-download-transaction): Arg is now a list of package-descs.
14 (package-install): If `pkg' is a package name, pass it as
15 a requirement, so it is subject to the usual (e.g. disabled) checks.
16 (describe-package): Accept package-desc as well.
17 (describe-package-1): Describe a specific package-desc. Add links to
18 other package-descs for the same package name.
19 (package-menu-describe-package): Pass the actual package-desc.
20 (package-menu-mode): Add to tabulated-list-revert-hook so revert-buffer
21 works correctly.
22 (package-desc-status): New function.
23 (package-menu--refresh): New function, extracted
24 from package-menu--generate.
25 (package-menu--generate): Use it.
26 (package-delete): Update package-alist.
27 (package-menu-execute): Don't call package-initialize.
28
29 * progmodes/idlw-toolbar.el, progmodes/idlw-shell.el,
30 progmodes/idlw-help.el, progmodes/idlw-complete-structtag.el,
31 progmodes/ebnf-yac.el, progmodes/ebnf-otz.el, progmodes/ebnf-iso.el,
32 progmodes/ebnf-ebx.el, progmodes/ebnf-dtd.el, progmodes/ebnf-bnf.el,
33 progmodes/ebnf-abn.el, emacs-lisp/package-x.el, emacs-lisp/cl-seq.el,
34 emacs-lisp/cl-macs.el: Neuter the "Version:" header.
35
12013-06-25 Martin Rudalics <rudalics@gmx.at> 362013-06-25 Martin Rudalics <rudalics@gmx.at>
2 37
3 * window.el (window--state-get-1): Workaround for bug#14527. 38 * window.el (window--state-get-1): Workaround for bug#14527.
diff --git a/lisp/cedet/ChangeLog b/lisp/cedet/ChangeLog
index 30d516f778f..7a2c5755cc0 100644
--- a/lisp/cedet/ChangeLog
+++ b/lisp/cedet/ChangeLog
@@ -1,3 +1,7 @@
12013-06-25 Stefan Monnier <monnier@iro.umontreal.ca>
2
3 * data-debug.el, cedet-idutils.el: Neuter the "Version:" header.
4
12013-06-19 Glenn Morris <rgm@fencepost.gnu.org> 52013-06-19 Glenn Morris <rgm@fencepost.gnu.org>
2 6
3 * semantic/idle.el (define-semantic-idle-service): 7 * semantic/idle.el (define-semantic-idle-service):
diff --git a/lisp/cedet/cedet-idutils.el b/lisp/cedet/cedet-idutils.el
index 2f1dda4a71c..49d22b6a0ab 100644
--- a/lisp/cedet/cedet-idutils.el
+++ b/lisp/cedet/cedet-idutils.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 2009-2013 Free Software Foundation, Inc. 3;; Copyright (C) 2009-2013 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <eric@siege-engine.com> 5;; Author: Eric M. Ludlam <eric@siege-engine.com>
6;; Version: 0.2 6;; Old-Version: 0.2
7;; Keywords: OO, lisp 7;; Keywords: OO, lisp
8;; Package: cedet 8;; Package: cedet
9 9
diff --git a/lisp/cedet/data-debug.el b/lisp/cedet/data-debug.el
index dec3c7b2af2..c468ec1046a 100644
--- a/lisp/cedet/data-debug.el
+++ b/lisp/cedet/data-debug.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 2007-2013 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2013 Free Software Foundation, Inc.
4 4
5;; Author: Eric M. Ludlam <zappo@gnu.org> 5;; Author: Eric M. Ludlam <zappo@gnu.org>
6;; Version: 0.2 6;; Old-Version: 0.2
7;; Keywords: OO, lisp 7;; Keywords: OO, lisp
8;; Package: cedet 8;; Package: cedet
9 9
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 384aa18e153..3cf744f1245 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 1993, 2001-2013 Free Software Foundation, Inc. 3;; Copyright (C) 1993, 2001-2013 Free Software Foundation, Inc.
4 4
5;; Author: Dave Gillespie <daveg@synaptics.com> 5;; Author: Dave Gillespie <daveg@synaptics.com>
6;; Version: 2.02 6;; Old-Version: 2.02
7;; Keywords: extensions 7;; Keywords: extensions
8;; Package: emacs 8;; Package: emacs
9 9
diff --git a/lisp/emacs-lisp/cl-seq.el b/lisp/emacs-lisp/cl-seq.el
index fbf68f62b4a..6b5b329e33f 100644
--- a/lisp/emacs-lisp/cl-seq.el
+++ b/lisp/emacs-lisp/cl-seq.el
@@ -3,7 +3,7 @@
3;; Copyright (C) 1993, 2001-2013 Free Software Foundation, Inc. 3;; Copyright (C) 1993, 2001-2013 Free Software Foundation, Inc.
4 4
5;; Author: Dave Gillespie <daveg@synaptics.com> 5;; Author: Dave Gillespie <daveg@synaptics.com>
6;; Version: 2.02 6;; Old-Version: 2.02
7;; Keywords: extensions 7;; Keywords: extensions
8;; Package: emacs 8;; Package: emacs
9 9
diff --git a/lisp/emacs-lisp/package-x.el b/lisp/emacs-lisp/package-x.el
index 7d0d75f7cee..628eb88eea0 100644
--- a/lisp/emacs-lisp/package-x.el
+++ b/lisp/emacs-lisp/package-x.el
@@ -4,7 +4,6 @@
4 4
5;; Author: Tom Tromey <tromey@redhat.com> 5;; Author: Tom Tromey <tromey@redhat.com>
6;; Created: 10 Mar 2007 6;; Created: 10 Mar 2007
7;; Version: 0.9
8;; Keywords: tools 7;; Keywords: tools
9;; Package: package 8;; Package: package
10 9
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 37f20e0cfed..e141ea572f1 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -1,4 +1,4 @@
1;;; package.el --- Simple package system for Emacs 1;;; package.el --- Simple package system for Emacs -*- lexical-binding:t -*-
2 2
3;; Copyright (C) 2007-2013 Free Software Foundation, Inc. 3;; Copyright (C) 2007-2013 Free Software Foundation, Inc.
4 4
@@ -253,7 +253,7 @@ Lower version numbers than this will probably be understood as well.")
253(defvar package-archive-contents nil 253(defvar package-archive-contents nil
254 "Cache of the contents of the Emacs Lisp Package Archive. 254 "Cache of the contents of the Emacs Lisp Package Archive.
255This is an alist mapping package names (symbols) to 255This is an alist mapping package names (symbols) to
256`package-desc' structures.") 256non-empty lists of `package-desc' structures.")
257(put 'package-archive-contents 'risky-local-variable t) 257(put 'package-archive-contents 'risky-local-variable t)
258 258
259(defcustom package-user-dir (locate-user-emacs-file "elpa") 259(defcustom package-user-dir (locate-user-emacs-file "elpa")
@@ -306,27 +306,27 @@ contrast, `package-user-dir' contains packages for personal use."
306 (nth 1 requirements) 306 (nth 1 requirements)
307 requirements)))))) 307 requirements))))))
308 "Structure containing information about an individual package. 308 "Structure containing information about an individual package.
309
310Slots: 309Slots:
311 310
312`name' Name of the package, as a symbol. 311`name' Name of the package, as a symbol.
313 312
314`version' Version of the package, as a version list. 313`version' Version of the package, as a version list.
315 314
316`summary' Short description of the package, typically taken from 315`summary' Short description of the package, typically taken from
317the first line of the file. 316 the first line of the file.
318 317
319`reqs' Requirements of the package. A list of (PACKAGE 318`reqs' Requirements of the package. A list of (PACKAGE
320VERSION-LIST) naming the dependent package and the minimum 319 VERSION-LIST) naming the dependent package and the minimum
321required version. 320 required version.
322 321
323`kind' The distribution format of the package. Currently, it is 322`kind' The distribution format of the package. Currently, it is
324either `single' or `tar'. 323 either `single' or `tar'.
325 324
326`archive' The name of the archive (as a string) whence this 325`archive' The name of the archive (as a string) whence this
327package came. 326 package came.
328 327
329`dir' The directory where the package is installed (if installed)." 328`dir' The directory where the package is installed (if installed),
329 `builtin' if it is built-in, or nil otherwise."
330 name 330 name
331 version 331 version
332 (summary package--default-summary) 332 (summary package--default-summary)
@@ -488,7 +488,8 @@ specifying the minimum acceptable version."
488(defun package--from-builtin (bi-desc) 488(defun package--from-builtin (bi-desc)
489 (package-desc-create :name (pop bi-desc) 489 (package-desc-create :name (pop bi-desc)
490 :version (package--bi-desc-version bi-desc) 490 :version (package--bi-desc-version bi-desc)
491 :summary (package--bi-desc-summary bi-desc))) 491 :summary (package--bi-desc-summary bi-desc)
492 :dir 'builtin))
492 493
493;; This function goes ahead and activates a newer version of a package 494;; This function goes ahead and activates a newer version of a package
494;; if an older one was already activated. This is not ideal; we'd at 495;; if an older one was already activated. This is not ideal; we'd at
@@ -583,6 +584,9 @@ EXTRA-PROPERTIES is currently unused."
583 nil file)) 584 nil file))
584 file) 585 file)
585 586
587(defvar generated-autoload-file)
588(defvar version-control)
589
586(defun package-generate-autoloads (name pkg-dir) 590(defun package-generate-autoloads (name pkg-dir)
587 (require 'autoload) ;Load before we let-bind generated-autoload-file! 591 (require 'autoload) ;Load before we let-bind generated-autoload-file!
588 (let* ((auto-name (format "%s-autoloads.el" name)) 592 (let* ((auto-name (format "%s-autoloads.el" name))
@@ -756,9 +760,9 @@ MIN-VERSION should be a version list."
756 ;; Also check built-in packages. 760 ;; Also check built-in packages.
757 (package-built-in-p package min-version))) 761 (package-built-in-p package min-version)))
758 762
759(defun package-compute-transaction (package-list requirements) 763(defun package-compute-transaction (packages requirements)
760 "Return a list of packages to be installed, including PACKAGE-LIST. 764 "Return a list of packages to be installed, including PACKAGES.
761PACKAGE-LIST should be a list of package names (symbols). 765PACKAGES should be a list of `package-desc'.
762 766
763REQUIREMENTS should be a list of additional requirements; each 767REQUIREMENTS should be a list of additional requirements; each
764element in this list should have the form (PACKAGE VERSION-LIST), 768element in this list should have the form (PACKAGE VERSION-LIST),
@@ -769,40 +773,65 @@ This function recursively computes the requirements of the
769packages in REQUIREMENTS, and returns a list of all the packages 773packages in REQUIREMENTS, and returns a list of all the packages
770that must be installed. Packages that are already installed are 774that must be installed. Packages that are already installed are
771not included in this list." 775not included in this list."
776 ;; FIXME: We really should use backtracking to explore the whole
777 ;; search space (e.g. if foo require bar-1.3, and bar-1.4 requires toto-1.1
778 ;; whereas bar-1.3 requires toto-1.0 and the user has put a hold on toto-1.0:
779 ;; the current code might fail to see that it could install foo by using the
780 ;; older bar-1.3).
772 (dolist (elt requirements) 781 (dolist (elt requirements)
773 (let* ((next-pkg (car elt)) 782 (let* ((next-pkg (car elt))
774 (next-version (cadr elt))) 783 (next-version (cadr elt))
775 (unless (package-installed-p next-pkg next-version) 784 (already ()))
785 (dolist (pkg packages)
786 (if (eq next-pkg (package-desc-name pkg))
787 (setq already pkg)))
788 (cond
789 (already
790 (if (version-list-< next-version (package-desc-version already))
791 ;; Move to front, so it gets installed early enough (bug#14082).
792 (setq packages (cons already (delq already packages)))
793 (error "Need package `%s-%s', but only %s is available"
794 next-pkg (package-version-join next-version)
795 (package-version-join (package-desc-version already)))))
796
797 ((package-installed-p next-pkg next-version) nil)
798
799 (t
776 ;; A package is required, but not installed. It might also be 800 ;; A package is required, but not installed. It might also be
777 ;; blocked via `package-load-list'. 801 ;; blocked via `package-load-list'.
778 (let ((pkg-desc (cdr (assq next-pkg package-archive-contents))) 802 (let ((pkg-descs (cdr (assq next-pkg package-archive-contents)))
779 ;; FIXME: package-disabled-p needs to use a <= test! 803 (found nil)
780 (disabled (package-disabled-p next-pkg next-version))) 804 (problem nil))
781 (when disabled 805 (while (and pkg-descs (not found))
782 (if (stringp disabled) 806 (let* ((pkg-desc (pop pkg-descs))
783 (error "Package `%s' held at version %s, \ 807 (version (package-desc-version pkg-desc))
808 (disabled (package-disabled-p next-pkg version)))
809 (cond
810 ((version-list-< version next-version)
811 (error
812 "Need package `%s-%s', but only %s is available"
813 next-pkg (package-version-join next-version)
814 (package-version-join version)))
815 (disabled
816 (unless problem
817 (setq problem
818 (if (stringp disabled)
819 (format "Package `%s' held at version %s, \
784but version %s required" 820but version %s required"
785 (symbol-name next-pkg) disabled 821 next-pkg disabled
786 (package-version-join next-version)) 822 (package-version-join next-version))
787 (error "Required package '%s' is disabled" 823 (format "Required package '%s' is disabled"
788 (symbol-name next-pkg)))) 824 next-pkg)))))
789 (unless pkg-desc 825 (t (setq found pkg-desc)))))
790 (error "Package `%s-%s' is unavailable" 826 (unless found
791 (symbol-name next-pkg) 827 (if problem
792 (package-version-join next-version))) 828 (error problem)
793 (unless (version-list-<= next-version 829 (error "Package `%s-%s' is unavailable"
794 (package-desc-version pkg-desc)) 830 next-pkg (package-version-join next-version))))
795 (error 831 (setq packages
796 "Need package `%s-%s', but only %s is available" 832 (package-compute-transaction (cons found packages)
797 (symbol-name next-pkg) (package-version-join next-version) 833 (package-desc-reqs found))))))))
798 (package-version-join (package-desc-version pkg-desc)))) 834 packages)
799 ;; Move to front, so it gets installed early enough (bug#14082).
800 (setq package-list (cons next-pkg (delq next-pkg package-list)))
801 (setq package-list
802 (package-compute-transaction package-list
803 (package-desc-reqs
804 pkg-desc)))))))
805 package-list)
806 835
807(defun package-read-from-string (str) 836(defun package-read-from-string (str)
808 "Read a Lisp expression from STR. 837 "Read a Lisp expression from STR.
@@ -875,40 +904,35 @@ Also, add the originating archive to the `package-desc' structure."
875 :summary (package--ac-desc-summary (cdr package)) 904 :summary (package--ac-desc-summary (cdr package))
876 :kind (package--ac-desc-kind (cdr package)) 905 :kind (package--ac-desc-kind (cdr package))
877 :archive archive)) 906 :archive archive))
878 (entry (cons name pkg-desc)) 907 (existing-packages (assq name package-archive-contents))
879 (existing-package (assq name package-archive-contents))
880 (pinned-to-archive (assoc name package-pinned-packages))) 908 (pinned-to-archive (assoc name package-pinned-packages)))
881 (cond 909 (cond
882 ;; Skip entirely if pinned to another archive or if no more recent 910 ;; Skip entirely if pinned to another archive or already installed.
883 ;; than what we already have installed.
884 ((or (and pinned-to-archive 911 ((or (and pinned-to-archive
885 (not (equal (cdr pinned-to-archive) archive))) 912 (not (equal (cdr pinned-to-archive) archive)))
886 (let ((bi (assq name package--builtin-versions))) 913 (let ((bi (assq name package--builtin-versions)))
887 (and bi (version-list-<= version (cdr bi)))) 914 (and bi (version-list-= version (cdr bi))))
888 (let ((ins (cdr (assq name package-alist)))) 915 (let ((ins (cdr (assq name package-alist))))
889 (and ins (version-list-<= version 916 (and ins (version-list-= version
890 (package-desc-version (car ins)))))) 917 (package-desc-version (car ins))))))
891 nil) 918 nil)
892 ((not existing-package) 919 ((not existing-packages)
893 (push entry package-archive-contents)) 920 (push (list name pkg-desc) package-archive-contents))
894 ((version-list-< (package-desc-version (cdr existing-package)) 921 (t
895 version) 922 (while
896 ;; Replace the entry with this one. 923 (if (and (cdr existing-packages)
897 (setq package-archive-contents 924 (version-list-<
898 (cons entry 925 version (package-desc-version (cadr existing-packages))))
899 (delq existing-package 926 (setq existing-packages (cdr existing-packages))
900 package-archive-contents))))))) 927 (push pkg-desc (cdr existing-packages))))))))
901 928
902(defun package-download-transaction (package-list) 929(defun package-download-transaction (packages)
903 "Download and install all the packages in PACKAGE-LIST. 930 "Download and install all the packages in PACKAGES.
904PACKAGE-LIST should be a list of package names (symbols). 931PACKAGES should be a list of package-desc.
905This function assumes that all package requirements in 932This function assumes that all package requirements in
906PACKAGE-LIST are satisfied, i.e. that PACKAGE-LIST is computed 933PACKAGES are satisfied, i.e. that PACKAGES is computed
907using `package-compute-transaction'." 934using `package-compute-transaction'."
908 ;; FIXME: make package-list a list of pkg-desc. 935 (mapc #'package-install-from-archive packages))
909 (dolist (elt package-list)
910 (let ((desc (cdr (assq elt package-archive-contents))))
911 (package-install-from-archive desc))))
912 936
913;;;###autoload 937;;;###autoload
914(defun package-install (pkg) 938(defun package-install (pkg)
@@ -924,21 +948,16 @@ in an archive in `package-archives'. Interactively, prompt for its name."
924 (unless package-archive-contents 948 (unless package-archive-contents
925 (package-refresh-contents)) 949 (package-refresh-contents))
926 (list (intern (completing-read 950 (list (intern (completing-read
927 "Install package: " 951 "Install package: "
928 (mapcar (lambda (elt) 952 (mapcar (lambda (elt) (symbol-name (car elt)))
929 (cons (symbol-name (car elt)) 953 package-archive-contents)
930 nil))
931 package-archive-contents)
932 nil t))))) 954 nil t)))))
933 (let ((pkg-desc
934 (if (package-desc-p pkg) pkg
935 (cdr (assq pkg package-archive-contents)))))
936 (unless pkg-desc
937 (error "Package `%s' is not available for installation" pkg))
938 (package-download-transaction 955 (package-download-transaction
939 ;; FIXME: Use (list pkg-desc) instead of just the name. 956 (if (package-desc-p pkg)
940 (package-compute-transaction (list (package-desc-name pkg-desc)) 957 (package-compute-transaction (list pkg)
941 (package-desc-reqs pkg-desc))))) 958 (package-desc-reqs pkg))
959 (package-compute-transaction ()
960 (list (list pkg))))))
942 961
943(defun package-strip-rcs-id (str) 962(defun package-strip-rcs-id (str)
944 "Strip RCS version ID from the version string STR. 963 "Strip RCS version ID from the version string STR.
@@ -1043,15 +1062,17 @@ The file can either be a tar file or an Emacs Lisp file."
1043 1062
1044(defun package-delete (pkg-desc) 1063(defun package-delete (pkg-desc)
1045 (let ((dir (package-desc-dir pkg-desc))) 1064 (let ((dir (package-desc-dir pkg-desc)))
1046 (if (string-equal (file-name-directory dir) 1065 (if (not (string-prefix-p (file-name-as-directory
1047 (file-name-as-directory 1066 (expand-file-name package-user-dir))
1048 (expand-file-name package-user-dir))) 1067 (expand-file-name dir)))
1049 (progn 1068 ;; Don't delete "system" packages.
1050 (delete-directory dir t t) 1069 (error "Package `%s' is a system package, not deleting"
1051 (message "Package `%s' deleted." (package-desc-full-name pkg-desc))) 1070 (package-desc-full-name pkg-desc))
1052 ;; Don't delete "system" packages 1071 (delete-directory dir t t)
1053 (error "Package `%s' is a system package, not deleting" 1072 ;; Update package-alist.
1054 (package-desc-full-name pkg-desc))))) 1073 (let* ((name (package-desc-name pkg-desc)))
1074 (delete pkg-desc (assq name package-alist)))
1075 (message "Package `%s' deleted." (package-desc-full-name pkg-desc)))))
1055 1076
1056(defun package-archive-base (desc) 1077(defun package-archive-base (desc)
1057 "Return the archive containing the package NAME." 1078 "Return the archive containing the package NAME."
@@ -1110,26 +1131,25 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
1110(defun describe-package (package) 1131(defun describe-package (package)
1111 "Display the full documentation of PACKAGE (a symbol)." 1132 "Display the full documentation of PACKAGE (a symbol)."
1112 (interactive 1133 (interactive
1113 (let* ((guess (function-called-at-point)) 1134 (let* ((guess (function-called-at-point)))
1114 packages val)
1115 (require 'finder-inf nil t) 1135 (require 'finder-inf nil t)
1116 ;; Load the package list if necessary (but don't activate them). 1136 ;; Load the package list if necessary (but don't activate them).
1117 (unless package--initialized 1137 (unless package--initialized
1118 (package-initialize t)) 1138 (package-initialize t))
1119 (setq packages (append (mapcar 'car package-alist) 1139 (let ((packages (append (mapcar 'car package-alist)
1120 (mapcar 'car package-archive-contents) 1140 (mapcar 'car package-archive-contents)
1121 (mapcar 'car package--builtins))) 1141 (mapcar 'car package--builtins))))
1122 (unless (memq guess packages) 1142 (unless (memq guess packages)
1123 (setq guess nil)) 1143 (setq guess nil))
1124 (setq packages (mapcar 'symbol-name packages)) 1144 (setq packages (mapcar 'symbol-name packages))
1125 (setq val 1145 (let ((val
1126 (completing-read (if guess 1146 (completing-read (if guess
1127 (format "Describe package (default %s): " 1147 (format "Describe package (default %s): "
1128 guess) 1148 guess)
1129 "Describe package: ") 1149 "Describe package: ")
1130 packages nil t nil nil guess)) 1150 packages nil t nil nil guess)))
1131 (list (if (equal val "") guess (intern val))))) 1151 (list (intern val))))))
1132 (if (not (and package (symbolp package))) 1152 (if (not (or (package-desc-p package) (and package (symbolp package))))
1133 (message "No package specified") 1153 (message "No package specified")
1134 (help-setup-xref (list #'describe-package package) 1154 (help-setup-xref (list #'describe-package package)
1135 (called-interactively-p 'interactive)) 1155 (called-interactively-p 'interactive))
@@ -1137,57 +1157,52 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
1137 (with-current-buffer standard-output 1157 (with-current-buffer standard-output
1138 (describe-package-1 package))))) 1158 (describe-package-1 package)))))
1139 1159
1140(defun describe-package-1 (package) 1160(defun describe-package-1 (pkg)
1141 (require 'lisp-mnt) 1161 (require 'lisp-mnt)
1142 (let ((package-name (symbol-name package)) 1162 (let* ((desc (or
1143 (built-in (assq package package--builtins)) 1163 (if (package-desc-p pkg) pkg)
1144 desc pkg-dir reqs version installable archive) 1164 (cadr (assq pkg package-alist))
1145 (prin1 package) 1165 (let ((built-in (assq pkg package--builtins)))
1166 (if built-in
1167 (package--from-builtin built-in)
1168 (cadr (assq pkg package-archive-contents))))))
1169 (name (if desc (package-desc-name desc) pkg))
1170 (pkg-dir (if desc (package-desc-dir desc)))
1171 (reqs (if desc (package-desc-reqs desc)))
1172 (version (if desc (package-desc-version desc)))
1173 (archive (if desc (package-desc-archive desc)))
1174 (built-in (eq pkg-dir 'builtin))
1175 (installable (and archive (not built-in)))
1176 (status (if desc (package-desc-status desc) "orphan")))
1177 (prin1 name)
1146 (princ " is ") 1178 (princ " is ")
1147 (cond 1179 (princ (if (memq (aref status 0) '(?a ?e ?i ?o ?u)) "an " "a "))
1148 ;; Loaded packages are in `package-alist'. 1180 (princ status)
1149 ((setq desc (cadr (assq package package-alist))) 1181 (princ " package.\n\n")
1150 (setq version (package-version-join (package-desc-version desc)))
1151 (if (setq pkg-dir (package-desc-dir desc))
1152 (insert "an installed package.\n\n")
1153 ;; This normally does not happen.
1154 (insert "a deleted package.\n\n")))
1155 ;; Available packages are in `package-archive-contents'.
1156 ((setq desc (cdr (assq package package-archive-contents)))
1157 (setq version (package-version-join (package-desc-version desc))
1158 archive (package-desc-archive desc)
1159 installable t)
1160 (if built-in
1161 (insert "a built-in package.\n\n")
1162 (insert "an uninstalled package.\n\n")))
1163 (built-in
1164 (setq desc (package--from-builtin built-in)
1165 version (package-version-join (package-desc-version desc)))
1166 (insert "a built-in package.\n\n"))
1167 (t
1168 (insert "an orphan package.\n\n")))
1169 1182
1170 (insert " " (propertize "Status" 'font-lock-face 'bold) ": ") 1183 (insert " " (propertize "Status" 'font-lock-face 'bold) ": ")
1171 (cond (pkg-dir 1184 (cond (built-in
1172 (insert (propertize "Installed" 1185 (insert (propertize (capitalize status)
1186 'font-lock-face 'font-lock-builtin-face)
1187 "."))
1188 (pkg-dir
1189 (insert (propertize (capitalize status) ;FIXME: Why comment-face?
1173 'font-lock-face 'font-lock-comment-face)) 1190 'font-lock-face 'font-lock-comment-face))
1174 (insert " in `") 1191 (insert " in `")
1175 ;; Todo: Add button for uninstalling. 1192 ;; Todo: Add button for uninstalling.
1176 (help-insert-xref-button (file-name-as-directory pkg-dir) 1193 (help-insert-xref-button (abbreviate-file-name
1194 (file-name-as-directory pkg-dir))
1177 'help-package-def pkg-dir) 1195 'help-package-def pkg-dir)
1178 (if built-in 1196 (if (and (package-built-in-p name)
1197 (not (package-built-in-p name version)))
1179 (insert "',\n shadowing a " 1198 (insert "',\n shadowing a "
1180 (propertize "built-in package" 1199 (propertize "built-in package"
1181 'font-lock-face 'font-lock-builtin-face) 1200 'font-lock-face 'font-lock-builtin-face)
1182 ".") 1201 ".")
1183 (insert "'."))) 1202 (insert "'.")))
1184 (installable 1203 (installable
1185 (if built-in 1204 (insert (capitalize status))
1186 (insert (propertize "Built-in." 1205 (insert " from " (format "%s" archive))
1187 'font-lock-face 'font-lock-builtin-face)
1188 " Alternate version available")
1189 (insert "Available"))
1190 (insert " from " archive)
1191 (insert " -- ") 1206 (insert " -- ")
1192 (let ((button-text (if (display-graphic-p) "Install" "[Install]")) 1207 (let ((button-text (if (display-graphic-p) "Install" "[Install]"))
1193 (button-face (if (display-graphic-p) 1208 (button-face (if (display-graphic-p)
@@ -1198,14 +1213,12 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
1198 (insert-text-button button-text 'face button-face 'follow-link t 1213 (insert-text-button button-text 'face button-face 'follow-link t
1199 'package-desc desc 1214 'package-desc desc
1200 'action 'package-install-button-action))) 1215 'action 'package-install-button-action)))
1201 (built-in 1216 (t (insert (capitalize status) ".")))
1202 (insert (propertize "Built-in."
1203 'font-lock-face 'font-lock-builtin-face)))
1204 (t (insert "Deleted.")))
1205 (insert "\n") 1217 (insert "\n")
1206 (and version (> (length version) 0) 1218 (and version
1207 (insert " " 1219 (insert " "
1208 (propertize "Version" 'font-lock-face 'bold) ": " version "\n")) 1220 (propertize "Version" 'font-lock-face 'bold) ": "
1221 (package-version-join version) "\n"))
1209 1222
1210 (setq reqs (if desc (package-desc-reqs desc))) 1223 (setq reqs (if desc (package-desc-reqs desc)))
1211 (when reqs 1224 (when reqs
@@ -1225,11 +1238,38 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
1225 (help-insert-xref-button text 'help-package name)) 1238 (help-insert-xref-button text 'help-package name))
1226 (insert "\n"))) 1239 (insert "\n")))
1227 (insert " " (propertize "Summary" 'font-lock-face 'bold) 1240 (insert " " (propertize "Summary" 'font-lock-face 'bold)
1228 ": " (if desc (package-desc-summary desc)) "\n\n") 1241 ": " (if desc (package-desc-summary desc)) "\n")
1242
1243 (let* ((all-pkgs (append (cdr (assq name package-alist))
1244 (cdr (assq name package-archive-contents))
1245 (let ((bi (assq name package--builtins)))
1246 (if bi (list (package--from-builtin bi))))))
1247 (other-pkgs (delete desc all-pkgs)))
1248 (when other-pkgs
1249 (insert " " (propertize "Other versions" 'font-lock-face 'bold) ": "
1250 (mapconcat
1251 (lambda (opkg)
1252 (let* ((ov (package-desc-version opkg))
1253 (dir (package-desc-dir opkg))
1254 (from (or (package-desc-archive opkg)
1255 (if (stringp dir) "installed" dir))))
1256 (if (not ov) (format "%s" from)
1257 (format "%s (%s)"
1258 (make-text-button (package-version-join ov) nil
1259 'face 'link
1260 'follow-link t
1261 'action
1262 (lambda (_button)
1263 (describe-package opkg)))
1264 from))))
1265 other-pkgs ", ")
1266 ".\n")))
1267
1268 (insert "\n")
1229 1269
1230 (if built-in 1270 (if built-in
1231 ;; For built-in packages, insert the commentary. 1271 ;; For built-in packages, insert the commentary.
1232 (let ((fn (locate-file (concat package-name ".el") load-path 1272 (let ((fn (locate-file (format "%s.el" name) load-path
1233 load-file-rep-suffixes)) 1273 load-file-rep-suffixes))
1234 (opoint (point))) 1274 (opoint (point)))
1235 (insert (or (lm-commentary fn) "")) 1275 (insert (or (lm-commentary fn) ""))
@@ -1239,14 +1279,15 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
1239 (replace-match "")) 1279 (replace-match ""))
1240 (while (re-search-forward "^\\(;+ ?\\)" nil t) 1280 (while (re-search-forward "^\\(;+ ?\\)" nil t)
1241 (replace-match "")))) 1281 (replace-match ""))))
1242 (let ((readme (expand-file-name (concat package-name "-readme.txt") 1282 (let ((readme (expand-file-name (format "%s-readme.txt" name)
1243 package-user-dir)) 1283 package-user-dir))
1244 readme-string) 1284 readme-string)
1245 ;; For elpa packages, try downloading the commentary. If that 1285 ;; For elpa packages, try downloading the commentary. If that
1246 ;; fails, try an existing readme file in `package-user-dir'. 1286 ;; fails, try an existing readme file in `package-user-dir'.
1247 (cond ((condition-case nil 1287 (cond ((condition-case nil
1248 (package--with-work-buffer (package-archive-base desc) 1288 (package--with-work-buffer
1249 (concat package-name "-readme.txt") 1289 (package-archive-base desc)
1290 (format "%s-readme.txt" name)
1250 (setq buffer-file-name 1291 (setq buffer-file-name
1251 (expand-file-name readme package-user-dir)) 1292 (expand-file-name readme package-user-dir))
1252 (let ((version-control 'never)) 1293 (let ((version-control 'never))
@@ -1350,6 +1391,7 @@ Letters do not insert themselves; instead, they are commands.
1350 ("Description" 0 nil)]) 1391 ("Description" 0 nil)])
1351 (setq tabulated-list-padding 2) 1392 (setq tabulated-list-padding 2)
1352 (setq tabulated-list-sort-key (cons "Status" nil)) 1393 (setq tabulated-list-sort-key (cons "Status" nil))
1394 (add-hook 'tabulated-list-revert-hook 'package-menu--refresh)
1353 (tabulated-list-init-header)) 1395 (tabulated-list-init-header))
1354 1396
1355(defmacro package--push (pkg-desc status listname) 1397(defmacro package--push (pkg-desc status listname)
@@ -1363,34 +1405,49 @@ package PKG-DESC, add one. The alist is keyed with PKG-DESC."
1363(defvar package-list-unversioned nil 1405(defvar package-list-unversioned nil
1364 "If non-nil include packages that don't have a version in `list-package'.") 1406 "If non-nil include packages that don't have a version in `list-package'.")
1365 1407
1366(defun package-menu--generate (remember-pos packages) 1408(defun package-desc-status (pkg-desc)
1367 "Populate the Package Menu. 1409 (let* ((name (package-desc-name pkg-desc))
1368If REMEMBER-POS is non-nil, keep point on the same entry. 1410 (dir (package-desc-dir pkg-desc))
1369PACKAGES should be t, which means to display all known packages, 1411 (lle (assq name package-load-list))
1370or a list of package names (symbols) to display." 1412 (held (cadr lle))
1413 (version (package-desc-version pkg-desc)))
1414 (cond
1415 ((eq dir 'builtin) "built-in")
1416 ((and lle (null held)) "disabled")
1417 ((stringp held)
1418 (let ((hv (if (stringp held) (version-to-list held))))
1419 (cond
1420 ((version-list-= version hv) "held")
1421 ((version-list-< version hv) "obsolete")
1422 (t "disabled"))))
1423 ((package-built-in-p name version) "obsolete")
1424 (dir ;One of the installed packages.
1425 (cond
1426 ((not (file-exists-p (package-desc-dir pkg-desc))) "deleted")
1427 ((eq pkg-desc (cadr (assq name package-alist))) "installed")
1428 (t "obsolete")))
1429 (t
1430 (let* ((ins (cadr (assq name package-alist)))
1431 (ins-v (if ins (package-desc-version ins))))
1432 (cond
1433 ((or (null ins) (version-list-< ins-v version))
1434 (if (memq name package-menu--new-package-list)
1435 "new" "available"))
1436 ((version-list-< version ins-v) "obsolete")
1437 ((version-list-= version ins-v) "installed")))))))
1438
1439(defun package-menu--refresh (&optional packages)
1440 "Re-populate the `tabulated-list-entries'.
1441PACKAGES should be nil or t, which means to display all known packages."
1371 ;; Construct list of (PKG-DESC . STATUS). 1442 ;; Construct list of (PKG-DESC . STATUS).
1443 (unless packages (setq packages t))
1372 (let (info-list name) 1444 (let (info-list name)
1373 ;; Installed packages: 1445 ;; Installed packages:
1374 (dolist (elt package-alist) 1446 (dolist (elt package-alist)
1375 (setq name (car elt)) 1447 (setq name (car elt))
1376 (when (or (eq packages t) (memq name packages)) 1448 (when (or (eq packages t) (memq name packages))
1377 (let* ((lle (assq name package-load-list)) 1449 (dolist (pkg (cdr elt))
1378 (held (cadr lle)) 1450 (package--push pkg (package-desc-status pkg) info-list))))
1379 (hv (if (stringp held) (version-to-list held))))
1380 (dolist (pkg (cdr elt))
1381 (let ((version (package-desc-version pkg)))
1382 (package--push pkg
1383 (cond
1384 ((and lle (null held)) "disabled")
1385 (hv
1386 (cond
1387 ((version-list-= version hv) "held")
1388 ((version-list-< version hv) "obsolete")
1389 (t "disabled")))
1390 ((package-built-in-p name version) "obsolete")
1391 ((eq pkg (cadr elt)) "installed")
1392 (t "obsolete"))
1393 info-list))))))
1394 1451
1395 ;; Built-in packages: 1452 ;; Built-in packages:
1396 (dolist (elt package--builtins) 1453 (dolist (elt package--builtins)
@@ -1405,17 +1462,23 @@ or a list of package names (symbols) to display."
1405 (dolist (elt package-archive-contents) 1462 (dolist (elt package-archive-contents)
1406 (setq name (car elt)) 1463 (setq name (car elt))
1407 (when (or (eq packages t) (memq name packages)) 1464 (when (or (eq packages t) (memq name packages))
1408 (let ((hold (assq name package-load-list))) 1465 (dolist (pkg (cdr elt))
1409 (package--push (cdr elt) 1466 ;; Hide obsolete packages.
1410 (cond 1467 (unless (package-installed-p (package-desc-name pkg)
1411 ((and hold (null (cadr hold))) "disabled") 1468 (package-desc-version pkg))
1412 ((memq name package-menu--new-package-list) "new") 1469 (package--push pkg (package-desc-status pkg) info-list)))))
1413 (t "available"))
1414 info-list))))
1415 1470
1416 ;; Print the result. 1471 ;; Print the result.
1417 (setq tabulated-list-entries (mapcar 'package-menu--print-info info-list)) 1472 (setq tabulated-list-entries
1418 (tabulated-list-print remember-pos))) 1473 (mapcar #'package-menu--print-info info-list))))
1474
1475(defun package-menu--generate (remember-pos packages)
1476 "Populate the Package Menu.
1477 If REMEMBER-POS is non-nil, keep point on the same entry.
1478PACKAGES should be t, which means to display all known packages,
1479or a list of package names (symbols) to display."
1480 (package-menu--refresh packages)
1481 (tabulated-list-print remember-pos))
1419 1482
1420(defun package-menu--print-info (pkg) 1483(defun package-menu--print-info (pkg)
1421 "Return a package entry suitable for `tabulated-list-entries'. 1484 "Return a package entry suitable for `tabulated-list-entries'.
@@ -1461,8 +1524,8 @@ If optional arg BUTTON is non-nil, describe its associated package."
1461 (let ((pkg-desc (if button (button-get button 'package-desc) 1524 (let ((pkg-desc (if button (button-get button 'package-desc)
1462 (tabulated-list-get-id)))) 1525 (tabulated-list-get-id))))
1463 (if pkg-desc 1526 (if pkg-desc
1464 ;; FIXME: We could actually describe this particular pkg-desc. 1527 (describe-package pkg-desc)
1465 (describe-package (package-desc-name pkg-desc))))) 1528 (error "No package here"))))
1466 1529
1467;; fixme numeric argument 1530;; fixme numeric argument
1468(defun package-menu-mark-delete (&optional _num) 1531(defun package-menu-mark-delete (&optional _num)
@@ -1614,10 +1677,6 @@ Optional argument NOQUERY non-nil means do not ask the user to confirm."
1614 (package-delete elt) 1677 (package-delete elt)
1615 (error (message (cadr err))))) 1678 (error (message (cadr err)))))
1616 (error "Aborted"))) 1679 (error "Aborted")))
1617 ;; If we deleted anything, regenerate `package-alist'. This is done
1618 ;; automatically if we installed a package.
1619 (and delete-list (null install-list)
1620 (package-initialize))
1621 (if (or delete-list install-list) 1680 (if (or delete-list install-list)
1622 (package-menu--generate t t) 1681 (package-menu--generate t t)
1623 (message "No operations specified.")))) 1682 (message "No operations specified."))))
diff --git a/lisp/progmodes/ebnf-abn.el b/lisp/progmodes/ebnf-abn.el
index 0c8dd61d44f..b6b8aacc536 100644
--- a/lisp/progmodes/ebnf-abn.el
+++ b/lisp/progmodes/ebnf-abn.el
@@ -5,7 +5,7 @@
5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Keywords: wp, ebnf, PostScript 7;; Keywords: wp, ebnf, PostScript
8;; Version: 1.2 8;; Old-Version: 1.2
9;; Package: ebnf2ps 9;; Package: ebnf2ps
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/ebnf-bnf.el b/lisp/progmodes/ebnf-bnf.el
index bfdf0300f3f..c4afd906e44 100644
--- a/lisp/progmodes/ebnf-bnf.el
+++ b/lisp/progmodes/ebnf-bnf.el
@@ -5,7 +5,7 @@
5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Keywords: wp, ebnf, PostScript 7;; Keywords: wp, ebnf, PostScript
8;; Version: 1.10 8;; Old-Version: 1.10
9;; Package: ebnf2ps 9;; Package: ebnf2ps
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/ebnf-dtd.el b/lisp/progmodes/ebnf-dtd.el
index d856dbe7de4..bf1acb3a3d9 100644
--- a/lisp/progmodes/ebnf-dtd.el
+++ b/lisp/progmodes/ebnf-dtd.el
@@ -5,7 +5,7 @@
5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Keywords: wp, ebnf, PostScript 7;; Keywords: wp, ebnf, PostScript
8;; Version: 1.1 8;; Old-Version: 1.1
9;; Package: ebnf2ps 9;; Package: ebnf2ps
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/ebnf-ebx.el b/lisp/progmodes/ebnf-ebx.el
index 48e3a643de6..d33fe55a2e8 100644
--- a/lisp/progmodes/ebnf-ebx.el
+++ b/lisp/progmodes/ebnf-ebx.el
@@ -5,7 +5,7 @@
5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Keywords: wp, ebnf, PostScript 7;; Keywords: wp, ebnf, PostScript
8;; Version: 1.2 8;; Old-Version: 1.2
9;; Package: ebnf2ps 9;; Package: ebnf2ps
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/ebnf-iso.el b/lisp/progmodes/ebnf-iso.el
index 9c5246d81e4..3f58b7fef55 100644
--- a/lisp/progmodes/ebnf-iso.el
+++ b/lisp/progmodes/ebnf-iso.el
@@ -5,7 +5,7 @@
5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Keywords: wp, ebnf, PostScript 7;; Keywords: wp, ebnf, PostScript
8;; Version: 1.9 8;; Old-Version: 1.9
9;; Package: ebnf2ps 9;; Package: ebnf2ps
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/ebnf-otz.el b/lisp/progmodes/ebnf-otz.el
index e116a4f2663..ed6b5317e33 100644
--- a/lisp/progmodes/ebnf-otz.el
+++ b/lisp/progmodes/ebnf-otz.el
@@ -5,7 +5,7 @@
5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Keywords: wp, ebnf, PostScript 7;; Keywords: wp, ebnf, PostScript
8;; Version: 1.0 8;; Old-Version: 1.0
9;; Package: ebnf2ps 9;; Package: ebnf2ps
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/ebnf-yac.el b/lisp/progmodes/ebnf-yac.el
index 15f0d5cac18..ff43450bdec 100644
--- a/lisp/progmodes/ebnf-yac.el
+++ b/lisp/progmodes/ebnf-yac.el
@@ -5,7 +5,7 @@
5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br> 5;; Author: Vinicius Jose Latorre <viniciusjl@ig.com.br>
6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br> 6;; Maintainer: Vinicius Jose Latorre <viniciusjl@ig.com.br>
7;; Keywords: wp, ebnf, PostScript 7;; Keywords: wp, ebnf, PostScript
8;; Version: 1.4 8;; Old-Version: 1.4
9;; Package: ebnf2ps 9;; Package: ebnf2ps
10 10
11;; This file is part of GNU Emacs. 11;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/idlw-complete-structtag.el b/lisp/progmodes/idlw-complete-structtag.el
index fd3253880ea..1ebc7f92023 100644
--- a/lisp/progmodes/idlw-complete-structtag.el
+++ b/lisp/progmodes/idlw-complete-structtag.el
@@ -4,7 +4,7 @@
4 4
5;; Author: Carsten Dominik <dominik@astro.uva.nl> 5;; Author: Carsten Dominik <dominik@astro.uva.nl>
6;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 6;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
7;; Version: 1.2 7;; Old-Version: 1.2
8;; Keywords: languages 8;; Keywords: languages
9;; Package: idlwave 9;; Package: idlwave
10 10
diff --git a/lisp/progmodes/idlw-help.el b/lisp/progmodes/idlw-help.el
index 7060cae5080..a108adccec7 100644
--- a/lisp/progmodes/idlw-help.el
+++ b/lisp/progmodes/idlw-help.el
@@ -5,7 +5,6 @@
5;; Authors: J.D. Smith <jdsmith@as.arizona.edu> 5;; Authors: J.D. Smith <jdsmith@as.arizona.edu>
6;; Carsten Dominik <dominik@science.uva.nl> 6;; Carsten Dominik <dominik@science.uva.nl>
7;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 7;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
8;; Version: 6.1.22
9;; Package: idlwave 8;; Package: idlwave
10 9
11;; This file is part of GNU Emacs. 10;; This file is part of GNU Emacs.
diff --git a/lisp/progmodes/idlw-shell.el b/lisp/progmodes/idlw-shell.el
index cfb20c6e238..5aad4aaa15f 100644
--- a/lisp/progmodes/idlw-shell.el
+++ b/lisp/progmodes/idlw-shell.el
@@ -6,7 +6,6 @@
6;; Carsten Dominik <dominik@astro.uva.nl> 6;; Carsten Dominik <dominik@astro.uva.nl>
7;; Chris Chase <chase@att.com> 7;; Chris Chase <chase@att.com>
8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 8;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
9;; Version: 6.1.22
10;; Keywords: processes 9;; Keywords: processes
11;; Package: idlwave 10;; Package: idlwave
12 11
diff --git a/lisp/progmodes/idlw-toolbar.el b/lisp/progmodes/idlw-toolbar.el
index d83291d1511..d255b8b1a3f 100644
--- a/lisp/progmodes/idlw-toolbar.el
+++ b/lisp/progmodes/idlw-toolbar.el
@@ -4,7 +4,6 @@
4 4
5;; Author: Carsten Dominik <dominik@astro.uva.nl> 5;; Author: Carsten Dominik <dominik@astro.uva.nl>
6;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu> 6;; Maintainer: J.D. Smith <jdsmith@as.arizona.edu>
7;; Version: 6.1.22
8;; Keywords: processes 7;; Keywords: processes
9;; Package: idlwave 8;; Package: idlwave
10 9