Re: [PATCH] srcpos: correct column numbers

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



On Tue, Jan 16, 2018 at 07:10:23AM +0100, Julia Lawall wrote:
> 
> 
> On Mon, 15 Jan 2018, Frank Rowand wrote:
> 
> > On 01/15/18 10:33, Julia Lawall wrote:
> > > The start of a line is column 0, at least according to emacs.
> >
> > According to vim, the first character of a line is column 1.  I don't know
> > if it has a concept of column 0, to the left of that character.
> >
> > $ vim --version
> > VIM - Vi IMproved 7.4
> >
> > Let the editor wars begin.... :-)
> >
> > Personally, I use vim, but if the dtc column numbers match emac's world view
> > instead of vim's, that is fine with me.
> 
> At the start of a line, ie just after a \n, there has been no character.
> This change made the column numbers work for me in the annotations.
> 
> There is also the issue of tabs.  David wanted tabs to count as 8
> characters, but actually cpp converts tabs to spaces.  So if a dts file
> has been through cpp, the numbers will be smaller.  So it could be better
> to consider tabs to be 1 character, to not have to think about what kind
> of include was used.

Urgh.. debating which editor to match sounds like it's going to be a
rathole.

Let's try a different approach: does gcc ever report column numbers?
If so, what's its interpretation?

> 
> julia
> 
> >
> > -Frank
> >
> > >
> > > Every character counts, so need to increment by 1 before adjusting for tab.
> > >
> > > Signed-off-by: Julia Lawall <Julia.Lawall@xxxxxxx>
> > > ---
> > >  srcpos.c | 5 +++--
> > >  1 file changed, 3 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/srcpos.c b/srcpos.c
> > > index 9d38459..e8fced9 100644
> > > --- a/srcpos.c
> > > +++ b/srcpos.c
> > > @@ -154,7 +154,7 @@ void srcfile_push(const char *fname)
> > >  	srcfile->prev = current_srcfile;
> > >
> > >  	srcfile->lineno = 1;
> > > -	srcfile->colno = 1;
> > > +	srcfile->colno = 0;
> > >
> > >  	current_srcfile = srcfile;
> > >  }
> > > @@ -223,8 +223,9 @@ void srcpos_update(struct srcpos *pos, const char *text, int len)
> > >  	for (i = 0; i < len; i++)
> > >  		if (text[i] == '\n') {
> > >  			current_srcfile->lineno++;
> > > -			current_srcfile->colno = 1;
> > > +			current_srcfile->colno = 0;
> > >  		} else if (text[i] == '\t') {
> > > +			current_srcfile->colno++;
> > >  			current_srcfile->colno =
> > >  				ALIGN(current_srcfile->colno, TAB_SIZE);
> > >  		} else {
> > >
> >
> >

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux