UNIX Emacs: a Retrospective Lessonsfor Flexible System Design

Total Page:16

File Type:pdf, Size:1020Kb

UNIX Emacs: a Retrospective Lessonsfor Flexible System Design UNIX Emacs: A Retrospective Lessonsfor Flexible System Design Nathaniel S. Borenstein Information Technology Center and Computer ScienceDepartment Carnegie-Mellon University JamesGosling Sun Microsystems,Inc. Abstract UNIX Emacs is well-known and widely used as a developers of future extensible systems and text editor that has been extended in a remarkable testbeds. number of directions, not always wisely. Because it is programmable in a powerful yet simple This paper is an informal reflection of many years programming language, Emacs has been used as a of experience with Emacs. One of the authors development tool for the construction of some (Gosling) is the author of UNIX Emacs and of remarkably complex user-oriented programs. many extension packages for it. The other Indeed, it has served as both a user interface (Borenstein) is the author of several of the largest management system and a user interface toolkit, UNIX Emacs applications [Z, 31. In addition to though it was designed as neither. In this paper, personal experience, this paper also reflects the we discuss the features that have made it so results of a survey, conducted over the ARPA popular for user interface development, in an Internet, of several dozen Emacs programmers. It attempt to derive lessons of value for more is unabashedly anecdotal, and the authors make powerful and more systematically designed no pretense of having conducted systematic systems in the future. studies to prove our conclusions. Rather, we are simply attempting to convey the lessons we feel I. Introduction can be learned from the Emacs experience. Designing gencralizcd tools for user interface II. What is Emacs? design and user interface management systems are now subjects of widespread interest. In order to The name “Emacs” has become a generic term, better understand what such systems should do in referring to an entire famiiy of powerful, the future, it helps to have a clear understanding extensible text editors, beginning with the original of what has come before. Although many systems ITS/Tops-20 Emacs [4]. That family has grown have been explicitly designed to serve these and matured to the point where it now includes a purposes, few have been very widely used. wide variety of programs that rcsemblc their predecessors to greater or lesser degree, as UNIX Emacs [I ] is a popular text editor with a surveyed by Stallman [5]. The present paper powerful extension facility, that has dcvcloped a discusses one of the most widely-used versions of large and extremely satisfied user community. Emacs, known commonly as “UNIX Emacs”, but The cxtcnsion facility has allowed Emacs to be also available for other operating systems, and used, not merely as a text editor, but as a general occasionally referred to as “Gosling Emacs.” In testbed for user interface design, and as a user this paper, the term “UNIX Emacs” will bc interface management system (UIMS). Of course, applied rather freely to both the early non- Emacs was designed neither as a tcstbcd nor a commercial and the more recent commercial UIMS, but simply as a text editor. That it was versions of the program. flexible enough to be extended so far aBeId offers us the opportunity to learn from its example, in The most powerful versions of Emacs arc al! both positive and negative ways. extensible in some extension language. ITS Emacs was extensible in TECO, an extremely baroque In this paper, we will briefly describe Emacs and but powerful language in which Emacs itself was its uses. We will then try to describe the most implemcntcd. Despite the clifliculty of important features of Emacs that have programming in TECO, a wide variety of contributed to its success,and also to recount the extension packages, including mail and bulletin problems that have been most frustrating to board readers, have been implcmcnted for that serious Emacs users. From this overview, we will version of Emacs. then oIIcr suggestions that may be of USCto the Permission to copy without fee all or part of this material is granted pro- vided that the copies are not made or distributed for direct commercial advantage, the ACM copyright notice and the title of the publication and its date appear, and notice is given that copying is by permission of the 95 Association for Computing Machinery. To copy otherwise, or to republish, rewires a fee and/or specific permission. @ 1988ACM 0-89791-283-7/88/0010/0095 $1.50 UNIX Emacs ofkrcd two major innovations over dircrcnt Emacs programs have been written to its prcdeccssors. First, because it was manage electronic communication (mail, bulletin implemcntcd under UNIX, it included powerful boards, UNIX nctncws, etc.). Others have process management facilities, allowing, for implcmcnted sprcadshccts, animation, database example, text to be filtered through arbitrary access, specialized program editing fcaturcs, and programs, and also allowing diKerent programs to even a BASIC interpreter. The longest Emacs be run in separate windows. Second, though program known to the authors is about 3000 lines UNIX Emacs is implemented in C, it is cxtCnsible of source code, defining approximately 150 in a LISP-like language known as mlisp or Mock scparatc functions. Clearly the user community Lisp. The decision to USCa direreni language for regards .mlisp as a programming language extension than the one used for implementation powerful enough to do a wide range of tasks was a crucial one; it appears responsible for most beyond those related to simply editing text. of the best and worst aspects of UNIX Emacs as perceived by those who have used it most 111.What is Good about UNIX Emacs and mlisp? extcnsivcly. A discussion of the virtues and flaws of mlisp will comprise the bulk of this paper. A Why have so many application progra.ms, few brief examples, however, will scrvc to particularly user-oriented ones, been written in introduce the unfamiliar reader to the flavor of UNIX Emacs, using mlisp, when so many other the language. languages are available to the UNIX programmer? In an attempt to answer this The statement question, we distributed a questionnaire to Ema& programmers via the “UNIX-EMACS” mailing (defun (change-presidents list on the ARPA Internet and the UNIX Usenct. (replace-string “Reagan” We asked only a dozen questions, niostly open- “Mondale” ) ) ) ended ones like “If you were designing an editor extension language, what might you do that is totally dilferent from mlisp? What would you defines a new function, “change-presidents” that most particularly want to keep the same?’ will, when called, replace any occurrence of the Questions like these yield very interesting and word “Reagan” appearing after the cursor illuminating answers that are, unfortunately, position in the current document into the word extremely difficult to tabulate meaningfully. The “Mondale”. For a more complex example, the summary below represents the aggregate of the’ next program will also make sure that the new responses in the survey, with no pretense of word “Mondale” is alone and indented on a line. completeness or of meaningful quantitative data. Comments begin with semi-colons and are italicized here. Extensibility (defun The one point on which nearly everyone seems to (change-and-indent-presidents agree is that the best thing about UNIX Emacs is (save-excursion; Save that mlisp exists. No one even suggested that context &restorewhendone Emacs would be better without the powerful (while facility for extension and customization, although ( ! (error-occurred ; Keep it is clear that such facilities, if abused, can create loopinguntilerror an environment that changes so radically from (search-forward day to day as to be unusable for most people. “Reagan”) Donner and Notkin [6] discuss extension ,(delete-previous-word) mechanisms in general and oIT’er several (delete-white-space) ; convincing arguments for their desirability; the Delete surrounding spaces experience of Emacs users suggests that this (if (! (bolp)) desirability should- bc taken as a given. The (newline)) integration of powerful editing facilities with a ; Insertnewlineifnotat full-fledged programming language seems beginning unquestionably useful, though it remains a matter (if (! (eolp)) of some debate whether this combination is best (newline-and-backup)) achicvcd by an cxtcnsion language for a text ; Similar for end of line editor or by implementing the text editor as a (insert-string ” subroutine library in an existing programming Mondale”))l)))l language. Our experience suggests, in fact, that such a dcbatc is unresolvable, because such Mlisp is used for programs ranging from simple mechanisms serve rather difkrcnt purposes, and but repetitive editing tasks to elaborate user arc hot/t highly desirable. interface or even database systems. Dozens of 96 Simplicity of string length and storage management, and fast primitives are provided for taking portions of Nearly equally unanimous is the pcrccption that strings. OF course, one can argue that strings mlisp is a very simple and clcgant language, wcll- should be taken for granted as a basic data type suited to its intended application domain (editing in any reasonable programming language, but the text). Our survey rcvealcd that mlisp is gcncrally notion is still rather radical in the UNIX/C pcrceivcd to be an unusually easy language to community. learn and to use, perhaps partly bccausc it omitted complex features crucial to system For more complex operations, Emacs provides programming. The simplicity of mlisp will be a text “buITers” in which text can be inserted and recurring theme in discussions of both its virtues then manipulated with the full complement of and failings in the sections that follow. Emacs commands, including regular expression searching which can be used to implement A significant part of mlisp’s simplicity stems from complex parsing quite painlessly -- that is, without the implicit context available to a host of mlisp attention to the details of breaking words into commands.
Recommended publications
  • Practical Semantic Web and Linked Data Applications
    Practical Semantic Web and Linked Data Applications Common Lisp Edition Uses the Free Editions of Franz Common Lisp and AllegroGraph Mark Watson Copyright 2010 Mark Watson. All rights reserved. This work is licensed under a Creative Commons Attribution-Noncommercial-No Derivative Works Version 3.0 United States License. November 3, 2010 Contents Preface xi 1. Getting started . xi 2. Portable Common Lisp Code Book Examples . xii 3. Using the Common Lisp ASDF Package Manager . xii 4. Information on the Companion Edition to this Book that Covers Java and JVM Languages . xiii 5. AllegroGraph . xiii 6. Software License for Example Code in this Book . xiv 1. Introduction 1 1.1. Who is this Book Written For? . 1 1.2. Why a PDF Copy of this Book is Available Free on the Web . 3 1.3. Book Software . 3 1.4. Why Graph Data Representations are Better than the Relational Database Model for Dealing with Rapidly Changing Data Requirements . 4 1.5. What if You Use Other Programming Languages Other Than Lisp? . 4 2. AllegroGraph Embedded Lisp Quick Start 7 2.1. Starting AllegroGraph . 7 2.2. Working with RDF Data Stores . 8 2.2.1. Creating Repositories . 9 2.2.2. AllegroGraph Lisp Reader Support for RDF . 10 2.2.3. Adding Triples . 10 2.2.4. Fetching Triples by ID . 11 2.2.5. Printing Triples . 11 2.2.6. Using Cursors to Iterate Through Query Results . 13 2.2.7. Saving Triple Stores to Disk as XML, N-Triples, and N3 . 14 2.3. AllegroGraph’s Extensions to RDF .
    [Show full text]
  • The Evolution of Lisp
    1 The Evolution of Lisp Guy L. Steele Jr. Richard P. Gabriel Thinking Machines Corporation Lucid, Inc. 245 First Street 707 Laurel Street Cambridge, Massachusetts 02142 Menlo Park, California 94025 Phone: (617) 234-2860 Phone: (415) 329-8400 FAX: (617) 243-4444 FAX: (415) 329-8480 E-mail: [email protected] E-mail: [email protected] Abstract Lisp is the world’s greatest programming language—or so its proponents think. The structure of Lisp makes it easy to extend the language or even to implement entirely new dialects without starting from scratch. Overall, the evolution of Lisp has been guided more by institutional rivalry, one-upsmanship, and the glee born of technical cleverness that is characteristic of the “hacker culture” than by sober assessments of technical requirements. Nevertheless this process has eventually produced both an industrial- strength programming language, messy but powerful, and a technically pure dialect, small but powerful, that is suitable for use by programming-language theoreticians. We pick up where McCarthy’s paper in the first HOPL conference left off. We trace the development chronologically from the era of the PDP-6, through the heyday of Interlisp and MacLisp, past the ascension and decline of special purpose Lisp machines, to the present era of standardization activities. We then examine the technical evolution of a few representative language features, including both some notable successes and some notable failures, that illuminate design issues that distinguish Lisp from other programming languages. We also discuss the use of Lisp as a laboratory for designing other programming languages. We conclude with some reflections on the forces that have driven the evolution of Lisp.
    [Show full text]
  • The MH-E Manual Version 8.5 March, 2013
    The MH-E Manual Version 8.5 March, 2013 Bill Wohler This is version 8.5 of The MH-E Manual, last updated 2013-03-02. Copyright c 1995, 2001{2003, 2005{2013 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of either: a. the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with the Front-Cover texts being \A GNU Manual," and with the Back- Cover Texts as in (a) below. A copy of the license is included in the section entitled \GNU Free Documentation License." (a) The FSF's Back-Cover Text is: \You have the freedom to copy and modify this GNU manual." b. the GNU General Public License as published by the Free Software Foun- dation; either version 3, or (at your option) any later version. A copy of the license is included in the section entitled \GNU General Public License." i Table of Contents Preface :::::::::::::::::::::::::::::::::::::::::::::: 1 1 GNU Emacs Terms and Conventions ::::::::: 2 2 Getting Started ::::::::::::::::::::::::::::::::: 4 3 Tour Through MH-E ::::::::::::::::::::::::::: 6 3.1 Sending Mail ::::::::::::::::::::::::::::::::::::::::::::::::::: 6 3.2 Receiving Mail ::::::::::::::::::::::::::::::::::::::::::::::::: 7 3.3 Processing Mail :::::::::::::::::::::::::::::::::::::::::::::::: 7 3.4 Leaving MH-E ::::::::::::::::::::::::::::::::::::::::::::::::: 9 3.5 More About MH-E ::::::::::::::::::::::::::::::::::::::::::::: 9 4 Using This Manual ::::::::::::::::::::::::::::
    [Show full text]
  • 1960 1970 1980 1990 Japan California………………… UT IL in PA NJ NY Massachusetts………… Europe Lisp 1.5 TX
    Japan UT IL PA NY Massachusetts………… Europe California………………… TX IN NJ Lisp 1.5 1960 1970 1980 1990 Direct Relationships Lisp 1.5 LISP Family Graph Lisp 1.5 LISP 1.5 Family Lisp 1.5 Basic PDP-1 LISP M-460 LISP 7090 LISP 1.5 BBN PDP-1 LISP 7094 LISP 1.5 Stanford PDP-1 LISP SDS-940 LISP Q-32 LISP PDP-6 LISP LISP 2 MLISP MIT PDP-1 LISP Stanford LISP 1.6 Cambridge LISP Standard LISP UCI-LISP MacLisp Family PDP-6 LISP MacLisp Multics MacLisp CMU SAIL MacLisp MacLisp VLISP Franz Lisp Machine Lisp LISP S-1 Lisp NIL Spice Lisp Zetalisp IBM Lisp Family 7090 LISP 1.5 Lisp360 Lisp370 Interlisp Illinois SAIL MacLisp VM LISP Interlisp Family SDS-940 LISP BBN-LISP Interlisp 370 Spaghetti stacks Interlisp LOOPS Common LOOPS Lisp Machines Spice Lisp Machine Lisp Interlisp Lisp (MIT CONS) (Xerox (BBN Jericho) (PERQ) (MIT CADR) Alto, Dorado, (LMI Lambda) Dolphin, Dandelion) Lisp Zetalisp TAO (3600) (ELIS) Machine Lisp (TI Explorer) Common Lisp Family APL APL\360 ECL Interlisp ARPA S-1 Lisp Scheme Meeting Spice at SRI, Lisp April 1991 PSL KCL NIL CLTL1 Zetalisp X3J13 CLTL2 CLOS ISLISP X3J13 Scheme Extended Family COMIT Algol 60 SNOBOL METEOR CONVERT Simula 67 Planner LOGO DAISY, Muddle Scheme 311, Microplanner Scheme 84 Conniver PLASMA (actors) Scheme Revised Scheme T 2 CLTL1 Revised Scheme Revised2 Scheme 3 CScheme Revised Scheme MacScheme PC Scheme Chez Scheme IEEE Revised4 Scheme Scheme Object-Oriented Influence Simula 67 Smalltalk-71 LOGO Smalltalk-72 CLU PLASMA (actors) Flavors Common Objects LOOPS ObjectLisp CommonLOOPS EuLisp New Flavors CLTL2 CLOS Dylan X3J13 ISLISP Lambda Calculus Church, 1941 λ Influence Lisp 1.5 Landin (SECD, ISWIM) Evans (PAL) Reynolds (Definitional Interpreters) Lisp370 Scheme HOPE ML Standard ML Standard ML of New Jersey Haskell FORTRAN Influence FORTRAN FLPL Lisp 1.5 S-1 Lisp Lisp Machine Lisp CLTL1 Revised3 Zetalisp Scheme X3J13 CLTL2 IEEE Scheme X3J13 John McCarthy Lisp 1.5 Danny Bobrow Richard Gabriel Guy Steele Dave Moon Jon L White.
    [Show full text]
  • Lisp: Program Is Data
    LISP: PROGRAM IS DATA A HISTORICAL PERSPECTIVE ON MACLISP Jon L White Laboratory for Computer Science, M.I.T.* ABSTRACT For over 10 years, MACLISP has supported a variety of projects at M.I.T.'s Artificial Intelligence Laboratory, and the Laboratory for Computer Science (formerly Project MAC). During this time, there has been a continuing development of the MACLISP system, spurred in great measure by the needs of MACSYMAdevelopment. Herein are reported, in amosiac, historical style, the major features of the system. For each feature discussed, an attempt will be made to mention the year of initial development, andthe names of persons or projectsprimarily responsible for requiring, needing, or suggestingsuch features. INTRODUCTION In 1964,Greenblatt and others participated in thecheck-out phase of DigitalEquipment Corporation's new computer, the PDP-6. This machine had a number of innovative features that were thought to be ideal for the development of a list processing system, and thus it was very appropriate that thefirst working program actually run on thePDP-6 was anancestor of thecurrent MACLISP. This earlyLISP was patterned after the existing PDP-1 LISP (see reference l), and was produced by using the text editor and a mini-assembler on the PDP-1. That first PDP-6 finally found its way into M.I.T.'s ProjectMAC for use by theArtificial lntelligence group (the A.1. grouplater became the M.I.T. Artificial Intelligence Laboratory, and Project MAC became the Laboratory for Computer Science). By 1968, the PDP-6 wasrunning the Incompatible Time-sharing system, and was soon supplanted by the PDP-IO.Today, the KL-I 0, anadvanced version of thePDP-10, supports a variety of time sharing systems, most of which are capable of running a MACLISP.
    [Show full text]
  • CONS Y X)))) Which Sets Z to Cdr[X] If Cdr[X] Is Not NIL (Without Recomputing the Value As Woirld Be Necessary in LISP 1.5
    NO. 1 This first (long delayed) LISP Bulletin contains samples of most of those types of items which the editor feels are relevant to this publication. These include announcements of new (i.e. not previously announced here) implementations of LISP !or closely re- lated) systems; quick tricks in LISP; abstracts o. LISP related papers; short writeups and listings of useful programs; and longer articles on problems of general interest to the entire LISP com- munity. Printing- of these last articles in the Bulletin does not interfere with later publications in formal journals or books. Short write-ups of new features added to LISP are of interest, preferably upward compatible with LISP 1.5, especially if they are illustrated by programming examples. -A NEW LISP FEATURE Bobrow, Daniel G., Bolt Beranek and Newman Inc., 50 oulton Street, Cambridge, Massachusetts 02138. An extension of ro 2, called progn is very useful. Tht ralue of progn[el;e ; ,..;e Y- is the value of e . In BBN-LISP on t .e SDS 940 we ha6e extenaed -cond to include $n implicit progn in each clause, putting It In the general form (COND (ell e ) . (e21 . e 2n2) (ekl e )) In1 ... ... kn,_ where nl -> 1. This form is identical to the LISP 1.5 form if n ni = 2. If n > 2 then each expression e in a clause is evaluated (in order) whh e is the first true (nohkN1~)predicate found. The value of the &And Is the value of the last clause evaluated. This is directly Gapolated to the case where n, = 1, bxre the value of the cond is the value of this first non-~ILprewcate.
    [Show full text]
  • Learn Emacs Through Org-Mode
    About Emacs Configuration & Basics The org-mode Further Topics Learn Emacs through org-mode Linyxus1 Dec 2018 [email protected] Linyxus Learn Emacs through org-mode About Emacs Configuration & Basics The org-mode Further Topics Outline About Emacs Configuration & Basics The org-mode Further Topics Linyxus Learn Emacs through org-mode About Emacs Configuration & Basics The org-mode Further Topics Learning curve Emacs may be best known for its learning curve: Linyxus Learn Emacs through org-mode About Emacs Configuration & Basics The org-mode Further Topics History2 A brief list: I 1970s, in Artificial Intelligence Laboratory at MIT, TECO I 1976, by Stallman, the first Emacs("Editor MACroS") I 1978, by Bernard Greenberg, MulticsEmacs, introducing MacLisp I 1981, the first Emacs to run on Linux, Gosling Emacs I 1984, by Stallman, GNU Emacs 2according to EmacsWiki Linyxus Learn Emacs through org-mode About Emacs Configuration & Basics The org-mode Further Topics What a excellent editor is like I Highly extensible (Emacs can do everthing!) I FLexible (freely define your own key bindings) I Portable (bring your Emacs everywhere) I Compatible (GUI && Terminal) I Macros Linyxus Learn Emacs through org-mode About Emacs Configuration & Basics The org-mode Further Topics Emacs deserves your efforts I It will never be out of date. I Be used in a wide range. I Programming I Documenting I Mailing I IRC I Playing games I ... I It’s really powerful. Linyxus Learn Emacs through org-mode About Emacs Configuration & Basics The org-mode Further Topics Aim of this lecture Find your passion The best way to learn Emacs is to use it.
    [Show full text]
  • Free As in Freedom (2.0): Richard Stallman and the Free Software Revolution
    Free as in Freedom (2.0): Richard Stallman and the Free Software Revolution Sam Williams Second edition revisions by Richard M. Stallman i This is Free as in Freedom 2.0: Richard Stallman and the Free Soft- ware Revolution, a revision of Free as in Freedom: Richard Stallman's Crusade for Free Software. Copyright c 2002, 2010 Sam Williams Copyright c 2010 Richard M. Stallman Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License." Published by the Free Software Foundation 51 Franklin St., Fifth Floor Boston, MA 02110-1335 USA ISBN: 9780983159216 The cover photograph of Richard Stallman is by Peter Hinely. The PDP-10 photograph in Chapter 7 is by Rodney Brooks. The photo- graph of St. IGNUcius in Chapter 8 is by Stian Eikeland. Contents Foreword by Richard M. Stallmanv Preface by Sam Williams vii 1 For Want of a Printer1 2 2001: A Hacker's Odyssey 13 3 A Portrait of the Hacker as a Young Man 25 4 Impeach God 37 5 Puddle of Freedom 59 6 The Emacs Commune 77 7 A Stark Moral Choice 89 8 St. Ignucius 109 9 The GNU General Public License 123 10 GNU/Linux 145 iii iv CONTENTS 11 Open Source 159 12 A Brief Journey through Hacker Hell 175 13 Continuing the Fight 181 Epilogue from Sam Williams: Crushing Loneliness 193 Appendix A { Hack, Hackers, and Hacking 209 Appendix B { GNU Free Documentation License 217 Foreword by Richard M.
    [Show full text]
  • Lisp and Prolog Background
    Lisp and Prolog Background Thank you to Prof. Roosen-Runge for the slides on background and history. Edited by Gunnar Gotshalks BH2-1 Lisp History •Lisp--invented (about 1958) by the logician and AI researcher John McCarthy •Widely used in for applications in AI every since •Used in industry » To develop expert systems & other AI applications » For Rapid Application Development (RAD) Edited by Gunnar Gotshalks BH2-2 Lisp Use •Lisp is used as an embedded language •Found inside applications like Emacs (MLisp) and AutoCAD (AutoLisp). » Emacs supports Lisp as a language for developing programs » As well as embedded language for controlling and customizing the editor itself Edited by Gunnar Gotshalks BH2-3 Lisp availability •On all major and many minor platforms. •Numerous free- and shareware versions. • Standard: Common Lisp Edited by Gunnar Gotshalks BH2-4 Prolog history •Prolog invented (≈1972) » Used at York in the by the AI researcher Student Information Alan Colmeraurer System to check applications for input errors •Widely used to develop » Early ideas developed expert systems & other at University of AI applications including Montreal; then natural language University of Marseilles processing Edited by Gunnar Gotshalks BH2-5 Prolog Use & Availability •Prolog rumored to be embedded in MS Office •On all major and many minor platforms •Several free and shareware versions •Standard: ‘Edinburgh-style’ Edited by Gunnar Gotshalks BH2-6 Survival Value McCarthy's Lisp versus Newell's IPL (Information Processing Language) » Both proposed » Both men pioneers languages at about the in AI and computer same time for symbolic science computing to be used in AI research Edited by Gunnar Gotshalks BH2-7 And the winner is ? McCarthy? Newell? Why? Edited by Gunnar Gotshalks BH2-8 & the winner is ..
    [Show full text]
  • Learning GNU Emacs Other Resources from O’Reilly
    Learning GNU Emacs Other Resources from O’Reilly Related titles Unix in a Nutshell sed and awk Learning the vi Editor Essential CVS GNU Emacs Pocket Reference Version Control with Subversion oreilly.com oreilly.com is more than a complete catalog of O’Reilly books. You’ll also find links to news, events, articles, weblogs, sample chapters, and code examples. oreillynet.com is the essential portal for developers interested in open and emerging technologies, including new platforms, pro- gramming languages, and operating systems. Conferences O’Reilly brings diverse innovators together to nurture the ideas that spark revolutionary industries. We specialize in document- ing the latest tools and systems, translating the innovator’s knowledge into useful skills for those in the trenches. Visit con- ferences.oreilly.com for our upcoming events. Safari Bookshelf (safari.oreilly.com) is the premier online refer- ence library for programmers and IT professionals. Conduct searches across more than 1,000 books. Subscribers can zero in on answers to time-critical questions in a matter of seconds. Read the books on your Bookshelf from cover to cover or sim- ply flip to the page you need. Try it today with a free trial. THIRD EDITION Learning GNU Emacs Debra Cameron, James Elliott, Marc Loy, Eric Raymond, and Bill Rosenblatt Beijing • Cambridge • Farnham • Köln • Paris • Sebastopol • Taipei • Tokyo Learning GNU Emacs, Third Edition by Debra Cameron, James Elliott, Marc Loy, Eric Raymond, and Bill Rosenblatt Copyright © 2005 O’Reilly Media, Inc. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472.
    [Show full text]
  • Xemacs User's Manual
    XEmacs User's Manual July 1994 (General Public License upgraded, January 1991) Richard Stallman Lucid, Inc. and Ben Wing Copyright c 1985, 1986, 1988 Richard M. Stallman. Copyright c 1991, 1992, 1993, 1994 Lucid, Inc. Copyright c 1993, 1994 Sun Microsystems, Inc. Copyright c 1995 Amdahl Corporation. Permission is granted to make and distribute verbatim copies of this manual provided the copy- right notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the con- ditions for verbatim copying, provided also that the sections entitled \The GNU Manifesto", \Distribution" and \GNU General Public License" are included exactly as in the original, and provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that the sections entitled \The GNU Manifesto", \Distribution" and \GNU General Public License" may be included in a translation approved by the author instead of in the original English. i Short Contents Preface ............................................ 1 GNU GENERAL PUBLIC LICENSE ....................... 3 Distribution ......................................... 9 Introduction ........................................ 11 1 The XEmacs Frame ............................... 13 2 Keystrokes, Key Sequences, and Key Bindings ............. 17
    [Show full text]
  • ' MACSYMA Users' Conference
    ' MACSYMA Users'Conference Held at University of California Berkeley, California July 27-29, 1977 I TECH LIBRARY KAFB, NY NASA CP-2012 Proceedings of the 1977 MACSYMA Users’ Conference Sponsored by Massachusetts Institute of Technology, University of California at Berkeley, NASA Langley Research Center and held at Berkeley, California July 27-29, 1977 Scientific and TechnicalInformation Office 1977 NATIONALAERONAUTICS AND SPACE ADMINISTRATION NA5A Washington, D.C. FOREWORD The technical programof the 1977 MACSPMA Users' Conference, held at Berkeley,California, from July 27 to July 29, 1977, consisted of the 45 contributedpapers reported in.this publicationand of a workshop.The work- shop was designed to promote an exchange of information between implementers and users of the MACSYMA computersystem and to help guide future developments. I The response to the call for papers has well exceeded the early estimates of the conference organizers; and the high quality and broad ra.ngeof topics of thepapers submitted has been most satisfying. A bibliography of papers concerned with the MACSYMA system is included at the endof this publication. We would like to thank the members of the programcommittee, the many referees, and the secretarial and technical staffs at the University of California at Berkeley and at the Laboratory for Computer Science, Massachusetts Instituteof Technology, for shepherding the many papersthrough the submission- to-publicationprocess. We are especiallyappreciative of theburden. carried by .V. Ellen Lewis of M. I. T. for serving as expert in document preparation from computer-readableto camera-ready copy for several papers. This conference originated as the result of an organizing session called by Joel Moses of M.I.T.
    [Show full text]