mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-03 17:24:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			366 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			366 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim syntax file
 | 
						|
" Language:	NQC - Not Quite C, for LEGO mindstorms
 | 
						|
"		NQC homepage: http://www.enteract.com/~dbaum/nqc/
 | 
						|
" Maintainer:	Stefan Scherer <stefan@enotes.de>
 | 
						|
" Last Change:	2001 May 10
 | 
						|
" URL:		http://www.enotes.de/twiki/pub/Home/LegoMindstorms/nqc.vim
 | 
						|
" Filenames:	.nqc
 | 
						|
 | 
						|
" quit when a syntax file was already loaded
 | 
						|
if exists("b:current_syntax")
 | 
						|
  finish
 | 
						|
endif
 | 
						|
 | 
						|
" Statements
 | 
						|
syn keyword	nqcStatement	break return continue start stop abs sign
 | 
						|
syn keyword     nqcStatement	sub task
 | 
						|
syn keyword     nqcLabel	case default
 | 
						|
syn keyword	nqcConditional	if else switch
 | 
						|
syn keyword	nqcRepeat	while for do until repeat
 | 
						|
 | 
						|
" Scout and RCX2
 | 
						|
syn keyword	nqcEvents	acquire catch monitor
 | 
						|
 | 
						|
" types and classes
 | 
						|
syn keyword	nqcType		int true false void
 | 
						|
syn keyword	nqcStorageClass	asm const inline
 | 
						|
 | 
						|
 | 
						|
 | 
						|
" Sensors --------------------------------------------
 | 
						|
" Input Sensors
 | 
						|
syn keyword     nqcConstant	SENSOR_1 SENSOR_2 SENSOR_3
 | 
						|
 | 
						|
" Types for SetSensorType()
 | 
						|
syn keyword     nqcConstant	SENSOR_TYPE_TOUCH SENSOR_TYPE_TEMPERATURE
 | 
						|
syn keyword     nqcConstant	SENSOR_TYPE_LIGHT SENSOR_TYPE_ROTATION
 | 
						|
syn keyword     nqcConstant	SENSOR_LIGHT SENSOR_TOUCH
 | 
						|
 | 
						|
" Modes for SetSensorMode()
 | 
						|
syn keyword     nqcConstant	SENSOR_MODE_RAW SENSOR_MODE_BOOL
 | 
						|
syn keyword     nqcConstant	SENSOR_MODE_EDGE SENSOR_MODE_PULSE
 | 
						|
syn keyword     nqcConstant	SENSOR_MODE_PERCENT SENSOR_MODE_CELSIUS
 | 
						|
syn keyword     nqcConstant	SENSOR_MODE_FAHRENHEIT SENSOR_MODE_ROTATION
 | 
						|
 | 
						|
" Sensor configurations for SetSensor()
 | 
						|
syn keyword     nqcConstant	SENSOR_TOUCH SENSOR_LIGHT SENSOR_ROTATION
 | 
						|
syn keyword     nqcConstant	SENSOR_CELSIUS SENSOR_FAHRENHEIT SENSOR_PULSE
 | 
						|
syn keyword     nqcConstant	SENSOR_EDGE
 | 
						|
 | 
						|
" Functions - All
 | 
						|
syn keyword	nqcFunction	ClearSensor
 | 
						|
syn keyword	nqcFunction	SensorValue SensorType
 | 
						|
 | 
						|
" Functions - RCX
 | 
						|
syn keyword	nqcFunction	SetSensor SetSensorType
 | 
						|
syn keyword	nqcFunction	SensorValueBool
 | 
						|
 | 
						|
" Functions - RCX, CyberMaster
 | 
						|
syn keyword	nqcFunction	SetSensorMode SensorMode
 | 
						|
 | 
						|
" Functions - RCX, Scout
 | 
						|
syn keyword	nqcFunction	SensorValueRaw
 | 
						|
 | 
						|
" Functions - Scout
 | 
						|
