* About the history of Emacs
@ 2012-12-14 4:34 Xue Fuqiao
0 siblings, 0 replies; 3+ messages in thread
From: Xue Fuqiao @ 2012-12-14 4:34 UTC (permalink / raw)
To: help-gnu-emacs
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'.
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?
--
Best regards, Xue Fuqiao.
http://www.emacswiki.org/emacs/XueFuqiao
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: About the history of Emacs
[not found] <mailman.15302.1355460768.855.help-gnu-emacs@gnu.org>
@ 2012-12-14 6:58 ` Pascal J. Bourguignon
2012-12-14 23:49 ` WJ
0 siblings, 1 reply; 3+ messages in thread
From: Pascal J. Bourguignon @ 2012-12-14 6:58 UTC (permalink / raw)
To: help-gnu-emacs
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 {}.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: About the history of Emacs
2012-12-14 6:58 ` Pascal J. Bourguignon
@ 2012-12-14 23:49 ` WJ
0 siblings, 0 replies; 3+ messages in thread
From: WJ @ 2012-12-14 23:49 UTC (permalink / raw)
To: help-gnu-emacs
Pascal J. Bourguignon wrote:
> 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's a version that handles floating-point numbers and
symbols:
(defun insert-string (&rest args)
(insert (with-output-to-string
(dolist (el args)
(princ el)))))
Here's another interesting function:
(defun string-scan (regexp str)
(let ((start 0) result)
(while (string-match regexp str start)
(push (apply #'substring str (last (match-data) 2)) result)
(setq start (match-end 0)))
(reverse result)))
Let's use it to extract the TECO comments:
(mapc (lambda (s) (princ s) (terpri) (terpri))
(string-scan "!\\([^!]+\\)!"
"!& 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" ))
& 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.
* Get full name of macro in q0
* Put it, and CRLF, in buffer.
* Insert its documentation on the buffer.
* Put in a CRLF at end if there is none.
* Flush the macro class.
* Insert a tab before each line of doc.
* Delete all the ^'s from the doc strings.
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2012-12-14 23:49 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-12-14 4:34 About the history of Emacs Xue Fuqiao
[not found] <mailman.15302.1355460768.855.help-gnu-emacs@gnu.org>
2012-12-14 6:58 ` Pascal J. Bourguignon
2012-12-14 23:49 ` WJ
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.