forked from aniani/vim
		
	
		
			
	
	
		
			150 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
		
		
			
		
	
	
			150 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
|   | " Vim syntax file | ||
|  | " Language:	none; used to see highlighting | ||
|  | " Maintainer:	Ronald Schild <rs@scutum.de> | ||
|  | " Last Change:	2001 Sep 02 | ||
|  | " Version:	5.4n.1 | ||
|  | 
 | ||
|  | " To see your current highlight settings, do | ||
|  | "    :so $VIMRUNTIME/syntax/hitest.vim | ||
|  | 
 | ||
|  | " save global options and registers | ||
|  | let s:hidden      = &hidden | ||
|  | let s:lazyredraw  = &lazyredraw | ||
|  | let s:more	  = &more | ||
|  | let s:report      = &report | ||
|  | let s:shortmess   = &shortmess | ||
|  | let s:wrapscan    = &wrapscan | ||
|  | let s:register_a  = @a | ||
|  | let s:register_se = @/ | ||
|  | 
 | ||
|  | " set global options | ||
|  | set hidden lazyredraw nomore report=99999 shortmess=aoOstTW wrapscan | ||
|  | 
 | ||
|  | " print current highlight settings into register a | ||
|  | redir @a | ||
|  | highlight | ||
|  | redir END | ||
|  | 
 | ||
|  | " Open a new window if the current one isn't empty | ||
|  | if line("$") != 1 || getline(1) != "" | ||
|  |   new | ||
|  | endif | ||
|  | 
 | ||
|  | " edit temporary file | ||
|  | edit Highlight\ test | ||
|  | 
 | ||
|  | " set local options | ||
|  | setlocal autoindent noexpandtab formatoptions=t shiftwidth=16 noswapfile tabstop=16 | ||
|  | let &textwidth=&columns | ||
|  | 
 | ||
|  | " insert highlight settings | ||
|  | % delete | ||
|  | put a | ||
|  | 
 | ||
|  | " remove the colored xxx items | ||
|  | g/xxx /s///e | ||
|  | 
 | ||
|  | " remove color settings (not needed here) | ||
|  | global! /links to/ substitute /\s.*$//e | ||
|  | 
 | ||
|  | " move linked groups to the end of file | ||
|  | global /links to/ move $ | ||
|  | 
 | ||
|  | " move linked group names to the matching preferred groups | ||
|  | % substitute /^\(\w\+\)\s*\(links to\)\s*\(\w\+\)$/\3\t\2 \1/e | ||
|  | global /links to/ normal mz3ElD0#$p'zdd | ||
|  | 
 | ||
|  | " delete empty lines | ||
|  | global /^ *$/ delete | ||
|  | 
 | ||
|  | " precede syntax command | ||
|  | % substitute /^[^ ]*/syn keyword &\t&/ | ||
|  | 
 | ||
|  | " execute syntax commands | ||
|  | syntax clear | ||
|  | % yank a | ||
|  | @a | ||
|  | 
 | ||
|  | " remove syntax commands again | ||
|  | % substitute /^syn keyword // | ||
|  | 
 | ||
|  | " pretty formatting | ||
|  | global /^/ exe "normal Wi\<CR>\t\eAA\ex" | ||
|  | global /^\S/ join | ||
|  | 
 | ||
|  | " find out first syntax highlighting | ||
|  | let b:various = &highlight.',:Normal,:Cursor,:,' | ||
|  | let b:i = 1 | ||
|  | while b:various =~ ':'.substitute(getline(b:i), '\s.*$', ',', '') | ||
|  |    let b:i = b:i + 1 | ||
|  |    if b:i > line("$") | break | endif | ||
|  | endwhile | ||
|  | 
 | ||
|  | " insert headlines | ||
|  | call append(0, "Highlighting groups for various occasions") | ||
|  | call append(1, "-----------------------------------------") | ||
|  | 
 | ||
|  | if b:i < line("$")-1 | ||
|  |    let b:synhead = "Syntax highlighting groups" | ||
|  |    if exists("hitest_filetypes") | ||
|  |       redir @a | ||
|  |       let | ||
|  |       redir END | ||
|  |       let @a = substitute(@a, 'did_\(\w\+\)_syn\w*_inits\s*#1', ', \1', 'g') | ||
|  |       let @a = substitute(@a, "\n\\w[^\n]*", '', 'g') | ||
|  |       let @a = substitute(@a, "\n", '', 'g') | ||
|  |       let @a = substitute(@a, '^,', '', 'g') | ||
|  |       if @a != "" | ||
|  | 	 let b:synhead = b:synhead." - filetype" | ||
|  | 	 if @a =~ ',' | ||
|  | 	    let b:synhead = b:synhead."s" | ||
|  | 	 endif | ||
|  | 	 let b:synhead = b:synhead.":".@a | ||
|  |       endif | ||
|  |    endif | ||
|  |    call append(b:i+1, "") | ||
|  |    call append(b:i+2, b:synhead) | ||
|  |    call append(b:i+3, substitute(b:synhead, '.', '-', 'g')) | ||
|  | endif | ||
|  | 
 | ||
|  | " remove 'hls' highlighting | ||
|  | nohlsearch | ||
|  | normal 0 | ||
|  | 
 | ||
|  | " add autocommands to remove temporary file from buffer list | ||
|  | aug highlighttest | ||
|  |    au! | ||
|  |    au BufUnload Highlight\ test if expand("<afile>") == "Highlight test" | ||
|  |    au BufUnload Highlight\ test    bdelete! Highlight\ test | ||
|  |    au BufUnload Highlight\ test endif | ||
|  |    au VimLeavePre * if bufexists("Highlight test") | ||
|  |    au VimLeavePre *    bdelete! Highlight\ test | ||
|  |    au VimLeavePre * endif | ||
|  | aug END | ||
|  | 
 | ||
|  | " we don't want to save this temporary file | ||
|  | set nomodified | ||
|  | 
 | ||
|  | " the following trick avoids the "Press RETURN ..." prompt | ||
|  | 0 append | ||
|  | . | ||
|  | 
 | ||
|  | " restore global options and registers | ||
|  | let &hidden      = s:hidden | ||
|  | let &lazyredraw  = s:lazyredraw | ||
|  | let &more	 = s:more | ||
|  | let &report	 = s:report | ||
|  | let &shortmess	 = s:shortmess | ||
|  | let &wrapscan	 = s:wrapscan | ||
|  | let @a		 = s:register_a | ||
|  | 
 | ||
|  | " restore last search pattern | ||
|  | call histdel("search", -1) | ||
|  | let @/ = s:register_se | ||
|  | 
 | ||
|  | " remove variables | ||
|  | unlet s:hidden s:lazyredraw s:more s:report s:shortmess | ||
|  | unlet s:wrapscan s:register_a s:register_se | ||
|  | 
 | ||
|  | " vim: ts=8 |