" Copyright 2015 The Chromium Authors
" Use of this source code is governed by a BSD-style license that can be
" found in the LICENSE file.
" Vim syntax file
" Language: Mojom
" To get syntax highlighting for .mojom files, add the following to your .vimrc
" file:
" set runtimepath+=/path/to/src/tools/vim/mojom
if exists("b:current_syntax")
finish
endif
syn case match
syntax region mojomFold start="{" end="}" transparent fold
" Keywords
syntax keyword mojomType bool string int8 int16 int32 int64 uint8 uint16
syntax keyword mojomType uint32 uint64 float double array
syntax match mojomImport "^\(import\)\s"
syntax keyword mojomKeyword const module interface enum struct union associated
syntax match mojomOperator /=>/
syntax match mojomOperator /?/
" Comments
syntax keyword mojomTodo contained TODO FIXME XXX
syntax region mojomDocLink contained start="\[" end="\]"
syntax region mojomComment start="/\*" end="\*/" contains=mojomTodo,mojomDocLink,@Spell
syntax match mojomLineComment "//.*" contains=mojomTodo,mojomDocLink,@Spell
" Literals
syntax match mojomBoolean /true\|false/
" Negative lookahead for "." so floats are not partly highlighted as integers.
syntax match mojomInteger /-\=[0-9]\(\.\)\@!/
syntax match mojomFloat /[0-9]\+\.[0-9]*\|[0-9]*\.[0-9]\+/
syntax region mojomString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell
" Attributes
syntax match mojomAttribute /\[[^\]]*\]/
" The default highlighting.
highlight default link mojomTodo Todo
highlight default link mojomComment Comment
highlight default link mojomLineComment Comment
highlight default link mojomDocLink SpecialComment
highlight default link mojomType Type
highlight default link mojomImport Include
highlight default link mojomKeyword Keyword
highlight default link mojomOperator Operator
highlight default link mojomString String
highlight default link mojomInteger Number
highlight default link mojomBoolean Boolean
highlight default link mojomFloat Float
highlight default link mojomAttribute Label
let b:current_syntax = "mojom"
let b:spell_options = "contained"
syn sync minlines=500