syn keyword	nqcFunction	SetSensorLowerLimit SetSensorUpperLimit
 | 
						|
syn keyword	nqcFunction	SetSensorHysteresis CalibrateSensor
 | 
						|
 | 
						|
 | 
						|
" Outputs --------------------------------------------
 | 
						|
" Outputs for On(), Off(), etc.
 | 
						|
syn keyword     nqcConstant	OUT_A OUT_B OUT_C
 | 
						|
 | 
						|
" Modes for SetOutput()
 | 
						|
syn keyword     nqcConstant	OUT_ON OUT_OFF OUT_FLOAT
 | 
						|
 | 
						|
" Directions for SetDirection()
 | 
						|
syn keyword     nqcConstant	OUT_FWD OUT_REV OUT_TOGGLE
 | 
						|
 | 
						|
" Output power for SetPower()
 | 
						|
syn keyword     nqcConstant	OUT_LOW OUT_HALF OUT_FULL
 | 
						|
 | 
						|
" Functions - All
 | 
						|
syn keyword	nqcFunction	SetOutput SetDirection SetPower OutputStatus
 | 
						|
syn keyword	nqcFunction	On Off Float Fwd Rev Toggle
 | 
						|
syn keyword	nqcFunction	OnFwd OnRev OnFor
 | 
						|
 | 
						|
" Functions - RXC2, Scout
 | 
						|
syn keyword	nqcFunction	SetGlobalOutput SetGlobalDirection SetMaxPower
 | 
						|
syn keyword	nqcFunction	GlobalOutputStatus
 | 
						|
 | 
						|
 | 
						|
" Sound ----------------------------------------------
 | 
						|
" Sounds for PlaySound()
 | 
						|
syn keyword     nqcConstant	SOUND_CLICK SOUND_DOUBLE_BEEP SOUND_DOWN
 | 
						|
syn keyword     nqcConstant	SOUND_UP SOUND_LOW_BEEP SOUND_FAST_UP
 | 
						|
 | 
						|
" Functions - All
 | 
						|
syn keyword	nqcFunction	PlaySound PlayTone
 | 
						|
 | 
						|
" Functions - RCX2, Scout
 | 
						|
syn keyword	nqcFunction	MuteSound UnmuteSound ClearSound
 | 
						|
syn keyword	nqcFunction	SelectSounds
 | 
						|
 | 
						|
 | 
						|
" LCD ------------------------------------------------
 | 
						|
" Modes for SelectDisplay()
 | 
						|
syn keyword     nqcConstant	DISPLAY_WATCH DISPLAY_SENSOR_1 DISPLAY_SENSOR_2
 | 
						|
syn keyword     nqcConstant	DISPLAY_SENSOR_3 DISPLAY_OUT_A DISPLAY_OUT_B
 | 
						|
syn keyword     nqcConstant	DISPLAY_OUT_C
 | 
						|
" RCX2
 | 
						|
syn keyword     nqcConstant	DISPLAY_USER
 | 
						|
 | 
						|
" Functions - RCX
 | 
						|
syn keyword	nqcFunction	SelectDisplay
 | 
						|
" Functions - RCX2
 | 
						|
syn keyword	nqcFunction	SetUserDisplay
 | 
						|
 | 
						|
 | 
						|
" Communication --------------------------------------
 | 
						|
" Messages - RCX, Scout ------------------------------
 | 
						|
" Tx power level for SetTxPower()
 | 
						|
syn keyword     nqcConstant	TX_POWER_LO TX_POWER_HI
 | 
						|
 | 
						|
" Functions - RCX, Scout
 | 
						|
syn keyword	nqcFunction	Message ClearMessage SendMessage SetTxPower
 | 
						|
 | 
						|
" Serial - RCX2 --------------------------------------
 | 
						|
" for SetSerialComm()
 | 
						|
syn keyword     nqcConstant	SERIAL_COMM_DEFAULT SERIAL_COMM_4800
 | 
						|
