On Thu, 25 Jan 2007 10:10:18 +0100, A.J.Mechelynck wrote:
> Spencer Collyer wrote:
> > Hi,
> >
> > When I'm writing C++ code, if I have a long comma-separated list of
> > items (like initializer parameters or function arguments) I like to
> > lay them out so that the comma is the first non-whitespace
> > character on the line, like so:
> >
> > foo( param1
> > , param2
> > , param3
> > , param4
> > , param5
> > );
> >
> > This is a technique I picked up many years ago, and it seems to be
> > becoming more common, certainly in the programming groups I've
> > worked with.
> >
> > The problem is, I've not been able to work out how to get this to
> > layout properly with VIM.
> >
> > I have the following two lines in my .vimrc:
> >
> > set cindent
> > set cinoptions=g0,+0,t0,(0
> >
> > But using these I get the following layout:
> >
> > foo( param1
> > , param2
> > , param3
> > , param4
> > , param5
> > );
> >
> > What I'd like is to get the commas lined up below the '('. A similar
> > thing happens for initializer lists - the commas line up below the
> > start of the first identifier, not the ':' that introduces the
> > initializer list.
> >
> > Is this possible to do with current Vim? If not, can I put in a
> > request to have it put on the TODO list?
> >
> > Thanks for your attention
> >
> > Spencer
> >
> >
>
> It resembles what I do for CSS; here is an "actual" example (from my
> Firefox userChrome.css):
>
> .tabbrowser-tabs *|tab
> { height: 18px !important
> ; min-width: 16px !important
> ; margin: 0px !important
> ; border-width: 1px !important
> ; border-color: black !important
> ; border-style: solid !important
> ; -moz-border-radius: 2px 2px 0px 0px !important
> ; border-collapse: collapse !important
> ; padding: 0px !important
> ; text-align: left !important
> }
>
> but I'm doing it with just
>
> :filetype indent off
> :set autoindent smartindent nocindent
>
> (I don't trust autoindent scripts anyway). If these settings aren't
> powerful enough for you, maybe you should write an indent-function
> for 'indentexpr' (q.v.) ?
>
>
> Best regards,
> Tony.
Thanks for the pointer Tony. Now I've looked at the help for
'indentexpr' and realise I can call cindent() so I don't lose the
'cindent' functionality for all other lines, I may actually have a go
at this. It'll be a good introduction to programming Vim for me (and is
better than the other option I was contemplating - patching the source
code to do what I want with an extra cinoption :) )
Spencer
--
<<< Eagles may soar, but weasels don't get sucked into jet engines >>>
7:06am up 80 days 15:44, 15 users, load average: 0.10, 0.07, 0.02
Registered Linux User #232457 | LFS ID 11703