mirror of
				https://github.com/vim/vim.git
				synced 2025-10-31 09:57:14 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			5.8 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
| " Vim syntax file
 | |
| " Language:	Java Properties resource file (*.properties[_*])
 | |
| " Maintainer:	Simon Baldwin <simonb@sco.com>
 | |
| " Last change:	26th Mar 2000
 | |
| 
 | |
| " =============================================================================
 | |
| 
 | |
| " Optional and tuning variables:
 | |
| 
 | |
| " jproperties_lines
 | |
| " -----------------
 | |
| "   Set a value for the sync block that we use to find long continuation lines
 | |
| "   in properties; the value is already large - if you have larger continuation
 | |
| "   sets you may need to increase it further - if not, and you find editing is
 | |
| "   slow, reduce the value of jproperties_lines.
 | |
| if !exists("jproperties_lines")
 | |
| 	let jproperties_lines = 256
 | |
| endif
 | |
| 
 | |
| " jproperties_strict_syntax
 | |
| " -------------------------
 | |
| "   Most properties files assign values with "id=value" or "id:value".  But,
 | |
| "   strictly, the Java properties parser also allows "id value", "id", and
 | |
| "   even more bizarrely "=value", ":value", " value", and so on.  These latter
 | |
| "   ones, however, are rarely used, if ever, and handling them in the high-
 | |
| "   lighting can obscure errors in the more normal forms.  So, in practice
 | |
| "   we take special efforts to pick out only "id=value" and "id:value" forms
 | |
| "   by default.  If you want strict compliance, set jproperties_strict_syntax
 | |
| "   to non-zero (and good luck).
 | |
| if !exists("jproperties_strict_syntax")
 | |
| 	let jproperties_strict_syntax = 0
 | |
| endif
 | |
| 
 | |
| " jproperties_show_messages
 | |
| " -------------------------
 | |
| "   If this properties file contains messages for use with MessageFormat,
 | |
| "   setting a non-zero value will highlight them.  Messages are of the form
 | |
| "   "{...}".  Highlighting doesn't go to the pains of picking apart what is
 | |
| "   in the format itself - just the basics for now.
 | |
| if !exists("jproperties_show_messages")
 | |
| 	let jproperties_show_messages = 0
 | |
| endif
 | |
| 
 | |
| " =============================================================================
 | |
| 
 | |
| " For version 5.x: Clear all syntax items
 | |
| " For version 6.x: Quit when a syntax file was already loaded
 | |
| if version < 600
 | |
|   syntax clear
 | |
| elseif exists("b:current_syntax")
 | |
|   finish
 | |
| endif
 | |
| 
 | |
| " switch case sensitivity off
 | |
| syn case ignore
 | |
| 
 | |
| " set the block
 | |
| exec "syn sync lines=" . jproperties_lines
 | |
| 
 | |
| " switch between 'normal' and 'strict' syntax
 | |
| if jproperties_strict_syntax != 0
 | |
| 
 | |
| 	" an assignment is pretty much any non-empty line at this point,
 | |
| 	" trying to not think about continuation lines
 | |
| 	syn match   jpropertiesAssignment	"^\s*[^[:space:]]\+.*$" contains=jpropertiesIdentifier
 | |
| 
 | |
| 	" an identifier is anything not a space character, pretty much; it's
 | |
| 	" followed by = or :, or space or tab.  Or end-of-line.
 | |
| 	syn match   jpropertiesIdentifier	"[^=:[:space:]]*" contained nextgroup=jpropertiesDelimiter
 | |
| 
 | |
| 	" treat the delimiter specially to get colours right
 | |
| 	syn match   jpropertiesDelimiter	"\s*[=:[:space:]]\s*" contained nextgroup=jpropertiesString
 | |
| 
 | |
| 	" catch the bizarre case of no identifier; a special case of delimiter
 | |
| 	syn match   jpropertiesEmptyIdentifier	"^\s*[=:]\s*" nextgroup=jpropertiesString
 | |
| else
 | |
| 
 | |
| 	" here an assignment is id=value or id:value, and we conveniently
 | |
