mirror of
				https://github.com/neovim/neovim.git
				synced 2025-11-04 01:34:25 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			VimL
		
	
	
	
	
	
" Vim syntax file
 | 
						|
" Language:	GNU Assembler
 | 
						|
" Maintainer:	Erik Wognsen <erik.wognsen@gmail.com>
 | 
						|
"		Previous maintainer:
 | 
						|
"		Kevin Dahlhausen <kdahlhaus@yahoo.com>
 | 
						|
" Last Change:	2014 Feb 04
 | 
						|
 | 
						|
" Thanks to Ori Avtalion for feedback on the comment markers!
 | 
						|
 | 
						|
" quit when a syntax file was already loaded
 | 
						|
if exists("b:current_syntax")
 | 
						|
  finish
 | 
						|
endif
 | 
						|
 | 
						|
let s:cpo_save = &cpo
 | 
						|
set cpo&vim
 | 
						|
 | 
						|
syn case ignore
 | 
						|
 | 
						|
" storage types
 | 
						|
syn match asmType "\.long"
 | 
						|
syn match asmType "\.ascii"
 | 
						|
syn match asmType "\.asciz"
 | 
						|
syn match asmType "\.byte"
 | 
						|
syn match asmType "\.double"
 | 
						|
syn match asmType "\.float"
 | 
						|
syn match asmType "\.hword"
 | 
						|
syn match asmType "\.int"
 | 
						|
syn match asmType "\.octa"
 | 
						|
syn match asmType "\.quad"
 | 
						|
syn match asmType "\.short"
 | 
						|
syn match asmType "\.single"
 | 
						|
syn match asmType "\.space"
 | 
						|
syn match asmType "\.string"
 | 
						|
syn match asmType "\.word"
 | 
						|
 | 
						|
syn match asmLabel		"[a-z_][a-z0-9_]*:"he=e-1
 | 
						|
syn match asmIdentifier		"[a-z_][a-z0-9_]*"
 | 
						|
 | 
						|
" Various #'s as defined by GAS ref manual sec 3.6.2.1
 | 
						|
" Technically, the first decNumber def is actually octal,
 | 
						|
" since the value of 0-7 octal is the same as 0-7 decimal,
 | 
						|
" I (Kevin) prefer to map it as decimal:
 | 
						|
syn match decNumber		"0\+[1-7]\=[\t\n$,; ]"
 | 
						|
syn match decNumber		"[1-9]\d*"
 | 
						|
syn match octNumber		"0[0-7][0-7]\+"
 | 
						|
syn match hexNumber		"0[xX][0-9a-fA-F]\+"
 | 
						|
syn match binNumber		"0[bB][0-1]*"
 | 
						|
 | 
						|
syn keyword asmTodo		contained TODO
 | 
						|
 | 
						|
 | 
						|
" GAS supports one type of multi line comments:
 | 
						|
syn region asmComment		start="/\*" end="\*/" contains=asmTodo
 | 
						|
 | 
						|
" GAS (undocumentedly?) supports C++ style comments. Unlike in C/C++ however,
 | 
						|
" a backslash ending a C++ style comment does not extend the comment to the
 | 
						|
" next line (hence the syntax region does not define 'skip="\\$"')
 | 
						|
syn region asmComment		start="//" end="$" keepend contains=asmTodo
 | 
						|
 | 
						|
" Line comment characters depend on the target architecture and command line
 | 
						|
" options and some comments may double as logical line number directives or
 | 
						|
" preprocessor commands. This situation is described at
 | 
						|
" http://sourceware.org/binutils/docs-2.22/as/Comments.html
 | 
						|
" Some line comment characters have other meanings for other targets. For
 | 
						|
" example, .type directives may use the `@' character which is also an ARM
 | 
						|
" comment marker.
 | 
						|
" As a compromise to accommodate what I arbitrarily assume to be the most
 | 
						|
" frequently used features of the most popular architectures (and also the
 | 
						|
" non-GNU assembly languages that use this syntax file because their asm files
 | 
						|
" are also named *.asm), the following are used as line comment characters:
 | 
						|
syn match asmComment		"[#;!|].*" contains=asmTodo
 | 
						|
 | 
						|
" Side effects of this include:
 | 
						|
" - When `;' is used to separate statements on the same line (many targets
 | 
						|
"   support this), all statements except the first get highlighted as
 | 
						|
"   comments. As a remedy, remove `;' from the above.
 | 
						|
" - ARM comments are not highlighted correctly. For ARM, uncomment the
 | 
						|
"   following two lines and comment the one above.
 | 
						|
"syn match asmComment		"@.*" contains=asmTodo
 | 
						|
"syn match asmComment		"^#.*" contains=asmTodo
 | 
						|
 | 
						|
" Advanced users of specific architectures will probably want to change the
 | 
						|
" comment highlighting or use a specific, more comprehensive syntax file.
 | 
						|
 | 
						|
syn match asmInclude		"\.include"
 | 
						|
syn match asmCond		"\.if"
 | 
						|
syn match asmCond		"\.else"
 | 
						|
syn match asmCond		"\.endif"
 | 
						|
syn match asmMacro		"\.macro"
 | 
						|
syn match asmMacro		"\.endm"
 | 
						|
 | 
						|
" Assembler directives start with a '.' and may contain upper case (e.g.,
 | 
						|
" .ABORT), numbers (e.g., .p2align), dash (e.g., .app-file) and underscore in
 | 
						|
" CFI directives (e.g., .cfi_startproc). This will also match labels starting
 | 
						|
" with '.', including the GCC auto-generated '.L' labels.
 | 
						|
syn match asmDirective		"\.[A-Za-z][0-9A-Za-z-_]*"
 | 
						|
 | 
						|
 | 
						|
syn case match
 | 
						|
 | 
						|
" 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 asmSection	Special
 | 
						|
hi def link asmLabel	Label
 | 
						|
hi def link asmComment	Comment
 | 
						|
hi def link asmTodo	Todo
 | 
						|
hi def link asmDirective	Statement
 | 
						|
 | 
						|
hi def link asmInclude	Include
 | 
						|
hi def link asmCond	PreCondit
 | 
						|
hi def link asmMacro	Macro
 | 
						|
 | 
						|
hi def link hexNumber	Number
 | 
						|
hi def link decNumber	Number
 | 
						|
hi def link octNumber	Number
 | 
						|
hi def link binNumber	Number
 | 
						|
 | 
						|
hi def link asmIdentifier	Identifier
 | 
						|
hi def link asmType	Type
 | 
						|
 | 
						|
 | 
						|
let b:current_syntax = "asm"
 | 
						|
 | 
						|
let &cpo = s:cpo_save
 | 
						|
unlet s:cpo_save
 | 
						|
 | 
						|
" vim: ts=8
 |