ned - Text Editor of the Future

Author: Nikolai Weibull
Date: 2003-12-10
Revision: 1.6

Table of Contents

Introduction

Welcome to the home of the ned text editor. ned is the masters' thesis project that I, Nikolai Weibull, am currently (fall 2003) working on. We are going to try to create a new regular expression syntax, and try adopting regular relations to the world of text editors.

Documentation

While there is no documentation for ned itself, you can find a lot of reference material I have gathered for this project below. All local copies have been placed here without explicit permission by the respective copyright holders. It is my hope that none will have any complaints about my actions, as they are solely for the benefit of mankind. Together they form a vast library of information on that that is text editors and editing of text. I greatly thank everyone who has contributed to this area of computer science.

Text Editors

This section contains reference material relating to specific editor implementations.

Richard M. Stallman, "EMACS: The Extensible, Customizable Display Editor", Proceedings of the ACM SIGPLAN/SIGOA Symposium on Text Manipulation Notices, 16, 147-156 (1981) [local] [external]
This is a paper written by RMS on EMACS history and ideas behind it.
Jamie Zawinski, "Emacs Timeline" (1999) [local] [external]
Describes the EMACS timeline, as gathered by one of the Lemacs/XEmacs authors.
Jamie Zawinski, "The Lemacs/FSFmacs Schism" (2000) [local] [external]
Discussion on why EMACS was split into Gnu EMACS and Lemacs/XEmacs, by one of the original Lemacs authors.
Richard M. Stallman, "The EMACS Full-Screen Editor" (1987) [local] [external]
Short coverage of the EMACS editor by RMS.
Bernard S. Greenberg, "Multics Emacs: The History, Design and Implementation" (1996) [local] [external]
Describes the EMACS written for Multics. Some interesting stuff in general, but nothing too exiting.
Mark Crispin, "Re: Emacs" (1990) [local] [external]
Describes the origins of EMACS; very short and incomplete.
Jim Joyce, "Interview with Bill Joy", Unix Review August (1984) [external]
An interview with Bill Joy, creator of Vi and a bunch of other stuff for UNIX REVIEW.
Ashlee Vance, "Bill Joy's Greatest Gift to Man - the Vi Editor" (2003) [external]
An extract from a longer article in Linux Magazine, gathered by The Register.
Rob Pike, "The Tex Editor sam", Software—Practice and Experience, 17, (11), 813-845 (1984) [local] [external]
An excellent article describing the sam text editor. External and internal design decissions are discussed. Thoughts behind the extremely interesting command language are also covered. A very good read.
Rob Pike, "Acme: A User Interface for Programmers" (1994) [local] [external]
Acme is a somewhat interesting take on what an editor should be. It's most well known implementation is Wily. It's over-use of the mouse, though, prevents it from being as useful as some might hope.
Dennis M. Ritchie, "An Incomplete History of the QED Text Editor" [local] [external]
As described in their paper below, "QED Text Editor", this covers the history of the editor. Rather short, it at least gives pointers to other editors that have spawned from this, "the first real editor".
Dennis M. Ritchie, Ken L. Thompson, "QED Text Editor", Bell Labs Technical Memorandum MM-70-137-3 (1970) and MM-70-1371-2 (1970) [local] [external]
QED is the editors that later led to ed and vi and more, and was one of the first applications that used regular expressions. This is the manual for it, reproduced from an internal technical memo.
Dennis M. Ritchie, "QED Implementation" [local] [external]
This paper, which was never published, covers the DMR's implementation of the QED editor. It's sadly incomplete, lacking all interesting figures, but is still somewhat interesting, discussing thoughts on regular expressions and text editors in general.
Jim Rump, "Vi vs EMACS ans C-editing" (1992) [local]
Not all that interesting, this is a pro-emacs vi-vs-emacs discussion.
Paolo Bucci, "Conceptual Program Editors" [local] [external]
Short paper on a fictional editor that works with concepts. Really weird and probably rather uninteresting for real-life work.
Christopher W. Fraser, "A Generalized Text Editor", Communications of the ACM, 23, 3, 154-158 (1980) [external]
A moded editor is described, that limits editing abilities depending on the current environment of editing. Not really very interesting.
Clemens A. Szyperski, "Write-ing Applications: Design of an Extensible Text Editor as an Application Framework" (1992) [local] [external]
Describes an editor, called Write for some long forgotten system, that supposedly makes it easy to write plug-ins to the editor.

Editor Technology