| 	" ignore continuation lines for the present
 | |
| 	syn match   jpropertiesAssignment	"^\s*[^=:[:space:]]\+\s*[=:].*$" contains=jpropertiesIdentifier
 | |
| 
 | |
| 	" an identifier is anything not a space character, pretty much; it's
 | |
| 	" always followed by = or :, and we find it in an assignment
 | |
| 	syn match   jpropertiesIdentifier	"[^=:[:space:]]\+" contained nextgroup=jpropertiesDelimiter
 | |
| 
 | |
| 	" treat the delimiter specially to get colours right; this time the
 | |
| 	" delimiter must contain = or :
 | |
| 	syn match   jpropertiesDelimiter	"\s*[=:]\s*" contained nextgroup=jpropertiesString
 | |
| endif
 | |
| 
 | |
| " a definition is all up to the last non-\-terminated line; strictly, Java
 | |
| " properties tend to ignore leading whitespace on all lines of a multi-line
 | |
| " definition, but we don't look for that here (because it's a major hassle)
 | |
| syn region  jpropertiesString		start="" skip="\\$" end="$" contained contains=jpropertiesSpecialChar,jpropertiesError,jpropertiesSpecial
 | |
| 
 | |
| " {...} is a Java Message formatter - add a minimal recognition of these
 | |
| " if required
 | |
| if jproperties_show_messages != 0
 | |
| 	syn match   jpropertiesSpecial		"{[^}]*}\{-1,\}" contained
 | |
| 	syn match   jpropertiesSpecial		"'{" contained
 | |
| 	syn match   jpropertiesSpecial		"''" contained
 | |
| endif
 | |
| 
 | |
| " \uABCD are unicode special characters
 | |
| syn match   jpropertiesSpecialChar	"\\u\x\{1,4}" contained
 | |
| 
 | |
| " ...and \u not followed by a hex digit is an error, though the properties
 | |
| " file parser won't issue an error on it, just set something wacky like zero
 | |
| syn match   jpropertiesError		"\\u\X\{1,4}" contained
 | |
| syn match   jpropertiesError		"\\u$"me=e-1 contained
 | |
| 
 | |
| " other things of note are the \t,r,n,\, and the \ preceding line end
 | |
| syn match   jpropertiesSpecial		"\\[trn\\]" contained
 | |
| syn match   jpropertiesSpecial		"\\\s" contained
 | |
| syn match   jpropertiesSpecial		"\\$" contained
 | |
| 
 | |
| " comments begin with # or !, and persist to end of line; put here since
 | |
| " they may have been caught by patterns above us
 | |
| syn match   jpropertiesComment		"^\s*[#!].*$" contains=jpropertiesTODO
 | |
| syn keyword jpropertiesTodo		TODO FIXME XXX contained
 | |
| 
 | |
| " Define the default highlighting.
 | |
| " For version 5.7 and earlier: only when not done already
 | |
| " For version 5.8 and later: only when an item doesn't have highlighting yet
 | |
| if version >= 508 || !exists("did_jproperties_syntax_inits")
 | |
|   if version < 508
 | |
|     let did_jproperties_syntax_inits = 1
 | |
|     command -nargs=+ HiLink hi link <args>
 | |
|   else
 | |
|     command -nargs=+ HiLink hi def link <args>
 | |
|   endif
 | |
| 
 | |
| 	HiLink jpropertiesComment	Comment
 | |
| 	HiLink jpropertiesTodo		Todo
 | |
| 	HiLink jpropertiesIdentifier	Identifier
 | |
| 	HiLink jpropertiesString	String
 | |
| 	HiLink jpropertiesExtendString	String
 | |
| 	HiLink jpropertiesCharacter	Character
 | |
| 	HiLink jpropertiesSpecial	Special
 | |
| 	HiLink jpropertiesSpecialChar	SpecialChar
 | |
| 	HiLink jpropertiesError	Error
 | |
| 
 | |
|   delcommand HiLink
 | |
| endif
 | |
| 
 | |
| let b:current_syntax = "jproperties"
 | |
| 
 | |
| " vim:ts=8
 |