syn keyword     nqcConstant	SERIAL_COMM_DUTY25 SERIAL_COMM_76KHZ
 | 
						|
 | 
						|
" for SetSerialPacket()
 | 
						|
syn keyword     nqcConstant	SERIAL_PACKET_DEFAULT SERIAL_PACKET_PREAMBLE
 | 
						|
syn keyword     nqcConstant	SERIAL_PACKET_NEGATED SERIAL_PACKET_CHECKSUM
 | 
						|
syn keyword     nqcConstant	SERIAL_PACKET_RCX
 | 
						|
 | 
						|
" Functions - RCX2
 | 
						|
syn keyword	nqcFunction	SetSerialComm SetSerialPacket SetSerialData
 | 
						|
syn keyword	nqcFunction	SerialData SendSerial
 | 
						|
 | 
						|
" VLL - Scout ----------------------------------------
 | 
						|
" Functions - Scout
 | 
						|
syn keyword	nqcFunction	SendVLL
 | 
						|
 | 
						|
 | 
						|
" Timers ---------------------------------------------
 | 
						|
" Functions - All
 | 
						|
syn keyword	nqcFunction	ClearTimer Timer
 | 
						|
 | 
						|
" Functions - RCX2
 | 
						|
syn keyword	nqcFunction	SetTimer FastTimer
 | 
						|
 | 
						|
 | 
						|
" Counters -------------------------------------------
 | 
						|
" Functions - RCX2, Scout
 | 
						|
syn keyword	nqcFunction	ClearCounter IncCounter DecCounter Counter
 | 
						|
 | 
						|
 | 
						|
" Access Control -------------------------------------
 | 
						|
syn keyword     nqcConstant	ACQUIRE_OUT_A ACQUIRE_OUT_B ACQUIRE_OUT_C
 | 
						|
syn keyword     nqcConstant	ACQUIRE_SOUND
 | 
						|
" RCX2 only
 | 
						|
syn keyword     nqcConstant	ACQUIRE_USER_1 ACQUIRE_USER_2 ACQUIRE_USER_3
 | 
						|
syn keyword     nqcConstant	ACQUIRE_USER_4
 | 
						|
 | 
						|
" Functions - RCX2, Scout
 | 
						|
syn keyword	nqcFunction	SetPriority
 | 
						|
 | 
						|
 | 
						|
" Events ---------------------------------------------
 | 
						|
" RCX2 Events
 | 
						|
syn keyword     nqcConstant	EVENT_TYPE_PRESSED EVENT_TYPE_RELEASED
 | 
						|
syn keyword     nqcConstant	EVENT_TYPE_PULSE EVENT_TYPE_EDGE
 | 
						|
syn keyword     nqcConstant	EVENT_TYPE_FAST_CHANGE EVENT_TYPE_LOW
 | 
						|
syn keyword     nqcConstant	EVENT_TYPE_NORMAL EVENT_TYPE_HIGH
 | 
						|
syn keyword     nqcConstant	EVENT_TYPE_CLICK EVENT_TYPE_DOUBLECLICK
 | 
						|
syn keyword     nqcConstant	EVENT_TYPE_MESSAGE
 | 
						|
 | 
						|
" Scout Events
 | 
						|
syn keyword     nqcConstant	EVENT_1_PRESSED EVENT_1_RELEASED
 | 
						|
syn keyword     nqcConstant	EVENT_2_PRESSED EVENT_2_RELEASED
 | 
						|
syn keyword     nqcConstant	EVENT_LIGHT_HIGH EVENT_LIGHT_NORMAL
 | 
						|
syn keyword     nqcConstant	EVENT_LIGHT_LOW EVENT_LIGHT_CLICK
 | 
						|
syn keyword     nqcConstant	EVENT_LIGHT_DOUBLECLICK EVENT_COUNTER_0
 | 
						|
