emacs-pms-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[emacs-pms] Introducing Pases


From: Erik Hetzner
Subject: [emacs-pms] Introducing Pases
Date: Thu, 30 Dec 2010 22:56:34 -0800
User-agent: Wanderlust/2.15.9 (Almost Unreal) SEMI/1.14.6 (Maruoka) FLIM/1.14.9 (Gojō) APEL/10.8 Emacs/23.1 (i486-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO)

Hi,

I am the author of Pases, a packaging and system definition program
for Emacs. I hope this email will serve as a brief introduction to
Pases.

Pases supports the following features for packagers:

- Multi-file packages easily handled.
- Easy specification of package loading order.
- Fine-tuned selection of which Elisp source files to enable and
  compile based on any properties of Emacs installation (e.g., Xemacs
  only files, different sources for GNU emacs 22 and 23, etc.)
- No modification to original Emacs source is necessary to create
  packages.
- Generation of autoloads via pases.
- Self-hosting (pases is itself a pases package).

Pases is somewhat inspired by the ASDF system for Common Lisp.

Pases can be used to package any Emacs packages without modification
to the Elisp source files. Pases is primarily driven by a .pasdef
file, which is an elisp file which should contain a single
pases:defsystem call.

Here is a minimal pasdef file, for a single file package:

  (pases:defsystem
    find-recursive
    :version "2001-03-26"
    :components
    (list (pases:deffile "find-recursive")))

A Pases package for find-recursive would consist of this pasdef file,
(find-recursive.pasdef) & the .el file, both placed in a single ZIP
file, named find-recursive-2001-03-26.pases. This package could then
be installed by a user. Pases would handle the installation of the
package, compilation of the elisp file, and ensuring that the elisp
file is on the load-path.

A more complicated example:

  (pases:defsystem 
    js2
    :version "20090723b"
    :components
    (list (pases:deffile "js2" :generate-autoloads-to "js2-loaddefs")
          (pases:deffile "js2-loaddefs" :load t :generated t))
    :after-load-hook (lambda ()
                       (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)))
    :after-unload-hook (lambda ()
                         (let ((m (assoc "\\.js$" auto-mode-alist)))
                           (if (and m (eq (cdr m) 'js2-mode))
                               (setq auto-mode-alist (delq m 
auto-mode-alist))))))

In this case, pases will take care of compilation of the js2.el file,
generation of autoloads to a js2-loaddefs file, the load-path, and
automatic loading of the js2-loaddefs file when pases is loaded, as
well as after the package is installed. This pasdef file also defines
after-load and after-unload hooks which set up auto-mode definitions
for .js files.

More information about Pases can be found at:

  http://launchpad.net/pases

I am currently working on the finishing touches for Pases 0.2, which
represents some significant changes from 0.1. 

To get started with Pases, please check out the latest source. Use
make to build the Pases package and any other packages located in
systems/, and follow the instructions in the README to bootstrap the
system.

Please let me know if you have questions.

best, Erik Hetzner



reply via email to

[Prev in Thread] Current Thread [Next in Thread]