mirror of
https://github.com/vim/vim
synced 2025-03-15 06:17:51 +01:00
fixes: #15038 Signed-off-by: Maxim Kim <habamax@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
39 lines
1.2 KiB
VimL
39 lines
1.2 KiB
VimL
vim9script
|
|
|
|
# Maintainer: Maxim Kim <habamax@gmail.com>
|
|
# Last Update: 2024-06-18
|
|
|
|
if exists("b:current_syntax")
|
|
finish
|
|
endif
|
|
|
|
var delimiter = get(b:, "csv_delimiter", ",")
|
|
|
|
# generate bunch of following syntaxes:
|
|
# syntax match csvCol8 /.\{-}\(,\|$\)/ nextgroup=escCsvCol0,csvCol0
|
|
# syntax region escCsvCol8 start=/ *"\([^"]*""\)*[^"]*/ end=/" *\(,\|$\)/ nextgroup=escCsvCol0,csvCol0
|
|
for col in range(8, 0, -1)
|
|
var ncol = (col == 8 ? 0 : col + 1)
|
|
exe $'syntax match csvCol{col}' .. ' /.\{-}\(' .. delimiter .. '\|$\)/ nextgroup=escCsvCol' .. ncol .. ',csvCol' .. ncol
|
|
exe $'syntax region escCsvCol{col}' .. ' start=/ *"\([^"]*""\)*[^"]*/ end=/" *\(' .. delimiter .. '\|$\)/ nextgroup=escCsvCol' .. ncol .. ',csvCol' .. ncol
|
|
endfor
|
|
|
|
hi def link csvCol1 Statement
|
|
hi def link csvCol2 Constant
|
|
hi def link csvCol3 Type
|
|
hi def link csvCol4 PreProc
|
|
hi def link csvCol5 Identifier
|
|
hi def link csvCol6 Special
|
|
hi def link csvCol7 String
|
|
hi def link csvCol8 Comment
|
|
|
|
hi def link escCsvCol1 csvCol1
|
|
hi def link escCsvCol2 csvCol2
|
|
hi def link escCsvCol3 csvCol3
|
|
hi def link escCsvCol4 csvCol4
|
|
hi def link escCsvCol5 csvCol5
|
|
hi def link escCsvCol6 csvCol6
|
|
hi def link escCsvCol7 csvCol7
|
|
hi def link escCsvCol8 csvCol8
|
|
|
|
b:current_syntax = "csv"
|