Table of Contents

1 Overview

Cell-mode implements an abstract spreadsheet control in an Emacs buffer.

2 Screenshot and videos

3 Features

  • Uses a simple file format based on Lisp property lists. Cell-mode files can be visited, saved, loaded, and so on just like any other text file. Works with Emacs' existing autosave and backup features.
  • You can cut, copy, and paste cells between sheets using typical Emacs shortcuts, as well as insert and delete rows and columns.
  • Undo/redo support.
  • Execute sexps in cells, and other user defined actions.
  • Rectangle selection via keyboard and mouse-drag are available.
  • Object-orientation through the use of Emacs' included object system, EIEIO. Cells can contain any lisp value and respond polymorphically to events.
  • Contents can be collected and processed however you want.
  • Images can be displayed in cells.

4 Purpose

The purpose of Cell-mode is to provide a major mode for abstract spreadsheets that can be further customized by defining application-specific Emacs Lisp minor modes that engage new cell and sheet subclasses via EIEIO. I have an old Cell-mode GUI for Ecasound that I am porting to the new version.

5 Status

Cell-mode was originally written in 2006 and is currently being revised. There are some bugs and it should be considered to be in an alpha state. There is currently no topological sort (i.e. data dependencies between cells) but this will be added.

6 Issues

  • Cursor does not display in image cells.
  • Needs more optimization. I recommend byte-compiling cell.el for best responsiveness.

7 Getting started

Download Cell-mode and place it in your load path. Then:

(require 'cell)
(add-to-list 'auto-mode-alist (cons "\\.cell" 'cell-mode))

And try opening a new file, for example "/home/dto/test.cell". Or use M-x cell-sheet-create.

Use "Control-H m" to get help on the keybindings.

To byte-compile and load cell-mode in one step, use:

(byte-compile-file "/path/to/cell.el" t) 

Author: David O'Toole <dto@xelf.me>

Created: 2019-12-05 Thu 07:53