Release 1.3 or later

Frank E. Ritter and Alexander B. Wood


14 -apr-14


This is an introduction for dismal (Dis' Mode Ain't Lotus), a major mode in GNU-Emacs that implements a spreadsheet (!). This introduction includes how to load, run, and use dismal and dismal spreadsheets. Dismal provides the basic spreadsheet functions. Because it is based on GNU-Emacs it offers several relatively novel features for a spreadsheet

It has some useful functions that implement the keystroke level model of Card, Moran, and Newell, (1983) These were reported at CHI:

Nichols, S., & Ritter, F. E. (1994). A theoretically motivated tool for automatically generating command aliases. Proceedings of CHI '95. 393-400.
(ritter.ist.psu.edu/dismal/Chi95.html or acs.ist.psu.edu/papers/nicholsR94.pdf).

A full summary is available as a journal article. If you use dismal, please cite the article.

Ritter, F. E., & Wood, A. B. (2005). Dismal: A spreadsheet for sequential data analysis and HCI experimentation. Behavior Research Methods, Instruments, and Computers. 37(1), 71-81.

For further information, please see the dismal-manual (may be out of date or ill-formated), files accompanying the release, or ritter.ist.psu.edu/dismal/dismal-paper.html

We have crreated a model that does some dismal tasks, and it is available.

If you would like to contribute, there remain numerous problems with dismal (noted in the todo list in dismal.el), but I use it at least weekly. I estimate that there are (or have been) 20 users outside of Nottingham and Penn State.


Dismal-mode is available through the web at acs.ist.psu.edu/dismal (choose the tar file).

Copies are no longer updated at the Elisp archives at The OSU (and may be missing now).

There is a mirror site at ftp://cs.nyu.edu/pub/local/fox/dismal that is current (4/05).

The file is named "dismal-VERSION.tar.gz" (so use binary mode by issuing the "binary" command), where version gives you the version of dismal that you are getting.

Dismal is known to run on Emacs 19 and 20 under all Unix systems we have tested it on.

Dismal works under Emacs 19 on Windows XP and Windows2000 with Emacs version 20.7.1 as well a recent version of XEmacs. (keystroke timing does not work on this operating system)

Dismal works on the Macintosh with Emacs 19 (macEmacs) and GNU Emacs 20.4 (timing does not work with these versions of Emacs on the Mac, so keystroke timing does not work either). With Xemacs 21.5, timing should work if cc or gcc is available on your machine, but dismal.el needs the following patch to work (inserted where dismal-menu3.el is loaded):

(if dismal-xemacs-p
    (progn (message "dismal-menu disabled in Xemacs...")
           (sit-for 2))
    (load "dismal-menu3.el"))

Also see RUI, if you need timing information.

To install the system

  1. Find a directory where you wish to install the package. (At the University of Nottingham we put it in ~soar/emacs/utils/dismal.) Transfer dismal.tar.gz to your desired directory, cd to that directory, and do
    gunzip dismal-VERSION.tar.gz | tar xvf -

    This can also be uncompressed in Emacs' Dired Mode by using the Z (shift-z) command. However you must return back to the C shell to untar the file by typing
    tar xvf dismal-VERSION.tar

  2. Execute "make" in the new dismal directory just created. This will compile the .el files. If GNU emacs at your site is not called "emacs", but something else (e.g., some places use "gmacs"), then compile the .el files using the alternative command "make EMACS=xxxx" where "xxxx" is the name of your emacs program. There are a lot of compiler warnings generated in 19.28. You may also have to change the compiler name in the makefile.

    If you are on an old Macintosh (e.g., Mac OS 9) or a Windows* machine, you can get dismal to load and run, albeit more slowly, by skipping to the last step, which is just loading the startup file. Alternatively, once dismal is loaded, type the comment
    C-u 0 M-x  byte-recompile-directory (and answer 'y' to each file)

    Under certain combinations, e.g., Emacs CW 20.4, if you have to compile, you will have to do this before loading and after increasing the memory size of the application.

  3. Please read the dismal.info files. They are the manual.

  4. To use dismal at your site in a uniform way across users, install dismal in the site-lisp directory. At ist@psu, where dismal is installed in /.../dce.psu.edu/fs/ist/ritter/home/emacs/site-lisp/, users can set up their Emacs to use dismal by adding the following to their ~/.emacs files:
    (load "/.../dce.psu.edu/fs/ist/ritter/home/emacs/site-lisp/dismal-mode-defaults.el")

    Change the pathname to correspond to the location of the dismal files at your site. More information about installing and using dismal are contained in the online help, available within dismal as C-h m, or in the info files themselves (dismal-manual.tex and dismal-manual.txt)

  5. Finally , you should have in your .emacs file the command
    (load "DISMALS-LOCATION/dismal-mode-defaults.el")


The main files included in the package are:




















The last group of files marked with "*" are not part of dismal proper, but dismal depends on them. It should be possible for later releases of dismal to replace them with smarter and faster code. Some of these files are, in fact, gone already.


There is an online manual available though the Info-mode help system.

C-c C-m will pop up a menu. Selecting 'Help' will bring up an extensive, mode-based help. This help is also available under a menu under X.

C-c C-m will pop up a menu. Selecting 'Doc.' will provide access to an extensive info-mode based manual.



Dismal has a mailing list, L-DISMAL-USERS mailing list (Dismal Users) maintained by Frank Ritter . To subscribe to the dismal mailing list, please send an email to Frank Ritter.

This list is used as the main discussion list and is used to discuss all aspects of dismal, including development and porting. It has no more than 10 messages / year.

Announcements about FOO and most other GNU Software are made on .

Currently, there is no newsgroup dedicated to dismal.


We sometimes call it 'dismal', lowercase, because that's how it is invoked.

Some features which are not fully implemented yet, but will eventually be, are:

Version 1.1 makes some use of defsubst and of fonts and menus

There are too many bugs or missing features to list them here. Interested users should consult the dismal.el file.

If you would like to hear about updates and other such things or to help maintain it, please let me (ritter@ist.psu.edu) know and I'll put you on the dismal users mailing list.


If you think you have found a bug in dismal, then you should send as complete a report as possible to one of the maintainers. Ideally, you should include a backtrace (turn this on by "M-: (setq debug-on-error t) ").


Dismal is currently being maintained by Frank Ritter (frank.ritter @ PSU.EDU) . Email me for help. Return to GNU's home page.