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

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

Re: Tabs and Spaces


From: Chris Gordon-Smith
Subject: Re: Tabs and Spaces
Date: 27 May 2009 20:38:25 GMT
User-agent: tin/1.9.3-20080506 ("Dalintober") (UNIX) (Linux/2.6.26-2-686 (i686))

Pascal J. Bourguignon <address@hidden> wrote:
> "Drew Adams" <address@hidden> writes:
> 
>>> Since it is unlikely that the built in emacs parsing /
>>> indentation will be able to handle my modified syntax,...
>>> For the longer term, I definitely want to work out how
>>> to customise the indentation for my purposes.
>>
>> It's not hard, actually. It's just not well documented (IMO).
>>
>> See the Emacs manual, node `Lisp Indent'.
>>
>> Personally, I think the explanation given there is inadequate, and this (or
>> more) should really be in the Elisp manual (you need some Lisp code to 
>> customize
>> indentation of various Lisp sexps) - there is nothing in the Lisp manual 
>> about
>> it. I've just filed a doc bug about this.
>>
>> After reading that node, `grep' the Lisp source code for places where it puts
>> property `lisp-indent-function' on various function and macro symbols. Just 
>> copy
>> what's done there. See also `C-h f lisp-indent-function', which describes the
>> function that uses the symbol property.
> 
> Well sexp indenting is the easy special case.
> 
> I would advise rather to have a look at the pascal.el source (where
> pascal-mode and pascal-indent-line are defined).  This is probably
> closer to what Chris would need to implement.
> 
> However, there is one thing that could be done cf. sexps, is to
> implement the forward-sexp-function hook. This is a function that
> should move the cursor forward (or backward depending on its argument)
> over a number of "sexp" that is, of expressions in the current
> language.  So given a cursor before a BEGIN, it would have to move
> after the matching END, and so on for all the kinds of brackets the
> languages allows (for xml, it would have to move from before <tag> to
> after </tag>).  In the case of C++ however, there are a lot of
> different brackets, so parsing and matching them is hard and
> puzzling. (And what to do of x<a<b>> (vs. x<a<b> >)).
> 
> Anyways, with this hook implemented, a lot of existing functions and
> commands will start to work meaningfully in these buffers, and the
> generic indenting algorithm may be usable.
> 

Thanks to you both for this. I've had a quick look at Lisp indent and 
pascal.el. This will have to be a 'background' project to pick up every so 
often. The reality is that while I would like to get auto indentation 
working, my current manual approach works and there are a lot of other 
things I need to do. 

That being said, it looks like a good way to pick up Emacs Lisp on a real 
problem with a real benefit at the end. At the moment though I have very 
little understanding of Lisp; its as though it is a useful tool but I don't 
even know which end of it to pick up!

One thought that occurred to me is that if I could get the C++ indentation 
to treat BEGIN and THEN in the same way as it treats "{", I might be able 
to make some headway. Ditto for ENDIF, END and "}". ELSE could be 
interesting. I define it as "} else {".

Chris Gordon-Smith
www.simsoup.info


reply via email to

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