unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: use.address@my.homepage.invalid (Chris Gordon-Smith)
To: help-gnu-emacs@gnu.org
Subject: Re: Tabs and Spaces
Date: 27 May 2009 20:38:25 GMT	[thread overview]
Message-ID: <785mm1F1km44lU1@mid.individual.net> (raw)
In-Reply-To: 8763fn5vz0.fsf@galatea.local

Pascal J. Bourguignon <pjb@informatimago.com> wrote:
> "Drew Adams" <drew.adams@oracle.com> 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	other threads:[~2009-05-27 20:38 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-25 10:48 Tabs and Spaces Chris Gordon-Smith
2009-05-25 11:48 ` Pascal J. Bourguignon
2009-05-25 12:17   ` Chris Gordon-Smith
2009-05-25 13:48     ` Pascal J. Bourguignon
2009-05-25 14:58       ` Chris Gordon-Smith
2009-05-25 15:10         ` Teemu Likonen
2009-05-25 15:58           ` Chris Gordon-Smith
2009-05-25 16:38             ` Pascal J. Bourguignon
2009-05-25 15:14         ` Pascal J. Bourguignon
2009-05-25 15:36           ` Richard Riley
2009-05-25 16:10             ` Pascal J. Bourguignon
2009-05-25 16:19               ` Richard Riley
2009-05-25 16:15 ` B Smith-Mannschott
2009-05-25 17:03 ` Drew Adams
2009-05-25 21:45 ` Chris Gordon-Smith
2009-05-26  1:08   ` Pascal J. Bourguignon
2009-05-26 21:31     ` Chris Gordon-Smith
2009-05-26 22:03       ` Drew Adams
     [not found]       ` <mailman.7877.1243375379.31690.help-gnu-emacs@gnu.org>
2009-05-26 22:40         ` Pascal J. Bourguignon
2009-05-27 20:38           ` Chris Gordon-Smith [this message]
     [not found] ` <mailman.7772.1243271023.31690.help-gnu-emacs@gnu.org>
2009-05-25 21:48   ` Chris Gordon-Smith
     [not found] ` <mailman.7771.1243268169.31690.help-gnu-emacs@gnu.org>
2009-05-26 12:29   ` Francis Moreau

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=785mm1F1km44lU1@mid.individual.net \
    --to=use.address@my.homepage.invalid \
    --cc=help-gnu-emacs@gnu.org \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).