Mercurial > vim
view runtime/indent/zig.vim @ 34546:33cb93a8d573 v9.1.0174
patch 9.1.0174: 'cursorline' and 'wincolor' hl missing with conceal and wrap
Commit: https://github.com/vim/vim/commit/21b0a3df8c4abb884489dfcc0c92b1bbe058f291
Author: zeertzjq <zeertzjq@outlook.com>
Date: Wed Mar 13 20:06:34 2024 +0100
patch 9.1.0174: 'cursorline' and 'wincolor' hl missing with conceal and wrap
Problem: 'cursorline' and 'wincolor' highlight missing with concealed and
wrapped lines.
Solution: Apply 'cursorline' and 'wincolor' highlight to boguscols.
(zeertzjq)
Since 'cursorline' and 'wincolor' highlight apply after the end of the
line, it is more consistent to have them also apply to boguscols.
Assigning MAXCOL to values in ScreenCols[] make mouse click behave the
same with 'cursorline' and 'nocursorline', but such behavior may be
incorrect, as it puts the cursor on the next screen line. That may be
fixed in a future PR.
closes: #14192
Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 13 Mar 2024 20:15:03 +0100 |
parents | 15c80d8bc515 |
children |
line wrap: on
line source
" Vim filetype indent file " Language: Zig " Upstream: https://github.com/ziglang/zig.vim " Only load this indent file when no other was loaded. if exists("b:did_indent") finish endif let b:did_indent = 1 if (!has("cindent") || !has("eval")) finish endif setlocal cindent " L0 -> 0 indent for jump labels (i.e. case statement in c). " j1 -> indenting for "javascript object declarations" " J1 -> see j1 " w1 -> starting a new line with `(` at the same indent as `(` " m1 -> if `)` starts a line, match its indent with the first char of its " matching `(` line " (s -> use one indent, when starting a new line after a trailing `(` setlocal cinoptions=L0,m1,(s,j1,J1,l1 " cinkeys: controls what keys trigger indent formatting " 0{ -> { " 0} -> } " 0) -> ) " 0] -> ] " !^F -> make CTRL-F (^F) reindent the current line when typed " o -> when <CR> or `o` is used " O -> when the `O` command is used setlocal cinkeys=0{,0},0),0],!^F,o,O setlocal indentexpr=GetZigIndent(v:lnum) let b:undo_indent = "setlocal cindent< cinkeys< cinoptions< indentexpr<" function! GetZigIndent(lnum) let curretLineNum = a:lnum let currentLine = getline(a:lnum) " cindent doesn't handle multi-line strings properly, so force no indent if currentLine =~ '^\s*\\\\.*' return -1 endif let prevLineNum = prevnonblank(a:lnum-1) let prevLine = getline(prevLineNum) " for lines that look like " }, " }; " try treating them the same as a } if prevLine =~ '\v^\s*},$' if currentLine =~ '\v^\s*};$' || currentLine =~ '\v^\s*}$' return indent(prevLineNum) - 4 endif return indent(prevLineNum-1) - 4 endif if currentLine =~ '\v^\s*},$' return indent(prevLineNum) - 4 endif if currentLine =~ '\v^\s*};$' return indent(prevLineNum) - 4 endif " cindent doesn't handle this case correctly: " switch (1): { " 1 => true, " ~ " ^---- indents to here if prevLine =~ '.*=>.*,$' && currentLine !~ '.*}$' return indent(prevLineNum) endif return cindent(a:lnum) endfunction