help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Advice on writing packages please


From: Oliver Scholz
Subject: Re: Advice on writing packages please
Date: Mon, 12 May 2003 16:15:53 +0200
User-agent: Gnus/5.090019 (Oort Gnus v0.19) Emacs/21.3.50 (windows-nt)

marcuirl <address@hidden> writes:

> Hey all,
>
> I am just about ready to start writing an emacs package of my
> own. Some of the ones I have to use just don't do it for me anymore!
> So at least I have a source to work from.
>
> I have reasonable programming skills, though little in lisp ;-) so I
> gain two skills from this! The questions I have:
>
> Is there a source of info on the web that I can use to help in writing
> major modes for emacs?
>
> What advice would you guys/gals give an enthusiastic newbie to this
> field?

I assume that you already have the Emacs Lisp Reference Manual. Maybe
you could also have a look at Robert Chassel's "Introduction to Emacs
Lisp". The latter targets non-Programmers as an audience, but if you
are very new to Lisp there might still be something helpful for you.

Furthermore have a look at the Emacs Wiki: 
<URL: http://www.emacswiki.org>, it is an excellent resource for all
kind of information about Emacs Lisp: examples, tipps, code snippets.

For major modes I have the following links in my private Wiki:

    - Tutorial
      http://two-wugs.net/emacs/mode-tutorial.html

    - Generic mode: for simple modes
      http://www.emacswiki.org/cgi-bin/wiki.pl?GenericMode

    - derived modes
      http://www.emacswiki.org/cgi-bin/wiki.pl?DerivedMode

    - Short example
      http://www.emacswiki.org/cgi-bin/wiki.pl?SampleMode

And when you encounter a particular problem, you can always ask here,
of course.

> Then also some ideas on really basic stuff like:
>
> When editing an xx.el file for mode xx do you need to keep starting a
> new emacs session for the changes to take effect? Is there an easier
> way to do this?

Uh, no, Elisp is an interactive language and -- moreover -- you have
access to the Lisp interpreter all the time. (Even typing means
executing Lisp commands.) So most changes take effect as soon as you
evaluate them with `C-x C-e' or `M-x eval-buffer'. There are a few
exceptions to that rule, the most notable being `defvar' and
`defcustom' forms. But you can force evalutation of those forms by
typing `M-C-x' with point in such a form in emacs-lisp-mode. (In
emacs-lisp-mode `M-C-x' works for evaluating `defun's, too.) So at
most you have to execute the initialisation of your major mode in a
particular buffer again (by typing `M-x <major mode name>') to make
your changes take effect. No need to restart Emacs, unless you have
messed up the state of the session.

You could also look at edebug (described in the Emacs Lisp
Reference), which is a stepper for Elisp. Invoke it with `C-u M-C-x'
with point in a `defun'.

Does that help?

    Oliver
-- 
23 Floréal an 211 de la Révolution
Liberté, Egalité, Fraternité!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]