[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#15201: 24.2; extensions/enhancements to package.el
From: |
Ryan Davis |
Subject: |
bug#15201: 24.2; extensions/enhancements to package.el |
Date: |
Tue, 27 Aug 2013 16:37:49 -0700 |
I know that using cl is frowned upon... but I'm writing this code to be
compatible with 24.2 so I can't rely on cl-lib (since this is an
extension to the system used to install cl-lib). I'm only using it for
set-difference and am open to modifications to make it more
portable/acceptable. You can see this code in:
https://github.com/zenspider/package/blob/master/package%2B.el#L70-L104
(require 'cl)
(defun package-version-for (name)
"Returns the installed version for a package with a given NAME."
(package-desc-vers (cdr (assoc name package-alist))))
(defun package-delete-by-name (name)
"Deletes a package by NAME"
(message "Removing %s" name)
(package-delete (symbol-name name)
(package-version-join (package-version-for name))))
(defun package-maybe-install (name)
"Installs a package by NAME, but only if it isn't already installed."
(unless (package-installed-p name)
(message "Installing %s" name)
(package-install name)))
(defun package-deps-for (pkg)
"Returns the dependency list for PKG or nil if none or the PKG doesn't
exist."
(let ((v (cdr (assoc pkg package-alist))))
(and v (package-desc-reqs v))))
(defun package-transitive-closure (pkgs)
(let ((deps '()))
(dolist (pkg pkgs deps)
(add-to-list 'deps pkg)
(dolist (new-pkg (mapcar 'car (package-deps-for pkg)))
(add-to-list 'deps new-pkg)))))
(defun package-cleanup (packages)
"Delete installed packages not explicitly declared in PACKAGES."
(let ((removes (set-difference (mapcar 'car package-alist)
(package-transitive-closure packages))))
(mapc 'package-delete-by-name removes)))
;;; finis
In GNU Emacs 24.2.1 (x86_64-apple-darwin12.2.0, NS apple-appkit-1187.34)
of 2012-09-20 on greed.local
Windowing system distributor `Apple', version 10.3.1187
Configured using:
`configure '--prefix=/usr/local/Cellar/emacs/24.2' '--without-dbus'
'--enable-locallisppath=/usr/local/share/emacs/site-lisp'
'--infodir=/usr/local/Cellar/emacs/24.2/share/info/emacs' '--with-ns'
'--disable-ns-self-contained''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: nil
value of $XMODIFIERS: nil
locale-coding-system: nil
default enable-multibyte-characters: t
Major mode: Fundamental
Minor modes in effect:
tooltip-mode: t
mouse-wheel-mode: t
tool-bar-mode: t
menu-bar-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
blink-cursor-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
s-x <escape> x r e p <tab> o <tab> r <tab> <return
>
Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
kill-region: The mark is not set now, so there is no region
Quit
Making completion list... [2 times]
Load-path shadows:
None found.
Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail regexp-opt rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr mail-utils help-mode easymenu view time-date tooltip
ediff-hook vc-hooks lisp-float-type mwheel ns-win tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer loaddefs button faces cus-face files text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process ns multi-tty
emacs)
- bug#15201: 24.2; extensions/enhancements to package.el,
Ryan Davis <=