syn keyword     nqcConstant	EVENT_COUNTER_1 EVENT_TIMER_0 EVENT_TIMER_1
 | 
						|
syn keyword     nqcConstant	EVENT_TIMER_2 EVENT_MESSAGE
 | 
						|
 | 
						|
" Functions - RCX2, Scout
 | 
						|
syn keyword	nqcFunction	ActiveEvents Event
 | 
						|
 | 
						|
" Functions - RCX2
 | 
						|
syn keyword	nqcFunction	CurrentEvents
 | 
						|
syn keyword	nqcFunction	SetEvent ClearEvent ClearAllEvents EventState
 | 
						|
syn keyword	nqcFunction	CalibrateEvent SetUpperLimit UpperLimit
 | 
						|
syn keyword	nqcFunction	SetLowerLimit LowerLimit SetHysteresis
 | 
						|
syn keyword	nqcFunction	Hysteresis
 | 
						|
syn keyword	nqcFunction	SetClickTime ClickTime SetClickCounter
 | 
						|
syn keyword	nqcFunction	ClickCounter
 | 
						|
 | 
						|
" Functions - Scout
 | 
						|
syn keyword	nqcFunction	SetSensorClickTime SetCounterLimit
 | 
						|
syn keyword	nqcFunction	SetTimerLimit
 | 
						|
 | 
						|
 | 
						|
" Data Logging ---------------------------------------
 | 
						|
" Functions - RCX
 | 
						|
syn keyword	nqcFunction	CreateDatalog AddToDatalog
 | 
						|
syn keyword	nqcFunction	UploadDatalog
 | 
						|
 | 
						|
 | 
						|
" General Features -----------------------------------
 | 
						|
" Functions - All
 | 
						|
syn keyword	nqcFunction	Wait StopAllTasks Random
 | 
						|
syn keyword	nqcFunction	SetSleepTime SleepNow
 | 
						|
 | 
						|
" Functions - RCX
 | 
						|
syn keyword	nqcFunction	Program Watch SetWatch
 | 
						|
 | 
						|
" Functions - RCX2
 | 
						|
syn keyword	nqcFunction	SetRandomSeed SelectProgram
 | 
						|
syn keyword	nqcFunction	BatteryLevel FirmwareVersion
 | 
						|
 | 
						|
" Functions - Scout
 | 
						|
" Parameters for SetLight()
 | 
						|
syn keyword     nqcConstant	LIGHT_ON LIGHT_OFF
 | 
						|
syn keyword	nqcFunction	SetScoutRules ScoutRules SetScoutMode
 | 
						|
syn keyword	nqcFunction	SetEventFeedback EventFeedback SetLight
 | 
						|
 | 
						|
" additional CyberMaster defines
 | 
						|
syn keyword     nqcConstant	OUT_L OUT_R OUT_X
 | 
						|
syn keyword     nqcConstant	SENSOR_L SENSOR_M SENSOR_R
 | 
						|
" Functions - CyberMaster
 | 
						|
syn keyword	nqcFunction	Drive OnWait OnWaitDifferent
 | 
						|
syn keyword	nqcFunction	ClearTachoCounter TachoCount TachoSpeed
 | 
						|
syn keyword	nqcFunction	ExternalMotorRunning AGC
 | 
						|
 | 
						|
 | 
						|
 | 
						|
" nqcCommentGroup allows adding matches for special things in comments
 | 
						|
syn keyword	nqcTodo		contained TODO FIXME XXX
 | 
						|
syn cluster	nqcCommentGroup	contains=nqcTodo
 | 
						|
 | 
						|
"when wanted, highlight trailing white space
 | 
						|
if exists("nqc_space_errors")
 | 
						|
  if !exists("nqc_no_trail_space_error")
 | 
						|
    syn match	nqcSpaceError	display excludenl "\s\+$"
 | 
						|
  endif
 | 
						|
  if !exists("nqc_no_tab_space_error")
 | 
						|
    syn match	nqcSpaceError	display " \+\t"me=e-1
 | 
						|
  endif
 | 
						|
