mirror of
				https://github.com/vim/vim.git
				synced 2025-10-28 09:27:14 -04:00 
			
		
		
		
	fixes: #15038 Signed-off-by: Maxim Kim <habamax@gmail.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			40 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"
 |