On 17/08/18 17:50, Andreas Schwab wrote:
On Aug 17 2018, Manuel López-Ibáñez <lopeziba...@gmail.com> wrote:

However, I see that GCC trunk still counts tabs as 1-column, probably
because emacs counts tabs as one column when interpreting column numbers
in the output of GCC.

That is not true.  Emacs is using screen columns by default for almost
20 years now (see compilation-error-screen-columns).

Maybe I didn't properly explain what I mean. I mean that Emacs counts a tab as a "GCC" column, whatever number of visual columns the tab is configured to be in Emacs. The following code (with a tab before 'a'):

/* ñ    /* */
/* a    /* */
        a

With gcc -c test.c -Wcomment, it gives:

test.c:1:10: warning: "/*" within comment [-Wcomment]
 /* ñ    /* */
          ^
test.c:2:9: warning: "/*" within comment [-Wcomment]
 /* a    /* */
         ^
test.c:3:2: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ at end of 
input
  a
  ^

When the above appears in a compilation-mode buffer, I can click (or press enter) on each diagnostic and Emacs will jump exactly to what is pointed by the "^". That is, for Emacs, 3:2 does not mean line 3, *visual* column 2. In my Emacs, it jumps to column 8 (where the "a" is).

Changing the output to be 3:9 (if GCC starts interpreting tabs as 8 spaces as recommended by the GCS or to the value given by -ftabstop) will make Emacs jump to the wrong place.

This is independent of multi-byte characters. GCC is pointing to the wrong place when the line contains "ñ".

I hope the above is clearer,

Manuel.




Reply via email to