From 96e9c416ae940753b57891b9852cfd834f9bd191 Mon Sep 17 00:00:00 2001 From: Adam Stankiewicz Date: Sat, 14 Sep 2013 11:36:13 +0200 Subject: [PATCH] Add protobuf format support, closes #2 --- README.md | 1 + build | 1 + ftdetect/proto.vim | 1 + syntax/proto.vim | 106 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 109 insertions(+) create mode 100644 ftdetect/proto.vim create mode 100644 syntax/proto.vim diff --git a/README.md b/README.md index 8237090..4c89d5a 100644 --- a/README.md +++ b/README.md @@ -47,6 +47,7 @@ Optionally download one of the [releases](https://github.com/sheerun/vim-polyglo - [octave](https://github.com/vim-scripts/octave.vim--) (syntax) - [php](https://github.com/spf13/PIV) (syntax, indent, autoload, ftplugin) - [puppet](https://github.com/ajf/puppet-vim) (syntax, indent, ftplugin, ftdetect) +- [protobuf](https://github.com/uarun/vim-protobuf) (syntax, ftdetect) - [python](https://github.com/vim-scripts/python.vim--Vasiliev) (syntax) - [rspec](https://github.com/skwp/vim-rspec) (syntax) - [ruby](https://github.com/vim-ruby/vim-ruby) (syntax, indent, compiler, autoload, ftplugin, ftdetect) diff --git a/build b/build index 8439421..67f143c 100755 --- a/build +++ b/build @@ -83,6 +83,7 @@ PACKS=" octave:vim-scripts/octave.vim-- php:spf13/PIV puppet:ajf/puppet-vim + protobuf:uarun/vim-protobuf python:vim-scripts/python.vim--Vasiliev rspec:skwp/vim-rspec ruby:vim-ruby/vim-ruby diff --git a/ftdetect/proto.vim b/ftdetect/proto.vim new file mode 100644 index 0000000..3974660 --- /dev/null +++ b/ftdetect/proto.vim @@ -0,0 +1 @@ +autocmd BufNewFile,BufRead *.proto setfiletype proto diff --git a/syntax/proto.vim b/syntax/proto.vim new file mode 100644 index 0000000..42f3307 --- /dev/null +++ b/syntax/proto.vim @@ -0,0 +1,106 @@ +" Protocol Buffers - Google's data interchange format +" Copyright 2008 Google Inc. All rights reserved. +" http://code.google.com/p/protobuf/ +" +" Redistribution and use in source and binary forms, with or without +" modification, are permitted provided that the following conditions are +" met: +" +" * Redistributions of source code must retain the above copyright +" notice, this list of conditions and the following disclaimer. +" * Redistributions in binary form must reproduce the above +" copyright notice, this list of conditions and the following disclaimer +" in the documentation and/or other materials provided with the +" distribution. +" * Neither the name of Google Inc. nor the names of its +" contributors may be used to endorse or promote products derived from +" this software without specific prior written permission. +" +" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +" "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +" A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +" OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +" SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +" LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +" OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +" This is the Vim syntax file for Google Protocol Buffers. +" +" Usage: +" +" 1. cp proto.vim ~/.vim/syntax/ +" 2. Add the following to ~/.vimrc: +" +" augroup filetype +" au! BufRead,BufNewFile *.proto setfiletype proto +" augroup end +" +" Or just create a new file called ~/.vim/ftdetect/proto.vim with the +" previous lines on it. + +if version < 600 + syntax clear +elseif exists("b:current_syntax") + finish +endif + +syn case match + +syn keyword pbTodo contained TODO FIXME XXX +syn cluster pbCommentGrp contains=pbTodo + +syn keyword pbSyntax syntax import option +syn keyword pbStructure package message group +syn keyword pbRepeat optional required repeated +syn keyword pbDefault default +syn keyword pbExtend extend extensions to max +syn keyword pbRPC service rpc returns + +syn keyword pbType int32 int64 uint32 uint64 sint32 sint64 +syn keyword pbType fixed32 fixed64 sfixed32 sfixed64 +syn keyword pbType float double bool string bytes +syn keyword pbTypedef enum +syn keyword pbBool true false + +syn match pbInt /-\?\<\d\+\>/ +syn match pbInt /\<0[xX]\x+\>/ +syn match pbFloat /\<-\?\d*\(\.\d*\)\?/ +" TODO: .proto also supports C-style block comments; +" see /usr/share/vim/vim70/syntax/c.vim for how it's done. +syn region pbComment start="//" skip="\\$" end="$" keepend contains=@pbCommentGrp +syn region pbString start=/"/ skip=/\\"/ end=/"/ +syn region pbString start=/'/ skip=/\\'/ end=/'/ + +if version >= 508 || !exists("did_proto_syn_inits") + if version < 508 + let did_proto_syn_inits = 1 + command -nargs=+ HiLink hi link + else + command -nargs=+ HiLink hi def link + endif + + HiLink pbTodo Todo + + HiLink pbSyntax Include + HiLink pbStructure Structure + HiLink pbRepeat Repeat + HiLink pbDefault Keyword + HiLink pbExtend Keyword + HiLink pbRPC Keyword + HiLink pbType Type + HiLink pbTypedef Typedef + HiLink pbBool Boolean + + HiLink pbInt Number + HiLink pbFloat Float + HiLink pbComment Comment + HiLink pbString String + + delcommand HiLink +endif + +let b:current_syntax = "proto"