mirror of
https://github.com/macvim-dev/macvim.git
synced 2026-06-11 15:37:29 +02:00
44dcad20f2
Problem: The "%v" item in 'errorformat' interprets the reported
screen column using the buffer's 'tabstop', so the cursor
jumps to the wrong column when 'tabstop' is not 8
(vimpostor).
Solution: When resolving a "%v" column, always count a <tab> as 8
screen columns, independent of 'tabstop', matching the
column numbers reported by compilers; keep the multi-byte
handling. Also use "%v" in the gcc compiler file and
update the documentation (Hirohito Higashi).
fixes: #20321
closes: #20359
Co-Authored-By: vimpostor <21310755+vimpostor@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Hirohito Higashi <h.east.727@gmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
48 lines
1.5 KiB
VimL
48 lines
1.5 KiB
VimL
" Vim compiler file
|
|
" Compiler: GNU C Compiler
|
|
" Previous Maintainer: Nikolai Weibull <now@bitwi.se>
|
|
" Last Change: 2010 Oct 14
|
|
" changed pattern for entering/leaving directories
|
|
" by Daniel Hahler, 2019 Jul 12
|
|
" added line suggested by Anton Lindqvist 2016 Mar 31
|
|
" 2024 Apr 03 by The Vim Project (removed :CompilerSet definition)
|
|
" 2025 Dec 17 by The Vim Project (correctly parse: 'make: *** [Makefile:2: all] Error 1')
|
|
" 2026 May 28 by The Vim Project (Use %v to parse column number)
|
|
|
|
if exists("current_compiler")
|
|
finish
|
|
endif
|
|
let current_compiler = "gcc"
|
|
|
|
let s:cpo_save = &cpo
|
|
set cpo&vim
|
|
|
|
CompilerSet errorformat=
|
|
\make:\ ***\ [%f:%l:\ %m,
|
|
\%*[^\"]\"%f\"%*\\D%l:%c:\ %m,
|
|
\%*[^\"]\"%f\"%*\\D%l:\ %m,
|
|
\\"%f\"%*\\D%l:%c:\ %m,
|
|
\\"%f\"%*\\D%l:\ %m,
|
|
\%-G%f:%l:\ %trror:\ (Each\ undeclared\ identifier\ is\ reported\ only\ once,
|
|
\%-G%f:%l:\ %trror:\ for\ each\ function\ it\ appears\ in.),
|
|
\%f:%l:%v:\ %trror:\ %m,
|
|
\%f:%l:%v:\ %tarning:\ %m,
|
|
\%f:%l:%v:\ %m,
|
|
\%f:%l:\ %trror:\ %m,
|
|
\%f:%l:\ %tarning:\ %m,
|
|
\%f:%l:\ %m,
|
|
\%f:\\(%*[^\\)]\\):\ %m,
|
|
\\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
|
|
\%D%*\\a[%*\\d]:\ Entering\ directory\ %*[`']%f',
|
|
\%X%*\\a[%*\\d]:\ Leaving\ directory\ %*[`']%f',
|
|
\%D%*\\a:\ Entering\ directory\ %*[`']%f',
|
|
\%X%*\\a:\ Leaving\ directory\ %*[`']%f',
|
|
\%DMaking\ %*\\a\ in\ %f
|
|
|
|
if exists('g:compiler_gcc_ignore_unmatched_lines')
|
|
CompilerSet errorformat+=%-G%.%#
|
|
endif
|
|
|
|
let &cpo = s:cpo_save
|
|
unlet s:cpo_save
|