endif
 | 
						|
 | 
						|
"catch errors caused by wrong parenthesis and brackets
 | 
						|
syn cluster	nqcParenGroup	contains=nqcParenError,nqcIncluded,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcCommentSkip,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers
 | 
						|
if exists("nqc_no_bracket_error")
 | 
						|
  syn region	nqcParen	transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen
 | 
						|
  " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
 | 
						|
  syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcParen
 | 
						|
  syn match	nqcParenError	display ")"
 | 
						|
  syn match	nqcErrInParen	display contained "[{}]"
 | 
						|
else
 | 
						|
  syn region	nqcParen		transparent start='(' end=')' contains=ALLBUT,@nqcParenGroup,nqcCppParen,nqcErrInBracket,nqcCppBracket
 | 
						|
  " nqcCppParen: same as nqcParen but ends at end-of-line; used in nqcDefine
 | 
						|
  syn region	nqcCppParen	transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInBracket,nqcParen,nqcBracket
 | 
						|
  syn match	nqcParenError	display "[\])]"
 | 
						|
  syn match	nqcErrInParen	display contained "[\]{}]"
 | 
						|
  syn region	nqcBracket	transparent start='\[' end=']' contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcCppParen,nqcCppBracket
 | 
						|
  " nqcCppBracket: same as nqcParen but ends at end-of-line; used in nqcDefine
 | 
						|
  syn region	nqcCppBracket	transparent start='\[' skip='\\$' excludenl end=']' end='$' contained contains=ALLBUT,@nqcParenGroup,nqcErrInParen,nqcParen,nqcBracket
 | 
						|
  syn match	nqcErrInBracket	display contained "[);{}]"
 | 
						|
endif
 | 
						|
 | 
						|
"integer number, or floating point number without a dot and with "f".
 | 
						|
syn case ignore
 | 
						|
syn match	nqcNumbers	display transparent "\<\d\|\.\d" contains=nqcNumber,nqcFloat
 | 
						|
" Same, but without octal error (for comments)
 | 
						|
syn match	nqcNumber	display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
 | 
						|
"hex number
 | 
						|
syn match	nqcNumber	display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
 | 
						|
" Flag the first zero of an octal number as something special
 | 
						|
syn match	nqcFloat	display contained "\d\+f"
 | 
						|
"floating point number, with dot, optional exponent
 | 
						|
syn match	nqcFloat	display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
 | 
						|
"floating point number, starting with a dot, optional exponent
 | 
						|
syn match	nqcFloat	display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
 | 
						|
"floating point number, without dot, with exponent
 | 
						|
syn match	nqcFloat	display contained "\d\+e[-+]\=\d\+[fl]\=\>"
 | 
						|
" flag an octal number with wrong digits
 | 
						|
syn case match
 | 
						|
 | 
						|
syn region	nqcCommentL	start="//" skip="\\$" end="$" keepend contains=@nqcCommentGroup,nqcSpaceError
 | 
						|
syn region	nqcComment	matchgroup=nqcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@nqcCommentGroup,nqcCommentStartError,nqcSpaceError
 | 
						|
 | 
						|
" keep a // comment separately, it terminates a preproc. conditional
 | 
						|
syntax match	nqcCommentError	display "\*/"
 | 
						|
syntax match	nqcCommentStartError display "/\*" contained
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
syn region	nqcPreCondit	start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=nqcComment,nqcCharacter,nqcCppParen,nqcParenError,nqcNumbers,nqcCommentError,nqcSpaceError
 | 
						|
syn match	nqcPreCondit	display "^\s*#\s*\(else\|endif\)\>"
 | 
						|
