Emacs Packages

This web page provides details of, and in some cases access to, Emacs Lisp packages, most of which I have written, at least in part. They are intended for use with GNU Emacs only; I do not explicitly support XEmacs. A few are fairly specific to Microsoft Windows and are primarily intended for use with NTEmacs. Some of the facilities require that Emacs is running under a GUI such as Microsoft Windows or the X Window System under UNIX, Linux or Cygwin.

Files can be accessed either directly via the links below or via a directory listing, and are available both as plain text and compressed using gzip (with a .gz extension). These packages are mostly under (sporadic) development, and feedback is welcome.

Packages distributed separately

  • REDUCE IDE provides an Integrated Development Environment for the REDUCE computer algebra system.
  • WoMan allows UN*X manual pages to be browsed WithOut Man (or any other external programs); it has been distributed with GNU Emacs since version 21.
  • csv-mode.el provides a major mode for editing files of records consisting of delimited fields, such as files in CSV format.
    • CSV mode provides commands, key bindings and a menu to sort records by field, kill and yank columns, align and unalign fields, and transpose rows and columns. Standard sexpr commands apply to fields. Blank and comment lines are ignored, but delimit "paragraphs", and standard comment facilities are supported. Font-locking highlights separators, quoted fields and comments. The current field index can be displayed in the mode line. Separators can be hidden within aligned fields.
    • CSV stands for comma-separated values and is the default plain-text format for tabular data such as that processed by spreadsheets and databases. (It has nothing to do with CVS, the Concurrent Version System!) However, in CSV mode the separators and (optional) field quotes can be customized to any disjoint sets of characters. Hence CSV mode could be used to edit Unix password files, (La)TEX tables, etc.
    • It supersedes a package I originally released as csv.el, the name of which clashed with the existing package csv.el by Ulf Jasper that converts CSV data with a header record to "list of alist" form, which would facilitate more sophisticated processing of CSV data.
    • The latest version is available from the GNU Emacs Lisp Package Archive (ELPA) at elpa.gnu.org. It is intended to be installed using the Package Manager included in GNU Emacs since version 24; see Finding Extra Packages in the GNU Emacs Help menu. I don't support or provide any other version.
    • Note that csv-mode 1.2 will not compile if an earlier version of csv-mode is loaded. Starting Emacs with the -Q flag and then installing, or compiling, csv-mode is one way to solve this problem.

