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
next prev parent 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).