if !exists("nqc_no_if0")
 | 
						|
  syn region	nqcCppOut		start="^\s*#\s*if\s\+0\>" end=".\|$" contains=nqcCppOut2
 | 
						|
  syn region	nqcCppOut2	contained start="0" end="^\s*#\s*\(endif\>\|else\>\|elif\>\)" contains=nqcSpaceError,nqcCppSkip
 | 
						|
  syn region	nqcCppSkip	contained start="^\s*#\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*#\s*endif\>" contains=nqcSpaceError,nqcCppSkip
 | 
						|
endif
 | 
						|
syn region	nqcIncluded	display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
 | 
						|
syn match	nqcInclude	display "^\s*#\s*include\>\s*["]" contains=nqcIncluded
 | 
						|
"syn match nqcLineSkip	"\\$"
 | 
						|
syn cluster	nqcPreProcGroup	contains=nqcPreCondit,nqcIncluded,nqcInclude,nqcDefine,nqcErrInParen,nqcErrInBracket,nqcCppOut,nqcCppOut2,nqcCppSkip,nqcNumber,nqcFloat,nqcNumbers,nqcCommentSkip,@nqcCommentGroup,nqcCommentStartError,nqcParen,nqcBracket
 | 
						|
syn region	nqcDefine	start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" contains=ALLBUT,@nqcPreProcGroup
 | 
						|
syn region	nqcPreProc	start="^\s*#\s*\(pragma\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@nqcPreProcGroup
 | 
						|
 | 
						|
if !exists("nqc_minlines")
 | 
						|
  if !exists("nqc_no_if0")
 | 
						|
    let nqc_minlines = 50	    " #if 0 constructs can be long
 | 
						|
  else
 | 
						|
    let nqc_minlines = 15	    " mostly for () constructs
 | 
						|
  endif
 | 
						|
endif
 | 
						|
exec "syn sync ccomment nqcComment minlines=" . nqc_minlines
 | 
						|
 | 
						|
" Define the default highlighting.
 | 
						|
" Only when an item doesn't have highlighting yet
 | 
						|
 | 
						|
" The default methods for highlighting.  Can be overridden later
 | 
						|
hi def link nqcLabel		Label
 | 
						|
hi def link nqcConditional		Conditional
 | 
						|
hi def link nqcRepeat		Repeat
 | 
						|
hi def link nqcCharacter		Character
 | 
						|
hi def link nqcNumber		Number
 | 
						|
hi def link nqcFloat		Float
 | 
						|
hi def link nqcFunction		Function
 | 
						|
hi def link nqcParenError		nqcError
 | 
						|
hi def link nqcErrInParen		nqcError
 | 
						|
hi def link nqcErrInBracket	nqcError
 | 
						|
hi def link nqcCommentL		nqcComment
 | 
						|
hi def link nqcCommentStart	nqcComment
 | 
						|
hi def link nqcCommentError	nqcError
 | 
						|
hi def link nqcCommentStartError	nqcError
 | 
						|
hi def link nqcSpaceError		nqcError
 | 
						|
hi def link nqcStorageClass	StorageClass
 | 
						|
hi def link nqcInclude		Include
 | 
						|
hi def link nqcPreProc		PreProc
 | 
						|
hi def link nqcDefine		Macro
 | 
						|
hi def link nqcIncluded		String
 | 
						|
hi def link nqcError		Error
 | 
						|
hi def link nqcStatement		Statement
 | 
						|
hi def link nqcEvents		Statement
 | 
						|
hi def link nqcPreCondit		PreCondit
 | 
						|
hi def link nqcType		Type
 | 
						|
hi def link nqcConstant		Constant
 | 
						|
hi def link nqcCommentSkip		nqcComment
 | 
						|
hi def link nqcComment		Comment
 | 
						|
hi def link nqcTodo		Todo
 | 
						|
hi def link nqcCppSkip		nqcCppOut
 | 
						|
hi def link nqcCppOut2		nqcCppOut
 | 
						|
hi def link nqcCppOut		Comment
 | 
						|
 | 
						|
 | 
						|
let b:current_syntax = "nqc"
 | 
						|
 | 
						|
" vim: ts=8
 |