Packages available here (listed alphabetically by file name)

  • dired-explore.el, dired-explore.el.gz: Provides Windows-like file exploration within a dired buffer, bound, by default, to meta-return and meta-mouse-2. A file is opened in a full window and a directory (folder) replaces the current directory. [This functionality was previously (inappropriately) at the end of dired-sort-menu; if you want to use dired-explore with dired-sort-menu then please also update dired-sort-menu. Note that the details of dired-explore are different from the version that used to be in dired-sort-menu.]
  • dired-sort-menu.el, dired-sort-menu.el.gz:
    • Adds a sort sub-menu to the dired-mode Immediate menu that supports the relevant GNU ls sort options, namely name, time modified, size, extension, unsorted, time created/changed, time accessed (not under Windows), reverse and recursive.
    • It is also available as a pop-up menu on shift-mouse-2 and a static dialogue window or frame bound to C-d, which is useful for changing several dired sort options at once.
    • Adds key bindings to toggle some options.
    • Provides a sub-menu to save and restore dired sort configurations.
    • Attempts to disable menu/dialogue options that are invalid for the ls program or ftp server being used to generate the dired buffer.
    • The dialogue does not require a GUI (whereas the menus do).
  • eol-conversion.el, eol-conversion.el.gz: Adds an end-of-line conversion sub-menu to the Edit menu.
  • font-menus.el, font-menus.el.gz: Adds sub-menus to the Edit menu to control font-lock and display all fonts.
  • latex-paren.el, latex-paren.el.gz: Highlights matching LATEX parens including \(, \[, \{ and $.
  • ls-lisp.el, ls-lisp.el.gz: [last updated 16 February 2004; see also Lars Hansen's updates]
    Enhances the standard Emacs 21 ls-lisp library as follows.
    • Fixes a bug in the handling of filenames containing wildcard characters.
    • Provides better emulation of GNU ls, in particular the various ways of displaying and sorting by time stamps (t, c, u switches) and supports the human-readable (k, M, G, T) size format (h switch).
    • Supports the -L switch to dereference symbolic links within dired (which does not work with external ls programs).
    • Adds optional bash-style brace-expansion of filenames and improves escaping by `\'.
    • Doc string for (redefined) insert-directory function includes a full list of options supported, which is referenced from the ls-lisp customization group doc string.
    • Should be a bit faster when `.' files are hidden, since they are no longer listed and then deleted.
    • Follows Cygwin GNU ls more closely on Windows.
    • Optionally hides the final .lnk extension on shorcuts that are recognised as symlinks (which needs w32-symlinks, see below).
    • Cutoffs for time/date display are customizable.
    • Uses floating point more extensively and uniformly to avoid potential integer overflow.
    • Control of group display is more rational.
    • Ignore compilation warnings about `ls-lisp-format-time'; its arguments have changed. Also, beware that loading this package on top of the preloaded version (which is unavoidable) upsets customization's view of the state of options. Also, it may no longer be entirely compatible with dired-sort-menu, which is obsolescent and will be replaced (one day).
    • Re-implements the -F switch handling to avoid breaking symlink support; with w32-symlinks it should now be compatible with Cygwin ls.
    • Provides an option to skip files whose attributes cannot be accessed (which caused me problems in C:\WINNT\ on Windows NT 4.0).
  • msdos-tex-shell.el, msdos-tex-shell.el.gz: Improves NTEmacs support for TEX shell under Windows.
  • rcs2log, rcs2log.bat (rcs2log.gz, rcs2log.bat.gz): If you have a fairly complete UNIX-like environment such as Cygwin available then putting these two files in the NTEmacs bin directory makes the Emacs command `vc-update-change-log' work. Please read rcs2log.bat for further details. (Note that for this to work the Emacs executable search path needs to be such that Emacs can find a UNIX sh command. I have offered this code to the Emacs developers and I hope the problem will be fixed in some future version. Remove the .txt extension from rcs2log.bat.txt!)
  • w32-symlinks.el, w32-symlinks.el.gz: [see also Lars Hansen's updates]
    • Provides support for Windows symbolic links, including Windows shortcut files and Cygwin shortcut and (obsolete) symlink files.
    • Works with the GNU Emacs 21 ls-lisp emulation (both the standard version and my current enhanced version, see above) and with the Cygwin GNU ls program, to allow dired to follow and create symbolic links.
    • The degree to which symlink targets are canonicalized in dired is customizable.
    • Absolute Cygwin target filenames are converted by calling the cygpath program, if possible.
    • Customization is via the w32-symlinks group, which appears in both the dired and ls-lisp groups.
    • General shortcut support (outside of dired) is preliminary and currently turned off by default. Please carefully follow the installation instructions near the top of the file if you want to turn it on.
  • wildcard-to-regexp.el, wildcard-to-regexp.el.gz: Adds optional bash-style {a,b,...} expansion. In particular, this gives users of (any version of) ls-lisp (the default in non-UNIX ports of Emacs) the functionality of running ls under bash. (The only other standard Emacs 21 package that calls wildcard-to-regexp is vhdl-mode.) It also supports escaping by \ better, but quoting is not supported. [Included in my current version of ls-lisp.]

ls-lisp and w32-symlinks updates by Lars Hansen from November 2005 are available here, although there may be later versions in the development version of Emacs.

The original 1997 zip archive of the gnuserv package is mirrored here, purely as a service to Windows users. (I have played no part in its development.) Originally by Andy Norman et al., this Windows NT/95 implementation by Nico Fran├žois (I think) uses mailslots, and under NT relies on NT's built-in security for access control.

Links to other Emacs Lisp packages