Craig A. Finseth, "The Craft of Text Editing" (1999) [local] [external]
A HOWTO book on writing text editors. Quite nice, but could have been more extensive in examples and technology discussions.
Charles Crowley, "Data Structures for Text Sequences" (1998) [local] [external]
A great paper on the possible buffer strategies to use in text editors.
Ray Valdes, "Text Editors: Algorithms and Architectures, not much Theory, but a lot of Practice", Dr. Dobb's Journal, 38-43 (April 1993)
Discusses algorithms for text editors.
Joseph H. Allen, "Editor 101" (1991) [local] [external]
A short USENET posting on writing text editors, specifically on buffer gaps.
Stephen Trier, "Editors 102: Updating the screen in a buffer-gap editor" (1991) [local] [external]
A follow-up to the Editor 101 USENET posting describing screen update algorithms for buffer gap editors.
Joseph H. Allen, "editech.1.Z (a.k.a Editor 101)" (1991) [local] [external]
This is a somewhat slimmed down version of the Editor 101 paper, known as editech.1.Z.
Stephen Trier, "editech.2.Z (a.k.a Editors 102...)" (1991) [local] [external]
This is a somewhat slimmed down version of the Editors 102... paper.
Joseph H. Allen, "editech.3.Z (Re: Simple editor question (I think))" [local] [external]
Further discussion of buffer gap and a possible C interface to it.
Aaron Sloman, "editech.4.Z (How it's done in VED)" [local] [external]
Discusses how the VED editor does text buffers (linked-list).
Ed Howland, "editech.5.Z (Questions about buffer gap (not in FAQ))" (1992) [local] [external]
A thread on buffer.gap, posted to comp.editors around '92.
Micky J. "editech.books.Z (SUMMARY: Information on writing text editors)" (1993) [local] [external]
Books to read if you want to write a text editor (or so they claim).
Jonathan Payne, "Re: GNU Emacs, memory usage, releasing" (1990) [local] [external]
USENET posting discussing buffer gap.

Editing Text

This section contains articles on how editing text can be done effectively using various different methods.

Bram Moolenaar, "Seven habits of effective text editing" [local] [external]
Bram Moolenar, author of Vim, discusses how to edit text effectively using your editor.
Toshiyuki MASUI, Ken NAKAYAMA, "Repeat and Predict — Two Keys to Efficient Text Editing", Proceedings of the ACM Conference on Human Factors in Compucing Systems, 118-123 (1994) [local] [external]
An interesting discussion on two valuable editing features, namely one that allows you to repeat one of the previously executed commands, and one that predicts what you want to type/repeat.

Regular Expressions

Ken Thompson, "Regular Expression Search Algorithm", Communications of the ACM, 11, (6), 419-422 (1968) [external]
The article referenced in every other article on regular expressions.
Rob Pike, "Structural Regular Expressions", EUUG Spring 1987 Conference Proceedings, Helsinki, 21-28 (1987) [local]
An excellent paper on regular expressions and their usefulness to describe structure in text. A must-read, it's as simple as that.
Jeffrey E. F. Friedl, "Mastering Regular Expressions", O'Reilly 0-596-00289-0 (2002) [external]
A great book, mostly on practical issues concerning regexes. There is also a discussion on how regular expressions work and about different implementations.
Larry Wall, "Apocalypse 5" (2002) [external]
As usual, a very insightful paper on the future of regular expressions by Perl's Larry Wall.
Damian Conway, "Exegesis 5" (2002) [external]
A coverage on what Larry Wall's ideas will do to Perl6.
Allison Randal, Damian Conway, "Synopsis 5" (2002) [external]
A synopsis (believe it or not) of what will change for regular expressions in Perl6.
Charles L. A., Gordon V. Cormack, "On the use of Regular Expressions for Searching Text", University of Waterloo, CA Technical Report CS-95-07 (1995) [local] [external]
Discusses applications of shortest-match regex matching.
Lauri Karttunen, J-P. Chanod, G. Grefenstette, A. Schiller, "Regular Expressions for Language Engineering", Natural Language Engineering, 2, 4, 1-24 (1996) [external]
Describes XEROX's regular relation language and some of its areas of application.
Lauri Karttunen, "The Replace Operator", Meeting of the Association of Computational Linguistics (1995) [external]
Describes the operator used for context sensitive replacements in regular relations.
Ian Bull, Andrew Trevors, Andrew J. Malton, Michael W. Godfrey, "Semantic Grep: Regular Expressions + Relational Abstraction" [local] [external]
Describes a grep utility that allows for certain relational queries combined with regular regular expression searches (hihi).
Olin Shivers, "The SRE regular-expression notation" (1998) [external]
Scheme regular expressions for use in the Scheme Shell.
Mark-Jason Dominus, "How Regexes Work", The Perl Journal (1998) [external]
A light-hearted discussion on how to do interpret regular expressions with NFA's by yourself. Also covers some of Perl's regular expressions and its engine.