Commits

Anonymous committed 2e4a9ad

added time and date

  • Participants
  • Parent commits 7154e29

Comments (0)

Files changed (21)

 (autoload 'pymacs-eval "pymacs" nil t)
 (autoload 'pymacs-apply "pymacs")
 (autoload 'pymacs-call "pymacs")
+(autoload 'idle-highlight "idle-highlight")
 
 ;; bicyclerepair
 (require 'pymacs)
 (eval-when-compile (require 'cl))
 
 
-;; python outline mode
-(setq auto-mode-alist (append '(
-	("\\.texi" . texi-outline)
-	("\\.py" . python-outline))
-             auto-mode-alist))
 
 (defun py-next-block ()
   "go to the next block.  Cf. `forward-sexp' for lisp-mode"
   ;; Your init file should contain only one such instance.
   ;; If there is more than one, they won't work right.
  '(column-number-mode t)
+ '(indent-tabs-mode nil)
+ '(safe-local-variable-values (quote ((encoding . UTF-8))))
  '(show-paren-mode t)
  '(speedbar-frame-parameters (quote ((minibuffer) (width . 20) (border-width . 0) (menu-bar-lines . 0) (tool-bar-lines . 0) (unsplittable . t) (set-background-color "black"))))
  '(tab-width 4)
   ;; If you edit it by hand, you could mess it up, so be careful.
   ;; Your init file should contain only one such instance.
   ;; If there is more than one, they won't work right.
- '(default ((t (:stipple nil :background "darkslategrey" :foreground "peachpuff" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 128 :width normal :family "adobe-courier"))))
+ '(default ((t (:stipple nil :background "black" :foreground "peachpuff" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 128 :width normal :family "adobe-courier"))))
  '(background "blue")
+ '(cursor ((t (:background "deepskyblue"))))
  '(font-lock-builtin-face ((((class color) (background dark)) (:foreground "Turquoise"))))
  '(font-lock-comment-face ((t (:foreground "MediumAquamarine"))))
  '(font-lock-constant-face ((((class color) (background dark)) (:bold t :foreground "DarkOrchid"))))
 
 (setq indent-tabs-mode nil)
 
+
+
+;;; This was installed by package-install.el.
+;;; This provides support for the package system and
+;;; interfacing with ELPA, the package archive.
+;;; Move this code earlier if you want to reference
+;;; packages in your .emacs.
+(when
+    (load
+     (expand-file-name "~/.emacs.d/elpa/package.el"))
+  (package-initialize))
+
+
+;; date and time in status bar
+
+(setq display-time-day-and-date t
+                display-time-24hr-format t)
+             (display-time)

File auto-save-list/.saves-18484-lhonda-desktop~

+/home/lhonda/vm/dev/goodstuff/frontend/src/main/app/views.php
+/home/lhonda/vm/dev/goodstuff/frontend/src/main/app/#views.php#
+/home/lhonda/vm/dev/goodstuff/tests/integration_tests/dashboard_test.py
+/home/lhonda/vm/dev/goodstuff/tests/integration_tests/#dashboard_test.py#
+/home/lhonda/.emacs.d/elpa/css-mode-1.0/css-mode-autoloads.el
+/home/lhonda/.emacs.d/elpa/css-mode-1.0/#css-mode-autoloads.el#
+/home/lhonda/vm/dev/goodstuff/TAGS
+/home/lhonda/vm/dev/goodstuff/#TAGS#

File auto-save-list/.saves-19669-lhonda-desktop~

Empty file added.

File auto-save-list/.saves-21501-lhonda-desktop~

+/home/lhonda/vm/dev/goodstuff/frontend/src/main/app/views.php
+/home/lhonda/vm/dev/goodstuff/frontend/src/main/app/#views.php#

File elpa/archive-contents

+(1
+ (magit .
+	[(0 7)
+	 nil "Control Git from Emacs." tar])
+ (w3 .
+     [(4 0 46)
+      nil "A web browser written entirely in Emacs Lisp" tar])
+ (yasnippet-bundle .
+		   [(0 5 10)
+		    nil "Yet another snippet extension (Auto compiled bundle)" single])
+ (rinari .
+	 [(2 1)
+	  ((ruby-mode
+	    (1 1))
+	   (inf-ruby
+	    (2 1))
+	   (ruby-compilation
+	    (0 7))
+	   (jump
+	    (2 0)))
+	  "Rinari Is Not A Rails IDE" single])
+ (jump .
+       [(2 0)
+	((findr
+	  (0 7))
+	 (inflections
+	  (1 0)))
+	"build functions which contextually jump between files" single])
+ (inflections .
+	      [(1 0)
+	       nil "convert english words between singular and plural" single])
+ (tumble .
+	 [(1 1)
+	  ((http-post-simple
+	    (1 0)))
+	  "an Emacs mode for Tumblr" single])
+ (http-post-simple .
+		   [(1 0)
+		    nil "HTTP POST requests using the url library" single])
+ (findr .
+	[(0 7)
+	 nil "Breadth-first file-finding facility for (X)Emacs" single])
+ (ruby-compilation .
+		   [(0 7)
+		    ((ruby-mode
+		      (1 1))
+		     (inf-ruby
+		      (2 1)))
+		    "run a ruby process in a compilation buffer" single])
+ (gist .
+       [(0 3)
+	nil "Emacs integration for gist.github.com" single])
+ (confluence .
+	     [(1 1)
+	      ((xml-rpc
+		(1 6 4)))
+	      "Emacs mode for interacting with confluence wikis" single])
+ (epresent .
+	   [(0 1)
+	    nil "Simple presentation mode for Emacs" single])
+ (inf-ruby .
+	   [(2 1)
+	    ((ruby-mode
+	      (1 1)))
+	    "Run a ruby process in a buffer" single])
+ (ruby-mode .
+	    [(1 1)
+	     nil "Major mode for editing Ruby files" single])
+ (idle-highlight .
+		 [(1 0)
+		  nil "highlight the word the point is on" single])
+ (find-file-in-project .
+		       [(2 0)
+			((project-local-variables
+			  (0 2)))
+			"Find files in a project quickly." single])
+ (project-local-variables .
+			  [(0 2)
+			   nil "set project-local variables from a file" single])
+ (lusty-explorer .
+		 [(1 0)
+		  nil "Dynamic filesystem explorer and buffer switcher" single])
+ (tempo-snippets .
+		 [(0 1 5)
+		  nil "visual insertion of tempo templates" single])
+ (highlight-80+ .
+		[(1 0)
+		 nil "highlight characters beyond column 80" single])
+ (echo-pick .
+	    [(0 1)
+	     nil "filter for echo area status messages" single])
+ (fringe-helper .
+		[(0 1 1)
+		 nil "helper functions for fringe bitmaps" single])
+ (elk-test .
+	   [(0 3 1)
+	    ((fringe-helper
+	      (0 1 1)))
+	    "Emacs Lisp testing framework" single])
+ (compile-bookmarks .
+		    [(0 2)
+		     nil "bookmarks for compilation commands" single])
+ (pov-mode .
+	   [(3 2)
+	    nil "Major mode for editing POV-Ray scene files." tar])
+ (js2-mode .
+	   [(20080616)
+	    nil "an improved JavaScript editing mode" single])
+ (ert .
+      [(0 1)
+       nil "Emacs Lisp Regression Testing" single])
+ (jtags .
+	[(0 96)
+	 nil "enhanced tags functionality for Java development" single])
+ (eproject .
+	   [(0 2)
+	    nil "Project workspaces for emacs" tar])
+ (log4j-mode .
+	     [(1 3)
+	      nil "major mode for viewing log files" single])
+ (nxml-mode .
+	    [(20041004)
+	     nil "Major mode for editing XML documents." tar])
+ (columnify .
+	    [(1 0)
+	     nil "arrange lines into columns" single])
+ (gdb-mi .
+	 [(0 5)
+	  nil "Experimental MI-based gdb front end" tar])
+ (asciidoc .
+	   [(0 1)
+	    nil "asciidoc text file development support" single])
+ (shell-current-directory .
+			  [(0 1)
+			   nil "create new shell based on buffer directory" single])
+ (facebook .
+	   [(0 0 1)
+	    ((json
+	      (0)))
+	    "Access the Facebook API from emacs" single])
+ (json .
+       [(1 2)
+	nil "JavaScript Object Notation parser / generator" single])
+ (pick-backup .
+	      [(0 8)
+	       nil "easy access to versioned backup files" single])
+ (idle-require .
+	       [(1 0)
+		nil "load elisp libraries while Emacs is idle" single])
+ (highlight-symbol .
+		   [(1 0 3)
+		    nil "automatic and manual symbol highlighting" single])
+ (auto-dictionary .
+		  [(1 0 1)
+		   nil "automatic dictionary switcher for flyspell" single])
+ (dictionary .
+	     [(1 8 7)
+	      nil "an interface to an RFC 2229 dictionary server" tar])
+ (muse .
+       [(3 12)
+	nil "Authoring and publishing tool" tar])
+ (jimb-patch .
+	     [(1 5)
+	      nil "clean a patch for submission via email" single])
+ (lisppaste .
+	    [(1 5)
+	     ((xml-rpc
+	       (1 6 4)))
+	     "Interact with the lisppaste pastebot via XML-RPC." single])
+ (weblogger .
+	    [(1 2 1)
+	     nil "Weblog maintenance via XML-RPC APIs" single])
+ (xml-rpc .
+	  [(1 6 4)
+	   nil "An elisp implementation of clientside XML-RPC" single])
+ (iresize .
+	  [(0 2)
+	   nil "Interactively resize a window" single])
+ (sgftree .
+	  [(0 1)
+	   nil "Read an sgf file and represent it as a tree" single])
+ (chess .
+	[(1 96)
+	 nil "Play chess in Emacs" tar])
+ (etags-select .
+	       [(1 11)
+		nil "Select from multiple tags" single])
+ (less .
+       [(0 2)
+	nil "less style view mode" single])
+ (smart-operator .
+		 [(0 9)
+		  nil "Insert operators packed with whitespaces smartly" single])
+ (dired-isearch .
+		[(0 3)
+		 nil "isearch in Dired" single])
+ (cal-china-x .
+	      [(0 6)
+	       nil "Chinese calendar extras" single])
+ (wajig .
+	[(0 53)
+	 nil "an interface for wajig" single])
+ (erc .
+      [(5 3)
+       nil "An Emacs Internet Relay Chat client" tar])
+ (emms .
+       [(3 0)
+	nil "The Emacs Multimedia System" tar])
+ (archive-downloader .
+		     [(1 1)
+		      nil "Download files from archive.org" single])
+ (package .
+	  [(0 9)
+	   nil "Simple package system for Emacs" single])
+ (highlight-parentheses .
+			[(0 9 1)
+			 nil "highlight surrounding parentheses" single])
+ (kill-ring-search .
+		   [(1 1)
+		    nil "incremental search for the kill ring" single])
+ (tex-math-preview .
+		   [(5)
+		    nil "preview TeX math expressions." single])
+ (gtk-look .
+	   [(12)
+	    nil "lookup Gtk and Gnome documentation." single])
+ (xtide .
+	[(8)
+	 nil "XTide display in Emacs.      -*- coding: latin-1 -*-" single])
+ (compilation-recenter-end .
+			   [(2)
+			    nil "compilation-mode window recentre" single])
+ (gdb-shell .
+	    [(0 2)
+	     nil "minor mode to add gdb features to shell" single])
+ (highline .
+	   [(4 2)
+	    nil "minor mode to highlight current line in buffer" single])
+ (lua-mode .
+	   [(20070608)
+	    nil "a major-mode for editing Lua scripts" single])
+ (css-mode .
+	   [(1 0)
+	    nil "Major mode for editing Cascading Style Sheets" single])
+ (javascript .
+	     [(1 99 8)
+	      nil "Major mode for editing JavaScript source text" single])
+ (light-symbol .
+	       [(0 1)
+		nil "Minor mode to highlight symbol under point" single])
+ (worklog .
+	  [(2 4 2)
+	   nil "time tracking mode" single])
+ (abacus .
+	 [(1 0 2)
+	  nil "Abacus Calculator" single])
+ (sudoku .
+	 [(0 3)
+	  nil "Simple sudoku game, can download puzzles from the web." single])
+ (caps-mode .
+	    [(1 0)
+	     nil "(minor mode) letters are inserted capitalized" single])
+ (lambdacalc .
+	     [(1 0)
+	      nil "Interpret lambda calculus expressions" single])
+ (wtf .
+      [(2 0)
+       nil "Look up conversational and computing acronyms" single])
+ (blank-mode .
+	     [(6 6)
+	      nil "Minor mode to visualize blanks" single])
+ (bubbles .
+	  [(0 5)
+	   nil "Puzzle game for Emacs." single])
+ (newsticker .
+	     [(1 10)
+	      nil "Headline news ticker" tar])
+ (changelog-url .
+		[(0 1)
+		 nil "ChangeLog bugzilla buttonizer" tar]))
+

File elpa/archive-contents~

+(1
+ (magit .
+	[(0 7)
+	 nil "Control Git from Emacs." tar])
+ (w3 .
+     [(4 0 46)
+      nil "A web browser written entirely in Emacs Lisp" tar])
+ (yasnippet-bundle .
+		   [(0 5 10)
+		    nil "Yet another snippet extension (Auto compiled bundle)" single])
+ (rinari .
+	 [(2 1)
+	  ((ruby-mode
+	    (1 1))
+	   (inf-ruby
+	    (2 1))
+	   (ruby-compilation
+	    (0 7))
+	   (jump
+	    (2 0)))
+	  "Rinari Is Not A Rails IDE" single])
+ (jump .
+       [(2 0)
+	((findr
+	  (0 7))
+	 (inflections
+	  (1 0)))
+	"build functions which contextually jump between files" single])
+ (inflections .
+	      [(1 0)
+	       nil "convert english words between singular and plural" single])
+ (tumble .
+	 [(1 1)
+	  ((http-post-simple
+	    (1 0)))
+	  "an Emacs mode for Tumblr" single])
+ (http-post-simple .
+		   [(1 0)
+		    nil "HTTP POST requests using the url library" single])
+ (findr .
+	[(0 7)
+	 nil "Breadth-first file-finding facility for (X)Emacs" single])
+ (ruby-compilation .
+		   [(0 7)
+		    ((ruby-mode
+		      (1 1))
+		     (inf-ruby
+		      (2 1)))
+		    "run a ruby process in a compilation buffer" single])
+ (gist .
+       [(0 3)
+	nil "Emacs integration for gist.github.com" single])
+ (confluence .
+	     [(1 1)
+	      ((xml-rpc
+		(1 6 4)))
+	      "Emacs mode for interacting with confluence wikis" single])
+ (epresent .
+	   [(0 1)
+	    nil "Simple presentation mode for Emacs" single])
+ (inf-ruby .
+	   [(2 1)
+	    ((ruby-mode
+	      (1 1)))
+	    "Run a ruby process in a buffer" single])
+ (ruby-mode .
+	    [(1 1)
+	     nil "Major mode for editing Ruby files" single])
+ (idle-highlight .
+		 [(1 0)
+		  nil "highlight the word the point is on" single])
+ (find-file-in-project .
+		       [(2 0)
+			((project-local-variables
+			  (0 2)))
+			"Find files in a project quickly." single])
+ (project-local-variables .
+			  [(0 2)
+			   nil "set project-local variables from a file" single])
+ (lusty-explorer .
+		 [(1 0)
+		  nil "Dynamic filesystem explorer and buffer switcher" single])
+ (tempo-snippets .
+		 [(0 1 5)
+		  nil "visual insertion of tempo templates" single])
+ (highlight-80+ .
+		[(1 0)
+		 nil "highlight characters beyond column 80" single])
+ (echo-pick .
+	    [(0 1)
+	     nil "filter for echo area status messages" single])
+ (fringe-helper .
+		[(0 1 1)
+		 nil "helper functions for fringe bitmaps" single])
+ (elk-test .
+	   [(0 3 1)
+	    ((fringe-helper
+	      (0 1 1)))
+	    "Emacs Lisp testing framework" single])
+ (compile-bookmarks .
+		    [(0 2)
+		     nil "bookmarks for compilation commands" single])
+ (pov-mode .
+	   [(3 2)
+	    nil "Major mode for editing POV-Ray scene files." tar])
+ (js2-mode .
+	   [(20080616)
+	    nil "an improved JavaScript editing mode" single])
+ (ert .
+      [(0 1)
+       nil "Emacs Lisp Regression Testing" single])
+ (jtags .
+	[(0 96)
+	 nil "enhanced tags functionality for Java development" single])
+ (eproject .
+	   [(0 2)
+	    nil "Project workspaces for emacs" tar])
+ (log4j-mode .
+	     [(1 3)
+	      nil "major mode for viewing log files" single])
+ (nxml-mode .
+	    [(20041004)
+	     nil "Major mode for editing XML documents." tar])
+ (columnify .
+	    [(1 0)
+	     nil "arrange lines into columns" single])
+ (gdb-mi .
+	 [(0 5)
+	  nil "Experimental MI-based gdb front end" tar])
+ (asciidoc .
+	   [(0 1)
+	    nil "asciidoc text file development support" single])
+ (shell-current-directory .
+			  [(0 1)
+			   nil "create new shell based on buffer directory" single])
+ (facebook .
+	   [(0 0 1)
+	    ((json
+	      (0)))
+	    "Access the Facebook API from emacs" single])
+ (json .
+       [(1 2)
+	nil "JavaScript Object Notation parser / generator" single])
+ (pick-backup .
+	      [(0 8)
+	       nil "easy access to versioned backup files" single])
+ (idle-require .
+	       [(1 0)
+		nil "load elisp libraries while Emacs is idle" single])
+ (highlight-symbol .
+		   [(1 0 3)
+		    nil "automatic and manual symbol highlighting" single])
+ (auto-dictionary .
+		  [(1 0 1)
+		   nil "automatic dictionary switcher for flyspell" single])
+ (dictionary .
+	     [(1 8 7)
+	      nil "an interface to an RFC 2229 dictionary server" tar])
+ (muse .
+       [(3 12)
+	nil "Authoring and publishing tool" tar])
+ (jimb-patch .
+	     [(1 5)
+	      nil "clean a patch for submission via email" single])
+ (lisppaste .
+	    [(1 5)
+	     ((xml-rpc
+	       (1 6 4)))
+	     "Interact with the lisppaste pastebot via XML-RPC." single])
+ (weblogger .
+	    [(1 2 1)
+	     nil "Weblog maintenance via XML-RPC APIs" single])
+ (xml-rpc .
+	  [(1 6 4)
+	   nil "An elisp implementation of clientside XML-RPC" single])
+ (iresize .
+	  [(0 2)
+	   nil "Interactively resize a window" single])
+ (sgftree .
+	  [(0 1)
+	   nil "Read an sgf file and represent it as a tree" single])
+ (chess .
+	[(1 96)
+	 nil "Play chess in Emacs" tar])
+ (etags-select .
+	       [(1 11)
+		nil "Select from multiple tags" single])
+ (less .
+       [(0 2)
+	nil "less style view mode" single])
+ (smart-operator .
+		 [(0 9)
+		  nil "Insert operators packed with whitespaces smartly" single])
+ (dired-isearch .
+		[(0 3)
+		 nil "isearch in Dired" single])
+ (cal-china-x .
+	      [(0 6)
+	       nil "Chinese calendar extras" single])
+ (wajig .
+	[(0 53)
+	 nil "an interface for wajig" single])
+ (erc .
+      [(5 3)
+       nil "An Emacs Internet Relay Chat client" tar])
+ (emms .
+       [(3 0)
+	nil "The Emacs Multimedia System" tar])
+ (archive-downloader .
+		     [(1 1)
+		      nil "Download files from archive.org" single])
+ (package .
+	  [(0 9)
+	   nil "Simple package system for Emacs" single])
+ (highlight-parentheses .
+			[(0 9 1)
+			 nil "highlight surrounding parentheses" single])
+ (kill-ring-search .
+		   [(1 1)
+		    nil "incremental search for the kill ring" single])
+ (tex-math-preview .
+		   [(5)
+		    nil "preview TeX math expressions." single])
+ (gtk-look .
+	   [(12)
+	    nil "lookup Gtk and Gnome documentation." single])
+ (xtide .
+	[(8)
+	 nil "XTide display in Emacs.      -*- coding: latin-1 -*-" single])
+ (compilation-recenter-end .
+			   [(2)
+			    nil "compilation-mode window recentre" single])
+ (gdb-shell .
+	    [(0 2)
+	     nil "minor mode to add gdb features to shell" single])
+ (highline .
+	   [(4 2)
+	    nil "minor mode to highlight current line in buffer" single])
+ (lua-mode .
+	   [(20070608)
+	    nil "a major-mode for editing Lua scripts" single])
+ (css-mode .
+	   [(1 0)
+	    nil "Major mode for editing Cascading Style Sheets" single])
+ (javascript .
+	     [(1 99 8)
+	      nil "Major mode for editing JavaScript source text" single])
+ (light-symbol .
+	       [(0 1)
+		nil "Minor mode to highlight symbol under point" single])
+ (worklog .
+	  [(2 4 2)
+	   nil "time tracking mode" single])
+ (abacus .
+	 [(1 0 2)
+	  nil "Abacus Calculator" single])
+ (sudoku .
+	 [(0 3)
+	  nil "Simple sudoku game, can download puzzles from the web." single])
+ (caps-mode .
+	    [(1 0)
+	     nil "(minor mode) letters are inserted capitalized" single])
+ (lambdacalc .
+	     [(1 0)
+	      nil "Interpret lambda calculus expressions" single])
+ (wtf .
+      [(2 0)
+       nil "Look up conversational and computing acronyms" single])
+ (blank-mode .
+	     [(6 6)
+	      nil "Minor mode to visualize blanks" single])
+ (bubbles .
+	  [(0 5)
+	   nil "Puzzle game for Emacs." single])
+ (newsticker .
+	     [(1 10)
+	      nil "Headline news ticker" tar])
+ (changelog-url .
+		[(0 1)
+		 nil "ChangeLog bugzilla buttonizer" tar]))
+

File elpa/builtin-packages

+(1 .  ; version number
+
+ (((22 0) .
+   ((erc . [(5 2) nil "An Emacs Internet Relay Chat client"])
+    ;; The external URL is version 1.15, so make sure the built-in one
+    ;; looks newer.
+    (url . [(1 16) nil "URL handling libary"])))
+  ((23 0) .
+   (;; Strangely, nxml-version is missing in Emacs 23.
+    ;; We pick the merge date as the version.
+    (nxml . [(20071123) nil "Major mode for editing XML documents."])
+    (bubbles . [(0 5) nil "Puzzle game for Emacs."])
+    (ruby-mode . [(1 0)
+	     nil "Major mode for editing Ruby files" single])
+    ))))
+

File elpa/builtin-packages~

+(1 .  ; version number
+
+ (((22 0) .
+   ((erc . [(5 2) nil "An Emacs Internet Relay Chat client"])
+    ;; The external URL is version 1.15, so make sure the built-in one
+    ;; looks newer.
+    (url . [(1 16) nil "URL handling libary"])))
+  ((23 0) .
+   (;; Strangely, nxml-version is missing in Emacs 23.
+    ;; We pick the merge date as the version.
+    (nxml . [(20071123) nil "Major mode for editing XML documents."])
+    (bubbles . [(0 5) nil "Puzzle game for Emacs."])
+    (ruby-mode . [(1 0)
+	     nil "Major mode for editing Ruby files" single])
+    ))))
+

File elpa/css-mode-1.0/css-mode-autoloads.el

+;;; css-mode-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+
+;;;### (autoloads (css-mode) "css-mode" "css-mode.el" (18871 44573))
+;;; Generated autoloads from css-mode.el
+(add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
+
+(autoload (quote css-mode) "css-mode" "\
+Major mode for editing CSS source code.
+
+Key bindings:
+
+\\{css-mode-map}
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads nil nil ("css-mode-pkg.el") (18871 44573 510761))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; css-mode-autoloads.el ends here

File elpa/css-mode-1.0/css-mode-autoloads.el~

+;;; css-mode-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; css-mode-autoloads.el ends here

File elpa/css-mode-1.0/css-mode-pkg.el

+(define-package "css-mode" "1.0" "Major mode for editing Cascading Style Sheets" (quote nil))

File elpa/css-mode-1.0/css-mode-pkg.elc

Binary file added.

File elpa/css-mode-1.0/css-mode.el

+;;; css-mode.el --- Major mode for editing Cascading Style Sheets
+
+;; Copyright (C) 2005  
+;;  Karl Landström.
+
+;; Author:  Karl Landström <kland at comhem dot se>
+;; Maintainer: Karl Landström <kland at comhem dot se>
+;; Version: 1.0
+;; Keywords: languages, hypermedia
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; This file is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to
+;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Installation:
+
+;; Put this file in a folder where Emacs can find it.  On GNU/Linux
+;; it's usually /usr/local/share/emacs/site-lisp/ and on Windows it's
+;; something like "C:\Program Files\Emacs<version>\site-lisp".  To
+;; make it run slightly faster you can also compile it from Emacs (M-x
+;; `emacs-lisp-byte-compile'). Then add
+;; 
+;;    (add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
+;;    (autoload 'css-mode "css-mode" nil t)
+
+;; to your .emacs initialization file (_emacs on Windows).
+
+;;; Code:
+
+(defcustom css-indent-level 3 "Number of spaces for each indent step.")
+
+
+;; KEYMAP
+
+(defvar css-mode-map nil "Keymap in CSS mode.")
+
+(unless css-mode-map (setq css-mode-map (make-sparse-keymap)))
+
+
+;; SYNTAX TABLE AND PARSING
+
+(defvar css-mode-syntax-table
+  (let ((table (make-syntax-table)))
+    (modify-syntax-entry ?/ ". 14" table)
+    (modify-syntax-entry ?* ". 23" table)
+    (modify-syntax-entry ?- "w" table)
+    table)
+  "Syntax table used in CSS mode.")
+
+
+;; The css-re-search-* functions are copied from my JavaScript mode,
+;; `javascript.el'.
+
+(defun css-re-search-forward-inner (regexp &optional bound count)
+  "Used by `css-re-search-forward'."
+  (let ((parse)
+        (saved-point (point-min)))
+    (while (> count 0)
+      (re-search-forward regexp bound)
+      (setq parse (parse-partial-sexp saved-point (point)))
+      (cond ((nth 3 parse)
+             (re-search-forward 
+              (concat "\\([^\\]\\|^\\)" (string (nth 3 parse))) 
+              (save-excursion (end-of-line) (point)) t))
+            ((nth 7 parse)
+             (forward-line))
+            ((or (nth 4 parse)
+                 (and (eq (char-before) ?\/) (eq (char-after) ?\*)))
+             (re-search-forward "\\*/"))
+            (t
+             (setq count (1- count))))
+      (setq saved-point (point))))
+  (point))
+
+
+(defun css-re-search-forward (regexp &optional bound noerror count)
+  "Invokes `re-search-forward' but treats the buffer as if strings and
+comments have been removed."
+  (let ((saved-point (point))
+        (search-expr 
+         (cond ((null count)
+                '(css-re-search-forward-inner regexp bound 1))
+               ((< count 0)
+                '(css-re-search-backward-inner regexp bound (- count)))
+               ((> count 0)
+                '(css-re-search-forward-inner regexp bound count)))))
+    (condition-case err
+        (eval search-expr)
+      (search-failed
+       (goto-char saved-point)
+       (unless noerror
+         (error (error-message-string err)))))))
+
+
+(defun css-re-search-backward-inner (regexp &optional bound count)
+  "Used by `css-re-search-backward'."
+  (let ((parse)
+        (saved-point (point-min)))
+    (while (> count 0)
+      (re-search-backward regexp bound)
+      (setq parse (parse-partial-sexp saved-point (point)))
+      (cond ((nth 3 parse)
+             (re-search-backward
+              (concat "\\([^\\]\\|^\\)" (string (nth 3 parse))) 
+              (save-excursion (beginning-of-line) (point)) t))
+            ((nth 7 parse) 
+             (goto-char (nth 8 parse)))
+            ((or (nth 4 parse)
+                 (and (eq (char-before) ?/) (eq (char-after) ?*)))
+             (re-search-backward "/\\*"))
+            (t
+             (setq count (1- count))))))
+  (point))
+
+
+(defun css-re-search-backward (regexp &optional bound noerror count)
+  "Invokes `re-search-backward' but treats the buffer as if strings
+and comments have been removed."
+  (let ((saved-point (point))
+        (search-expr 
+         (cond ((null count)
+                '(css-re-search-backward-inner regexp bound 1))
+               ((< count 0)
+                '(css-re-search-forward-inner regexp bound (- count)))
+               ((> count 0)
+                '(css-re-search-backward-inner regexp bound count)))))
+    (condition-case err
+        (eval search-expr)
+      (search-failed
+       (goto-char saved-point)
+       (unless noerror
+         (error (error-message-string err)))))))
+
+
+;; FONT LOCK
+
+(defconst css-font-lock-keywords-1
+  (list
+
+   ;; selectors
+   (list "^[ \t]*[[:word:].#:]+[ \t]*\\([,{]\\|/\\*\\|$\\)"
+         (list "\\([[:word:].#:]+\\)[ \t]*\\(,\\|{.*\\|/\\*.*?\\*/\\|$\\)"
+               '(progn
+                  (backward-char)
+                  (if (nth 1 (parse-partial-sexp (point-min) (point)))
+                      (end-of-line)
+                    (beginning-of-line)))
+               '(end-of-line)
+               '(1 font-lock-function-name-face)))
+
+   ;; properties
+   (list "\\(\\w+\\)[ \t]*:" 1 font-lock-variable-name-face)
+
+   ;; values that need to be quoted
+   (list ":[ \t]*\\(\\w+[ \t]+\\w+\\)" 1 font-lock-warning-face)
+
+   ;; values (unquoted)
+;;    (list ":[ \t]*\\(\"\\|\\w" 
+;;          "\\(.+?\\)\\(,\\|;\\|}\\|$\\)"
+;;          '(backward-char)
+;;          '(end-of-line)
+;;          '(1 font-lock-string-face))
+))
+
+(defconst css-font-lock-keywords-2 css-font-lock-keywords-1)
+(defconst css-font-lock-keywords-3 css-font-lock-keywords-1)
+(defconst css-font-lock-keywords 
+  '(css-font-lock-keywords-3 css-font-lock-keywords-1 css-font-lock-keywords-2
+                             css-font-lock-keywords-3)
+  "See `font-lock-keywords'.")
+
+
+(defun css-indent-line ()
+  (interactive)
+  (let ((indent
+         (save-excursion
+           (back-to-indentation)
+           (let ((p (parse-partial-sexp (point-min) (point)))
+                 (end-brace-p (looking-at "}")))
+             (cond
+              ((or (nth 8 p) (looking-at "/[/*]"))
+               (current-indentation))
+              ((save-excursion
+                 (and (skip-chars-backward " \t\n:,")
+                      (looking-at "[:,]")))
+               (save-excursion 
+                 (css-re-search-backward "^[ \t]*\\w")
+                 (+ (current-indentation) css-indent-level)))
+              ((nth 1 p)
+               (save-excursion 
+                 (goto-char (nth 1 p))
+                 (+ (current-indentation) (if end-brace-p 0 css-indent-level))))
+              (t
+               0)))))
+        (offset (- (current-column) (current-indentation))))
+    (indent-line-to indent)
+    (if (> offset 0) (forward-char offset))))
+
+
+(defconst css-imenu-generic-expression
+  '((nil "^[ \t]*\\([[:word:].:#, \t]+\\)\\s-*{" 1))
+  "Regular expression matching any selector. Used by imenu.")
+
+;;;###autoload(add-to-list 'auto-mode-alist '("\\.css\\'" . css-mode))
+
+;;;###autoload
+(defun css-mode ()
+  "Major mode for editing CSS source code.
+
+Key bindings:
+
+\\{css-mode-map}"
+  (interactive)
+  (kill-all-local-variables)
+
+  (use-local-map css-mode-map)
+  (set-syntax-table css-mode-syntax-table)
+  (set (make-local-variable 'indent-line-function) 'css-indent-line)
+  (set (make-local-variable 'font-lock-defaults) (list css-font-lock-keywords))
+
+  ;; Imenu
+  (setq imenu-case-fold-search nil)
+  (set (make-local-variable 'imenu-generic-expression)
+       css-imenu-generic-expression)
+
+  (when (featurep 'newcomment)
+    (set (make-local-variable 'comment-start) "/*")
+    (set (make-local-variable 'comment-end) "*/")
+    (set (make-local-variable 'comment-start-skip) "/\\*+ *")
+    (set (make-local-variable 'comment-end-skip) " *\\*+/")
+    (require 'advice)
+
+    (defadvice comment-dwim (after inhibit-indent)
+      "Indent new comment lines to column zero and insert only one space
+before a trailing comment."
+      (when (eq major-mode 'css-mode)
+        (let ((prs (parse-partial-sexp 
+                    (save-excursion (beginning-of-line) (point)) 
+                    (point))))
+          (when (nth 4 prs)
+            (save-excursion 
+              (goto-char (nth 8 prs))
+              (when (looking-at "/\\*[ \t]*\\*/")
+                (if (= (current-column) (current-indentation))
+                    (indent-line-to 0)
+                  (just-one-space))))))))
+    
+    (ad-activate 'comment-dwim))
+
+  (setq major-mode 'css-mode)
+  (setq mode-name "CSS")
+  (run-hooks 'css-mode-hook))
+
+(provide 'css-mode)
+;;; css-mode.el ends here

File elpa/css-mode-1.0/css-mode.elc

Binary file added.

File elpa/idle-highlight-1.0/idle-highlight-autoloads.el

+;;; idle-highlight-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+
+;;;### (autoloads (idle-highlight) "idle-highlight" "idle-highlight.el"
+;;;;;;  (18870 59736))
+;;; Generated autoloads from idle-highlight.el
+
+(autoload (quote idle-highlight) "idle-highlight" "\
+Toggle idle-highlighting.
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads nil nil ("idle-highlight-pkg.el") (18870 59736
+;;;;;;  908032))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; idle-highlight-autoloads.el ends here

File elpa/idle-highlight-1.0/idle-highlight-autoloads.el~

+;;; idle-highlight-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; idle-highlight-autoloads.el ends here

File elpa/idle-highlight-1.0/idle-highlight-pkg.el

+(define-package "idle-highlight" "1.0" "highlight the word the point is on" (quote nil))

File elpa/idle-highlight-1.0/idle-highlight-pkg.elc

Binary file added.

File elpa/idle-highlight-1.0/idle-highlight.el

+;;; idle-highlight.el --- highlight the word the point is on
+
+;; Copyright (C) 2008 Phil Hagelberg
+
+;; Author: Phil Hagelberg <technomancy@gmail.com>
+;; URL: http://www.emacswiki.org/cgi-bin/wiki/IdleHighlight
+;; Version: 1.0
+;; Created: 2008-05-13
+;; Keywords: convenience
+;; EmacsWiki: IdleHighlight
+
+;; This file is NOT part of GNU Emacs.
+
+;;; License:
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Commentary:
+
+;; Based on some snippets by fledermaus from the #emacs channel.
+
+;; M-x idle-highlight sets an idle timer that highlights all
+;; occurences in the buffer of the word under the point.
+
+;; Enabling it in a hook is recommended. But you don't want it enabled
+;; for all buffers, just programming ones.
+;;
+;; Example:
+;;
+;; (defun my-coding-hook ()
+;;   (make-local-variable 'column-number-mode)
+;;   (column-number-mode t)
+;;   (if window-system (hl-line-mode t))
+;;   (idle-highlight))
+;;
+;; (add-hook 'emacs-lisp-mode-hook 'my-coding-hook)
+;; (add-hook 'ruby-mode-hook 'my-coding-hook)
+;; (add-hook 'js2-mode-hook 'my-coding-hook)
+
+;;; Code:
+
+(require 'thingatpt)
+
+(defvar idle-highlight-last-word nil
+  "Last word to be idle-highlighted.")
+
+(defvar idle-highlight-timer nil
+  "Timer to activate re-highlighting.")
+
+(defun idle-highlight-word-at-point ()
+  "Highlight the word under the point."
+  (let* ((target-symbol (symbol-at-point))
+         (target (symbol-name target-symbol)))
+    (when idle-highlight-last-word
+      (unhighlight-regexp (concat "\\<"
+                                  (regexp-quote idle-highlight-last-word)
+                                  "\\>")))
+    (when (and idle-highlight-timer target target-symbol
+               ;; TODO: no need to highlight keywords like if
+               (not (in-string-p)) (not (equal target "end")))
+      (highlight-regexp (concat "\\<" (regexp-quote target) "\\>") 'region)
+      (setq idle-highlight-last-word target))))
+
+;;;###autoload
+(defun idle-highlight (&optional arg)
+  "Toggle idle-highlighting."
+  (interactive "P")
+  (if (and (boundp 'idle-highlight-timer)
+           idle-highlight-timer)
+      (progn
+        (cancel-timer idle-highlight-timer)
+        (setq idle-highlight-timer nil))
+    (set (make-local-variable 'idle-highlight-last-word) nil)
+    (set (make-local-variable 'idle-highlight-timer)
+         (run-with-idle-timer 0.5 :repeat 'idle-highlight-word-at-point))))
+
+(provide 'idle-highlight)
+;;; idle-highlight.el ends here

File elpa/idle-highlight-1.0/idle-highlight.elc

Binary file added.

File elpa/package.el

+;;; package.el --- Simple package system for Emacs
+
+;; Copyright (C) 2007, 2008, 2009 Tom Tromey <tromey@redhat.com>
+
+;; Author: Tom Tromey <tromey@redhat.com>
+;; Created: 10 Mar 2007
+;; Version: 0.9
+;; Keywords: tools
+
+;; This file is not (yet) part of GNU Emacs.
+;; However, it is distributed under the same license.
+
+;; GNU Emacs is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs; see the file COPYING.  If not, write to the
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
+
+;;; Change Log:
+
+;;  2 Apr 2007 - now using ChangeLog file
+;; 15 Mar 2007 - updated documentation
+;; 14 Mar 2007 - Changed how obsolete packages are handled
+;; 13 Mar 2007 - Wrote package-install-from-buffer
+;; 12 Mar 2007 - Wrote package-menu mode
+
+;;; Commentary:
+
+;; To use this, put package.el somewhere on your load-path.  Then add
+;; this to your .emacs:
+;;
+;;    (load "package")
+;;    (package-initialize)
+;;
+;; This will automatically make available the packages you have
+;; installed using package.el.  If your .emacs will refer to these
+;; packages, you may want to initialize the package manager near the
+;; top.
+;;
+;; Note that if you want to be able to automatically download and
+;; install packages from ELPA (the Emacs Lisp Package Archive), then
+;; you will need the 'url' package.  This comes with Emacs 22; Emacs
+;; 21 users will have to find it elsewhere.
+;;
+;; If you installed package.el via the auto-installer:
+;;
+;;    http://tromey.com/elpa/
+;;
+;; then you do not need to edit your .emacs, as the installer will
+;; have done this for you.  The installer will also install the url
+;; package if you need it.
+
+;; Other external functions you may want to use:
+;;
+;; M-x package-list-packages
+;;    Enters a mode similar to buffer-menu which lets you manage
+;;    packages.  You can choose packages for install (mark with "i",
+;;    then "x" to execute) or deletion (not implemented yet), and you
+;;    can see what packages are available.  This will automatically
+;;    fetch the latest list of packages from ELPA.
+;;
+;; M-x package-list-packages-no-fetch
+;;    Like package-list-packages, but does not automatically fetch the
+;;    new list of packages.
+;;
+;; M-x package-install-from-buffer
+;;    Install a package consisting of a single .el file that appears
+;;    in the current buffer.  This only works for packages which
+;;    define a Version header properly; package.el also supports the
+;;    extension headers Package-Version (in case Version is an RCS id
+;;    or similar), and Package-Requires (if the package requires other
+;;    packages).
+;;
+;; M-x package-install-file
+;;    Install a package from the indicated file.  The package can be
+;;    either a tar file or a .el file.  A tar file must contain an
+;;    appropriately-named "-pkg.el" file; a .el file must be properly
+;;    formatted as with package-install-from-buffer.
+
+;; The idea behind package.el is to be able to download packages and
+;; install them.  Packages are versioned and have versioned
+;; dependencies.  Furthermore, this supports built-in packages which
+;; may or may not be newer than user-specified packages.  This makes
+;; it possible to upgrade Emacs and automatically disable packages
+;; which have moved from external to core.  (Note though that we don't
+;; currently register any of these, so this feature does not actually
+;; work.)
+
+;; This code supports a single package repository, ELPA.  All packages
+;; must be registered there.
+
+;; A package is described by its name and version.  The distribution
+;; format is either  a tar file or a single .el file.
+
+;; A tar file should be named "NAME-VERSION.tar".  The tar file must
+;; unpack into a directory named after the package and version:
+;; "NAME-VERSION".  It must contain a file named "PACKAGE-pkg.el"
+;; which consists of a call to define-package.  It may also contain a
+;; "dir" file and the info files it references.
+
+;; A .el file will be named "NAME-VERSION.el" in ELPA, but will be
+;; installed as simply "NAME.el" in a directory named "NAME-VERSION".
+
+;; The downloader will download all dependent packages.  It will also
+;; byte-compile the package's lisp at install time.
+
+;; At activation time we will set up the load-path and the info path,
+;; and we will load the package's autoloads.  If a package's
+;; dependencies are not available, we will not activate that package.
+
+;; Conceptually a package has multiple state transitions:
+;;
+;; * Download.  Fetching the package from ELPA.
+;; * Install.  Untar the package, or write the .el file, into
+;;   ~/.emacs.d/elpa/ directory.
+;; * Byte compile.  Currently this phase is done during install,
+;;   but we may change this.
+;; * Activate.  Evaluate the autoloads for the package to make it
+;;   available to the user.
+;; * Load.  Actually load the package and run some code from it.
+
+;;; Thanks:
+;;; (sorted by sort-lines):
+
+;; Jim Blandy <jimb@red-bean.com>
+;; Karl Fogel <kfogel@red-bean.com>
+;; Kevin Ryde <user42@zip.com.au>
+;; Lawrence Mitchell
+;; Michael Olson <mwolson@member.fsf.org>
+;; Sebastian Tennant <sebyte@smolny.plus.com>
+;; Stefan Monnier <monnier@iro.umontreal.ca>
+;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
+;; Phil Hagelberg <phil@hagelb.org>
+
+;;; ToDo:
+
+;; - putting info dirs at the start of the info path means
+;;   users see a weird ordering of categories.  OTOH we want to
+;;   override later entries.  maybe emacs needs to enforce
+;;   the standard layout?
+;; - put bytecode in a separate directory tree
+;; - perhaps give users a way to recompile their bytecode
+;;   or do it automatically when emacs changes
+;; - give users a way to know whether a package is installed ok
+;; - give users a way to view a package's documentation when it
+;;   only appears in the .el
+;; - use/extend checkdoc so people can tell if their package will work
+;; - "installed" instead of a blank in the status column
+;; - tramp needs its files to be compiled in a certain order.
+;;   how to handle this?  fix tramp?
+;; - on emacs 21 we don't kill the -autoloads.el buffer.  what about 22?
+;; - maybe we need separate .elc directories for various emacs versions
+;;   and also emacs-vs-xemacs.  That way conditional compilation can
+;;   work.  But would this break anything?
+;; - should store the package's keywords in archive-contents, then
+;;   let the users filter the package-menu by keyword.  See
+;;   finder-by-keyword.  (We could also let people view the
+;;   Commentary, but it isn't clear how useful this is.)
+;; - William Xu suggests being able to open a package file without
+;;   installing it
+;; - Interface with desktop.el so that restarting after an install
+;;   works properly
+;; - Implement M-x package-upgrade, to upgrade any/all existing packages
+;; - Use hierarchical layout.  PKG/etc PKG/lisp PKG/info
+;;   ... except maybe lisp?
+;; - It may be nice to have a macro that expands to the package's
+;;   private data dir, aka ".../etc".  Or, maybe data-directory
+;;   needs to be a list (though this would be less nice)
+;;   a few packages want this, eg sokoban
+;; - package menu needs:
+;;     ability to know which packages are built-in & thus not deletable
+;;     it can sometimes print odd results, like 0.3 available but 0.4 active
+;;        why is that?
+;; - Allow multiple versions on the server...?
+;;   [ why bother? ]
+;; - Don't install a package which will invalidate dependencies overall
+;; - Allow something like (or (>= emacs 21.0) (>= xemacs 21.5))
+;;   [ currently thinking, why bother.. KISS ]
+;; - Allow optional package dependencies
+;;   then if we require 'bbdb', bbdb-specific lisp in lisp/bbdb
+;;   and just don't compile to add to load path ...?
+;; - Have a list of archive URLs?  [ maybe there's no point ]
+;; - David Kastrup pointed out on the xemacs list that for GPL it
+;;   is friendlier to ship the source tree.  We could "support" that
+;;   by just having a "src" subdir in the package.  This isn't ideal
+;;   but it probably is not worth trying to support random source
+;;   tree layouts, build schemes, etc.
+;; - Our treatment of the info path is somewhat bogus
+;; - perhaps have an "unstable" tree in ELPA as well as a stable one
+
+;;; Code:
+
+(defconst package-archive-base "http://tromey.com/elpa/"
+  "Base URL for the package archive.
+Ordinarily you should not need to edit this.
+The default points to ELPA, the Emacs Lisp Package Archive.
+Note that some code in package.el assumes that this is an http: URL.")
+
+(defconst package-archive-version 1
+  "Version number of the package archive understood by this file.
+Lower version numbers than this will probably be understood as well.")
+
+;; Note that this only works if you have the password, which you
+;; probably don't :-).  Also if you are using Emacs 21 then you will
+;; need to hack ange-ftp-name-format to make this work.
+(defvar package-archive-upload-base "/elpa@tromey.com@tromey.com:/"
+  "Base location for uploading to package archive.")
+
+(defconst package-el-maintainer "Tom Tromey <elpa@tromey.com>"
+  "The package.el maintainer.")
+
+(defconst package-el-version "0.9"
+  "Version of package.el.")
+
+;; We don't prime the cache since it tends to get out of date.
+(defvar package-archive-contents
+  nil
+  "A representation of the contents of the ELPA archive.
+This is an alist mapping package names (symbols) to package
+descriptor vectors.  These are like the vectors for `package-alist'
+but have an extra entry which is 'tar for tar packages and
+'single for single-file packages.")
+
+(defvar package-user-dir
+  (expand-file-name (convert-standard-filename "~/.emacs.d/elpa"))
+  "Name of the directory where the user's packages are stored.")
+
+(defvar package-directory-list
+  (list (file-name-as-directory package-user-dir)
+	"/usr/share/emacs/site-lisp/elpa/")
+  "List of directories to search for packages.")
+
+(defun package-version-split (string)
+  "Split a package string into a version list."
+  (mapcar 'string-to-int (split-string string "[.]")))
+
+(defconst package--builtins-base
+  ;; We use package-version split here to make sure to pick up the
+  ;; minor version.
+  `((emacs . [,(package-version-split emacs-version) nil
+	      "GNU Emacs"])
+    (package . [,(package-version-split package-el-version)
+		nil "Simple package system for GNU Emacs"]))
+  "Packages which are always built-in.")
+
+(defvar package--builtins
+  (delq nil
+	(append
+	 package--builtins-base
+	 (if (>= emacs-major-version 22)
+	     ;; FIXME: emacs 22 includes tramp, rcirc, maybe
+	     ;; other things...
+	     '((erc . [(5 2) nil "An Emacs Internet Relay Chat client"])
+	       ;; The external URL is version 1.15, so make sure the
+	       ;; built-in one looks newer.
+	       (url . [(1 16) nil "URL handling libary"])))
+	 (if (>= emacs-major-version 23)
+	     '(;; Strangely, nxml-version is missing in Emacs 23.
+	       ;; We pick the merge date as the version.
+	       (nxml . [(20071123) nil "Major mode for editing XML documents."])
+	       (bubbles . [(0 5) nil "Puzzle game for Emacs."])))))
+  "Alist of all built-in packages.
+Maps the package name to a vector [VERSION REQS DOCSTRING].")
+
+(defvar package-alist package--builtins
+  "Alist of all packages available for activation.
+Maps the package name to a vector [VERSION REQS DOCSTRING].")
+
+(defvar package-activated-list
+  (mapcar #'car package-alist)
+  "List of the names of all activated packages.")
+
+(defvar package-obsolete-alist nil
+  "Representation of obsolete packages.
+Like `package-alist', but maps package name to a second alist.
+The inner alist is keyed by version.")
+
+(defun package-version-join (l)
+  "Turn a list of version numbers into a version string."
+  (mapconcat 'int-to-string l "."))
+
+(defun package--version-first-nonzero (l)
+  (while (and l (= (car l) 0))
+    (setq l (cdr l)))
+  (if l (car l) 0))
+
+(defun package-version-compare (v1 v2 fun)
+  "Compare two version lists according to FUN.
+FUN can be <, <=, =, >, >=, or /=."
+  (while (and v1 v2 (= (car v1) (car v2)))
+    (setq v1 (cdr v1)
+	  v2 (cdr v2)))
+  (if v1
+      (if v2
+	  ;; Both not null; we know the cars are not =.
+	  (funcall fun (car v1) (car v2))
+	;; V1 not null, V2 null.
+	(funcall fun (package--version-first-nonzero v1) 0))
+    (if v2
+	;; V1 null, V2 not null.
+	(funcall fun 0 (package--version-first-nonzero v2))
+      ;; Both null.
+      (funcall fun 0 0))))
+
+(defun package--test-version-compare ()
+  "Test suite for `package-version-compare'."
+  (unless (and (package-version-compare '(0) '(0) '=)
+	       (not (package-version-compare '(1) '(0) '=))
+	       (package-version-compare '(1 0 1) '(1) '>=)
+	       (package-version-compare '(1 0 1) '(1) '>)
+	       (not (package-version-compare '(0 9 1) '(1 0 2) '>=)))
+    (error "Failed"))
+  t)
+
+(defun package-strip-version (dirname)
+  "Strip the version from a combined package name and version.
+E.g., if given \"quux-23.0\", will return \"quux\""
+  (if (string-match "^\\(.*\\)-[0-9]+\\([.][0-9]+\\)*$" dirname)
+      (match-string 1 dirname)))
+
+(defun package-load-descriptor (dir package)
+  "Load the description file for a package.
+Return nil if the package could not be found."
+  (let ((pkg-dir (concat (file-name-as-directory dir) package "/")))
+    (if (file-directory-p pkg-dir)
+	(load (concat pkg-dir (package-strip-version package) "-pkg") nil t))))
+
+(defun package-load-all-descriptors ()
+  "Load descriptors of all packages.
+Uses `package-directory-list' to find packages."
+  (mapc (lambda (dir)
+	  (if (file-directory-p dir)
+	      (mapc (lambda (name)
+		      (package-load-descriptor dir name))
+		    (directory-files dir nil "^[^.]"))))
+	package-directory-list))
+
+(defsubst package-desc-vers (desc)
+  "Extract version from a package description vector."
+  (aref desc 0))
+
+(defsubst package-desc-reqs (desc)
+  "Extract requirements from a package description vector."
+  (aref desc 1))
+
+(defsubst package-desc-doc (desc)
+  "Extract doc string from a package description vector."
+  (aref desc 2))
+
+(defsubst package-desc-kind (desc)
+  "Extract the kind of download from an archive package description vector."
+  (aref desc 3))
+
+(defun package-do-activate (package pkg-vec)
+  (let* ((pkg-name (symbol-name package))
+	 (pkg-ver-str (package-version-join (package-desc-vers pkg-vec)))
+	 (dir-list package-directory-list)
+	 (pkg-dir))
+    (while dir-list
+      (let ((subdir (concat (car dir-list) pkg-name "-" pkg-ver-str "/")))
+	(if (file-directory-p subdir)
+	    (progn
+	      (setq pkg-dir subdir)
+	      (setq dir-list nil))
+	  (setq dir-list (cdr dir-list)))))
+    (unless pkg-dir
+      (error "Internal error: could not find directory for %s-%s"
+	     pkg-name pkg-ver-str))
+    (if (file-exists-p (concat pkg-dir "dir"))
+	(progn
+	  ;; FIXME: not the friendliest, but simple.
+	  (require 'info)
+	  (info-initialize)
+	  (setq Info-directory-list (cons pkg-dir Info-directory-list))))
+    (setq load-path (cons pkg-dir load-path))
+    ;; Load the autoloads and activate the package.
+    (load (concat pkg-dir (symbol-name package) "-autoloads")
+	  nil t)
+    (setq package-activated-list (cons package package-activated-list))
+    ;; Don't return nil.
+    t))
+
+(defun package--built-in (package version)
+  "Return true if the package is built-in to Emacs."
+  (let ((elt (assq package package--builtins)))
+    (and elt
+	 (package-version-compare (package-desc-vers (cdr elt)) version '=))))
+
+;; FIXME: return a reason instead?
+(defun package-activate (package version)
+  "Try to activate a package.
+Return nil if the package could not be activated.
+Recursively activates all dependencies of the named package."
+  ;; Assume the user knows what he is doing -- go ahead and activate a
+  ;; newer version of a package if an older one has already been
+  ;; activated.  This is not ideal; we'd at least need to check to see
+  ;; if the package has actually been loaded, and not merely
+  ;; activated.  However, don't try to activate 'emacs', as that makes
+  ;; no sense.
+  (unless (eq package 'emacs)
+    (let* ((pkg-desc (assq package package-alist))
+	   (this-version (package-desc-vers (cdr pkg-desc)))
+	   (req-list (package-desc-reqs (cdr pkg-desc)))
+	   ;; If the package was never activated, we want to do it
+	   ;; now.
+	   (keep-going (or (not (memq package package-activated-list))
+			   (package-version-compare this-version version '>))))
+      (while (and req-list keep-going)
+	(or (package-activate (car (car req-list))
+			      (car (cdr (car req-list))))
+	    (setq keep-going nil))
+	(setq req-list (cdr req-list)))
+      (if keep-going
+	  (package-do-activate package (cdr pkg-desc))
+	;; We get here if a dependency failed to activate -- but we
+	;; can also get here if the requested package was already
+	;; activated.  Return non-nil in the latter case.
+	(and (memq package package-activated-list)
+	     (package-version-compare this-version version '>=))))))
+
+(defun package-mark-obsolete (package pkg-vec)
+  "Put package on the obsolete list, if not already there."
+  (let ((elt (assq package package-obsolete-alist)))
+    (if elt
+	;; If this obsolete version does not exist in the list, update
+	;; it the list.
+	(unless (assoc (package-desc-vers pkg-vec) (cdr elt))
+	  (setcdr elt (cons (cons (package-desc-vers pkg-vec) pkg-vec)
+			    (cdr elt))))
+      ;; Make a new association.
+      (setq package-obsolete-alist
+	    (cons (cons package (list (cons (package-desc-vers pkg-vec)
+					    pkg-vec)))
+		  package-obsolete-alist)))))
+
+;; (define-package "emacs" "21.4.1" "GNU Emacs core package.")
+;; (define-package "erc" "5.1" "ERC - irc client" '((emacs "21.0")))
+(defun define-package (name-str version-string
+				&optional docstring requirements)
+  "Define a new package.
+NAME is the name of the package, a string.
+VERSION-STRING is the version of the package, a dotted sequence
+of integers.
+DOCSTRING is the optional description.
+REQUIREMENTS is a list of requirements on other packages.
+Each requirement is of the form (OTHER-PACKAGE \"VERSION\")."
+  (let* ((name (intern name-str))
+	 (pkg-desc (assq name package-alist))
+	 (new-version (package-version-split version-string))
+	 (new-pkg-desc
+	  (cons name
+		(vector new-version
+			(mapcar
+			 (lambda (elt)
+			   (list (car elt)
+				 (package-version-split (car (cdr elt)))))
+			 requirements)
+			docstring))))
+    ;; Only redefine a package if the redefinition is newer.
+    (if (or (not pkg-desc)
+	    (package-version-compare new-version
+				     (package-desc-vers (cdr pkg-desc))
+				     '>))
+	(progn
+	  (when pkg-desc
+	    ;; Remove old package and declare it obsolete.
+	    (setq package-alist (delq pkg-desc package-alist))
+	    (package-mark-obsolete (car pkg-desc) (cdr pkg-desc)))
+	  ;; Add package to the alist.
+	  (setq package-alist (cons new-pkg-desc package-alist)))
+      ;; You can have two packages with the same version, for instance
+      ;; one in the system package directory and one in your private
+      ;; directory.  We just let the first one win.
+      (unless (package-version-compare new-version
+				       (package-desc-vers (cdr pkg-desc))
+				       '=)
+	;; The package is born obsolete.
+	(package-mark-obsolete (car new-pkg-desc) (cdr new-pkg-desc))))))
+
+;; From Emacs 22.
+(defun package-autoload-ensure-default-file (file)
+  "Make sure that the autoload file FILE exists and if not create it."
+  (unless (file-exists-p file)
+    (write-region
+     (concat ";;; " (file-name-nondirectory file)
+	     " --- automatically extracted autoloads\n"
+	     ";;\n"
+	     ";;; Code:\n\n"
+	     "
+	     ";; version-control: never\n"
+	     ";; no-byte-compile: t\n"
+	     ";; no-update-autoloads: t\n"
+	     ";; End:\n"
+	     ";;; " (file-name-nondirectory file)
+	     " ends here\n")
+     nil file))
+  file)
+
+(defun package-generate-autoloads (name pkg-dir)
+  (let* ((auto-name (concat name "-autoloads.el"))
+	 (ignore-name (concat name "-pkg.el"))
+	 (generated-autoload-file (concat pkg-dir auto-name))
+	 (version-control 'never))
+    ;; In Emacs 22 'update-autoloads-from-directories' does not seem
+    ;; to be autoloaded...
+    (require 'autoload)
+    (unless (fboundp 'autoload-ensure-default-file)
+      (package-autoload-ensure-default-file generated-autoload-file))
+    (update-autoloads-from-directories pkg-dir)))
+
+(defun package-untar-buffer ()
+  "Untar the current buffer.
+This uses `tar-untar-buffer' if it is available.
+Otherwise it uses an external `tar' program.
+`default-directory' should be set by the caller."
+  (require 'tar-mode)
+  (if (fboundp 'tar-untar-buffer)
+      (progn
+	;; tar-mode messes with narrowing, so we just let it have the
+	;; whole buffer to play with.
+	(delete-region (point-min) (point))
+	(tar-mode)
+	(tar-untar-buffer))
+    ;; FIXME: check the result.
+    (call-process-region (point) (point-max) "tar" nil '(nil nil) nil
+			 "xf" "-")))
+
+(defun package-unpack (name version)
+  (let ((pkg-dir (concat (file-name-as-directory package-user-dir)
+			 (symbol-name name) "-" version "/")))
+    ;; Be careful!!
+    (make-directory package-user-dir t)
+    (if (file-directory-p pkg-dir)
+	(mapc (lambda (file) nil) ; 'delete-file -- FIXME: when we're
+				  ; more confident
+	      (directory-files pkg-dir t "^[^.]")))
+    (let* ((default-directory (file-name-as-directory package-user-dir)))
+      (package-untar-buffer)
+      (package-generate-autoloads (symbol-name name) pkg-dir)
+      (let ((load-path (cons pkg-dir load-path)))
+	(byte-recompile-directory pkg-dir 0 t)))))
+
+(defun package-unpack-single (file-name version desc requires)
+  "Install the contents of the current buffer as a package."
+  (let* ((dir (file-name-as-directory package-user-dir)))
+    ;; Special case "package".
+    (if (string= file-name "package")
+	(write-region (point-min) (point-max) (concat dir file-name ".el")
+		      nil nil nil nil)
+      (let ((pkg-dir (file-name-as-directory
+		      (concat dir file-name "-" version))))
+	(make-directory pkg-dir t)
+	(write-region (point-min) (point-max)
+		      (concat pkg-dir file-name ".el")
+		      nil nil nil 'excl)
+	(let ((print-level nil)
+	      (print-length nil))
+	  (write-region
+	   (concat
+	    (prin1-to-string
+	     (list 'define-package
+		   file-name
+		   version
+		   desc
+		   (list 'quote
+			 ;; Turn version lists into string form.
+			 (mapcar
+			  (lambda (elt)
+			    (list (car elt)
+				  (package-version-join (car (cdr elt)))))
+			  requires))))
+	    "\n")
+	   nil
+	   (concat pkg-dir file-name "-pkg.el")
+	   nil nil nil 'excl))
+	(package-generate-autoloads file-name pkg-dir)
+	(let ((load-path (cons pkg-dir load-path)))
+	  (byte-recompile-directory pkg-dir 0 t))))))
+
+(defun package-handle-response ()
+  "Handle the response from the server.
+Parse the HTTP response and throw if an error occurred.
+The url package seems to require extra processing for this.
+This should be called in a `save-excursion', in the download buffer.
+It will move point to somewhere in the headers."
+  ;; We assume HTTP here.
+  (let ((response (url-http-parse-response)))
+    (when (or (< response 200) (>= response 300))
+      (display-buffer (current-buffer))
+      (error "Error during download request:%s"
+	     (buffer-substring-no-properties (point) (progn
+						       (end-of-line)
+						       (point)))))))
+
+(defun package-download-single (name version desc requires)
+  "Download and install a single-file package."
+  (let ((buffer (url-retrieve-synchronously
+		 (concat package-archive-base
+			 (symbol-name name) "-" version ".el"))))
+    (save-excursion
+      (set-buffer buffer)
+      (package-handle-response)
+      (re-search-forward "^$" nil 'move)
+      (forward-char)
+      (delete-region (point-min) (point))
+      (package-unpack-single (symbol-name name) version desc requires)
+      (kill-buffer buffer))))
+
+(defun package-download-tar (name version)
+  "Download and install a tar package."
+  (let ((tar-buffer (url-retrieve-synchronously
+		     (concat package-archive-base
+			     (symbol-name name) "-" version ".tar"))))
+    (save-excursion
+      (set-buffer tar-buffer)
+      (package-handle-response)
+      (re-search-forward "^$" nil 'move)
+      (forward-char)
+      (package-unpack name version)
+      (kill-buffer tar-buffer))))
+
+(defun package-installed-p (package version)
+  (let ((pkg-desc (assq package package-alist)))
+    (and pkg-desc
+	 (package-version-compare version
+				  (package-desc-vers (cdr pkg-desc))
+				  '>=))))
+
+(defun package-compute-transaction (result requirements)
+  (while requirements
+    (let* ((elt (car requirements))
+	   (next-pkg (car elt))
+	   (next-version (car (cdr elt))))
+      (unless (package-installed-p next-pkg next-version)
+	(let ((pkg-desc (assq next-pkg package-archive-contents)))
+	  (unless pkg-desc
+	    (error "Package '%s' not available for installation"
+		   (symbol-name next-pkg)))
+	  (unless (package-version-compare (package-desc-vers (cdr pkg-desc))
+					   next-version
+					   '>=)
+	    (error
+	     "Need package '%s' with version %s, but only %s is available"
+	     (symbol-name next-pkg) (package-version-join next-version)
+	     (package-version-join (package-desc-vers (cdr pkg-desc)))))
+	  ;; Only add to the transaction if we don't already have it.
+	  (unless (memq next-pkg result)
+	    (setq result (cons next-pkg result)))
+	  (setq result
+		(package-compute-transaction result
+					     (package-desc-reqs
+					      (cdr pkg-desc)))))))
+    (setq requirements (cdr requirements)))
+  result)
+
+(defun package-read-from-string (str)
+  "Read a Lisp expression from STR.
+Signal an error if the entire string was not used."
+  (let* ((read-data (read-from-string str))
+          (more-left
+             (condition-case nil
+                       ;; The call to `ignore' suppresses a compiler warning.
+                       (progn (ignore (read-from-string
+                                       (substring str (cdr read-data))))
+                                   t)
+                   (end-of-file nil))))
+    (if more-left
+        (error "Can't read whole string")
+      (car read-data))))
+
+(defun package--read-archive-file (file)
+  "Re-read archive file FILE, if it exists.
+Will return the data from the file, or nil if the file does not exist.
+Will throw an error if the archive version is too new."
+  (let ((filename (concat (file-name-as-directory package-user-dir)
+			  file)))
+    (if (file-exists-p filename)
+	(with-temp-buffer
+	  (insert-file-contents-literally filename)
+	  (let ((contents (package-read-from-string
+			   (buffer-substring-no-properties (point-min)
+							   (point-max)))))
+	    (if (> (car contents) package-archive-version)
+		(error "Package archive version %d is greater than %d - upgrade package.el"
+		       (car contents) package-archive-version))
+	    (cdr contents))))))
+
+(defun package-read-archive-contents ()
+  "Re-read `archive-contents' and `builtin-packages', if they exist.
+Will set `package-archive-contents' and `package--builtins' if successful.
+Will throw an error if the archive version is too new."
+  (let ((archive-contents (package--read-archive-file "archive-contents"))
+	(builtins (package--read-archive-file "builtin-packages")))
+    (if archive-contents
+	;; Version 1 of 'archive-contents' is identical to our
+	;; internal representation.
+	(setq package-archive-contents archive-contents))
+    (if builtins
+	;; Version 1 of 'builtin-packages' is a list where the car is
+	;; a split emacs version and the cdr is an alist suitable for
+	;; package--builtins.
+	(let ((our-version (package-version-split emacs-version))
+	      (result package--builtins-base))
+	  (setq package--builtins
+		(dolist (elt builtins result)
+		  (if (package-version-compare our-version (car elt) '>=)
+		      (setq result (append (cdr elt) result)))))))))
+
+(defun package-download-transaction (transaction)
+  "Download and install all the packages in the given transaction."
+  (mapc (lambda (elt)
+	  (let* ((desc (cdr (assq elt package-archive-contents)))
+		 (v-string (package-version-join (package-desc-vers desc)))
+		 (kind (package-desc-kind desc)))
+	    (cond
+	     ((eq kind 'tar)
+	      (package-download-tar elt v-string))
+	     ((eq kind 'single)
+	      (package-download-single elt v-string
+				       (package-desc-doc desc)
+				       (package-desc-reqs desc)))
+	     (t
+	      (error "Unknown package kind: " (symbol-name kind))))))
+	transaction))
+
+(defun package-install (name)
+  "Install the package named NAME.
+Interactively, prompts for the package name.
+The package is found on the archive site, see `package-archive-base'."
+  (interactive
+   (list (progn
+	   ;; Make sure we're using the most recent download of the
+	   ;; archive.  Maybe we should be updating the archive first?
+	   (package-read-archive-contents)
+	   (intern (completing-read "Install package: "
+				    (mapcar (lambda (elt)
+					      (cons (symbol-name (car elt))
+						    nil))
+					    package-archive-contents)
+				    nil t)))))
+  (let ((pkg-desc (assq name package-archive-contents)))
+    (unless pkg-desc
+      (error "Package '%s' not available for installation"
+	     (symbol-name name)))
+    (let ((transaction
+	   (package-compute-transaction (list name)
+					(package-desc-reqs (cdr pkg-desc)))))
+      (package-download-transaction transaction)))
+  ;; Try to activate it.
+  (package-initialize))
+
+(defun package-strip-rcs-id (v-str)
+  "Strip RCS version ID from the version string.
+If the result looks like a dotted numeric version, return it.
+Otherwise return nil."
+  (if v-str
+      (if (string-match "^[ \t]*[$]Revision:[ \t]\([0-9.]+\)[ \t]*[$]$" v-str)
+	  (match-string 1 v-str)
+	(if (string-match "^[0-9.]*$" v-str)
+	    v-str))))
+
+(defun package-buffer-info ()
+  "Return a vector of information about the package in the current buffer.
+The vector looks like [FILENAME REQUIRES DESCRIPTION VERSION COMMENTARY]
+FILENAME is the file name, a string.  It does not have the \".el\" extension.
+REQUIRES is a requires list, or nil.
+DESCRIPTION is the package description (a string).
+VERSION is the version, a string.
+COMMENTARY is the commentary section, a string, or nil if none.
+Throws an exception if the buffer does not contain a conforming package.
+If there is a package, narrows the buffer to the file's boundaries.
+May narrow buffer or move point even on failure."
+  (goto-char (point-min))
+  (if (re-search-forward "^;;; \\([^ ]*\\)\\.el --- \\(.*\\)$" nil t)
+      (let ((file-name (match-string 1))
+	    (desc (match-string 2))
+	    (start (progn (beginning-of-line) (point))))
+	(if (search-forward (concat ";;; " file-name ".el ends here"))
+	    (progn
+	      ;; Try to include a trailing newline.
+	      (forward-line)
+	      (narrow-to-region start (point))
+	      (require 'lisp-mnt)
+	      ;; Use some headers we've invented to drive the process.
+	      (let* ((requires-str (lm-header "package-requires"))
+		     (requires (if requires-str
+				   (package-read-from-string requires-str)))
+		     ;; Prefer Package-Version, because if it is
+		     ;; defined the package author probably wants us
+		     ;; to use it.  Otherwise try Version.
+		     (pkg-version
+		      (or (package-strip-rcs-id (lm-header "package-version"))
+			  (package-strip-rcs-id (lm-header "version"))))
+		     (commentary (lm-commentary)))
+		(unless pkg-version
+		  (error
+		   "Package does not define a usable \"Version\" or \"Package-Version\" header"))
+		;; Turn string version numbers into list form.
+		(setq requires
+		      (mapcar
+		       (lambda (elt)
+			 (list (car elt)
+			       (package-version-split (car (cdr elt)))))
+		       requires))
+		(set-text-properties 0 (length file-name) nil file-name)
+		(set-text-properties 0 (length pkg-version) nil pkg-version)
+		(set-text-properties 0 (length desc) nil desc)
+		(vector file-name requires desc pkg-version commentary)))
+	  (error "Package missing a terminating comment")))
+    (error "No starting comment for package")))
+
+(defun package-tar-file-info (file)
+  "Find package information for a tar file.
+FILE is the name of the tar file to examine.
+The return result is a vector like `package-buffer-info'."
+  (unless (string-match "^\\(.+\\)-\\([0-9.]+\\)\\.tar$" file)
+    (error "`%s' doesn't have a package-ish name" file))
+  (let* ((pkg-name (file-name-nondirectory (match-string-no-properties 1 file)))
+	 (pkg-version (match-string-no-properties 2 file))
+	 ;; Extract the package descriptor.
+	 (pkg-def-contents (shell-command-to-string
+			    ;; Requires GNU tar.
+			    (concat "tar -xOf " file " "
+				    pkg-name "-" pkg-version "/"
+				    pkg-name "-pkg.el")))
+	 (pkg-def-parsed (package-read-from-string pkg-def-contents)))
+    (unless (eq (car pkg-def-parsed) 'define-package)
+      (error "%s-pkg.el doesn't contain `define-package' sexp" pkg-name))
+    (let ((name-str (nth 1 pkg-def-parsed))
+	  (version-string (nth 2 pkg-def-parsed))
+	  (docstring (nth 3 pkg-def-parsed))
+	  (requires (nth 4 pkg-def-parsed))
+
+	  (readme (shell-command-to-string
+		   ;; Requires GNU tar.
+		   (concat "tar -xOf " file " "
+			   pkg-name "-" pkg-version "/README"))))
+      (unless (equal pkg-version version-string)
+	(error "Inconsistent versions!"))
+      (unless (equal pkg-name name-str)
+	(error "Inconsistent names!"))
+      ;; Kind of a hack.
+      (if (string-match ": Not found in archive" readme)
+	  (setq readme nil))
+      ;; Turn string version numbers into list form.
+      (if (eq (car requires) 'quote)
+	  (setq requires (car (cdr requires))))
+      (setq requires
+	    (mapcar
+	     (lambda (elt)
+	       (list (car elt)
+		     (package-version-split (car (cdr elt)))))
+	     requires))
+      (vector pkg-name requires docstring version-string readme))))
+
+(defun package-install-buffer-internal (pkg-info type)
+  (save-excursion
+    (save-restriction
+      (let* ((file-name (aref pkg-info 0))
+	     (requires (aref pkg-info 1))
+	     (desc (if (string= (aref pkg-info 2) "")
+		       "No description available."
+		     (aref pkg-info 2)))
+	     (pkg-version (aref pkg-info 3)))
+	;; Download and install the dependencies.
+	(let ((transaction (package-compute-transaction nil requires)))
+	  (package-download-transaction transaction))
+	;; Install the package itself.
+	(cond
+	 ((eq type 'single)
+	  (package-unpack-single file-name pkg-version desc requires))
+	 ((eq type 'tar)
+	  (package-unpack (intern file-name) pkg-version))
+	 (t
+	  (error "Unknown type: %s" (symbol-name type))))
+	;; Try to activate it.
+	(package-initialize)))))
+
+(defun package-install-from-buffer ()
+  "Install a package from the current buffer.
+The package is assumed to be a single .el file which
+follows the elisp comment guidelines; see
+info node `(elisp)Library Headers'."
+  (interactive)
+  (package-install-buffer-internal (package-buffer-info) 'single))
+
+(defun package-install-file (file)
+  "Install a package from a file.
+The file can either be a tar file or an Emacs Lisp file."
+  (interactive "fPackage file name: ")
+  (with-temp-buffer
+    (insert-file-contents-literally file)
+    (cond
+     ((string-match "\\.el$" file) (package-install-from-buffer))
+     ((string-match "\\.tar$" file)
+      (package-install-buffer-internal (package-tar-file-info file) 'tar))
+     (t (error "Unrecognized extension `%s'" (file-name-extension file))))))
+
+(defun package-delete (name version)
+  (require 'dired)			; for dired-delete-file
+  (dired-delete-file (concat (file-name-as-directory package-user-dir)
+			     name "-" version)
+		     ;; FIXME: query user?
+		     'always))
+
+(defun package--encode (string)
+  "Encode a string by replacing some characters with XML entities."
+  ;; We need a special case for translating "&" to "&amp;".
+  (let ((index))
+    (while (setq index (string-match "[&]" string index))
+      (setq string (replace-match "&amp;" t nil string))
+      (setq index (1+ index))))
+  (while (string-match "[<]" string)
+    (setq string (replace-match "&lt;" t nil string)))
+  (while (string-match "[>]" string)
+    (setq string (replace-match "&gt;" t nil string)))
+  (while (string-match "[']" string)
+    (setq string (replace-match "&apos;" t nil string)))
+  (while (string-match "[\"]" string)
+    (setq string (replace-match "&quot;" t nil string)))
+  string)
+
+(defun package--make-rss-entry (title text)
+  (let ((date-string (format-time-string "%a, %d %B %Y %T %z")))