all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: "Stephen J. Turnbull" <stephen@xemacs.org>
To: Fren Zeee <frenzeee@gmail.com>
Cc: emacs-devel@gnu.org
Subject: Re: What is emacs architecture ?
Date: Thu, 08 Jul 2010 12:27:41 +0900	[thread overview]
Message-ID: <87eifek5zm.fsf@uwakimon.sk.tsukuba.ac.jp> (raw)
In-Reply-To: <AANLkTimjug0gsOd9vRYtk3b9DFp-NgyS_O8S3TwA3Ql4@mail.gmail.com>

Fren Zeee writes:

 > If it were truly a valuable document, someone _here_ would have
 > definitely pursued it, read it and likely enhanced the ideas.

That's really unfair.  There was a time when "here == where Emacs
development is done" had a centroid equal to "Jim Blandy's desk."

The problem is that sequels almost always suck, and from the sound of
the comments the book was poorly conceived (ie, "let's flog this dying
horse of 'Beautiful XXX' one more time and see if we can make another
buck") and edited.  Don't blame Jim.

 > Where do you get the very minimal of the emacs code ? For anyone to
 > contribute to emacs, there has to be some very minimal code to be
 > read and understood

This is false, at least if you want the same minimal code for
everybody.  Emacs has something at every level.  It provides functions
that are basically thin wrappers around libc calls that are thin
wrappers around kernel traps -- ie, it's almost an OS (unfortunately
not really multitasking yet).  It provides better abstractions for the
higher level libc APIs (like FILE*).  It provides a Lisp environment,
with full-fledged exception handling and a virtual machine.  It
provides interfaces to GUI toolkits and a GUI event loop.  Mostly it's
fairly modular; if you have a problem to solve, you learn about that
module.

 > and also documenting the journey for future reference when the
 > person starts forgetting.

I've already posted my advertisement, so won't repeat it.  But here's
some more advice for the explorer:

For internals:

1.  Start Emacs under gdb with emacs -q.  Interrupt it immediately,
    and investigate the functions you find on the stack.

2.  Call a *compiled* Lisp function that prompts.  Interrupt Emacs
    while it's waiting for the answer, and investigate the functions
    you find on the stack.

3.  Find the file defining Fgarbage_collect (for masochists only :-).

4.  src/data.c and src/fns.c.

For higher level stuff:

1.  Find a function that interests you and start drilling down until
    you find something you think you can do better. :-)




  parent reply	other threads:[~2010-07-08  3:27 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-07  5:50 What is emacs architecture ? Fren Zeee
2010-07-07  6:07 ` Masatake YAMATO
2010-07-07 15:26   ` Karl Fogel
2010-07-07 15:36     ` Drew Adams
2010-07-07 17:30       ` Stephen Berman
2010-07-07 20:02         ` Karl Fogel
2010-07-07 22:28           ` Fren Zeee
2010-07-07 22:32             ` Karl Fogel
2010-07-08  3:27             ` Stephen J. Turnbull [this message]
2010-07-08  4:16               ` Jeff Clough
2010-07-19  4:49                 ` Fren Zeee
2010-07-08  7:06             ` Eli Zaretskii
2010-07-08  7:40             ` Thien-Thi Nguyen
2010-07-08 17:37               ` Karl Fogel
2010-07-19  4:35                 ` Fren Zeee
2010-07-19 14:43                   ` Óscar Fuentes
2010-07-19 17:12                     ` Chad Brown
2010-07-19 22:04                       ` Fren Zeee
2010-07-19 22:39                         ` Chad Brown
2010-07-20  2:10                           ` Stephen J. Turnbull
2010-07-20  2:58                             ` Óscar Fuentes
2010-07-20  5:19                               ` Stephen J. Turnbull
2010-07-20 12:53                                 ` Óscar Fuentes
2010-07-20  3:00                             ` Miles Bader
2010-07-20  3:24                               ` Óscar Fuentes
2010-07-20  5:13                                 ` Miles Bader
2010-07-20 12:42                                   ` Óscar Fuentes
2010-07-20  5:21                               ` Stephen J. Turnbull
2010-07-20  6:21                             ` Fren Zeee
2010-07-20  8:23                               ` Stephen J. Turnbull
2010-07-20  8:59                                 ` Andreas Schwab
2010-07-21  3:25                                   ` Fren Zeee
2010-07-21  7:51                                     ` Andreas Schwab
2010-07-21  3:28                                 ` Fren Zeee
2010-07-21 14:49                                   ` David Robinow
2010-07-20  8:48                               ` Andreas Schwab
2010-07-07 18:15   ` Fren Zeee
2010-07-08  0:09     ` Stephen J. Turnbull
2010-07-08  6:42       ` Eli Zaretskii
2010-07-08  8:22         ` Stephen J. Turnbull
2010-07-08  9:44           ` Eli Zaretskii
2010-07-07 18:51   ` Fren Zeee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87eifek5zm.fsf@uwakimon.sk.tsukuba.ac.jp \
    --to=stephen@xemacs.org \
    --cc=emacs-devel@gnu.org \
    --cc=frenzeee@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.