Mercurial > hg > xemacs-beta
comparison lisp/package-ui.el @ 412:697ef44129c6 r21-2-14
Import from CVS: tag r21-2-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:20:41 +0200 |
parents | de805c49cfc1 |
children |
comparison
equal
deleted
inserted
replaced
411:12e008d41344 | 412:697ef44129c6 |
---|---|
29 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 29 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
30 ;; User-changeable variables: | 30 ;; User-changeable variables: |
31 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | 31 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
32 | 32 |
33 (defgroup pui nil | 33 (defgroup pui nil |
34 "Convenient interface to the package system." | 34 "Conventient interface to the package system." |
35 :group 'package-tools | 35 :group 'package-tools |
36 :tag "Package User interface" | 36 :tag "Package User interface" |
37 :prefix "pui-") | 37 :prefix "pui-") |
38 | 38 |
39 (defcustom pui-package-install-dest-dir nil | 39 (defcustom pui-package-install-dest-dir nil |
138 ;; Configuration routines | 138 ;; Configuration routines |
139 | 139 |
140 (defun pui-directory-exists (dir) | 140 (defun pui-directory-exists (dir) |
141 "Check to see if DIR exists in `package-get-remote'." | 141 "Check to see if DIR exists in `package-get-remote'." |
142 (let (found) | 142 (let (found) |
143 (mapcar #'(lambda (item) | 143 (mapcar '(lambda (item) |
144 (if (and (null (car item)) | 144 (if (and (null (car item)) |
145 (string-equal (file-name-as-directory (car (cdr item))) | 145 (string-equal (file-name-as-directory (car (cdr item))) |
146 (file-name-as-directory dir))) | 146 (file-name-as-directory dir))) |
147 (setq found t))) | 147 (setq found t)) |
148 package-get-remote) | 148 ) package-get-remote) |
149 found | 149 found |
150 )) | 150 )) |
151 | 151 |
152 (defun pui-package-dir-list (buffer) | 152 (defun pui-package-dir-list (buffer) |
153 "In BUFFER, format the list of package binary paths." | 153 "In BUFFER, format the list of package binary paths." |
307 (if (member pkg-sym pui-deleted-packages) | 307 (if (member pkg-sym pui-deleted-packages) |
308 (setq pui-deleted-packages | 308 (setq pui-deleted-packages |
309 (delete pkg-sym pui-deleted-packages)) | 309 (delete pkg-sym pui-deleted-packages)) |
310 (setq pui-deleted-packages | 310 (setq pui-deleted-packages |
311 (cons pkg-sym pui-deleted-packages)) | 311 (cons pkg-sym pui-deleted-packages)) |
312 (setq pui-selected-packages | 312 (setq pui-seleted-packages |
313 (delete pkg-sym pui-selected-packages))) | 313 (delete pkg-sym pui-selected-packages))) |
314 (pui-update-package-display extent pkg-sym) | 314 (pui-update-package-display extent pkg-sym) |
315 )) | 315 )) |
316 | 316 |
317 | 317 |
356 (let ( (tmpbuf "*Packages-To-Remove*") do-delete) | 356 (let ( (tmpbuf "*Packages-To-Remove*") do-delete) |
357 (when pui-deleted-packages | 357 (when pui-deleted-packages |
358 (save-window-excursion | 358 (save-window-excursion |
359 (with-output-to-temp-buffer tmpbuf | 359 (with-output-to-temp-buffer tmpbuf |
360 (display-completion-list (sort | 360 (display-completion-list (sort |
361 (mapcar #'symbol-name pui-deleted-packages) | 361 (mapcar '(lambda (pkg) |
362 #'string<) | 362 (symbol-name pkg) |
363 ) | |
364 pui-deleted-packages) | |
365 'string<) | |
363 :activate-callback nil | 366 :activate-callback nil |
364 :help-string "Packages selected for removal:\n" | 367 :help-string "Packages selected for removal:\n" |
365 :completion-string t | 368 :completion-string t |
366 )) | 369 )) |
367 (setq tmpbuf (get-buffer-create tmpbuf)) | 370 (setq tmpbuf (get-buffer-create tmpbuf)) |
384 ;; the window configuration if errors occur (we don't want to | 387 ;; the window configuration if errors occur (we don't want to |
385 ;; display random buffers in addition to the error buffer, if | 388 ;; display random buffers in addition to the error buffer, if |
386 ;; errors occur, which would normally be caused by display-buffer). | 389 ;; errors occur, which would normally be caused by display-buffer). |
387 (save-window-excursion | 390 (save-window-excursion |
388 (with-output-to-temp-buffer tmpbuf | 391 (with-output-to-temp-buffer tmpbuf |
389 (display-completion-list | 392 (display-completion-list (sort |
390 (sort (mapcar #'symbol-name pui-selected-packages) #'string<) | 393 (mapcar '(lambda (pkg) |
391 :activate-callback nil | 394 (symbol-name pkg) |
392 :help-string "Packages selected for installation:\n" | 395 ) |
393 :completion-string t | 396 pui-selected-packages) |
394 )) | 397 'string<) |
398 :activate-callback nil | |
399 :help-string "Packages selected for installation:\n" | |
400 :completion-string t | |
401 )) | |
395 (setq tmpbuf (get-buffer-create tmpbuf)) | 402 (setq tmpbuf (get-buffer-create tmpbuf)) |
396 (display-buffer tmpbuf) | 403 (display-buffer tmpbuf) |
397 (setq do-install (y-or-n-p "Install these packages? ")) | 404 (setq do-install (y-or-n-p "Install these packages? ")) |
398 (kill-buffer tmpbuf) | 405 (kill-buffer tmpbuf) |
399 ) | 406 ) |
526 (interactive "e") | 533 (interactive "e") |
527 (save-excursion | 534 (save-excursion |
528 (set-buffer (event-buffer event)) | 535 (set-buffer (event-buffer event)) |
529 (goto-char (event-point event)) | 536 (goto-char (event-point event)) |
530 (popup-menu pui-menu event) | 537 (popup-menu pui-menu event) |
531 ;; I agree with dired.el - this is seriously bogus. | 538 ;; I agreee with dired.el this is seriously bogus. |
532 (while (popup-menu-up-p) | 539 (while (popup-menu-up-p) |
533 (dispatch-event (next-event))))) | 540 (dispatch-event (next-event))))) |
534 | 541 |
535 (defvar pui-menu | 542 (defvar pui-menu |
536 '("Packages" | 543 '("Packages" |
609 (insert " Latest | 616 (insert " Latest |
610 Package name Vers. Description | 617 Package name Vers. Description |
611 ")) | 618 ")) |
612 (insert sep-string) | 619 (insert sep-string) |
613 (setq start (point)) | 620 (setq start (point)) |
614 (mapcar | 621 (mapcar '(lambda (pkg) |
615 #'(lambda (pkg) | 622 (let (pkg-sym info version desc |
616 (let (pkg-sym info version desc | 623 b e extent current-vers disp) |
617 b e extent current-vers disp) | 624 (setq pkg-sym (car pkg) |
618 (setq pkg-sym (car pkg) | 625 info (package-get-info-version (cdr pkg) nil)) |
619 info (package-get-info-version (cdr pkg) nil)) | 626 (setq version (package-get-info-prop info 'version) |
620 (setq version (package-get-info-prop info 'version) | 627 desc (package-get-info-prop info 'description)) |
621 desc (package-get-info-prop info 'description)) | 628 |
622 | 629 (setq disp (pui-package-symbol-char pkg-sym |
623 (setq disp (pui-package-symbol-char pkg-sym | 630 version)) |
624 version)) | 631 (setq b (point)) |
625 (setq b (point)) | 632 (if pui-list-verbose |
626 (if pui-list-verbose | 633 (progn |
627 (progn | 634 (setq current-vers (package-get-key pkg-sym :version)) |
628 (setq current-vers (package-get-key pkg-sym :version)) | 635 (cond |
629 (cond | 636 ( (not current-vers) |
630 ( (not current-vers) | 637 (setq current-vers "-----") ) |
631 (setq current-vers "-----") ) | 638 ( (stringp current-vers) |
632 ( (stringp current-vers) | 639 (setq current-vers |
633 (setq current-vers | 640 (format "%.2f" |
634 (format "%.2f" | 641 (string-to-number current-vers))) ) |
635 (string-to-number current-vers))) ) | 642 ( (numberp current-vers) |
636 ( (numberp current-vers) | 643 (setq current-vers (format "%.2f" current-vers)) ) |
637 (setq current-vers (format "%.2f" current-vers)) ) | 644 ) |
638 ) | 645 (insert |
639 (insert | 646 (format "%s %-15s %-5.2f %-5s %s\n" |
640 (format "%s %-15s %-5.2f %-5s %s\n" | 647 (car disp) pkg-sym |
641 (car disp) pkg-sym | 648 (if (stringp version) |
642 (if (stringp version) | 649 (string-to-number version) |
643 (string-to-number version) | 650 version) |
644 version) | 651 current-vers desc)) |
645 current-vers desc)) | 652 ;; (insert |
646 ;; (insert | 653 ;; (format "\t\t %-12s %s\n" |
647 ;; (format "\t\t %-12s %s\n" | 654 ;; (package-get-info-prop info 'author-version) |
648 ;; (package-get-info-prop info 'author-version) | 655 ;; (package-get-info-prop info 'date) |
649 ;; (package-get-info-prop info 'date))) | 656 ;; )) |
650 ) | 657 ) |
651 (insert (format "%s %-15s %-5s %s\n" | 658 (insert (format "%s %-15s %-5s %s\n" |
652 (car disp) | 659 (car disp) |
653 pkg-sym version desc))) | 660 pkg-sym version desc))) |
654 (save-excursion | 661 (save-excursion |
655 (setq e (progn | 662 (setq e (progn |
656 (forward-line -1) | 663 (forward-line -1) |
657 (end-of-line) | 664 (end-of-line) |
658 (point)))) | 665 (point))) |
659 (setq extent (make-extent b e)) | 666 ) |
660 (if (car (cdr disp)) | 667 (setq extent (make-extent b e)) |
661 (set-extent-face extent (get-face (car (cdr disp)))) | 668 (if (car (cdr disp)) |
662 (set-extent-face extent (get-face 'default))) | 669 (set-extent-face extent (get-face (car (cdr disp)))) |
663 (set-extent-property extent 'highlight t) | 670 (set-extent-face extent (get-face 'default))) |
664 (set-extent-property extent 'pui t) | 671 (set-extent-property extent 'highlight t) |
665 (set-extent-property extent 'pui-package pkg-sym) | 672 (set-extent-property extent 'pui t) |
666 (set-extent-property extent 'pui-info info) | 673 (set-extent-property extent 'pui-package pkg-sym) |
667 (set-extent-property extent 'help-echo 'pui-help-echo) | 674 (set-extent-property extent 'pui-info info) |
668 (set-extent-property extent 'keymap pui-package-keymap) | 675 (set-extent-property extent 'help-echo 'pui-help-echo) |
669 )) | 676 (set-extent-property extent 'keymap pui-package-keymap) |
670 (sort (copy-sequence package-get-base) | 677 )) (sort (copy-sequence package-get-base) |
671 #'(lambda (a b) | 678 '(lambda (a b) |
672 (string< (symbol-name (car a)) | 679 (string< (symbol-name (car a)) |
673 (symbol-name (car b)))))) | 680 (symbol-name (car b))) |
681 ))) | |
674 (insert sep-string) | 682 (insert sep-string) |
675 (insert (documentation 'list-packages-mode)) | 683 (insert (documentation 'list-packages-mode)) |
676 (set-buffer-modified-p nil) | 684 (set-buffer-modified-p nil) |
677 (setq buffer-read-only t) | 685 (setq buffer-read-only t) |
678 (pop-to-buffer outbuf) | 686 (pop-to-buffer outbuf) |
683 (when (featurep 'menubar) | 691 (when (featurep 'menubar) |
684 (set-buffer-menubar current-menubar) | 692 (set-buffer-menubar current-menubar) |
685 (add-submenu '() pui-menu) | 693 (add-submenu '() pui-menu) |
686 (setq mode-popup-menu pui-menu)) | 694 (setq mode-popup-menu pui-menu)) |
687 (clear-message) | 695 (clear-message) |
688 ;; (message (substitute-command-keys "Press `\\[pui-help]' for help.")) | 696 ; (message (substitute-command-keys "Press `\\[pui-help]' for help.")) |
689 )) | 697 )) |
690 | 698 |
691 ;;;###autoload | 699 ;;;###autoload |
692 (defalias 'list-packages 'pui-list-packages) | 700 (defalias 'list-packages 'pui-list-packages) |
693 | 701 |