From mboxrd@z Thu Jan 1 00:00:00 1970 Path: main.gmane.org!not-for-mail From: Oliver Scholz Newsgroups: gmane.emacs.help Subject: Re: Advice on writing packages please Date: Mon, 12 May 2003 16:15:53 +0200 Sender: help-gnu-emacs-bounces+gnu-help-gnu-emacs=m.gmane.org@gnu.org Message-ID: References: NNTP-Posting-Host: main.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Trace: main.gmane.org 1052749436 14947 80.91.224.249 (12 May 2003 14:23:56 GMT) X-Complaints-To: usenet@main.gmane.org NNTP-Posting-Date: Mon, 12 May 2003 14:23:56 +0000 (UTC) Original-X-From: help-gnu-emacs-bounces+gnu-help-gnu-emacs=m.gmane.org@gnu.org Mon May 12 16:23:49 2003 Return-path: Original-Received: from monty-python.gnu.org ([199.232.76.173]) by main.gmane.org with esmtp (Exim 3.35 #1 (Debian)) id 19FEBT-0003eb-00 for ; Mon, 12 May 2003 16:21:49 +0200 Original-Received: from localhost ([127.0.0.1] helo=monty-python.gnu.org) by monty-python.gnu.org with esmtp (Exim 4.10.13) id 19FEA7-0001xS-08 for gnu-help-gnu-emacs@m.gmane.org; Mon, 12 May 2003 10:20:19 -0400 Original-Path: shelby.stanford.edu!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!dialin-145-254-195-117.arcor-ip.NET!not-for-mail Original-Newsgroups: gnu.emacs.help Original-Lines: 72 Original-NNTP-Posting-Host: dialin-145-254-195-117.arcor-ip.net (145.254.195.117) Original-X-Trace: fu-berlin.de 1052748971 22449640 145.254.195.117 (16 [87814]) X-Attribution: os X-Face: "HgH2sgK|bfH$; PiOJI6|qUCf.ve<51_Od(%ynHr?=>znn#~#oS>",F%B8&\vus),2AsPYb -n>PgddtGEn}s7kH?7kH{P_~vu?]OvVN^qD(L)>G^gDCl(U9n{:d>'DkilN!_K"eNzjrtI4Ya6;Td% IZGMbJ{lawG+'J>QXPZD&TwWU@^~A}f^zAb[Ru;CT(UA]c& User-Agent: Gnus/5.090019 (Oort Gnus v0.19) Emacs/21.3.50 (windows-nt) Cancel-Lock: sha1:ZnS5Qc7P09jSZFv9k2Z6Sd8er4w= Original-Xref: shelby.stanford.edu gnu.emacs.help:113105 Original-To: help-gnu-emacs@gnu.org X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1b5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Help: List-Post: List-Subscribe: , List-Archive: List-Unsubscribe: , Errors-To: help-gnu-emacs-bounces+gnu-help-gnu-emacs=m.gmane.org@gnu.org Xref: main.gmane.org gmane.emacs.help:9601 X-Report-Spam: http://spam.gmane.org/gmane.emacs.help:9601 marcuirl 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: , 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 ') 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é!