I was able to eliminate the escape codes in my make output by changing the 
-fdiagnostics-color option in gcc. So this answers my first question (the 
escape codes in vim's make output were caused by a gcc option that colorizes 
its output, and had nothing to do with vim).

I (mostly) answered my second question too. I was using this errorformat:

    set errorformat =%E%f:%l:%c:\ %trror:\ %m,%-Z%p^,%+C%.%#
    set errorformat+=%D%*\\a:\ Entering\ directory\ [`']%f'
    set errorformat+=%X%*\\a:\ Leaving\ directory\ [`']%f'
    set errorformat+=%-G%.%#

and it was correctly picking out all the multi-line error lines, and showing 
these in the quickfix (one line per error, as I've specified), but I could not 
jump to the source location. I assumed the quickfix-directory-stack was messed 
up, and changed the above %D and %X efm lines (which I copied from the defaults 
in gcc.vim) above to:

    set errorformat+=%D%*\\a:\ Entering\ directory\ '%f'
    set errorformat+=%X%*\\a:\ Leaving\ directory\ '%f'

This results in a sane quickfix-directory-stack, and now the quickfix window is 
working on all counts.

But, I must ask, is this a bug in the default patterns for parsing 
Entering/Leaving directories in gcc.vim? Why is it using [`']%f' instead of 
'%f'?

On Monday, November 13, 2017 at 1:39:30 PM UTC-8, Tim Black wrote:
> It appears this might not be a vim issue after all, as I'm also seeing these 
> characters when I redirect stdout + stderr from my make command to a file. 
> 
> For anyone looking here for help on troubleshooting multiline errorformat, 
> this question has a very helpful response:
> 
> https://stackoverflow.com/questions/16718444/multiline-errorformat-in-vim
> 
> On Monday, November 13, 2017 at 12:54:12 PM UTC-8, Tim Black wrote:
> > I'm struggling to get vim (8.0 (2016 Sep 12)) to parse the output of my 
> > build system, and need help with defining my errorformat. The default gcc 
> > efm appears to not be matching any lines, so in quickfix I see basically 
> > every line of make output, but the lines that actually contain errors show 
> > up with odd characters inserted.
> > 
> > Example make output:
> > 
> > make: Entering directory '/home/tblack/SourceRAM/la/Blocks'
> > ZYNQ_GPP src/avpcva.cpp
> > src/avpcva.cpp: In destructor 'virtual Blocks::AVPCVA::~AVPCVA()':
> > src/avpcva.cpp:152:49: error: 'class AVBC::STC' has no member named 
> > 'getHandle'
> >          uint16_t handle = stIter->second->getHandle();
> >                                                  ^
> > 
> > For the above make output, the quickfix list shows: 
> > 
> > || make: Entering directory '/home/tblack/SourceRAM/la/Blocks'
> > || ZYNQ_GPP src/avpcva.cpp
> > || ^[[01m^[[Ksrc/avpcva.cpp:^[[m^[[K In destructor '^[[01m^[[Kvirtual 
> > Blocks::AVPCVA::~AVPCVA()^[[m^[[K':
> > || ^[[01m^[[Ksrc/avpcva.cpp:152:49:^[[m^[[K ^[[01;31m^[[Kerror: 
> > ^[[m^[[K'^[[01m^[[Kclass AVBC::STC^[[m^[[K' has no member named 
> > '^[[01m^[[Kget    Handle^[[m^[[K'
> > ||          uint16_t handle = stIter->second->getHandle();
> > || ^[[01;32m^[[K                                                 ^^[[m^[[K
> > 
> > The default errorformat for vim's gcc compiler plugin (amazingly) does not 
> > appear to beconfigured to support multi-line output (doesn't include any of 
> > %E, %C, %Z). I suspect that I just need to adjust my errorformat 
> > accordingly, but:
> > 
> > 1. Would my using the default efm explain the odd characters in my quickfix?
> > 2. I could use help with the specification of an efm that will correctly 
> > parse my make output. I have been reading the vim docs and browsing the web 
> > for days and still not making headway on demystifying and troubleshooting 
> > multiline errorformats in vim.
> > 
> > I took a stab at this, using the errorformat below. The first line attempts 
> > to define my multi-line error format start(%E)/continue(%C)/end(%Z).
> > 
> > set errorformat =%E%f:%l:%c:\ %trror:\ %m,%-C,%-Z%p^
> > set errorformat+=%D%*\\a:\ Entering\ directory\ [`']%f'
> > set errorformat+=%X%*\\a:\ Leaving\ directory\ [`']%f'
> > 
> > But it does not result in any different behavior from what I described 
> > above.
> > 
> > Thank you.

-- 
-- 
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to