diff --git a/.vim/colors/baraknew.vim b/.vim/colors/baraknew.vim index e8fbbf0..2877989 100644 --- a/.vim/colors/baraknew.vim +++ b/.vim/colors/baraknew.vim @@ -45,13 +45,13 @@ hi Comment ctermfg=34 cterm=none " -------------- " any constant hi Constant guifg=#e3ac3d gui=none -hi Constant ctermfg=137 cterm=none +hi Constant ctermfg=172 cterm=none " strings -hi String guifg=#e02626 gui=none -hi String ctermfg=160 cterm=none +hi String guifg=#f05656 gui=none +hi String ctermfg=203 cterm=none " character constant hi Character guifg=#e3ac3d gui=none -hi Character ctermfg=137 cterm=none +hi Character ctermfg=172 cterm=none " numbers decimal/hex hi Number guifg=#eead0e gui=none hi Number ctermfg=214 cterm=none @@ -69,41 +69,43 @@ hi Float ctermfg=116 cterm=none hi Identifier guifg=#00bfff gui=none hi Identifier ctermfg=39 cterm=none " function, method, class -hi Function guifg=#8e72c7 gui=none -hi Function ctermfg=98 cterm=none +"hi Function guifg=#8e72c7 gui=none +"hi Function ctermfg=98 cterm=none +hi Function guifg=#c5a6ff gui=none +hi Function ctermfg=141 cterm=none " Statement Group " --------------- " any statement -hi Statement guifg=#4876ff gui=none -hi Statement ctermfg=33 cterm=none +hi Statement guifg=#4876ff gui=bold +hi Statement ctermfg=33 cterm=bold " if, then, else "XXX Test this out "hi Conditional guifg=#b3d38c gui=none "hi Conditional ctermfg=150 cterm=none -hi Conditional guifg=#73e1e6 gui=none -hi Conditional ctermfg=111 cterm=none +hi Conditional guifg=#5fa6e8 gui=bold +hi Conditional ctermfg=75 cterm=bold " try, catch, throw, raise "XXX Test this out "hi Exception guifg=#b3d38c gui=none "hi Exception ctermfg=150 cterm=none -hi Exception guifg=#73e1e6 gui=none -hi Exception ctermfg=111 cterm=none +hi Exception guifg=#5fa6e8 gui=bold +hi Exception ctermfg=75 cterm=bold " for, while, do "XXX Test this out "hi Repeat guifg=#b3d38c gui=none "hi Repeat ctermfg=150 cterm=none -hi Repeat guifg=#73e1e6 gui=none -hi Repeat ctermfg=111 cterm=none +hi Repeat guifg=#5fa6e8 gui=bold +hi Repeat ctermfg=75 cterm=bold " case, default -hi Label guifg=#4876ff gui=none -hi Label ctermfg=69 cterm=none +hi Label guifg=#4876ff gui=bold +hi Label ctermfg=69 cterm=bold " sizeof, +, * "hi Operator guifg=#b3d38c gui=none "hi Operator ctermfg=150 cterm=none -hi Operator guifg=#73e1e6 gui=none -hi Operator ctermfg=111 cterm=none +hi Operator guifg=#5fa6e8 gui=bold +hi Operator ctermfg=75 cterm=bold " any other keyword hi Keyword guifg=#b3d38c gui=none hi Keyword ctermfg=150 cterm=none @@ -132,38 +134,40 @@ hi PreCondit ctermfg=223 cterm=none " ---------- " int, long, char hi Type guifg=#73e1e6 gui=none -hi Type ctermfg=111 cterm=none +hi Type ctermfg=116 cterm=none " static, register, volative hi StorageClass guifg=#66b7e1 gui=none -hi StorageClass ctermfg=111 cterm=none +hi StorageClass ctermfg=116 cterm=none " struct, union, enum hi Structure guifg=#73e1e6 gui=none -hi Structure ctermfg=111 cterm=none +hi Structure ctermfg=116 cterm=none " typedef hi Typedef guifg=#73e1e6 gui=none -hi Typedef ctermfg=111 cterm=none +hi Typedef ctermfg=116 cterm=none " Special Group " ------------- " any special symbol -hi Special guifg=#cca3b3 gui=none -hi Special ctermfg=181 cterm=none +"hi Special guifg=#cca3b3 gui=none +"hi Special ctermfg=227 cterm=none +hi Special guifg=#c2b742 gui=none +hi Special ctermfg=179 cterm=none " special character in a constant -hi SpecialChar guifg=#cca3b3 gui=none -hi SpecialChar ctermfg=181 cterm=none +hi SpecialChar guifg=#c2b742 gui=none +hi SpecialChar ctermfg=179 cterm=none " things you can CTRL-] -hi Tag guifg=#cca3b3 gui=none -hi Tag ctermfg=181 cterm=none +hi Tag guifg=#c2b742 gui=none +hi Tag ctermfg=179 cterm=none " character that needs attention -hi Delimiter guifg=#cca3b3 gui=none -hi Delimiter ctermfg=181 cterm=none +hi Delimiter guifg=#c2b742 gui=none +hi Delimiter ctermfg=179 cterm=none " special things inside a comment -hi SpecialComment guifg=#cca3b3 gui=none -hi SpecialComment ctermfg=181 cterm=none +hi SpecialComment guifg=#c2b742 gui=none +hi SpecialComment ctermfg=179 cterm=none " debugging statements -hi Debug guifg=#cca3b3 guibg=NONE gui=none -hi Debug ctermfg=181 ctermbg=NONE cterm=none +hi Debug guifg=#c2b742 guibg=NONE gui=none +hi Debug ctermfg=179 ctermbg=NONE cterm=none " Underlined Group @@ -190,8 +194,8 @@ hi Error ctermfg=167 ctermbg=52 cterm=none " Todo Group " ---------- " todo, fixme, note, xxx -hi Todo guifg=#efefaf guibg=#434323 gui=none -hi Todo ctermfg=229 ctermbg=58 cterm=none +hi Todo guifg=#efefaf guibg=#434323 gui=bold +hi Todo ctermfg=229 ctermbg=58 cterm=bold " Spelling diff --git a/.vim/syntax/c.vim b/.vim/syntax/c.vim new file mode 100644 index 0000000..8381244 --- /dev/null +++ b/.vim/syntax/c.vim @@ -0,0 +1,377 @@ +" Vim syntax file +" Language: C +" Maintainer: Bram Moolenaar +" Last Change: 2008 Mar 19 + +" Quit when a (custom) syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +" A bunch of useful C keywords +syn keyword cStatement goto break return continue asm +syn keyword cLabel case default +syn keyword cConditional if else switch +syn keyword cRepeat while for do + +syn keyword cTodo contained TODO FIXME XXX + +" cCommentGroup allows adding matches for special things in comments +syn cluster cCommentGroup contains=cTodo + +" String and Character constants +" Highlight special characters (those which have a backslash) differently +syn match cSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)" +if !exists("c_no_utf") + syn match cSpecial display contained "\\\(u\x\{4}\|U\x\{8}\)" +endif +if exists("c_no_cformat") + syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,@Spell + " cCppString: same as cString, but ends at end of line + syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,@Spell +else + if !exists("c_no_c99") " ISO C99 + syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlLjzt]\|ll\|hh\)\=\([aAbdiuoxXDOUfFeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained + else + syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([bdiuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained + endif + syn match cFormat display "%%" contained + syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat,@Spell + " cCppString: same as cString, but ends at end of line + syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat,@Spell +endif + +syn match cCharacter "L\='[^\\]'" +syn match cCharacter "L'[^']*'" contains=cSpecial +if exists("c_gnu") + syn match cSpecialError "L\='\\[^'\"?\\abefnrtv]'" + syn match cSpecialCharacter "L\='\\['\"?\\abefnrtv]'" +else + syn match cSpecialError "L\='\\[^'\"?\\abfnrtv]'" + syn match cSpecialCharacter "L\='\\['\"?\\abfnrtv]'" +endif +syn match cSpecialCharacter display "L\='\\\o\{1,3}'" +syn match cSpecialCharacter display "'\\x\x\{1,2}'" +syn match cSpecialCharacter display "L'\\x\x\+'" + +"when wanted, highlight trailing white space +if exists("c_space_errors") + if !exists("c_no_trail_space_error") + syn match cSpaceError display excludenl "\s\+$" + endif + if !exists("c_no_tab_space_error") + syn match cSpaceError display " \+\t"me=e-1 + endif +endif + +" This should be before cErrInParen to avoid problems with #define ({ xxx }) +if exists("c_curly_error") + syntax match cCurlyError "}" + syntax region cBlock start="{" end="}" contains=ALLBUT,cCurlyError,@cParenGroup,cErrInParen,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell fold +else + syntax region cBlock start="{" end="}" transparent fold +endif + +"catch errors caused by wrong parenthesis and brackets +" also accept <% for {, %> for }, <: for [ and :> for ] (C99) +" But avoid matching <::. +syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom +if exists("c_no_curly_error") + syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell + " cCppParen: same as cParen but ends at end-of-line; used in cDefine + syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell + syn match cParenError display ")" + syn match cErrInParen display contained "^[{}]\|^<%\|^%>" +elseif exists("c_no_bracket_error") + syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString,@Spell + " cCppParen: same as cParen but ends at end-of-line; used in cDefine + syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cParen,cString,@Spell + syn match cParenError display ")" + syn match cErrInParen display contained "[{}]\|<%\|%>" +else + syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString,@Spell + " cCppParen: same as cParen but ends at end-of-line; used in cDefine + syn region cCppParen transparent start='(' skip='\\$' excludenl end=')' end='$' contained contains=ALLBUT,@cParenGroup,cErrInBracket,cParen,cBracket,cString,@Spell + syn match cParenError display "[\])]" + syn match cErrInParen display contained "[\]{}]\|<%\|%>" + syn region cBracket transparent start='\[\|<::\@!' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString,@Spell + " cCppBracket: same as cParen but ends at end-of-line; used in cDefine + syn region cCppBracket transparent start='\[\|<::\@!' skip='\\$' excludenl end=']\|:>' end='$' contained contains=ALLBUT,@cParenGroup,cErrInParen,cParen,cBracket,cString,@Spell + syn match cErrInBracket display contained "[);{}]\|<%\|%>" +endif + +"integer number, or floating point number without a dot and with "f". +syn case ignore +syn match cNumbers display transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctalError,cOctal +" Same, but without octal error (for comments) +syn match cNumbersCom display contained transparent "\<\d\|\.\d" contains=cNumber,cFloat,cOctal +syn match cNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>" +"hex number +syn match cNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>" +" Flag the first zero of an octal number as something special +syn match cOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=cOctalZero +syn match cOctalZero display contained "\<0" +syn match cFloat display contained "\d\+f" +"floating point number, with dot, optional exponent +syn match cFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\=" +"floating point number, starting with a dot, optional exponent +syn match cFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>" +"floating point number, without dot, with exponent +syn match cFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>" +if !exists("c_no_c99") + "hexadecimal floating point number, optional leading digits, with dot, with exponent + syn match cFloat display contained "0x\x*\.\x\+p[-+]\=\d\+[fl]\=\>" + "hexadecimal floating point number, with leading digits, optional dot, with exponent + syn match cFloat display contained "0x\x\+\.\=p[-+]\=\d\+[fl]\=\>" +endif + +" flag an octal number with wrong digits +syn match cOctalError display contained "0\o*[89]\d*" +syn case match + +if exists("c_comment_strings") + " A comment can contain cString, cCharacter and cNumber. + " But a "*/" inside a cString in a cComment DOES end the comment! So we + " need to use a special type of cString: cCommentString, which also ends on + " "*/", and sees a "*" at the start of the line as comment again. + " Unfortunately this doesn't very well work for // type of comments :-( + syntax match cCommentSkip contained "^\s*\*\($\|\s\+\)" + syntax region cCommentString contained start=+L\=\\\@" skip="\\$" end="$" end="//"me=s-1 contains=cComment,cCppString,cCharacter,cCppParen,cParenError,cNumbers,cCommentError,cSpaceError +syn match cPreCondit display "^\s*\(%:\|#\)\s*\(else\|endif\)\>" +if !exists("c_no_if0") + if !exists("c_no_if0_fold") + syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2 fold + else + syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2 + endif + syn region cCppOut2 contained start="0" end="^\s*\(%:\|#\)\s*\(endif\>\|else\>\|elif\>\)" contains=cSpaceError,cCppSkip + syn region cCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=cSpaceError,cCppSkip +endif +syn region cIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+ +syn match cIncluded display contained "<[^>]*>" +syn match cInclude display "^\s*\(%:\|#\)\s*include\>\s*["<]" contains=cIncluded +"syn match cLineSkip "\\$" +syn cluster cPreProcGroup contains=cPreCondit,cIncluded,cInclude,cDefine,cErrInParen,cErrInBracket,cUserLabel,cSpecial,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cString,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cParen,cBracket,cMulti +syn region cDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 keepend contains=ALLBUT,@cPreProcGroup,@Spell +syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup,@Spell + +" Highlight User Labels +syn cluster cMultiGroup contains=cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom,cCppParen,cCppBracket,cCppString +syn region cMulti transparent start='?' skip='::' end=':' contains=ALLBUT,@cMultiGroup,@Spell +" Avoid matching foo::bar() in C++ by requiring that the next char is not ':' +syn cluster cLabelGroup contains=cUserLabel +syn match cUserCont display "^\s*\I\i*\s*:$" contains=@cLabelGroup +syn match cUserCont display ";\s*\I\i*\s*:$" contains=@cLabelGroup +syn match cUserCont display "^\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup +syn match cUserCont display ";\s*\I\i*\s*:[^:]"me=e-1 contains=@cLabelGroup + +syn match cUserLabel display "\I\i*" contained + +" Avoid recognizing most bitfields as labels +syn match cBitField display "^\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType +syn match cBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1 contains=cType + +" Highlight Class and Function names +syn match cCustomParen "(" contains=cParen contains=cCppParen +syn match cCustomFunc "\w\+\s*(" contains=cCustomParen +syn match cCustomScope "::" +syn match cCustomClass "\w\+\s*::" contains=cCustomScope + +hi def link cCustomFunc Function +hi def link cCustomClass Function + +if exists("c_minlines") + let b:c_minlines = c_minlines +else + if !exists("c_no_if0") + let b:c_minlines = 50 " #if 0 constructs can be long + else + let b:c_minlines = 15 " mostly for () constructs + endif +endif +if exists("c_curly_error") + syn sync fromstart +else + exec "syn sync ccomment cComment minlines=" . b:c_minlines +endif + +" Define the default highlighting. +" Only used when an item doesn't have highlighting yet +hi def link cFormat cSpecial +hi def link cCppString cString +hi def link cCommentL cComment +hi def link cCommentStart cComment +hi def link cLabel Label +hi def link cUserLabel Label +hi def link cConditional Conditional +hi def link cRepeat Repeat +hi def link cCharacter Character +hi def link cSpecialCharacter cSpecial +hi def link cNumber Number +hi def link cOctal Number +hi def link cOctalZero PreProc " link this to Error if you want +hi def link cFloat Float +hi def link cOctalError cError +hi def link cParenError cError +hi def link cErrInParen cError +hi def link cErrInBracket cError +hi def link cCommentError cError +hi def link cCommentStartError cError +hi def link cSpaceError cError +hi def link cSpecialError cError +hi def link cCurlyError cError +hi def link cOperator Operator +hi def link cStructure Structure +hi def link cStorageClass StorageClass +hi def link cInclude Include +hi def link cPreProc PreProc +hi def link cDefine Macro +hi def link cIncluded cString +hi def link cError Error +hi def link cStatement Statement +hi def link cPreCondit PreCondit +hi def link cType Type +hi def link cConstant Constant +hi def link cCommentString cString +hi def link cComment2String cString +hi def link cCommentSkip cComment +hi def link cString String +hi def link cComment Comment +hi def link cSpecial SpecialChar +hi def link cTodo Todo +hi def link cCppSkip cCppOut +hi def link cCppOut2 cCppOut +hi def link cCppOut Comment + +let b:current_syntax = "c" + +" vim: ts=8