view runtime/syntax/treetop.vim @ 8667:8c80c21a1885 v7.4.1623

commit https://github.com/vim/vim/commit/e9d6a298df6108e2044b1f0da5a2712f0c51c7d9 Author: Bram Moolenaar <Bram@vim.org> Date: Sun Mar 20 19:31:33 2016 +0100 patch 7.4.1623 Problem: All Channels share the message ID, it keeps getting bigger. Solution: Use a message ID per channel.
author Christian Brabandt <cb@256bit.org>
date Sun, 20 Mar 2016 19:45:04 +0100
parents 6f63330ec225
children 1218c5353e2b
line wrap: on
line source

" Vim syntax file
" Language:         Treetop
" Maintainer:       Nikolai Weibull <now@bitwi.se>
" Latest Revision:  2011-03-14

if exists("b:current_syntax")
  finish
endif

let s:cpo_save = &cpo
set cpo&vim

syn keyword treetopTodo
      \ contained
      \ TODO
      \ FIXME
      \ XXX
      \ NOTE

syn match treetopComment
                        \ '#.*'
                        \ display
                        \ contains=treetopTodo

syn include @treetopRuby syntax/ruby.vim
unlet b:current_syntax

syn keyword treetopKeyword
                         \ require
                         \ end
syn region  treetopKeyword
                         \ matchgroup=treetopKeyword
                         \ start='\<\%(grammar\|include\|module\)\>\ze\s'
                         \ end='$'
                         \ transparent
                         \ oneline
                         \ keepend
                         \ contains=@treetopRuby
syn keyword treetopKeyword
                         \ rule
                         \ nextgroup=treetopRuleName
                         \ skipwhite skipnl

syn match   treetopGrammarName
                             \ '\u\w*'
                             \ contained

syn match   treetopRubyModuleName
                                \ '\u\w*'
                                \ contained

syn match   treetopRuleName
                          \ '\h\w*'
                          \ contained

syn region  treetopString
                        \ matchgroup=treetopStringDelimiter
                        \ start=+"+
                        \ end=+"+
syn region  treetopString
                        \ matchgroup=treetopStringDelimiter
                        \ start=+'+
                        \ end=+'+

syn region  treetopCharacterClass
                                \ matchgroup=treetopCharacterClassDelimiter
                                \ start=+\[+
                                \ skip=+\\\]+
                                \ end=+\]+

syn region  treetopRubyBlock
                           \ matchgroup=treetopRubyBlockDelimiter
                           \ start=+{+
                           \ end=+}+
                           \ contains=@treetopRuby

syn region  treetopSemanticPredicate
                           \ matchgroup=treetopSemanticPredicateDelimiter
                           \ start=+[!&]{+
                           \ end=+}+
                           \ contains=@treetopRuby

syn region  treetopSubclassDeclaration
                           \ matchgroup=treetopSubclassDeclarationDelimiter
                           \ start=+<+
                           \ end=+>+
                           \ contains=@treetopRuby

syn match   treetopEllipsis
                          \ +''+

hi def link treetopTodo                         Todo
hi def link treetopComment                      Comment
hi def link treetopKeyword                      Keyword
hi def link treetopGrammarName                  Constant
hi def link treetopRubyModuleName               Constant
hi def link treetopRuleName                     Identifier
hi def link treetopString                       String
hi def link treetopStringDelimiter              treetopString
hi def link treetopCharacterClass               treetopString
hi def link treetopCharacterClassDelimiter      treetopCharacterClass
hi def link treetopRubyBlockDelimiter           PreProc
hi def link treetopSemanticPredicateDelimiter   PreProc
hi def link treetopSubclassDeclarationDelimiter PreProc
hi def link treetopEllipsis                     Special

let b:current_syntax = 'treetop'

let &cpo = s:cpo_save
unlet s:cpo_save