[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: About the history of Emacs
From: |
Pascal J. Bourguignon |
Subject: |
Re: About the history of Emacs |
Date: |
Fri, 14 Dec 2012 07:58:44 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.2 (gnu/linux) |
Xue Fuqiao <xfq.free@gmail.com> writes:
> I have 2 questions about the history of Emacs:
>
> 1. What does `Emacs' stand for?
> In these pages:
> http://www.finseth.com/emacs.html
> http://www.gnu.org/software/emacs/emacs-faq.html#Origin-of-the-term-Emacs
> http://www.multicians.org/mepap.html#secii
> http://www.codeartnow.com/hacker-art-1/macsimizing-teco
> Emacs stands for `Editor MACroS', but in these pages:
> http://www.emacswiki.org/emacs/EmacsHistory
> http://www.lysator.liu.se/history/garb/txt/87-1-emacs.txt
> Emacs stands for `Editing MACroS'.
Both.
They are macros written for an editor (editor macros), and they are used
in general to edit text (editing macros).
Notice however that emacs is a generic term.
Here is an emacs macro (TECO emacs):
http://pdp-10.trailing-edge.com/mit_emacs_170_teco_1220/index.html
!& Abstract Macro:! !S Abstract a single macro.
Inserts the full name of the specified macro,
and all of its documentation, and then a blank line.
Give the macro name string pointer as a numeric argument.!
M(M.M&_MACRO_NAME)[0 !* Get full name of macro in q0!
g0 .i 15.i 12.i !* Put it, and CRLF, in buffer.!
.[1 g(m.m~DOC~_0) !* Insert its documentation on the buffer.!
0@f"n i !* Put in a CRLF at end if there is none.!
'
fsz-.f[vz
q1j s_ q1,.k !* Flush the macro class.!
< 9i l .-z;> !* Insert a tab before each line of doc.!
q1j < :s; -d> !* Delete all the ^\'s from the doc
strings.!
zj f]vz
Here is another emacs macro (GNU emacs):
(defun insert-string (&rest args)
"Mocklisp-compatibility insert function.
Like the function `insert' except that any argument that is a number
is converted into a string by expressing it in decimal."
(dolist (el args)
(insert (if (integerp el) (number-to-string el) el))))
Here is another emacs macro (Hemlock):
(defcommand "Auto Fill Linefeed" (p)
"Does an immediate CRLF inserting Fill Prefix if it exists."
"Does an immediate CRLF inserting Fill Prefix if it exists."
(let ((point (current-point)))
(check-fill-prefix (value fill-prefix) (value fill-column) point)
(%auto-fill-space point nil)
;; The remainder of this function should go away when
;; transparent key bindings are per binding instead of
;; per mode.
(multiple-value-bind (command t-bindings)
(get-command #k"Linefeed" :current)
(declare (ignore command)) ;command is this one, so don't invoke it
(dolist (c t-bindings) (invoke-command c p)))
(indent-new-line-command nil)))
> 2. About the first Emacs.
> In these pages:
> http://www.gnu.org/press/2001-10-22-Emacs.html
> http://shop.fsf.org/product/gnu-emacs-manual-16th-edition/
> The first Emacs was written by RMS in 1975, but in these pages:
> http://www.emacswiki.org/emacs/EmacsHistory
> http://www.gnu.org/software/emacs/emacs-faq.html#Origin-of-the-term-Emacs
> http://www.jwz.org/doc/emacs-timeline.html
> The first Emacs was written in 1976.
>
> Does somebody know the `real' history?
RMS. You can take what's written by RMS as authoritative.
See the link above.
--
__Pascal Bourguignon__ http://www.informatimago.com/
A bad day in () is better than a good day in {}.