annotate lisp/package-ui.el @ 1601:442db3c3c43b

[xemacs-hg @ 2003-08-02 08:42:10 by michaels] 2003-07-31 Mike Sperber <mike@xemacs.org> * isearch-mode.el (isearch-mode-help): (isearch-update): (isearch-done): (isearch-edit-string): Change the way window configurations are handled: Formerly, the code would do `set-window-configuration' off `pre-command-hook' which isn't really allowed. (The old window-configuration code would quietly ignore this restriction.) Instead, save the window configuration only when someone asks for help, and restore afterwards, and otherwise leave it alone.
author michaels
date Sat, 02 Aug 2003 08:42:11 +0000
parents 44de306310b8
children d90ba01b5346
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
1 ;;; package-ui.el ---
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
2
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
3 ;; Copyright (C) 1998 by Darryl Okahata
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
4
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
5 ;; Author: Darryl Okahata <darrylo@sr.hp.com>
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
6 ;; Keywords: internal
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
7
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
8 ;; This file is part of XEmacs.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
9
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
10 ;; XEmacs is free software; you can redistribute it and/or modify it
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
11 ;; under the terms of the GNU General Public License as published by
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
12 ;; the Free Software Foundation; either version 2, or (at your option)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
13 ;; any later version.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
14
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
15 ;; XEmacs is distributed in the hope that it will be useful, but
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
16 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
18 ;; General Public License for more details.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
19
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
20 ;; You should have received a copy of the GNU General Public License
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
21 ;; along with XEmacs; see the file COPYING. If not, write to the Free
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
22 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
23 ;; 02111-1307, USA.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
24
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
25 ;;; Synched up with: Not in FSF
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
26
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
27 (require 'package-get) ;; which, in turn, requires 'package-admin
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
28
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
29 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
30 ;; User-changeable variables:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
31 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
32
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
33 (defgroup pui nil
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
34 "Convenient interface to the package system."
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
35 :group 'package-tools
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
36 :tag "Package User interface"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
37 :prefix "pui-")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
38
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
39 (defcustom pui-package-install-dest-dir nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
40 "*If non-nil (Automatic) path to package tree to install packages in.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
41 Otherwise, use old path for installed packages and make a guess for
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
42 new ones."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
43 :group 'pui
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
44 :tag "Install Location"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
45 :type '(choice (const :tag "Automatic" nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
46 (directory)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
47
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
48 (defcustom pui-list-verbose t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
49 "*If non-nil, display verbose info in the package list buffer."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
50 :group 'pui
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
51 :tag "Verbose Listing"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
52 :type 'boolean)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
53
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
54 (defcustom pui-up-to-date-package-face nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
55 "*The face to use for packages that are up-to-date."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
56 :group 'pui
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
57 :type 'face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
58
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
59 (defcustom pui-selected-package-face 'bold
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
60 "*The face to use for selected packages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
61 Set this to `nil' to use the `default' face."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
62 :group 'pui
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
63 :type 'face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
64
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
65 (defcustom pui-deleted-package-face 'blue
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
66 "*The face to use for packages marked for removal.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
67 Set this to `nil' to use the `default' face."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
68 :group 'pui
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
69 :type 'face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
70
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
71 (defcustom pui-outdated-package-face 'red
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
72 "*The face to use for outdated packages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
73 Set this to `nil' to use the `default' face."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
74 :group 'pui
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
75 :type 'face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
76
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
77 (defcustom pui-uninstalled-package-face 'italic
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
78 "*The face to use for uninstalled packages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
79 Set this to `nil' to use the `default' face."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
80 :group 'pui
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
81 :type 'face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
82
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
83 (defcustom pui-info-buffer "*Packages*"
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
84 "*Buffer to use for displaying package information."
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
85 :group 'pui
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
86 :type 'string)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
87
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
88 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
89 ;; End of user-changeable variables.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
90 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
91
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
92 (defvar pui-selected-packages nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
93 "The list of user-selected packages to install.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
94
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
95 (defvar pui-deleted-packages nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
96 "The list of user-selected packages to remove.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
97
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
98 (defvar pui-actual-package "")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
99
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
100 (defvar pui-display-keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
101 (let ((m (make-keymap)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
102 (suppress-keymap m)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
103 (set-keymap-name m 'pui-display-keymap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
104 (define-key m "q" 'pui-quit)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
105 (define-key m "g" 'pui-list-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
106 (define-key m "i" 'pui-display-info)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
107 (define-key m "?" 'describe-mode)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
108 (define-key m "v" 'pui-toggle-verbosity-redisplay)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
109 (define-key m "d" 'pui-toggle-package-delete-key)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
110 (define-key m "D" 'pui-toggle-package-delete-key)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
111 (define-key m [return] 'pui-toggle-package-key)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
112 (define-key m "x" 'pui-install-selected-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
113 (define-key m "I" 'pui-install-selected-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
114 (define-key m "r" 'pui-add-required-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
115 (define-key m "n" 'next-line)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
116 (define-key m "+" 'pui-toggle-package-key)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
117 (define-key m "p" 'previous-line)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
118 (define-key m " " 'scroll-up-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
119 (define-key m [delete] 'scroll-down-command)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
120 m)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
121 "Keymap to use in the `pui-info-buffer' buffer")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
122
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
123 (defvar pui-package-keymap
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
124 (let ((m (make-sparse-keymap)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
125 (set-keymap-name m 'pui-package-keymap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
126 (define-key m 'button2 'pui-toggle-package-event)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
127 ;; We use a popup menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
128 (define-key m 'button3 'pui-popup-context-sensitive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
129 m)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
130 "Keymap to use over package names/descriptions.")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
131
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
132 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
133 ;; End of variables
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
134
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
135
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
136 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
137 ;; Configuration routines
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
138
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
139 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
140 (defun package-ui-add-site (site)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
141 "Add site to package-get-remote and possibly offer to update package list."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
142 (let ((had-none (null package-get-remote)))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
143 (setq package-get-remote site)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
144 (when (and had-none package-get-was-current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
145 (y-or-n-p "Update Package list?"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
146 (setq package-get-was-current nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
147 (package-get-require-base t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
148 (if (get-buffer pui-info-buffer)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
149 (save-window-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
150 (pui-list-packages))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
151 (set-menubar-dirty-flag)))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
152
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
153 ;;;###autoload
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
154 (defun package-ui-download-menu ()
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
155 "Build the `Add Download Site' menu."
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
156 (mapcar (lambda (site)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
157 (vector (car site)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
158 `(if (equal package-get-remote (quote ,(cdr site)))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
159 (setq package-get-remote nil)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
160 (package-ui-add-site (quote ,(cdr site))))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
161 ;; I've used radio buttons so that only a single
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
162 ;; site can be selected, but they are in fact
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
163 ;; toggles. SY.
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
164 :style 'radio
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
165 :selected `(equal package-get-remote (quote ,(cdr site)))))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
166 package-get-download-sites))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
167
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
168 ;;;###autoload
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
169 (defun package-ui-pre-release-download-menu ()
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
170 "Build the 'Pre-Release Download Sites' menu."
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
171 (mapcar (lambda (site)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
172 (vector (car site)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
173 `(if (equal package-get-remote (quote ,(cdr site)))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
174 (setq package-get-remote nil)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
175 (package-ui-add-site (quote ,(cdr site))))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
176 ;; I've used radio buttons so that only a single
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
177 ;; site can be selected, but they are in fact
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
178 ;; toggles. SY.
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
179 :style 'radio
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
180 :selected `(equal package-get-remote (quote ,(cdr site)))))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
181 package-get-pre-release-download-sites))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
182
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
183 ;;;###autoload
1374
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
184 (defun package-ui-site-release-download-menu ()
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
185 "Build the 'Site Release Download Sites' menu."
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
186 (mapcar (lambda (site)
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
187 (vector (car site)
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
188 `(if (equal package-get-remote (quote ,(cdr site)))
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
189 (setq package-get-remote nil)
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
190 (package-ui-add-site (quote ,(cdr site))))
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
191 ;; I've used radio buttons so that only a single
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
192 ;; site can be selected, but they are in fact
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
193 ;; toggles. SY.
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
194 :style 'radio
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
195 :selected `(equal package-get-remote (quote ,(cdr site)))))
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
196 package-get-site-release-download-sites))
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
197
d638fc15d68b [xemacs-hg @ 2003-03-24 11:10:54 by adrian]
adrian
parents: 1365
diff changeset
198 ;;;###autoload
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
199 (defun pui-set-local-package-get-directory (dir)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
200 "Set a new package binary directory in `package-get-remote'.
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
201 Note that no provision is made for saving any changes made by this function.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
202 It exists mainly as a convenience for one-time package installations from
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
203 disk."
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
204 (interactive)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
205 (let ((dir (read-directory-name
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
206 "New package binary directory to add? "
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
207 nil nil t)))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
208 (setq package-get-remote (list nil dir))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
209 (message "Package directory \"%s\" added." dir)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
210
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
211 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
212 ;; Package list/installer routines
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
213
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
214 (defun pui-quit ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
215 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
216 (kill-buffer nil))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
217
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
218 (defun pui-package-symbol-char (pkg-sym version)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
219 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
220 (if (package-get-info-find-package packages-package-list pkg-sym)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
221 (let ((installed (package-get-key pkg-sym :version)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
222 (if (>= (if (stringp installed)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
223 (string-to-number installed)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
224 installed)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
225 (if (stringp version)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
226 (string-to-number version)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
227 version))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
228 (list " " pui-up-to-date-package-face)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
229 (list "*" pui-outdated-package-face)))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
230 (list "-" pui-uninstalled-package-face))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
231
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
232 (defun pui-update-package-display (extent &optional pkg-sym version)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
233 "Update the package status for EXTENT.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
234 If PKG-SYM or VERSION are not given, they are read from the extent.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
235 These are used to determine whether or not the package is installed,
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
236 and whether or not it is up-to-date."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
237 (let (buffer-read-only disp sym-char)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
238 (if (not pkg-sym)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
239 (setq pkg-sym (extent-property extent 'pui-package)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
240 (if (not version)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
241 (setq version (package-get-info-prop (extent-property extent 'pui-info)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
242 'version)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
243 (cond ((member pkg-sym pui-selected-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
244 (if pui-selected-package-face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
245 (set-extent-face extent (get-face pui-selected-package-face))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
246 (set-extent-face extent (get-face 'default)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
247 (setq sym-char "+"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
248 ((member pkg-sym pui-deleted-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
249 (if pui-deleted-package-face
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
250 (set-extent-face extent (get-face pui-deleted-package-face))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
251 (set-extent-face extent (get-face 'default)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
252 (setq sym-char "D"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
253 (t
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
254 (setq disp (pui-package-symbol-char pkg-sym version))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
255 (setq sym-char (car disp))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
256 (if (car (cdr disp))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
257 (set-extent-face extent (get-face (car (cdr disp))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
258 (set-extent-face extent (get-face 'default)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
259 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
260 (goto-char (extent-start-position extent))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
261 (delete-char 1)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
262 (insert sym-char)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
263 (set-buffer-modified-p nil))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
264
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
265 (defun pui-toggle-package (extent)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
266 (let (pkg-sym)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
267 (setq pkg-sym (extent-property extent 'pui-package))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
268 (if (member pkg-sym pui-selected-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
269 (setq pui-selected-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
270 (delete pkg-sym pui-selected-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
271 (setq pui-selected-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
272 (cons pkg-sym pui-selected-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
273 (setq pui-deleted-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
274 (delete pkg-sym pui-deleted-packages)))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
275 (pui-update-package-display extent pkg-sym)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
276
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
277 (defun pui-toggle-package-key ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
278 "Select/unselect package for installation, using the keyboard."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
279 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
280 (let (extent)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
281 (if (setq extent (extent-at (point) (current-buffer) 'pui))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
282 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
283 (pui-toggle-package extent)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
284 (forward-line 1))
1410
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
285 (error 'invalid-operation
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
286 "No package under cursor!"))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
287
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
288 (defun pui-toggle-package-delete (extent)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
289 (let (pkg-sym)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
290 (setq pkg-sym (extent-property extent 'pui-package))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
291 (if (member pkg-sym pui-deleted-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
292 (setq pui-deleted-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
293 (delete pkg-sym pui-deleted-packages))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
294 (setq pui-deleted-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
295 (cons pkg-sym pui-deleted-packages))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
296 (setq pui-selected-packages
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
297 (delete pkg-sym pui-selected-packages)))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
298 (pui-update-package-display extent pkg-sym)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
299
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
300
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
301 (defun pui-toggle-package-delete-key ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
302 "Select/unselect package for removal, using the keyboard."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
303 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
304 (let (extent)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
305 (if (setq extent (extent-at (point) (current-buffer) 'pui))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
306 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
307 (pui-toggle-package-delete extent)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
308 (forward-line 1))
1410
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
309 (error 'invalid-operation
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
310 "No package under cursor!"))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
311
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
312 (defun pui-current-package ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
313 (let ((extent (extent-at (point) (current-buffer) 'pui)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
314 (if extent
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
315 (extent-property extent 'pui-package))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
316
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
317 (defun pui-toggle-package-event (event)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
318 "Select/unselect package for installation, using the mouse."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
319 (interactive "e")
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
320 (let* ((ep (event-point event))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
321 (buffer (window-buffer (event-window event)))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
322 (extent (extent-at ep buffer 'pui-package)))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
323 (pui-toggle-package extent)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
324
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
325 (defun pui-toggle-verbosity-redisplay ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
326 "Toggle verbose package info."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
327 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
328 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
329 (setq pui-list-verbose (not pui-list-verbose))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
330 (pui-list-packages)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
331
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
332 (defun pui-install-selected-packages ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
333 "Install selected packages."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
334 (interactive)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
335 (let ((tmpbuf "*Packages-To-Remove*")
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
336 do-delete)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
337 (when pui-deleted-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
338 (save-window-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
339 (with-output-to-temp-buffer tmpbuf
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
340 (display-completion-list (sort
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
341 (mapcar #'symbol-name pui-deleted-packages)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
342 #'string<)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
343 :activate-callback nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
344 :help-string "Packages selected for removal:\n"
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
345 :completion-string t))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
346 (setq tmpbuf (get-buffer-create tmpbuf))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
347 (display-buffer tmpbuf)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
348 (setq do-delete (yes-or-no-p "Remove these packages? "))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
349 (kill-buffer tmpbuf))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
350 (when do-delete
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
351 (message "Deleting selected packages ...") (sit-for 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
352 (mapcar (lambda (pkg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
353 (package-admin-delete-binary-package
1378
69a674f5861f [xemacs-hg @ 2003-03-24 16:30:55 by youngs]
youngs
parents: 1374
diff changeset
354 pkg (package-admin-get-install-dir pkg)))
624
59c2a61efa7d [xemacs-hg @ 2001-06-30 23:07:06 by youngs]
youngs
parents: 454
diff changeset
355 (nreverse pui-deleted-packages))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
356 (message "Packages deleted"))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
357
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
358 (let ((tmpbuf "*Packages-To-Install*")
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
359 do-install)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
360 (if pui-selected-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
361 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
362 ;; Don't change window config when asking the user if he really
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
363 ;; wants to install the packages. We do this to avoid messing up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
364 ;; the window configuration if errors occur (we don't want to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
365 ;; display random buffers in addition to the error buffer, if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
366 ;; errors occur, which would normally be caused by display-buffer).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
367 (save-window-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
368 (with-output-to-temp-buffer tmpbuf
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
369 (display-completion-list
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
370 (sort (mapcar #'symbol-name pui-selected-packages) #'string<)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
371 :activate-callback nil
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
372 :help-string "Packages selected for installation:\n"
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
373 :completion-string t))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
374 (setq tmpbuf (get-buffer-create tmpbuf))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
375 (display-buffer tmpbuf)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
376 (setq do-install (y-or-n-p "Install these packages? "))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
377 (kill-buffer tmpbuf))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
378 (if do-install
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
379 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
380 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
381 ;; Clear old temp buffer history
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
382 (set-buffer (get-buffer-create package-admin-temp-buffer))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
383 (buffer-disable-undo package-admin-temp-buffer)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
384 (erase-buffer package-admin-temp-buffer))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
385 (message "Installing selected packages ...") (sit-for 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
386 (if (catch 'done
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
387 (mapcar (lambda (pkg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
388 (if (not (package-get pkg nil nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
389 pui-package-install-dest-dir))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
390 (throw 'done nil)))
624
59c2a61efa7d [xemacs-hg @ 2001-06-30 23:07:06 by youngs]
youngs
parents: 454
diff changeset
391 (nreverse pui-selected-packages))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
392 t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
393 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
394 (pui-list-packages)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
395 (message "Packages installed"))))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
396 (clear-message)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
397 (if pui-deleted-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
398 (pui-list-packages)
1410
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
399 (error 'invalid-operation
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
400 "No packages have been selected!")))
454
d7a9135ec789 Import from CVS: tag r21-2-42
cvs
parents: 442
diff changeset
401 ;; sync with windows type systems
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
402 (package-net-update-installed-db)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
403
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
404 (defun pui-add-required-packages ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
405 "Select packages required by those already selected for installation."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
406 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
407 (let ((tmpbuf "*Required-Packages*") do-select)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
408 (if pui-selected-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
409 (let ((dependencies
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
410 (delq nil (mapcar
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
411 (lambda (pkg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
412 (let ((installed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
413 (package-get-key pkg :version))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
414 (current
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
415 (package-get-info-prop
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
416 (package-get-info-version
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
417 (package-get-info-find-package
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
418 package-get-base pkg) nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
419 'version)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
420 (if (or (null installed)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
421 (< (if (stringp installed)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
422 (string-to-number installed)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
423 installed)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
424 (if (stringp current)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
425 (string-to-number current)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
426 current)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
427 pkg
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
428 nil)))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
429 (package-get-dependencies pui-selected-packages)))))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
430 ;; Don't change window config when asking the user if he really
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
431 ;; wants to add the packages. We do this to avoid messing up
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
432 ;; the window configuration if errors occur (we don't want to
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
433 ;; display random buffers in addition to the error buffer, if
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
434 ;; errors occur, which would normally be caused by display-buffer).
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
435 (save-window-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
436 (with-output-to-temp-buffer tmpbuf
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
437 (display-completion-list (sort
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
438 (mapcar #'(lambda (pkg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
439 (symbol-name pkg))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
440 dependencies)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
441 'string<)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
442 :activate-callback nil
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
443 :help-string "Required packages:\n"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
444 :completion-string t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
445 (setq tmpbuf (get-buffer-create tmpbuf))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
446 (display-buffer tmpbuf)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
447 (setq do-select (y-or-n-p "Select these packages? "))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
448 (kill-buffer tmpbuf))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
449 (if do-select
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
450 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
451 (setq pui-selected-packages
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
452 (union pui-selected-packages dependencies))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
453 (map-extents #'(lambda (extent maparg)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
454 (pui-update-package-display extent))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
455 nil nil nil nil nil 'pui)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
456 (message "added dependencies"))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
457 (clear-message)))
1410
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
458 (error 'invalid-operation
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
459 "No packages have been selected!"))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
460
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
461 (defun pui-help-echo (extent &optional force-update)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
462 "Display additional package info in the modeline.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
463 EXTENT determines the package to display (the package information is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
464 attached to the extent as properties)."
852
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
465 (let (pkg-sym info inst-ver auth-ver date maintainer balloon req)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
466 (if (or force-update (not (current-message))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
467 (string-match ".*: .*: " (current-message)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
468 (progn
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
469 (setq pkg-sym (extent-property extent 'pui-package)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
470 info (extent-property extent 'pui-info)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
471 inst-ver (package-get-key pkg-sym :version)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
472 auth-ver (package-get-info-prop info 'author-version)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
473 date (package-get-info-prop info 'date)
852
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
474 maintainer (package-get-info-prop info 'maintainer)
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
475 req (package-get-info-prop info 'requires))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
476 (if (not inst-ver)
852
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
477 (setq inst-ver 0))
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
478 (if (featurep 'balloon-help)
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
479 (progn
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
480 (setq balloon (format "
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
481 Package Information: [For package: \"%s\"]
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
482 ================
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
483 Installed Version : %.2f
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
484 Author Version : %s
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
485 Maintainer : %s
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
486 Released : %s
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
487 Required Packages : %s\n\n"
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
488 pkg-sym inst-ver auth-ver maintainer
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
489 date req))
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
490 (set-extent-property extent 'balloon-help balloon)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
491 (if pui-list-verbose
852
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
492 (format
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
493 "Inst V: %.2f Auth V: %s Maint: %s"
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
494 inst-ver auth-ver maintainer)
d83885ef293b [xemacs-hg @ 2002-05-25 01:55:29 by youngs]
youngs
parents: 624
diff changeset
495 (format "%.2f : %s : %s"
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
496 inst-ver auth-ver maintainer))))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
497
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
498 (defun pui-display-info (&optional no-error event)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
499 "Display additional package info in the modeline.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
500 Designed to be called interactively (from a keypress)."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
501 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
502 (let (extent)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
503 (save-excursion
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
504 (beginning-of-line)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
505 (if (setq extent (extent-at (point) (current-buffer) 'pui))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
506 (message (pui-help-echo extent t))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
507 (if no-error
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
508 (clear-message nil)
1410
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
509 (error 'invalid-operation
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
510 "No package under cursor!"))))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
511
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
512 (defvar pui-menu
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
513 '("Packages"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
514 ["Toggle install " pui-toggle-package-key :active (pui-current-package) :suffix (format "`%s'" (or (pui-current-package) "..."))]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
515 ["Toggle delete " pui-toggle-package-delete-key :active (pui-current-package) :suffix (format "`%s'" (or (pui-current-package) "..."))]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
516 ["Info on" pui-display-info :active (pui-current-package) :suffix (format "`%s'" (or (pui-current-package) "..."))]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
517 "---"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
518 ["Add Required" pui-add-required-packages t]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
519 ["Install/Remove Selected" pui-install-selected-packages t]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
520 "---"
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
521 ["Verbose" pui-toggle-verbosity-redisplay
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
522 :active t :style toggle :selected pui-list-verbose]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
523 ["Refresh" pui-list-packages t]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
524 ["Help" pui-help t]
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
525 ["Quit" pui-quit t]))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
526
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
527 ;;; "Why is there no standard function to do this?"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
528 (defun pui-popup-context-sensitive (event)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
529 (interactive "e")
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
530 (save-excursion
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
531 (set-buffer (event-buffer event))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
532 (goto-char (event-point event))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
533 (popup-menu pui-menu event)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
534 ;; I agree with dired.el - this is seriously bogus.
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
535 (while (popup-up-p)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
536 (dispatch-event (next-event)))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
537
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
538 (defun list-packages-mode ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
539 "Symbols in the leftmost column:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
540
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
541 + The package is marked for installation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
542 - The package has not been installed.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
543 D The package has been marked for deletion.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
544 * The currently installed package is old, and a newer version is
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
545 available.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
546
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
547 Useful keys:
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
548
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
549 `\\[pui-toggle-package-key]' to select/unselect the current package for installation.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
550 `\\[pui-toggle-package-delete-key]' to select/unselect the current package for removal.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
551 `\\[pui-add-required-packages]' to add any packages required by those selected.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
552 `\\[pui-install-selected-packages]' to install/delete selected packages.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
553 `\\[pui-display-info]' to display additional information about the package in the modeline.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
554 `\\[pui-list-packages]' to refresh the package list.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
555 `\\[pui-toggle-verbosity-redisplay]' to toggle between a verbose and non-verbose display.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
556 `\\[pui-quit]' to kill this buffer.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
557 "
1410
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
558 (error 'invalid-operation
44de306310b8 [xemacs-hg @ 2003-04-14 03:40:26 by youngs]
youngs
parents: 1378
diff changeset
559 "You cannot enter this mode directly. Use `pui-list-packages'"))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
560
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
561 (put 'list-packages-mode 'mode-class 'special)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
562
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
563 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
564 (defun pui-list-packages ()
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
565 "List all packages and package information.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
566 The package name, version, and description are displayed. From the displayed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
567 buffer, the user can see which packages are installed, which are not, and
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
568 which are out-of-date (a newer version is available). The user can then
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
569 select packages for installation via the keyboard or mouse."
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
570 (interactive)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
571 (package-get-require-base t)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
572 (let ((outbuf (get-buffer-create pui-info-buffer))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
573 (sep-string "===============================================================================\n")
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
574 start)
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
575 (message "Creating package list ...") (sit-for 0)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
576 (set-buffer outbuf)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
577 (setq buffer-read-only nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
578 (buffer-disable-undo outbuf)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
579 (erase-buffer outbuf)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
580 (kill-all-local-variables)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
581 (use-local-map pui-display-keymap)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
582 (setq major-mode 'list-packages-mode)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
583 (setq mode-name "Packages")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
584 (setq truncate-lines t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
585
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
586 (unless package-get-remote
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
587 (insert "
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
588 Warning: No download sites specified. Package index may be out of date.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
589 If you intend to install packages, specify download sites first.
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
590
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
591 "))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
592
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
593 (if pui-list-verbose
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
594 (insert " Latest Installed
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
595 Package name Vers. Vers. Description
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
596 ")
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
597 (insert " Latest
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
598 Package name Vers. Description
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
599 "))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
600 (insert sep-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
601 (setq start (point))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
602 (mapcar
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
603 #'(lambda (pkg)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
604 (let (pkg-sym info version desc
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
605 b e extent current-vers disp)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
606 (setq pkg-sym (car pkg)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
607 info (package-get-info-version (cdr pkg) nil))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
608 (setq version (package-get-info-prop info 'version)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
609 desc (package-get-info-prop info 'description))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
610
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
611 (setq disp (pui-package-symbol-char pkg-sym
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
612 version))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
613 (setq b (point))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
614 (if pui-list-verbose
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
615 (progn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
616 (setq current-vers (package-get-key pkg-sym :version))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
617 (cond
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
618 ((not current-vers)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
619 (setq current-vers "-----"))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
620 ((stringp current-vers)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
621 (setq current-vers
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
622 (format "%.2f"
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
623 (string-to-number current-vers))))
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
624 ((numberp current-vers)
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
625 (setq current-vers (format "%.2f" current-vers))))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
626 (insert
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
627 (format "%s %-15s %-5.2f %-5s %s\n"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
628 (car disp) pkg-sym
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
629 (if (stringp version)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
630 (string-to-number version)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
631 version)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
632 current-vers desc)))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
633 (insert (format "%s %-15s %-5s %s\n"
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
634 (car disp)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
635 pkg-sym version desc)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
636 (save-excursion
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
637 (setq e (progn
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
638 (forward-line -1)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
639 (end-of-line)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
640 (point))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
641 (setq extent (make-extent b e))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
642 (if (car (cdr disp))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
643 (set-extent-face extent (get-face (car (cdr disp))))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
644 (set-extent-face extent (get-face 'default)))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
645 (set-extent-property extent 'highlight t)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
646 (set-extent-property extent 'pui t)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
647 (set-extent-property extent 'pui-package pkg-sym)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
648 (set-extent-property extent 'pui-info info)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
649 (set-extent-property extent 'help-echo 'pui-help-echo)
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
650 (set-extent-property extent 'keymap pui-package-keymap)))
442
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
651 (sort (copy-sequence package-get-base)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
652 #'(lambda (a b)
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
653 (string< (symbol-name (car a))
abe6d1db359e Import from CVS: tag r21-2-36
cvs
parents: 440
diff changeset
654 (symbol-name (car b))))))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
655 (insert sep-string)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
656 (insert (documentation 'list-packages-mode))
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
657 (set-buffer-modified-p nil)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
658 (setq buffer-read-only t)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
659 (pop-to-buffer outbuf)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
660 (delete-other-windows)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
661 (goto-char start)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
662 (setq pui-selected-packages nil) ; Reset list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
663 (setq pui-deleted-packages nil) ; Reset list
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
664 (when (featurep 'menubar)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
665 (set-buffer-menubar current-menubar)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
666 (add-submenu '() pui-menu)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
667 (setq mode-popup-menu pui-menu))
1365
02909207294a [xemacs-hg @ 2003-03-20 13:19:56 by youngs]
youngs
parents: 852
diff changeset
668 (clear-message)))
428
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
669
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
670 ;;;###autoload
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
671 (defalias 'list-packages 'pui-list-packages)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
672
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
673 (provide 'package-ui)
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
674
3ecd8885ac67 Import from CVS: tag r21-2-22
cvs
parents:
diff changeset
675 ;;; package-ui.el ends here