summaryrefslogtreecommitdiffstats
path: root/old
diff options
context:
space:
mode:
Diffstat (limited to 'old')
-rw-r--r--old/colors/adobe.vim87
-rw-r--r--old/colors/desert256.vim341
-rw-r--r--old/colors/herald.vim408
-rw-r--r--old/colors/void.vim111
-rw-r--r--old/filetype.vim18
-rw-r--r--old/indent/edc.vim83
-rw-r--r--old/indent/indent_pir.vim75
-rw-r--r--old/indent/scala.vim85
-rwxr-xr-xold/install14
-rw-r--r--old/scripts/bepo-layout.vim102
-rw-r--r--old/scripts/closetag.vim327
-rwxr-xr-xold/skeletons.rb47
-rw-r--r--old/skeletons/Makefile.erb18
-rw-r--r--old/skeletons/Makefile.lou.erb39
-rw-r--r--old/skeletons/README.erb62
-rw-r--r--old/skeletons/__init__.py.erb5
-rw-r--r--old/skeletons/awk.erb9
-rw-r--r--old/skeletons/awk.hdr12
-rw-r--r--old/skeletons/c.erb9
-rw-r--r--old/skeletons/c.hdr9
-rw-r--r--old/skeletons/c_header.erb20
-rw-r--r--old/skeletons/cst.erb14
-rw-r--r--old/skeletons/eo.erb51
-rw-r--r--old/skeletons/html.erb19
-rw-r--r--old/skeletons/java.erb66
-rw-r--r--old/skeletons/lout.erb43
-rw-r--r--old/skeletons/main.c.erb134
-rw-r--r--old/skeletons/main.h.erb26
-rw-r--r--old/skeletons/opt_parse.py.erb60
-rw-r--r--old/skeletons/pir.erb5
-rw-r--r--old/skeletons/python.erb42
-rw-r--r--old/skeletons/python.hdr13
-rw-r--r--old/skeletons/ruby.erb12
-rw-r--r--old/skeletons/ruby.hdr14
-rw-r--r--old/skeletons/setup.py.erb28
-rw-r--r--old/skeletons/setup.rb.erb1596
-rw-r--r--old/skeletons/sh.erb32
-rw-r--r--old/skeletons/sh.hdr12
-rw-r--r--old/skeletons/tex.erb74
-rw-r--r--old/skeletons/wxApp.py.erb126
-rw-r--r--old/syntax/edc.vim259
-rw-r--r--old/syntax/embryo.vim195
-rw-r--r--old/syntax/eo.vim106
-rw-r--r--old/syntax/pasm.vim87
-rw-r--r--old/syntax/pir.vim156
-rw-r--r--old/syntax/pmc.vim350
-rw-r--r--old/syntax/ragel.vim165
-rw-r--r--old/syntax/scala.vim151
-rw-r--r--old/syntax/tjp.vim706
-rw-r--r--old/vimperatorrc2
-rw-r--r--old/vimrc187
-rw-r--r--old/vimrc-bepo7
-rw-r--r--old/vimrc.bepo82
53 files changed, 6701 insertions, 0 deletions
diff --git a/old/colors/adobe.vim b/old/colors/adobe.vim
new file mode 100644
index 0000000..e516fbc
--- /dev/null
+++ b/old/colors/adobe.vim
@@ -0,0 +1,87 @@
+" Vim color file
+" Maintainer: mdelliot
+" Last Change: $Date: 2005-09-23 08:53:22 -0700 (Fri, 23 Sep 2005) $
+" Revsision: $Revision: 38 $
+" Version: 0.2
+" Info: Adobe theme, easy on eyes.
+"
+""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
+" Philosophy:
+"
+" - Nothing should be bold unless it's very important and should stand
+" out above all other things. Functions/Classes are good for this.
+"
+" - Colors should be easy on eyes to stare at for many hours.
+"
+" - Todos should stand out just a little (underline looks nice).
+"
+" - Comments should be stand out less than anything else.
+"
+" - Strings should be a beautiful color since much documentation should
+" exist in source code as strings (think """ comments in python or /**
+" in java).
+"
+" - Normal text should be colored either black or white so it is obvious
+" if something is not recognized syntax.
+"
+" - No two used colors should be highly similar.
+
+set background=dark
+hi clear
+if exists("syntax_on")
+ syntax reset
+endif
+let g:colors_name = "adobe"
+
+"hi Normal guibg=#a0a087 ctermbg=black
+
+" Cursor
+hi Cursor guibg=Yellow guifg=NONE ctermfg=NONE ctermbg=yellow
+
+" Search
+hi Search guibg=green ctermfg=green
+
+" Fold
+hi Folded guibg=#a0a087
+
+" Split area
+hi StatusLine gui=reverse guibg=white
+
+" Messages
+hi ModeMsg gui=none
+hi MoreMsg gui=reverse
+hi Question gui=NONE guifg=#ffff60 guibg=NONE
+
+" Other
+hi Todo gui=underline guifg=white guibg=NONE cterm=bold,underline ctermbg=NONE
+hi NonText guifg=blue ctermfg=darkblue
+hi VisualNOS gui=underline
+hi Title gui=none
+
+" Diff
+hi DiffDelete gui=none
+hi DiffText gui=none
+
+" Html
+hi htmlBoldUnderline gui=underline
+hi htmlBold gui=none
+hi htmlBoldItalic gui=none
+hi htmlBoldUnderlineItalic gui=underline
+
+" Syntax group
+hi Comment guifg=darkgrey gui=reverse ctermfg=darkgrey
+hi Statement guifg=orange4 gui=none ctermfg=brown
+hi Type guifg=#22229a gui=none ctermfg=yellow
+hi String guifg=#005522 ctermfg=darkgreen
+hi PreProc guifg=#0066ff ctermfg=darkcyan
+hi Special guifg=purple3 ctermfg=darkmagenta
+hi Constant guifg=red4 ctermfg=darkred
+hi Identifier guifg=red ctermfg=red
+hi Function guifg=darkred gui=bold ctermfg=magenta
+hi Underlined guifg=yellow ctermfg=yellow
+
+" OLD ATTEMPTS
+"hi Normal guibg=#b0b097 ctermbg=black
+"hi String guifg=#0099aa ctermfg=brown
+"hi String guifg=#0055dd ctermfg=brown
+"hi Special guifg=darkblue ctermfg=none
diff --git a/old/colors/desert256.vim b/old/colors/desert256.vim
new file mode 100644
index 0000000..9385fd4
--- /dev/null
+++ b/old/colors/desert256.vim
@@ -0,0 +1,341 @@
+" Vim color file
+" Maintainer: Henry So, Jr. <henryso@panix.com>
+
+" These are the colors of the "desert" theme by Hans Fugal with a few small
+" modifications (namely that I lowered the intensity of the normal white and
+" made the normal and nontext backgrounds black), modified to work with 88-
+" and 256-color xterms.
+"
+" The original "desert" theme is available as part of the vim distribution or
+" at http://hans.fugal.net/vim/colors/.
+"
+" The real feature of this color scheme, with a wink to the "inkpot" theme, is
+" the programmatic approximation of the gui colors to the palettes of 88- and
+" 256- color xterms. The functions that do this (folded away, for
+" readability) are calibrated to the colors used for Thomas E. Dickey's xterm
+" (version 200), which is available at http://dickey.his.com/xterm/xterm.html.
+"
+" I struggled with trying to parse the rgb.txt file to avoid the necessity of
+" converting color names to #rrggbb form, but decided it was just not worth
+" the effort. Maybe someone seeing this may decide otherwise...
+
+set background=dark
+if version > 580
+ " no guarantees for version 5.8 and below, but this makes it stop
+ " complaining
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+let g:colors_name="desert256"
+
+if has("gui_running") || &t_Co == 88 || &t_Co == 256
+ " functions {{{
+ " returns an approximate grey index for the given grey level
+ fun <SID>grey_number(x)
+ if &t_Co == 88
+ if a:x < 23
+ return 0
+ elseif a:x < 69
+ return 1
+ elseif a:x < 103
+ return 2
+ elseif a:x < 127
+ return 3
+ elseif a:x < 150
+ return 4
+ elseif a:x < 173
+ return 5
+ elseif a:x < 196
+ return 6
+ elseif a:x < 219
+ return 7
+ elseif a:x < 243
+ return 8
+ else
+ return 9
+ endif
+ else
+ if a:x < 14
+ return 0
+ else
+ let l:n = (a:x - 8) / 10
+ let l:m = (a:x - 8) % 10
+ if l:m < 5
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+ endfun
+
+ " returns the actual grey level represented by the grey index
+ fun <SID>grey_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 46
+ elseif a:n == 2
+ return 92
+ elseif a:n == 3
+ return 115
+ elseif a:n == 4
+ return 139
+ elseif a:n == 5
+ return 162
+ elseif a:n == 6
+ return 185
+ elseif a:n == 7
+ return 208
+ elseif a:n == 8
+ return 231
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 8 + (a:n * 10)
+ endif
+ endif
+ endfun
+
+ " returns the palette index for the given grey index
+ fun <SID>grey_color(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 16
+ elseif a:n == 9
+ return 79
+ else
+ return 79 + a:n
+ endif
+ else
+ if a:n == 0
+ return 16
+ elseif a:n == 25
+ return 231
+ else
+ return 231 + a:n
+ endif
+ endif
+ endfun
+
+ " returns an approximate color index for the given color level
+ fun <SID>rgb_number(x)
+ if &t_Co == 88
+ if a:x < 69
+ return 0
+ elseif a:x < 172
+ return 1
+ elseif a:x < 230
+ return 2
+ else
+ return 3
+ endif
+ else
+ if a:x < 75
+ return 0
+ else
+ let l:n = (a:x - 55) / 40
+ let l:m = (a:x - 55) % 40
+ if l:m < 20
+ return l:n
+ else
+ return l:n + 1
+ endif
+ endif
+ endif
+ endfun
+
+ " returns the actual color level for the given color index
+ fun <SID>rgb_level(n)
+ if &t_Co == 88
+ if a:n == 0
+ return 0
+ elseif a:n == 1
+ return 139
+ elseif a:n == 2
+ return 205
+ else
+ return 255
+ endif
+ else
+ if a:n == 0
+ return 0
+ else
+ return 55 + (a:n * 40)
+ endif
+ endif
+ endfun
+
+ " returns the palette index for the given R/G/B color indices
+ fun <SID>rgb_color(x, y, z)
+ if &t_Co == 88
+ return 16 + (a:x * 16) + (a:y * 4) + a:z
+ else
+ return 16 + (a:x * 36) + (a:y * 6) + a:z
+ endif
+ endfun
+
+ " returns the palette index to approximate the given R/G/B color levels
+ fun <SID>color(r, g, b)
+ " get the closest grey
+ let l:gx = <SID>grey_number(a:r)
+ let l:gy = <SID>grey_number(a:g)
+ let l:gz = <SID>grey_number(a:b)
+
+ " get the closest color
+ let l:x = <SID>rgb_number(a:r)
+ let l:y = <SID>rgb_number(a:g)
+ let l:z = <SID>rgb_number(a:b)
+
+ if l:gx == l:gy && l:gy == l:gz
+ " there are two possibilities
+ let l:dgr = <SID>grey_level(l:gx) - a:r
+ let l:dgg = <SID>grey_level(l:gy) - a:g
+ let l:dgb = <SID>grey_level(l:gz) - a:b
+ let l:dgrey = (l:dgr * l:dgr) + (l:dgg * l:dgg) + (l:dgb * l:dgb)
+ let l:dr = <SID>rgb_level(l:gx) - a:r
+ let l:dg = <SID>rgb_level(l:gy) - a:g
+ let l:db = <SID>rgb_level(l:gz) - a:b
+ let l:drgb = (l:dr * l:dr) + (l:dg * l:dg) + (l:db * l:db)
+ if l:dgrey < l:drgb
+ " use the grey
+ return <SID>grey_color(l:gx)
+ else
+ " use the color
+ return <SID>rgb_color(l:x, l:y, l:z)
+ endif
+ else
+ " only one possibility
+ return <SID>rgb_color(l:x, l:y, l:z)
+ endif
+ endfun
+
+ " returns the palette index to approximate the 'rrggbb' hex string
+ fun <SID>rgb(rgb)
+ let l:r = ("0x" . strpart(a:rgb, 0, 2)) + 0
+ let l:g = ("0x" . strpart(a:rgb, 2, 2)) + 0
+ let l:b = ("0x" . strpart(a:rgb, 4, 2)) + 0
+
+ return <SID>color(l:r, l:g, l:b)
+ endfun
+
+ " sets the highlighting for the given group
+ fun <SID>X(group, fg, bg, attr)
+ if a:fg != ""
+ exec "hi " . a:group . " guifg=#" . a:fg . " ctermfg=" . <SID>rgb(a:fg)
+ endif
+ if a:bg != ""
+ exec "hi " . a:group . " guibg=#" . a:bg . " ctermbg=" . <SID>rgb(a:bg)
+ endif
+ if a:attr != ""
+ exec "hi " . a:group . " gui=" . a:attr . " cterm=" . a:attr
+ endif
+ endfun
+ " }}}
+
+ call <SID>X("Normal", "cccccc", "000000", "")
+
+ " highlight groups
+ call <SID>X("Cursor", "708090", "f0e68c", "")
+ "CursorIM
+ call <SID>X("CursorLine", "", "404040", "none")
+ "Directory
+ "DiffAdd
+ "DiffChange
+ "DiffDelete
+ "DiffText
+ "ErrorMsg
+ call <SID>X("VertSplit", "c2bfa5", "7f7f7f", "reverse")
+ call <SID>X("Folded", "ffd700", "4d4d4d", "")
+ call <SID>X("FoldColumn", "d2b48c", "4d4d4d", "")
+ call <SID>X("IncSearch", "708090", "f0e68c", "")
+ "LineNr
+ call <SID>X("ModeMsg", "daa520", "", "")
+ call <SID>X("MoreMsg", "2e8b57", "", "")
+ "call <SID>X("NonText", "addbe7", "000000", "bold")
+ call <SID>X("NonText", "64646a", "000000", "bold")
+ call <SID>X("Question", "00ff7f", "", "")
+ call <SID>X("Search", "f5deb3", "cd853f", "")
+ "call <SID>X("SpecialKey", "9acd32", "", "")
+ call <SID>X("SpecialKey", "64646a", "", "")
+ call <SID>X("StatusLine", "c2bfa5", "000000", "reverse")
+ call <SID>X("StatusLineNC", "c2bfa5", "7f7f7f", "reverse")
+ call <SID>X("Title", "cd5c5c", "", "")
+ call <SID>X("Visual", "6b8e23", "f0e68c", "reverse")
+ "VisualNOS
+ call <SID>X("WarningMsg", "fa8072", "", "")
+ "WildMenu
+ "Menu
+ "Scrollbar
+ "Tooltip
+
+ " syntax highlighting groups
+ call <SID>X("Comment", "87ceeb", "", "")
+ call <SID>X("Constant", "ffa0a0", "", "")
+ call <SID>X("Identifier", "98fb98", "", "none")
+ call <SID>X("Statement", "f0e68c", "", "bold")
+ call <SID>X("PreProc", "cd5c5c", "", "")
+ call <SID>X("Type", "bdb76b", "", "bold")
+ call <SID>X("Special", "ffdead", "", "")
+ "Underlined
+ call <SID>X("Ignore", "666666", "", "")
+ "Error
+ call <SID>X("Todo", "ff4500", "eeee00", "")
+
+ " delete functions {{{
+ delf <SID>X
+ delf <SID>rgb
+ delf <SID>color
+ delf <SID>rgb_color
+ delf <SID>rgb_level
+ delf <SID>rgb_number
+ delf <SID>grey_color
+ delf <SID>grey_level
+ delf <SID>grey_number
+ " }}}
+else
+ " color terminal definitions
+ hi SpecialKey ctermfg=darkgreen
+ hi NonText cterm=bold ctermfg=darkblue
+ hi Directory ctermfg=darkcyan
+ hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1
+ hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green
+ hi Search cterm=NONE ctermfg=grey ctermbg=blue
+ hi MoreMsg ctermfg=darkgreen
+ hi ModeMsg cterm=NONE ctermfg=brown
+ hi LineNr ctermfg=3
+ hi Question ctermfg=green
+ hi StatusLine cterm=bold,reverse
+ hi StatusLineNC cterm=reverse
+ hi VertSplit cterm=reverse
+ hi Title ctermfg=5
+ hi Visual cterm=reverse
+ hi VisualNOS cterm=bold,underline
+ hi WarningMsg ctermfg=1
+ hi WildMenu ctermfg=0 ctermbg=3
+ hi Folded ctermfg=darkgrey ctermbg=NONE
+ hi FoldColumn ctermfg=darkgrey ctermbg=NONE
+ hi DiffAdd ctermbg=4
+ hi DiffChange ctermbg=5
+ hi DiffDelete cterm=bold ctermfg=4 ctermbg=6
+ hi DiffText cterm=bold ctermbg=1
+ hi Comment ctermfg=darkcyan
+ hi Constant ctermfg=brown
+ hi Special ctermfg=5
+ hi Identifier ctermfg=6
+ hi Statement ctermfg=3
+ hi PreProc ctermfg=5
+ hi Type ctermfg=2
+ hi Underlined cterm=underline ctermfg=5
+ hi Ignore ctermfg=darkgrey
+ hi Error cterm=bold ctermfg=7 ctermbg=1
+endif
+
+" vim: set fdl=0 fdm=marker:
diff --git a/old/colors/herald.vim b/old/colors/herald.vim
new file mode 100644
index 0000000..05e20a3
--- /dev/null
+++ b/old/colors/herald.vim
@@ -0,0 +1,408 @@
+" Vim color file
+" Name: herald.vim
+" Author: Fabio Cevasco <h3rald@h3rald.com>
+" Version: 0.2.2
+" Notes: Supports 8, 16, 256 and 16,777,216 (RGB) color modes
+
+hi clear
+
+if exists("syntax_on")
+ syntax reset
+endif
+
+let colors_name = "herald"
+
+set background=dark
+
+" Set some syntax-related variables
+let ruby_operators = 1
+
+if has("gui_running")
+
+ " -> Text; Miscellaneous
+ hi Normal guibg=#1F1F1F guifg=#D0D0D0 gui=none
+ hi SpecialKey guibg=#1F1F1F guifg=#E783E9 gui=none
+ hi VertSplit guibg=#1F1F1F guifg=#FFEE68 gui=none
+ hi SignColumn guibg=#1F1F1F guifg=#BF81FA gui=none
+ hi NonText guibg=#1F1F1F guifg=#FC6984 gui=none
+ hi Directory guibg=#1F1F1F guifg=#FFEE68 gui=none
+ hi Title guibg=#1F1F1F guifg=#6DF584 gui=bold
+
+ " -> Cursor
+ hi Cursor guibg=#FFEE68 guifg=#1F1F1F gui=none
+ hi CursorIM guibg=#FFEE68 guifg=#1F1F1F gui=none
+ hi CursorColumn guibg=#000000 gui=none
+ hi CursorLine guibg=#000000 gui=none
+
+ " -> Folding
+ hi FoldColumn guibg=#001336 guifg=#003DAD gui=none
+ hi Folded guibg=#001336 guifg=#003DAD gui=none
+
+ " -> Line info
+ hi LineNr guibg=#000000 guifg=#696567 gui=none
+ hi StatusLine guibg=#000000 guifg=#696567 gui=none
+ hi StatusLineNC guibg=#25365a guifg=#696567 gui=none
+
+ " -> Messages
+ hi ErrorMsg guibg=#A32024 guifg=#D0D0D0 gui=none
+ hi Question guibg=#1F1F1F guifg=#FFA500 gui=none
+ hi WarningMsg guibg=#FFA500 guifg=#000000 gui=none
+ hi MoreMsg guibg=#1F1F1F guifg=#FFA500 gui=none
+ hi ModeMsg guibg=#1F1F1F guifg=#FFA500 gui=none
+
+ " -> Search
+ hi Search guibg=#696567 guifg=#FFEE68 gui=none
+ hi IncSearch guibg=#696567 guifg=#FFEE68 gui=none
+
+ " -> Diff
+ hi DiffAdd guibg=#006124 guifg=#ED9000 gui=none
+ hi DiffChange guibg=#0B294A guifg=#A36000 gui=none
+ hi DiffDelete guibg=#081F38 guifg=#ED9000 gui=none
+ hi DiffText guibg=#12457D guifg=#ED9000 gui=underline
+
+ " -> Menu
+ hi Pmenu guibg=#140100 guifg=#660300 gui=none
+ hi PmenuSel guibg=#F17A00 guifg=#4C0200 gui=none
+ hi PmenuSbar guibg=#430300 gui=none
+ hi PmenuThumb guibg=#720300 gui=none
+ hi PmenuSel guibg=#F17A00 guifg=#4C0200 gui=none
+
+ " -> Tabs
+ hi TabLine guibg=#141414 guifg=#696567 gui=none
+ hi TabLineFill guibg=#000000 gui=none
+ hi TabLineSel guibg=#1F1F1F guifg=#D0D0D0 gui=none
+ "
+ " -> Visual Mode
+ hi Visual guibg=#000000 guifg=#FFB539 gui=none
+ hi VisualNOS guibg=#000000 guifg=#696567 gui=none
+
+ " -> Code
+ hi Comment guibg=#1F1F1F guifg=#696567 gui=none
+ hi Constant guibg=#1F1F1F guifg=#6DF584 gui=none
+ hi String guibg=#1F1F1F guifg=#FFB539 gui=none
+ hi Error guibg=#1F1F1F guifg=#FC4234 gui=none
+ hi Identifier guibg=#1F1F1F guifg=#70BDF1 gui=none
+ hi Function guibg=#1F1F1F guifg=#90CBF1 gui=none
+ hi Ignore guibg=#1F1F1F guifg=#1F1F1F gui=none
+ hi MatchParen guibg=#FFA500 guifg=#1F1F1F gui=none
+ hi PreProc guibg=#1F1F1F guifg=#BF81FA gui=none
+ hi Special guibg=#1F1F1F guifg=#FFEE68 gui=none
+ hi Todo guibg=#1F1F1F guifg=#FC4234 gui=bold
+ hi Underlined guibg=#1F1F1F guifg=#FC4234 gui=underline
+ hi Statement guibg=#1F1F1F guifg=#E783E9 gui=none
+ hi Operator guibg=#1F1F1F guifg=#FC6984 gui=none
+ hi Delimiter guibg=#1F1F1F guifg=#FC6984 gui=none
+ hi Type guibg=#1F1F1F guifg=#FFEE68 gui=none
+ hi Exception guibg=#1F1F1F guifg=#FC4234 gui=none
+
+ " -> HTML-specific
+ hi htmlBold guibg=#1F1F1F guifg=#D0D0D0 gui=bold
+ hi htmlBoldItalic guibg=#1F1F1F guifg=#D0D0D0 gui=bold,italic
+ hi htmlBoldUnderline guibg=#1F1F1F guifg=#D0D0D0 gui=bold,underline
+ hi htmlBoldUnderlineItalic guibg=#1F1F1F guifg=#D0D0D0 gui=bold,underline,italic
+ hi htmlItalic guibg=#1F1F1F guifg=#D0D0D0 gui=italic
+ hi htmlUnderline guibg=#1F1F1F guifg=#D0D0D0 gui=underline
+ hi htmlUnderlineItalic guibg=#1F1F1F guifg=#D0D0D0 gui=underline,italic
+
+ " Spellcheck formatting
+ if has("spell")
+ hi SpellBad guisp=#FC4234 gui=undercurl
+ hi SpellCap guisp=#70BDF1 gui=undercurl
+ hi SpellLocal guisp=#FFEE68 gui=undercurl
+ hi SpellRare guisp=#6DF584 gui=undercurl
+ endif
+
+elseif &t_Co == 256
+
+ " -> Text; Miscellaneous
+ hi Normal ctermbg=234 ctermfg=252 cterm=none
+ hi SpecialKey ctermbg=234 ctermfg=176 cterm=none
+ hi VertSplit ctermbg=234 ctermfg=227 cterm=none
+ hi SignColumn ctermbg=234 ctermfg=141 cterm=none
+ hi NonText ctermbg=234 ctermfg=204 cterm=none
+ hi Directory ctermbg=234 ctermfg=227 cterm=none
+ hi Title ctermbg=234 ctermfg=84 cterm=bold
+
+ " -> Cursor
+ hi Cursor ctermbg=227 ctermfg=234 cterm=none
+ hi CursorIM ctermbg=227 ctermfg=234 cterm=none
+ hi CursorColumn ctermbg=0 cterm=none
+ hi CursorLine ctermbg=0 cterm=none
+
+ " -> Folding
+ hi FoldColumn ctermbg=234 ctermfg=25 cterm=none
+ hi Folded ctermbg=234 ctermfg=25 cterm=none
+
+ " -> Line info
+ hi LineNr ctermbg=0 ctermfg=241 cterm=none
+ hi StatusLine ctermbg=0 ctermfg=241 cterm=none
+ hi StatusLineNC ctermbg=237 ctermfg=241 cterm=none
+
+ " -> Messages
+ hi ErrorMsg ctermbg=124 ctermfg=252 cterm=none
+ hi Question ctermbg=234 ctermfg=214 cterm=none
+ hi WarningMsg ctermbg=214 ctermfg=0 cterm=none
+ hi MoreMsg ctermbg=234 ctermfg=214 cterm=none
+ hi ModeMsg ctermbg=234 ctermfg=214 cterm=none
+
+ " -> Search
+ hi Search ctermbg=241 ctermfg=227 cterm=none
+ hi IncSearch ctermbg=241 ctermfg=227 cterm=none
+
+ " -> Diff
+ hi DiffAdd ctermbg=22 ctermfg=208 cterm=none
+ hi DiffChange ctermbg=235 ctermfg=130 cterm=none
+ hi DiffDelete ctermbg=234 ctermfg=208 cterm=none
+ hi DiffText ctermbg=24 ctermfg=208 cterm=underline
+
+ " -> Menu
+ hi Pmenu ctermbg=0 ctermfg=52 cterm=none
+ hi PmenuSel ctermbg=208 ctermfg=52 cterm=none
+ hi PmenuSbar ctermbg=52 cterm=none
+ hi PmenuThumb ctermbg=52 cterm=none
+ hi PmenuSel ctermbg=208 ctermfg=52 cterm=none
+
+ " -> Tabs
+ hi TabLine ctermbg=233 ctermfg=241 cterm=none
+ hi TabLineFill ctermbg=0 cterm=none
+ hi TabLineSel ctermbg=234 ctermfg=252 cterm=none
+ "
+ " -> Visual Mode
+ hi Visual ctermbg=0 ctermfg=215 cterm=none
+ hi VisualNOS ctermbg=0 ctermfg=241 cterm=none
+
+ " -> Code
+ hi Comment ctermbg=234 ctermfg=241 cterm=none
+ hi Constant ctermbg=234 ctermfg=84 cterm=none
+ hi String ctermbg=234 ctermfg=215 cterm=none
+ hi Error ctermbg=234 ctermfg=203 cterm=none
+ hi Identifier ctermbg=234 ctermfg=75 cterm=none
+ hi Function ctermbg=234 ctermfg=117 cterm=none
+ hi Ignore ctermbg=234 ctermfg=234 cterm=none
+ hi MatchParen ctermbg=214 ctermfg=234 cterm=none
+ hi PreProc ctermbg=234 ctermfg=141 cterm=none
+ hi Special ctermbg=234 ctermfg=227 cterm=none
+ hi Todo ctermbg=234 ctermfg=203 cterm=bold
+ hi Underlined ctermbg=234 ctermfg=203 cterm=underline
+ hi Statement ctermbg=234 ctermfg=176 cterm=none
+ hi Operator ctermbg=234 ctermfg=204 cterm=none
+ hi Delimiter ctermbg=234 ctermfg=204 cterm=none
+ hi Type ctermbg=234 ctermfg=227 cterm=none
+ hi Exception ctermbg=234 ctermfg=203 cterm=none
+
+ " -> HTML-specific
+ hi htmlBold ctermbg=234 ctermfg=252 cterm=bold
+ hi htmlBoldItalic ctermbg=234 ctermfg=252 cterm=bold,italic
+ hi htmlBoldUnderline ctermbg=234 ctermfg=252 cterm=bold,underline
+ hi htmlBoldUnderlineItalic ctermbg=234 ctermfg=252 cterm=bold,underline,italic
+ hi htmlItalic ctermbg=234 ctermfg=252 cterm=italic
+ hi htmlUnderline ctermbg=234 ctermfg=252 cterm=underline
+ hi htmlUnderlineItalic ctermbg=234 ctermfg=252 cterm=underline,italic
+
+ " Spellcheck formatting
+ if has("spell")
+ hi SpellBad ctermbg=234 ctermfg=203 cterm=underline
+ hi SpellCap ctermbg=234 ctermfg=84 cterm=none
+ hi SpellLocal ctermbg=234 ctermfg=75 cterm=none
+ hi SpellRare ctermbg=234 ctermfg=227 cterm=none
+ endif
+
+elseif &t_Co == 16
+
+ " -> Text; Miscellaneous
+ hi Normal ctermbg=8 ctermfg=15 cterm=none
+ hi SpecialKey ctermbg=8 ctermfg=5 cterm=none
+ hi VertSplit ctermbg=8 ctermfg=14 cterm=none
+ hi SignColumn ctermbg=8 ctermfg=5 cterm=none
+ hi NonText ctermbg=8 ctermfg=4 cterm=none
+ hi Directory ctermbg=8 ctermfg=14 cterm=none
+ hi Title ctermbg=8 ctermfg=10 cterm=bold
+
+ " -> Cursor
+ hi Cursor ctermbg=14 ctermfg=8 cterm=none
+ hi CursorIM ctermbg=14 ctermfg=8 cterm=none
+ hi CursorColumn ctermbg=0 cterm=none
+ hi CursorLine ctermbg=0 cterm=none
+
+ " -> Folding
+ hi FoldColumn ctermbg=0 ctermfg=1 cterm=none
+ hi Folded ctermbg=0 ctermfg=1 cterm=none
+
+ " -> Line info
+ hi LineNr ctermbg=0 ctermfg=7 cterm=none
+ hi StatusLine ctermbg=0 ctermfg=7 cterm=none
+ hi StatusLineNC ctermbg=0 ctermfg=7 cterm=none
+
+ " -> Messages
+ hi ErrorMsg ctermbg=4 ctermfg=7 cterm=none
+ hi Question ctermbg=8 ctermfg=14 cterm=none
+ hi WarningMsg ctermbg=14 ctermfg=0 cterm=none
+ hi MoreMsg ctermbg=8 ctermfg=14 cterm=none
+ hi ModeMsg ctermbg=8 ctermfg=14 cterm=none
+
+ " -> Search
+ hi Search ctermbg=7 ctermfg=14 cterm=none
+ hi IncSearch ctermbg=7 ctermfg=14 cterm=none
+
+ " -> Diff
+ hi DiffAdd ctermbg=0 ctermfg=10 cterm=none
+ hi DiffChange ctermbg=0 ctermfg=14 cterm=none
+ hi DiffDelete ctermbg=0 ctermfg=12 cterm=none
+ hi DiffText ctermbg=1 ctermfg=14 cterm=underline
+
+ " -> Menu
+ hi Pmenu ctermbg=0 ctermfg=4 cterm=none
+ hi PmenuSel ctermbg=14 ctermfg=4 cterm=none
+ hi PmenuSbar ctermbg=0 cterm=none
+ hi PmenuThumb ctermbg=4 cterm=none
+ hi PmenuSel ctermbg=14 ctermfg=4 cterm=none
+
+ " -> Tabs
+ hi TabLine ctermbg=7 ctermfg=0 cterm=none
+ hi TabLineFill ctermbg=0 cterm=none
+ hi TabLineSel ctermbg=0 ctermfg=7 cterm=none
+ "
+ " -> Visual Mode
+ hi Visual ctermbg=0 ctermfg=14 cterm=none
+ hi VisualNOS ctermbg=0 ctermfg=7 cterm=none
+
+ " -> Code
+ hi Comment ctermbg=8 ctermfg=7 cterm=none
+ hi Constant ctermbg=8 ctermfg=10 cterm=none
+ hi String ctermbg=8 ctermfg=6 cterm=none
+ hi Error ctermbg=8 ctermfg=4 cterm=none
+ hi Identifier ctermbg=8 ctermfg=11 cterm=none
+ hi Function ctermbg=8 ctermfg=11 cterm=none
+ hi Ignore ctermbg=8 ctermfg=8 cterm=none
+ hi MatchParen ctermbg=14 ctermfg=8 cterm=none
+ hi PreProc ctermbg=8 ctermfg=5 cterm=none
+ hi Special ctermbg=8 ctermfg=14 cterm=none
+ hi Todo ctermbg=8 ctermfg=12 cterm=bold
+ hi Underlined ctermbg=8 ctermfg=12 cterm=underline
+ hi Statement ctermbg=8 ctermfg=13 cterm=none
+ hi Operator ctermbg=8 ctermfg=4 cterm=none
+ hi Delimiter ctermbg=8 ctermfg=4 cterm=none
+ hi Type ctermbg=8 ctermfg=14 cterm=none
+ hi Exception ctermbg=8 ctermfg=12 cterm=none
+
+ " -> HTML-specific
+ hi htmlBold ctermbg=8 ctermfg=7 cterm=bold
+ hi htmlBoldItalic ctermbg=8 ctermfg=7 cterm=bold,italic
+ hi htmlBoldUnderline ctermbg=8 ctermfg=7 cterm=bold,underline
+ hi htmlBoldUnderlineItalic ctermbg=8 ctermfg=7 cterm=bold,underline,italic
+ hi htmlItalic ctermbg=8 ctermfg=7 cterm=italic
+ hi htmlUnderline ctermbg=8 ctermfg=7 cterm=underline
+ hi htmlUnderlineItalic ctermbg=8 ctermfg=7 cterm=underline,italic
+
+ " Spellcheck formatting
+ if has("spell")
+ hi SpellBad ctermbg=8 ctermfg=4 cterm=underline
+ hi SpellCap ctermbg=8 ctermfg=10 cterm=none
+ hi SpellLocal ctermbg=8 ctermfg=11 cterm=none
+ hi SpellRare ctermbg=8 ctermfg=14 cterm=none
+ endif
+
+elseif &t_Co == 8
+
+ " -> Text; Miscellaneous
+ hi Normal ctermbg=8 ctermfg=7 cterm=none
+ hi SpecialKey ctermbg=8 ctermfg=5 cterm=none
+ hi VertSplit ctermbg=8 ctermfg=6 cterm=none
+ hi SignColumn ctermbg=8 ctermfg=5 cterm=none
+ hi NonText ctermbg=8 ctermfg=4 cterm=none
+ hi Directory ctermbg=8 ctermfg=6 cterm=none
+ hi Title ctermbg=8 ctermfg=2 cterm=bold
+
+ " -> Cursor
+ hi Cursor ctermbg=6 ctermfg=8 cterm=none
+ hi CursorIM ctermbg=6 ctermfg=8 cterm=none
+ hi CursorColumn ctermbg=0 cterm=none
+ hi CursorLine ctermbg=0 cterm=none
+
+ " -> Folding
+ hi FoldColumn ctermbg=0 ctermfg=1 cterm=none
+ hi Folded ctermbg=0 ctermfg=1 cterm=none
+
+ " -> Line info
+ hi LineNr ctermbg=0 ctermfg=7 cterm=none
+ hi StatusLine ctermbg=0 ctermfg=7 cterm=none
+ hi StatusLineNC ctermbg=0 ctermfg=7 cterm=none
+
+ " -> Messages
+ hi ErrorMsg ctermbg=4 ctermfg=7 cterm=none
+ hi Question ctermbg=8 ctermfg=6 cterm=none
+ hi WarningMsg ctermbg=6 ctermfg=0 cterm=none
+ hi MoreMsg ctermbg=8 ctermfg=6 cterm=none
+ hi ModeMsg ctermbg=8 ctermfg=6 cterm=none
+
+ " -> Search
+ hi Search ctermbg=7 ctermfg=6 cterm=none
+ hi IncSearch ctermbg=7 ctermfg=6 cterm=none
+
+ " -> Diff
+ hi DiffAdd ctermbg=0 ctermfg=2 cterm=none
+ hi DiffChange ctermbg=0 ctermfg=6 cterm=none
+ hi DiffDelete ctermbg=0 ctermfg=4 cterm=none
+ hi DiffText ctermbg=1 ctermfg=6 cterm=underline
+
+ " -> Menu
+ hi Pmenu ctermbg=0 ctermfg=4 cterm=none
+ hi PmenuSel ctermbg=6 ctermfg=4 cterm=none
+ hi PmenuSbar ctermbg=0 cterm=none
+ hi PmenuThumb ctermbg=4 cterm=none
+ hi PmenuSel ctermbg=6 ctermfg=4 cterm=none
+
+ " -> Tabs
+ hi TabLine ctermbg=7 ctermfg=0 cterm=none
+ hi TabLineFill ctermbg=0 cterm=none
+ hi TabLineSel ctermbg=0 ctermfg=7 cterm=none
+ "
+ " -> Visual Mode
+ hi Visual ctermbg=0 ctermfg=6 cterm=none
+ hi VisualNOS ctermbg=0 ctermfg=7 cterm=none
+
+ " -> Code
+ hi Comment ctermbg=8 ctermfg=7 cterm=none
+ hi Constant ctermbg=8 ctermfg=2 cterm=none
+ hi String ctermbg=8 ctermfg=6 cterm=none
+ hi Error ctermbg=8 ctermfg=4 cterm=none
+ hi Identifier ctermbg=8 ctermfg=3 cterm=none
+ hi Function ctermbg=8 ctermfg=3 cterm=none
+ hi Ignore ctermbg=8 ctermfg=8 cterm=none
+ hi MatchParen ctermbg=6 ctermfg=8 cterm=none
+ hi PreProc ctermbg=8 ctermfg=5 cterm=none
+ hi Special ctermbg=8 ctermfg=6 cterm=none
+ hi Todo ctermbg=8 ctermfg=4 cterm=bold
+ hi Underlined ctermbg=8 ctermfg=4 cterm=underline
+ hi Statement ctermbg=8 ctermfg=5 cterm=none
+ hi Operator ctermbg=8 ctermfg=4 cterm=none
+ hi Delimiter ctermbg=8 ctermfg=4 cterm=none
+ hi Type ctermbg=8 ctermfg=6 cterm=none
+ hi Exception ctermbg=8 ctermfg=4 cterm=none
+
+ " -> HTML-specific
+ hi htmlBold ctermbg=8 ctermfg=7 cterm=bold
+ hi htmlBoldItalic ctermbg=8 ctermfg=7 cterm=bold,italic
+ hi htmlBoldUnderline ctermbg=8 ctermfg=7 cterm=bold,underline
+ hi htmlBoldUnderlineItalic ctermbg=8 ctermfg=7 cterm=bold,underline,italic
+ hi htmlItalic ctermbg=8 ctermfg=7 cterm=italic
+ hi htmlUnderline ctermbg=8 ctermfg=7 cterm=underline
+ hi htmlUnderlineItalic ctermbg=8 ctermfg=7 cterm=underline,italic
+
+ " Spellcheck formatting
+ if has("spell")
+ hi SpellBad ctermbg=8 ctermfg=4 cterm=underline
+ hi SpellCap ctermbg=8 ctermfg=2 cterm=none
+ hi SpellLocal ctermbg=8 ctermfg=3 cterm=none
+ hi SpellRare ctermbg=8 ctermfg=6 cterm=none
+ endif
+
+endif
+
+hi! default link bbcodeBold htmlBold
+hi! default link bbcodeBoldItalic htmlBoldItalic
+hi! default link bbcodeBoldItalicUnderline htmlBoldUnderlineItalic
+hi! default link bbcodeBoldUnderline htmlBoldUnderline
+hi! default link bbcodeItalic htmlItalic
+hi! default link bbcodeItalicUnderline htmlUnderlineItalic
+hi! default link bbcodeUnderline htmlUnderline
diff --git a/old/colors/void.vim b/old/colors/void.vim
new file mode 100644
index 0000000..2d38738
--- /dev/null
+++ b/old/colors/void.vim
@@ -0,0 +1,111 @@
+" Vim color file
+" Maintainer: Andrew Lyon <orthecreedence@gmail.com>
+" Last Change: 2012-03-21 06:01:00 PST
+" Version: 2.1
+
+" Note that this color scheme is loosely based off of desert.vim (Hans Fugal
+" <hans@fugal.net>) mixed with some of slate.vim (Ralph Amissah
+" <ralph@amissah.com>) but with much of my own modification.
+
+set background=dark
+if version > 580
+ " no guarantees for version 5.8 and below, but this makes it stop
+ " complaining
+ hi clear
+ if exists("syntax_on")
+ syntax reset
+ endif
+endif
+let g:colors_name="void"
+
+hi Normal guifg=#e0e0e0 guibg=grey15
+
+" highlight groups
+hi Cursor guibg=khaki guifg=slategrey
+hi CursorLine guibg=darkgrey guifg=none ctermbg=darkgrey ctermfg=none cterm=none
+"hi CursorIM
+"hi Directory
+"hi DiffAdd
+"hi DiffChange
+"hi DiffDelete
+"hi DiffText
+"hi ErrorMsg
+hi VertSplit guibg=black guifg=black gui=none
+hi Folded guibg=grey30 guifg=gold
+hi FoldColumn guibg=grey30 guifg=tan
+hi IncSearch guifg=slategrey guibg=khaki
+"hi LineNr
+hi ModeMsg guifg=goldenrod
+hi MoreMsg guifg=SeaGreen
+hi NonText guifg=LightBlue guibg=grey30
+hi Question guifg=springgreen
+hi Search guibg=peru guifg=wheat
+hi SpecialKey guifg=yellowgreen
+hi StatusLine guibg=black guifg=#cccccc gui=none
+hi StatusLineNC guibg=black guifg=grey40 gui=none
+hi Title guifg=indianred
+hi Visual gui=none guifg=khaki guibg=olivedrab
+"hi VisualNOS
+hi WarningMsg guifg=salmon
+"hi WildMenu
+"hi Menu
+"hi Scrollbar
+"hi Tooltip
+
+" syntax highlighting groups
+"hi Comment guifg=grey50 ctermfg=darkcyan
+hi Comment guifg=darkgrey gui=reverse ctermfg=darkgrey
+hi Constant guifg=#e09085 ctermfg=brown
+hi Identifier guifg=#d0d0b0
+hi Statement guifg=#ccaa88 gui=bold cterm=bold term=bold
+"hi Statement guifg=darkkhaki
+hi PreProc guifg=#c8e0b0
+hi Type guifg=#99cccc term=NONE cterm=NONE gui=NONE
+hi Special guifg=#bbccee cterm=bold term=bold
+hi Operator guifg=navajowhite cterm=NONE
+"hi Underlined
+hi Ignore guifg=grey40
+"hi Error
+hi Todo guifg=orangered guibg=yellow2
+hi Todo guifg=orange guibg=gray40
+
+" Fuf/menu stuff
+hi Pmenu guifg=#aadddd guibg=#333333
+hi PmenuSel guifg=#ddeeee guibg=#335533
+
+" color terminal definitions
+hi SpecialKey ctermfg=darkgreen
+hi NonText guibg=grey15 cterm=bold ctermfg=darkblue
+hi Directory ctermfg=brown guifg=#ddbb66
+hi ErrorMsg cterm=bold ctermfg=7 ctermbg=1
+hi IncSearch cterm=NONE ctermfg=yellow ctermbg=green
+hi Search cterm=NONE ctermfg=grey ctermbg=blue
+hi MoreMsg ctermfg=darkgreen
+hi ModeMsg cterm=NONE ctermfg=brown
+hi LineNr guifg=grey50 ctermfg=3
+hi Question ctermfg=green
+hi StatusLine cterm=bold,reverse
+hi StatusLineNC cterm=reverse
+hi VertSplit cterm=reverse
+hi Title ctermfg=5
+hi Visual cterm=reverse
+hi VisualNOS cterm=bold,underline
+hi WarningMsg ctermfg=1
+hi WildMenu ctermfg=0 ctermbg=3
+hi Folded ctermfg=darkgrey ctermbg=NONE
+hi FoldColumn ctermfg=darkgrey ctermbg=NONE
+hi DiffAdd ctermbg=4
+hi DiffChange ctermbg=5
+hi DiffDelete cterm=bold ctermfg=4 ctermbg=6
+hi DiffText cterm=bold ctermbg=1
+hi Special ctermfg=5
+hi Identifier ctermfg=6
+hi Statement ctermfg=3
+hi PreProc ctermfg=5
+hi Type ctermfg=2
+hi Underlined cterm=underline ctermfg=5
+hi Ignore cterm=bold ctermfg=7
+hi Ignore ctermfg=darkgrey
+hi Error cterm=bold ctermfg=7 ctermbg=1
+
+
diff --git a/old/filetype.vim b/old/filetype.vim
new file mode 100644
index 0000000..3ffa3ad
--- /dev/null
+++ b/old/filetype.vim
@@ -0,0 +1,18 @@
+" Clearsilver template
+au BufNewFile,BufRead *.cst setf html
+
+" Clearsilver data
+au BufNewFile,BufRead *.hdf setf yaml
+
+au BufNewFile,BufRead *.tex setf tex
+
+au BufNewFile,BufRead *.tjp setf tjp
+au BufNewFile,BufRead *.tji setf tjp
+
+au BufRead,BufNewFile *.scala setf scala
+
+au BufRead,BufNewFile *.eo setf eo
+au BufNewFile,BufRead *.edc setf edc
+
+au BufNewFile,BufRead *.gradle setf groovy
+
diff --git a/old/indent/edc.vim b/old/indent/edc.vim
new file mode 100644
index 0000000..498be4a
--- /dev/null
+++ b/old/indent/edc.vim
@@ -0,0 +1,83 @@
+" Vim indent file
+" Language: EDC
+" Maintainer: Viktor Kojouharov
+" Latest Revision: 2007 02 24
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetEDCIndent()
+setlocal indentkeys=0{,0},!^F,o,O
+
+if exists("*GetEDCIndent")
+ finish
+endif
+
+function s:prevnonblanknoncomment(lnum)
+ let lnum = a:lnum
+ while lnum > 1
+ let lnum = prevnonblank(lnum)
+ let line = getline(lnum)
+ if line =~ '\*/'
+ while lnum > 1 && line !~ '/\*'
+ let lnum -= 1
+ endwhile
+ if line =~ '^\s*/\*'
+ let lnum -= 1
+ else
+ break
+ endif
+ elseif line =~ '^\s*//'
+ let lnum -= 1
+ else
+ break
+ endif
+ endwhile
+ return lnum
+endfunction
+
+function s:count_braces(lnum, count_open)
+ let n_open = 0
+ let n_close = 0
+ let line = getline(a:lnum)
+ let pattern = '[{}]'
+ let i = match(line, pattern)
+ while i != -1
+ if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'c\%(CommentL\|Comment\|StringQ\{1,2}\)'
+ if line[i] == '{'
+ let n_open += 1
+ elseif line[i] == '}'
+ if n_open > 0
+ let n_open -= 1
+ else
+ let n_close += 1
+ endif
+ endif
+ endif
+ let i = match(line, pattern, i + 1)
+ endwhile
+ return a:count_open ? n_open : n_close
+endfunction
+
+function GetEDCIndent()
+ let line = getline(v:lnum)
+ if line =~ '^\s*\*' || line =~ '^\s*//' || line =~ '^\s*}'
+ return cindent(v:lnum)
+ endif
+
+ let pnum = s:prevnonblanknoncomment(v:lnum - 1)
+ if pnum == 0
+ return 0
+ endif
+
+ let ind = indent(pnum) + s:count_braces(pnum, 1) * &sw
+
+ let pline = getline(pnum)
+ if pline =~ '}\s*$'
+ let ind -= (s:count_braces(pnum, 0) - (pline =~ '^\s*}' ? 1 : 0)) * &sw
+ endif
+
+ return ind
+endfunction
diff --git a/old/indent/indent_pir.vim b/old/indent/indent_pir.vim
new file mode 100644
index 0000000..29dd9f6
--- /dev/null
+++ b/old/indent/indent_pir.vim
@@ -0,0 +1,75 @@
+" Description: imcc indenter
+" Author: Andrew Rodland <arodland@entermail.net>
+" Last Change: 2004 Aug 3
+
+" As usual, we want to be alone
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent=1
+
+setlocal indentexpr=PIRIndent()
+setlocal indentkeys=o,O,*<Return>,<bs>,:,=.end,0#
+
+fun! InPOD(lnum)
+ return synIDattr(synID(a:lnum, 1, 1), "name") =~? '^myPod$\|^pod[A-Z]'
+endfun
+
+fun! PIRIndent()
+ let thisline = getline(v:lnum)
+
+ let POD_START = '^=[a-z]'
+
+ if thisline =~? POD_START
+ return 0
+ endif
+
+
+ if InPOD(v:lnum)
+ return -1
+ endif
+
+ let LABEL_OR_COMMENT = '^\s*\k\+:\s*$\|^#'
+ if thisline =~? LABEL_OR_COMMENT
+ return 0
+ endif
+
+ let lnum=v:lnum
+ while lnum > 0
+ let lnum = prevnonblank(lnum-1)
+ let prevline = getline(lnum)
+
+ if prevline !~? LABEL_OR_COMMENT
+ if !InPOD(lnum)
+ break
+ endif
+ endif
+ endwhile
+
+ if lnum < 1
+ return 0
+ endif
+
+ let ind = indent(lnum)
+
+ let SUB = '^\s*\.pcc_sub\s\+\|^\s*\.sub\s\+'
+ let RETURNBLOCK = '\s*\.pcc_begin_return\s*$'
+ let END = '^\s*\.end\s*$\|^\s*\.pcc_end_return\s*$'
+
+ if prevline =~? SUB
+ let ind = ind + &sw
+ endif
+
+ if prevline =~? RETURNBLOCK
+ let ind = ind + &sw
+ endif
+
+ if thisline =~? END
+ let ind = ind - &sw
+ endif
+
+ return ind
+
+endfun
+
+
diff --git a/old/indent/scala.vim b/old/indent/scala.vim
new file mode 100644
index 0000000..c3e7c91
--- /dev/null
+++ b/old/indent/scala.vim
@@ -0,0 +1,85 @@
+" Vim indent file
+" Language : Scala (http://scala-lang.org/)
+" Maintainer : Stefan Matthias Aust
+" Last Change: 2006 Apr 13
+
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal indentexpr=GetScalaIndent()
+
+setlocal indentkeys=0{,0},0),!^F,<>>,<CR>
+
+setlocal autoindent shiftwidth=2 tabstop=2 softtabstop=2 expandtab
+
+if exists("*GetScalaIndent")
+ finish
+endif
+
+function! CountParens(line)
+ let line = substitute(a:line, '"\(.\|\\"\)*"', '', 'g')
+ let open = substitute(line, '[^(]', '', 'g')
+ let close = substitute(line, '[^)]', '', 'g')
+ return strlen(open) - strlen(close)
+endfunction
+
+function! GetScalaIndent()
+ " Find a non-blank line above the current line.
+ let lnum = prevnonblank(v:lnum - 1)
+
+ " Hit the start of the file, use zero indent.
+ if lnum == 0
+ return 0
+ endif
+
+ let ind = indent(lnum)
+ let prevline = getline(lnum)
+
+ "Indent html literals
+ if prevline !~ '/>\s*$' && prevline =~ '^\s*<[a-zA-Z][^>]*>\s*$'
+ return ind + &shiftwidth
+ endif
+
+ " Add a 'shiftwidth' after lines that start a block
+ " If if, for or while end with ), this is a one-line block
+ " If val, var, def end with =, this is a one-line block
+ if prevline =~ '^\s*\<\(\(else\s\+\)\?if\|for\|while\)\>.*[)]\s*$'
+ \ || prevline =~ '^\s*\<\(\(va[lr]\|def\)\>.*[=]\s*$'
+ \ || prevline =~ '^\s*\<else\>\s*$'
+ \ || prevline =~ '{\s*$'
+ let ind = ind + &shiftwidth
+ endif
+
+ " If parenthesis are unbalanced, indent or dedent
+ let c = CountParens(prevline)
+ echo c
+ if c > 0
+ let ind = ind + &shiftwidth
+ elseif c < 0
+ let ind = ind - &shiftwidth
+ endif
+
+ " Dedent after if, for, while and val, var, def without block
+ let pprevline = getline(prevnonblank(lnum - 1))
+ if pprevline =~ '^\s*\<\(\(else\s\+\)\?if\|for\|while\)\>.*[)]\s*$'
+ \ || pprevline =~ '^\s*\<\(\va[lr]\|def\)\>.*[=]\s*$'
+ \ || pprevline =~ '^\s*\<else\>\s*$'
+ let ind = ind - &shiftwidth
+ endif
+
+ " Align 'for' clauses nicely
+ if prevline =~ '^\s*\<for\> (.*;\s*$'
+ let ind = ind - &shiftwidth + 5
+ endif
+
+ " Subtract a 'shiftwidth' on '}' or html
+ let thisline = getline(v:lnum)
+ if thisline =~ '^\s*[})]'
+ \ || thisline =~ '^\s*</[a-zA-Z][^>]*>'
+ let ind = ind - &shiftwidth
+ endif
+
+ return ind
+endfunction
diff --git a/old/install b/old/install
new file mode 100755
index 0000000..c55b5a3
--- /dev/null
+++ b/old/install
@@ -0,0 +1,14 @@
+#! /bin/bash
+
+DIR=$(readlink -f $(dirname $0))
+pushd $HOME >/dev/null
+rm .vim*
+ln -sf $DIR .vim
+ln -sf $DIR/vimrc .vimrc
+ln -sf $DIR/vimrc .nvimrc
+ln -sf $DIR/vimperatorrc .vimperatorrc
+popd >/dev/null
+
+git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim
+
+vim +PluginInstall +qall
diff --git a/old/scripts/bepo-layout.vim b/old/scripts/bepo-layout.vim
new file mode 100644
index 0000000..931193f
--- /dev/null
+++ b/old/scripts/bepo-layout.vim
@@ -0,0 +1,102 @@
+" {W} -> [É]
+" ——————————
+" On remappe W sur É :
+noremap é w
+noremap É W
+" Corollaire, pour effacer/remplacer un mot quand on n’est pas au début (daé / laé).
+" (attention, cela diminue la réactivité du {A}…)
+noremap aé aw
+noremap aÉ aW
+" Pour faciliter les manipulations de fenêtres, on utilise {W} comme un Ctrl+W :
+noremap w <C-w>
+noremap W <C-w><C-w>
+
+" [HJKL] -> {CTSR}
+" ————————————————
+" {cr} = « gauche / droite »
+noremap c h
+noremap r l
+" {ts} = « haut / bas »
+noremap t j
+noremap s k
+" {CR} = « haut / bas de l'écran »
+noremap C H
+noremap R L
+" {TS} = « joindre / aide »
+noremap T J
+noremap S K
+" Corollaire : repli suivant / précédent
+noremap zs zj
+noremap zt zk
+
+" {HJKL} <- [CTSR]
+" ————————————————
+" {J} = « Jusqu'à » (j = suivant, J = précédant)
+noremap j t
+noremap J T
+" {L} = « Change » (l = attend un mvt, L = jusqu'à la fin de ligne)
+noremap l c
+noremap L C
+" {H} = « Remplace » (h = un caractère slt, H = reste en « Remplace »)
+noremap h r
+noremap H R
+" {K} = « Substitue » (k = caractère, K = ligne)
+noremap k s
+noremap K S
+" Corollaire : correction orthographique
+noremap ]k ]s
+noremap [k [s
+
+" Désambiguation de {g}
+" —————————————————————
+" ligne écran précédente / suivante (à l'intérieur d'une phrase)
+noremap gs gk
+noremap gt gj
+" onglet précédant / suivant
+noremap gb gT
+noremap gé gt
+" optionnel : {gB} / {gÉ} pour aller au premier / dernier onglet
+noremap gB :exe "silent! tabfirst"<CR>
+noremap gÉ :exe "silent! tablast"<CR>
+" optionnel : {g"} pour aller au début de la ligne écran
+noremap g" g0
+
+" <> en direct
+" ————————————
+noremap « <
+noremap » >
+
+" Remaper la gestion des fenêtres
+" ———————————————————————————————
+noremap wt <C-w>j
+noremap ws <C-w>k
+noremap wc <C-w>h
+noremap wr <C-w>l
+noremap wd <C-w>c
+noremap wo <C-w>s
+noremap wp <C-w>o
+noremap w<SPACE> :split<CR>
+noremap w<CR> :vsplit<CR>
+
+" Chiffres en accès direct
+" ————————————————————————
+"noremap " 1
+"noremap 1 "
+"noremap « 2
+"noremap 2 <
+"noremap » 3
+"noremap 3 >
+"noremap ( 4
+"noremap 4 (
+"noremap ) 5
+"noremap 5 )
+"noremap @ 6
+"noremap 6 @
+"noremap + 7
+"noremap 7 +
+"noremap - 8
+"noremap 8 -
+"noremap / 9
+"noremap 9 /
+"noremap * 0
+"noremap 0 *
diff --git a/old/scripts/closetag.vim b/old/scripts/closetag.vim
new file mode 100644
index 0000000..6ce41fb
--- /dev/null
+++ b/old/scripts/closetag.vim
@@ -0,0 +1,327 @@
+" File: closetag.vim
+" Summary: Functions and mappings to close open HTML/XML tags
+" Uses: <C-_> -- close matching open tag
+" Author: Steven Mueller <diffusor@ugcs.caltech.edu>
+" Last Modified: Tue May 24 13:29:48 PDT 2005
+" Version: 0.9.1
+" XXX - breaks if close attempted while XIM is in preedit mode
+" TODO - allow usability as a global plugin -
+" Add g:unaryTagsStack - always contains html tags settings
+" and g:closetag_default_xml - user should define this to default to xml
+" When a close is attempted but b:unaryTagsStack undefined,
+" use b:closetag_html_style to determine if the file is to be treated
+" as html or xml. Failing that, check the filetype for xml or html.
+" Finally, default to g:closetag_html_style.
+" If the file is html, let b:unaryTagsStack=g:unaryTagsStack
+" otherwise, let b:unaryTagsStack=""
+" TODO - make matching work for all comments
+" -- kinda works now, but needs syn sync minlines to be very long
+" -- Only check whether in syntax in the beginning, then store comment tags
+" in the tagstacks to determine whether to move into or out of comment mode
+" TODO - The new normal mode mapping clears recent messages with its <ESC>, and
+" it doesn't fix the null-undo issue for vim 5.7 anyway.
+" TODO - make use of the following neat features:
+" -- the ternary ?: operator
+" -- :echomsg and :echoerr
+" -- curly brace expansion for variables and function name definitions?
+" -- check up on map <blah> \FuncName
+"
+" Description:
+" This script eases redundant typing when writing html or xml files (even if
+" you're very good with ctrl-p and ctrl-n :). Hitting ctrl-_ will initiate a
+" search for the most recent open tag above that is not closed in the
+" intervening space and then insert the matching close tag at the cursor. In
+" normal mode, the close tag is inserted one character after cursor rather than
+" at it, as if a<C-_> had been used. This allows putting close tags at the
+" ends of lines while in normal mode, but disallows inserting them in the
+" first column.
+"
+" For HTML, a configurable list of tags are ignored in the matching process.
+" By default, the following tags will not be matched and thus not closed
+" automatically: area, base, br, dd, dt, hr, img, input, link, meta, and
+" param.
+"
+" For XML, all tags must have a closing match or be terminated by />, as in
+" <empty-element/>. These empty element tags are ignored for matching.
+"
+" Comment checking is now handled by vim's internal syntax checking. If tag
+" closing is initiated outside a comment, only tags outside of comments will
+" be matched. When closing tags in comments, only tags within comments will
+" be matched, skipping any non-commented out code (wee!). However, the
+" process of determining the syntax ID of an arbitrary position can still be
+" erroneous if a comment is not detected because the syntax highlighting is
+" out of sync, or really slow if syn sync minlines is large.
+" Set the b:closetag_disable_synID variable to disable this feature if you
+" have really big chunks of comment in your code and closing tags is too slow.
+"
+" If syntax highlighting is not enabled, comments will not be handled very
+" well. Commenting out HTML in certain ways may cause a "tag mismatch"
+" message and no completion. For example, '<!--a href="blah">link!</a-->'
+" between the cursor and the most recent unclosed open tag above causes
+" trouble. Properly matched well formed tags in comments don't cause a
+" problem.
+"
+" Install:
+" To use, place this file in your standard vim scripts directory, and source
+" it while editing the file you wish to close tags in. If the filetype is not
+" set or the file is some sort of template with embedded HTML, you may force
+" HTML style tag matching by first defining the b:closetag_html_style buffer
+" variable. Otherwise, the default is XML style tag matching.
+"
+" Example:
+" :let b:closetag_html_style=1
+" :source ~/.vim/scripts/closetag.vim
+"
+" For greater convenience, load this script in an autocommand:
+" :au Filetype html,xml,xsl source ~/.vim/scripts/closetag.vim
+"
+" Also, set noignorecase for html files or edit b:unaryTagsStack to match your
+" capitalization style. You may set this variable before or after loading the
+" script, or simply change the file itself.
+"
+" Configuration Variables:
+"
+" b:unaryTagsStack Buffer local string containing a whitespace
+" seperated list of element names that should be
+" ignored while finding matching closetags. Checking
+" is done according to the current setting of the
+" ignorecase option.
+"
+" b:closetag_html_style Define this (as with let b:closetag_html_style=1)
+" and source the script again to set the
+" unaryTagsStack to its default value for html.
+"
+" b:closetag_disable_synID Define this to disable comment checking if tag
+" closing is too slow. This can be set or unset
+" without having to source again.
+"
+" Changelog:
+" May 24, 2005 Tuesday
+" * Changed function names to be script-local to avoid conflicts with other
+" scripts' stack implementations.
+"
+" June 07, 2001 Thursday
+" * Added comment handling. Currently relies on synID, so if syn sync
+" minlines is small, the chance for failure is high, but if minlines is
+" large, tagclosing becomes rather slow...
+"
+" * Changed normal mode closetag mapping to use <C-R> in insert mode
+" rather than p in normal mode. This has 2 implications:
+" - Tag closing no longer clobbers the unnamed register
+" - When tag closing fails or finds no match, no longer adds to the undo
+" buffer for recent vim 6.0 development versions.
+" - However, clears the last message when closing tags in normal mode
+"
+" * Changed the closetag_html_style variable to be buffer-local rather than
+" global.
+"
+" * Expanded documentation
+
+"------------------------------------------------------------------------------
+" User configurable settings
+"------------------------------------------------------------------------------
+
+" if html, don't close certain tags. Works best if ignorecase is set.
+" otherwise, capitalize these elements according to your html editing style
+if !exists("b:unaryTagsStack") || exists("b:closetag_html_style")
+ if &filetype == "html" || exists("b:closetag_html_style")
+ let b:unaryTagsStack="area base br dd dt hr img input link meta param"
+ else " for xsl and xsl
+ let b:unaryTagsStack=""
+ endif
+endif
+
+" Has this already been loaded?
+if exists("loaded_closetag")
+ finish
+endif
+let loaded_closetag=1
+
+" set up mappings for tag closing
+inoremap <C-_> <C-R>=GetCloseTag()<CR>
+map <C-_> a<C-_><ESC>
+
+"------------------------------------------------------------------------------
+" Tag closer - uses the stringstack implementation below
+"------------------------------------------------------------------------------
+
+" Returns the most recent unclosed tag-name
+" (ignores tags in the variable referenced by a:unaryTagsStack)
+function! GetLastOpenTag(unaryTagsStack)
+ " Search backwards through the file line by line using getline()
+ " Overall strategy (moving backwards through the file from the cursor):
+ " Push closing tags onto a stack.
+ " On an opening tag, if the tag matches the stack top, discard both.
+ " -- if the tag doesn't match, signal an error.
+ " -- if the stack is empty, use this tag
+ let linenum=line(".")
+ let lineend=col(".") - 1 " start: cursor position
+ let first=1 " flag for first line searched
+ let b:TagStack="" " main stack of tags
+ let startInComment=s:InComment()
+
+ let tagpat='</\=\(\k\|[-:]\)\+\|/>'
+ " Search for: closing tags </tag, opening tags <tag, and unary tag ends />
+ while (linenum>0)
+ " Every time we see an end-tag, we push it on the stack. When we see an
+ " open tag, if the stack isn't empty, we pop it and see if they match.
+ " If no, signal an error.
+ " If yes, continue searching backwards.
+ " If stack is empty, return this open tag as the one that needs closing.
+ let line=getline(linenum)
+ if first
+ let line=strpart(line,0,lineend)
+ else
+ let lineend=strlen(line)
+ endif
+ let b:lineTagStack=""
+ let mpos=0
+ let b:TagCol=0
+ " Search the current line in the forward direction, pushing any tags
+ " onto a special stack for the current line
+ while (mpos > -1)
+ let mpos=matchend(line,tagpat)
+ if mpos > -1
+ let b:TagCol=b:TagCol+mpos
+ let tag=matchstr(line,tagpat)
+
+ if exists("b:closetag_disable_synID") || startInComment==s:InCommentAt(linenum, b:TagCol)
+ let b:TagLine=linenum
+ call s:Push(matchstr(tag,'[^<>]\+'),"b:lineTagStack")
+ endif
+ "echo "Tag: ".tag." ending at position ".mpos." in '".line."'."
+ let lineend=lineend-mpos
+ let line=strpart(line,mpos,lineend)
+ endif
+ endwhile
+ " Process the current line stack
+ while (!s:EmptystackP("b:lineTagStack"))
+ let tag=s:Pop("b:lineTagStack")
+ if match(tag, "^/") == 0 "found end tag
+ call s:Push(tag,"b:TagStack")
+ "echo linenum." ".b:TagStack
+ elseif s:EmptystackP("b:TagStack") && !s:Instack(tag, a:unaryTagsStack) "found unclosed tag
+ return tag
+ else
+ let endtag=s:Peekstack("b:TagStack")
+ if endtag == "/".tag || endtag == "/"
+ call s:Pop("b:TagStack") "found a open/close tag pair
+ "echo linenum." ".b:TagStack
+ elseif !s:Instack(tag, a:unaryTagsStack) "we have a mismatch error
+ echohl Error
+ echon "\rError:"
+ echohl None
+ echo " tag mismatch: <".tag."> doesn't match <".endtag.">. (Line ".linenum." Tagstack: ".b:TagStack.")"
+ return ""
+ endif
+ endif
+ endwhile
+ let linenum=linenum-1 | let first=0
+ endwhile
+ " At this point, we have exhausted the file and not found any opening tag
+ echo "No opening tags."
+ return ""
+endfunction
+
+" Returns closing tag for most recent unclosed tag, respecting the
+" current setting of b:unaryTagsStack for tags that should not be closed
+function! GetCloseTag()
+ let tag=GetLastOpenTag("b:unaryTagsStack")
+ if tag == ""
+ return ""
+ else
+ return "</".tag.">"
+ endif
+endfunction
+
+" return 1 if the cursor is in a syntactically identified comment field
+" (fails for empty lines: always returns not-in-comment)
+function! s:InComment()
+ return synIDattr(synID(line("."), col("."), 0), "name") =~ 'Comment'
+endfunction
+
+" return 1 if the position specified is in a syntactically identified comment field
+function! s:InCommentAt(line, col)
+ return synIDattr(synID(a:line, a:col, 0), "name") =~ 'Comment'
+endfunction
+
+"------------------------------------------------------------------------------
+" String Stacks
+"------------------------------------------------------------------------------
+" These are strings of whitespace-separated elements, matched using the \< and
+" \> patterns after setting the iskeyword option.
+"
+" The sname argument should contain a symbolic reference to the stack variable
+" on which method should operate on (i.e., sname should be a string containing
+" a fully qualified (ie: g:, b:, etc) variable name.)
+
+" Helper functions
+function! s:SetKeywords()
+ let g:IsKeywordBak=&iskeyword
+ let &iskeyword="33-255"
+endfunction
+
+function! s:RestoreKeywords()
+ let &iskeyword=g:IsKeywordBak
+endfunction
+
+" Push el onto the stack referenced by sname
+function! s:Push(el, sname)
+ if !s:EmptystackP(a:sname)
+ exe "let ".a:sname."=a:el.' '.".a:sname
+ else
+ exe "let ".a:sname."=a:el"
+ endif
+endfunction
+
+" Check whether the stack is empty
+function! s:EmptystackP(sname)
+ exe "let stack=".a:sname
+ if match(stack,"^ *$") == 0
+ return 1
+ else
+ return 0
+ endif
+endfunction
+
+" Return 1 if el is in stack sname, else 0.
+function! s:Instack(el, sname)
+ exe "let stack=".a:sname
+ call s:SetKeywords()
+ let m=match(stack, "\\<".a:el."\\>")
+ call s:RestoreKeywords()
+ if m < 0
+ return 0
+ else
+ return 1
+ endif
+endfunction
+
+" Return the first element in the stack
+function! s:Peekstack(sname)
+ call s:SetKeywords()
+ exe "let stack=".a:sname
+ let top=matchstr(stack, "\\<.\\{-1,}\\>")
+ call s:RestoreKeywords()
+ return top
+endfunction
+
+" Remove and return the first element in the stack
+function! s:Pop(sname)
+ if s:EmptystackP(a:sname)
+ echo "Error! Stack ".a:sname." is empty and can't be popped."
+ return ""
+ endif
+ exe "let stack=".a:sname
+ " Find the first space, loc is 0-based. Marks the end of 1st elt in stack.
+ call s:SetKeywords()
+ let loc=matchend(stack,"\\<.\\{-1,}\\>")
+ exe "let ".a:sname."=strpart(stack, loc+1, strlen(stack))"
+ let top=strpart(stack, match(stack, "\\<"), loc)
+ call s:RestoreKeywords()
+ return top
+endfunction
+
+function! s:Clearstack(sname)
+ exe "let ".a:sname."=''"
+endfunction
diff --git a/old/skeletons.rb b/old/skeletons.rb
new file mode 100755
index 0000000..55c31aa
--- /dev/null
+++ b/old/skeletons.rb
@@ -0,0 +1,47 @@
+#!/usr/bin/env ruby
+#
+# vmirc => au BufNewFile * :exe("0r! ~/.vim/skeletons.rb %:p " . &filetype)
+#
+require 'erb'
+require 'date'
+
+SKELETON_DIR = File.expand_path("~/.vim/skeletons");
+EXTENSION = "erb"
+
+filepath, filetype = ARGV
+filename = File.basename( filepath )
+extension = File.extname( filename ).split( '.' )[1]
+
+if filename =~ /\.h$/ then filetype='c_header'; end # otherwise filetype is cpp
+if filetype.nil? then filetype = extension; end
+
+skeleton = [ filename, extension, filetype ].map { |s| File.join( SKELETON_DIR, "#{s}.#{EXTENSION}" ) }.find { |s| File.exist?(s) && File.readable?(s) }
+
+exit if skeleton.nil?
+
+@username = ENV['USERNAME'] || 'John Doe'
+@email = ENV['EMAIL'] || 'john.doe@nope.com'
+@website = ENV['WEBSITE'] || 'http://john.doe.org'
+@now = Date.today.strftime("%d/%m/%y")
+@year = Date.today.strftime("%Y")
+@license_file = ENV['LICENSE'] || nil
+@filename = filename
+@filename_base = filename.split('.')[0]
+@class_name = filename.split('.')[0].capitalize
+@project = File.split( File.dirname( filepath ) ).last
+
+def license comment=nil
+ return unless @license_file and File.exist? @license_file
+ return File.new( @license_file ).read if comment.nil?
+ license = ''
+ File.new( @license_file ).each_line { |l| license+=comment+l }
+ license
+end
+
+def header fn
+ fp = File.join( SKELETON_DIR, fn )
+ return unless File.exists? fp
+ File.open( fp ) { |f| puts ERB.new( f.read, nil, '<>' ).result( binding ) }
+end
+
+File.open( skeleton ) do |f| puts ERB.new( f.read, nil, '<>' ).result( binding ) end
diff --git a/old/skeletons/Makefile.erb b/old/skeletons/Makefile.erb
new file mode 100644
index 0000000..ac7e0a6
--- /dev/null
+++ b/old/skeletons/Makefile.erb
@@ -0,0 +1,18 @@
+
+
+CC = gcc
+STD = _GNU_SOURCE
+OBJS = A.o test.o B.o
+CFLAGS = -D__TZURTCH__
+BIN = binary
+
+.PHONY: clean
+
+.c.o:
+ $(CC) -c -Wall -I. $(CFLAGS) -D$(STD) -o $@ $<
+
+all: $(OBJS)
+ $(CC) $(OBJS) -o $@
+
+clean:
+ rm -f *~ *.o core $(BIN)
diff --git a/old/skeletons/Makefile.lou.erb b/old/skeletons/Makefile.lou.erb
new file mode 100644
index 0000000..bb2cec6
--- /dev/null
+++ b/old/skeletons/Makefile.lou.erb
@@ -0,0 +1,39 @@
+
+# USER VAR
+MAIN=file_name
+LOUT_FILES=${MAIN}.lou
+#
+
+LOUT_MAIN=${MAIN}.lou
+PSNAME=${MAIN}.ps
+PDFNAME=${MAIN}.pdf
+
+AWK=gawk
+LOUT=lout
+PS2PDF=ps2pdf
+
+.SUFFIXES: .lout .lou
+
+all: $(PSNAME) $(PDFNAME)
+
+utf8_lat1:
+ @( \
+ echo '#! /bin/sh'; \
+ echo 'file $$1 | grep UTF-8 >/dev/null'; \
+ echo 'if [ $$? -eq 0 ]; then'; \
+ echo ' iconv --from utf8 --to iso88591 $$1 > $$(basename $$1 .lou).lat1'; \
+ echo 'else'; \
+ echo ' cp $$1 $$(basename $$1 .lou).lat1'; \
+ echo 'fi'; \
+ ) > utf8_lat1
+ @chmod 755 utf8_lat1
+
+$(PSNAME): utf8_lat1 $(LOUT_FILES)
+ $(LOUT) -r3 -o $(PSNAME) $(LOUT_MAIN)
+
+$(PDFNAME): $(PSNAME)
+ $(PS2PDF) $(PSNAME)
+
+clean:
+ @rm *.ps *.ld *.li *.lix *.lat1 *~ utf8_lout utf8_lat1 2>/dev/null
+
diff --git a/old/skeletons/README.erb b/old/skeletons/README.erb
new file mode 100644
index 0000000..e4e3bed
--- /dev/null
+++ b/old/skeletons/README.erb
@@ -0,0 +1,62 @@
+
+<%= `figlet -c README` %>
+<%# figlet: http://www.figlet.org %>
+
+This is <%= @project %>, version %VERSION%
+-----------------------------
+
+<%=@project %> is Copyright (C) <%=@year %>-<%=@year.to_i+5%>, <%= @username %>. <<%= @email %>>
+
+LICENSE INFORMATION
+-------------------
+
+<%= license %>
+
+PREREQUISITES
+-------------
+
+You'll need a C compiler, a linker and a make program of course.
+
+INSTRUCTIONS
+------------
+
+For now, unpack your <%= @project %> tarball, (if you're reading this, you've
+probably already done that) and type
+
+ ./configure
+
+If you are self confident you may try the following to have more power on compilation process
+
+ ./configure --help
+
+
+Next, run make:
+
+You can test <%= @project %> by running
+
+ make test
+
+On some systems you can install <%= @project %>:
+
+ make install
+
+NOTES
+-----
+
+CHANGES
+-------
+
+For documentation on the user-visible changes between this version and
+previous versions, please see CHANGES.
+
+MAILING LISTS
+-------------
+
+Subscribe to the mailing list for <%= @project %> by sending mail to
+%MAILING_LIST%.
+
+WEB SITES
+---------
+
+The home page for <%= @project %> is %HOME_PAGE%
+
diff --git a/old/skeletons/__init__.py.erb b/old/skeletons/__init__.py.erb
new file mode 100644
index 0000000..a020661
--- /dev/null
+++ b/old/skeletons/__init__.py.erb
@@ -0,0 +1,5 @@
+<%= header 'python.hdr' %>
+
+__all__ = [
+ ]
+
diff --git a/old/skeletons/awk.erb b/old/skeletons/awk.erb
new file mode 100644
index 0000000..86d52a1
--- /dev/null
+++ b/old/skeletons/awk.erb
@@ -0,0 +1,9 @@
+<%= header 'awk.hdr' %>
+
+BEGIN { }
+
+{
+print "line "NR" has "NF" fields.";
+}
+
+END { print "line number : "NR }
diff --git a/old/skeletons/awk.hdr b/old/skeletons/awk.hdr
new file mode 100644
index 0000000..d11305a
--- /dev/null
+++ b/old/skeletons/awk.hdr
@@ -0,0 +1,12 @@
+#! /bin/gawk
+
+#----------------------------------------------------------------------------
+#
+# File : <%= @filename %>
+# Author : <%= @username %> <<%= @email %>>
+# Date : <%= @now %>
+# License :
+#
+<%= license '# '%>
+#
+#----------------------------------------------------------------------------
diff --git a/old/skeletons/c.erb b/old/skeletons/c.erb
new file mode 100644
index 0000000..e3df5f4
--- /dev/null
+++ b/old/skeletons/c.erb
@@ -0,0 +1,9 @@
+<%= header 'c.hdr' %>
+
+#include <stdio.h>
+
+int hello() {
+ printf ("hello world");
+ return 0;
+}
+
diff --git a/old/skeletons/c.hdr b/old/skeletons/c.hdr
new file mode 100644
index 0000000..a88f90e
--- /dev/null
+++ b/old/skeletons/c.hdr
@@ -0,0 +1,9 @@
+/*
+ * File : <%= @filename %>
+ * Author : <%= @username %> <<%= @email %>>
+ * Date : <%= @now %>
+ * License :
+ *
+<%= license ' * '%>
+ *
+ */
diff --git a/old/skeletons/c_header.erb b/old/skeletons/c_header.erb
new file mode 100644
index 0000000..2ef9092
--- /dev/null
+++ b/old/skeletons/c_header.erb
@@ -0,0 +1,20 @@
+<%= header 'c.hdr' %>
+
+<% define=File.basename( @filename ).upcase!.sub!('.', '_' ) %>
+
+#ifndef _<%= define %>_
+#define _<%= define %>_
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+/*
+ * Feed me
+ */
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _<%= define %>_ */
diff --git a/old/skeletons/cst.erb b/old/skeletons/cst.erb
new file mode 100644
index 0000000..db59692
--- /dev/null
+++ b/old/skeletons/cst.erb
@@ -0,0 +1,14 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <head>
+ <title>My Page</title>
+ <meta name="Identifier-URL" content="http://XXXX/<%= @filename %>">
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+ <meta name="Author" lang="en" content="<%= @username %>">
+ <meta name="Description" content="">
+ <meta name="Keywords" lang="en" content="">
+ <link rel="stylesheet" type="text/css" href="">
+ </head>
+ <body>
+ </body>
+</html>
diff --git a/old/skeletons/eo.erb b/old/skeletons/eo.erb
new file mode 100644
index 0000000..28b66f7
--- /dev/null
+++ b/old/skeletons/eo.erb
@@ -0,0 +1,51 @@
+classs <%= @class_name %>(Eo_Base)
+{
+ legacy_prefix: null;
+ eo_prefix: <%= @class_name.downcase %>;
+ data: <%= @class_name+"_Protected_Data" %>;
+ properties {
+ attribute
+ set {
+ /*@
+ @brief Blah blah blîh, blah blah . */
+ }
+ get {
+ /*@
+ @brief blob.
+
+ Values @c blob.
+
+ Example:
+ @dontinclude <%= @class_name.downcase %>-example.c
+ @skip <%= @class_name.downcase %>_attribute_set
+ @until return
+
+ @see something */
+ }
+ values {
+ Eina_Bool value; /*@ The attribute itself. */
+ }
+ }
+ }
+ methods {
+ part_table_clear {
+ /*@
+ @brief Does something.
+
+ @return @c EINA_TRUE on suceess, @c EINA_FALSE on failure
+
+ this realy does something, believe me. */
+
+ return Eina_Bool;
+ params {
+ @in const char *part; /*@ The part name */
+ @in Eina_Bool maybe; /*@ If set, it will maybe do something else */
+ }
+ }
+ }
+ implements {
+ Eo_Base::constructor;
+ Eo_Base::destructor;
+ Eo_Base::dbg_info_get;
+ }
+}
diff --git a/old/skeletons/html.erb b/old/skeletons/html.erb
new file mode 100644
index 0000000..14073f5
--- /dev/null
+++ b/old/skeletons/html.erb
@@ -0,0 +1,19 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+
+<html>
+ <head>
+ <title>My Page</title>
+ <meta name="Identifier-URL" content="http://XXXX/<%= @filename %>">
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+ <meta name="Author" lang="en" content="<%= @username %>">
+ <meta name="Description" content="">
+ <meta name="Keywords" lang="en" content="">
+ <!-- <link rel="shortcut icon" href="/img/favicon.ico" type="image/x-icon"> -->
+ <!-- <link rel="stylesheet" type="text/css" href=""> -->
+ <!-- <script type="text/javascript" src=""></script> -->
+ <!-- <%= @filename %> <%= @now %> -->
+ </head>
+ <body>
+ <h1>Hello World</h1>
+ </body>
+</html>
diff --git a/old/skeletons/java.erb b/old/skeletons/java.erb
new file mode 100644
index 0000000..f0ec54a
--- /dev/null
+++ b/old/skeletons/java.erb
@@ -0,0 +1,66 @@
+/* vim: set expandtab tabstop=4 shiftwidth=4 : */
+
+// package pkgname;
+
+import java.io.File;
+import java.util.Date;
+import jargs.gnu.CmdLineParser;
+
+/**
+ * Class <%= @class_name %>
+ *
+ * @author <% @username %> <<%= @email %>>
+ * @date <%= @now %>
+ */
+public class <%= @class_name %> {
+
+ /*
+ * print usage and exit with status 1
+ */
+ private static void printUsage()
+ {
+ System.err.println("Usage : <%= @class_name %> [{-d, --debug} a_float] [ --input file_name]");
+ System.err.println(" debug : debug verbosity");
+ System.err.println(" input : path to input file");
+ }
+
+ /**
+ * application entry point
+ */
+ public static void main(String [] args )
+ {
+
+ CmdLineParser parser = new CmdLineParser();
+ CmdLineParser.Option debug = parser.addIntegerOption('d',"debug");
+ CmdLineParser.Option input = parser.addStringOption("input");
+
+ try {
+ parser.parse(args);
+ } catch (CmdLineParser.OptionException e) {
+ System.err.println("\n"+e.getMessage());
+ printUsage();
+ System.exit(2);
+ }
+
+ int debugLevel = ((Integer)parser.getOptionValue(debug,new Integer(0))).intValue();
+ String inputFile = (String)parser.getOptionValue(input);
+
+ if (debugLevel>0) {
+ System.out.println("Debug Trace :");
+ System.out.println("\t"+new Date( ) );
+ System.out.println("\tdebug level : "+debugLevel);
+ System.out.println("\texcel file : "+inputFile);
+ }
+
+ if (inputFile!=null && !inputFile.equals("")) {
+ File f = new File(inputFile);
+ if(!f.canRead()){
+ System.err.println("Fatal Error : Unable to read "+inputFile);
+ System.exit(1);
+ }
+ }
+
+ System.exit(0);
+ }
+}
+
diff --git a/old/skeletons/lout.erb b/old/skeletons/lout.erb
new file mode 100644
index 0000000..9c88cd7
--- /dev/null
+++ b/old/skeletons/lout.erb
@@ -0,0 +1,43 @@
+#@SysInclude { eq }
+#@SysInclude { tab }
+#@SysInclude { fig }
+@SysInclude { report }
+
+@Report
+ @Title { }
+ @Author { Jrmy Zurcher }
+ @Institution { }
+ @DateLine { <%= "#{Time.now.strftime '%d, %m, %Y'}" %> }
+ @InitialLanguage { French }
+ @OptimizePages { Yes }
+ @AbstractTitle { }
+ @Abstract { }
+//
+@Section
+ @Title { Section }
+ @RunningTitle { Section }
+@Begin
+@PP
+Hello World 1
+@PP
+Hello World 2 Hello World 2
+@BeginSubSections
+@SubSection
+ @Title { SubSection }
+ @RunningTitle { Subsection }
+@Begin
+@PP
+Hello World 3 Hello World 3 Hello World 3 Hello World 3
+@BeginSubSubSections
+@SubSubSection
+ @Title { SubSubSection }
+ @RunningTitle { SubSubSection }
+@Begin
+@PP
+Hello World 4 Hello World 4 Hello World 4 Hello World 4 Hello World 4 Hello World 4 Hello World 4 Hello World 4
+@End @SubSubSection
+@EndSubSubSections
+@End @SubSection
+@EndSubSections
+@End @Section
+
diff --git a/old/skeletons/main.c.erb b/old/skeletons/main.c.erb
new file mode 100644
index 0000000..1767fbf
--- /dev/null
+++ b/old/skeletons/main.c.erb
@@ -0,0 +1,134 @@
+<%= header 'c.hdr' %>
+
+#include "main.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <stdarg.h>
+#include <string.h>
+#include <getopt.h>
+
+
+static int verbose = 0;
+
+/**
+ * my_error - print an error message on stderr then : if(code) exit(code)
+ */
+static void my_error( int code, const char *fmt, ... )
+{
+ va_list ap;
+
+ if ( *fmt ) {
+ va_start( ap, fmt );
+ (void)vfprintf( stderr, fmt, ap );
+ va_end( ap );
+ fmt += strlen( fmt );
+ if ( fmt[-1] != '\n' )
+ (void) fputc( '\n', stderr );
+ }
+ if( code ) exit( code );
+ /* NOTREACHED */
+}
+
+
+/**
+ * usage - print usage on stderr
+ */
+static void usage( const char *program_name, const char* optstring )
+{
+ fprintf( stderr, "usage : %s [-%s]\n", program_name, optstring );
+ fprintf( stderr, "\t --verbose (-v) : verbose mode.\n"
+ "\t --version (-V) : print version number.\n"
+ "\t --help (-h) : print this screen.\n"
+ "\t --arg (-a) <arg> : a numeric argument.\n"
+ "\n" );
+}
+
+
+/**
+ * MAIN
+ */
+int main( int argc, char **argv )
+{
+ int optch; /* returned by getopts_long */
+ int index; /* index of longopts[] */
+
+ int a;
+
+ /**
+ * name - has_arg (bool) - flag (int *) - val (int)
+ *
+ * if(!longopts[x].flag)
+ * return longopts[x].val;
+ * else
+ * *(longopts[x].flag) = longopts[x].val;
+ * return 0;
+ *
+ */
+ static struct option longopts[] = {
+ { "help", 0, 0, 'h' },
+ { "version", 0, 0, 'V' },
+ { "verbose", 0, &verbose, 1 },
+ { "arg", 1, 0, 'a' },
+ { 0, 0, 0, 0, }
+ };
+
+ static char *optstring = "hvVa:";
+
+ static const char *program_name = PACKAGE_NAME;
+ /*
+ const char *program_name = file_name( argv[0] );
+ */
+
+ opterr=0; /* no default advise for bad options */
+ optind=0;
+
+ a=0;
+
+#ifdef DEBUG
+ printf( "DEBUG mode is set.\n" );
+#endif
+
+ /* process options */
+ while( ( optch = getopt_long( argc, argv, optstring, longopts, &index ) ) !=-1 ) {
+ switch( optch ){
+ case 'h':
+ usage( program_name, optstring );
+ return EXIT_FAILURE;
+ case 'V':
+ fprintf( stdout, " %s version : %s\n", program_name, VERSION );
+ return EXIT_FAILURE;
+ case 'v':
+ verbose = 1;
+ break;
+ case 'a':
+ a = atoi( optarg );
+ break;
+ case 0:
+ /* longopt used flag */
+ break;
+ default:
+ my_error(EXIT_FAILURE,"invalid option %s\n\ttype : %s --help\n",argv[optind-1],program_name);
+ }
+ }
+
+ printf("a : %d\n",a);
+
+ /* process other arguments */
+ while(optind<argc){
+ printf("argv[%d]='%s'\n",optind,argv[optind]);
+ optind++;
+ }
+
+ if(verbose)printf("verbose mode is set.\n");
+
+ /**
+ * insert some fucking code here.
+ */
+
+ /* end reached */
+ return EXIT_SUCCESS;
+}
+
+
diff --git a/old/skeletons/main.h.erb b/old/skeletons/main.h.erb
new file mode 100644
index 0000000..3f0baf7
--- /dev/null
+++ b/old/skeletons/main.h.erb
@@ -0,0 +1,26 @@
+<%= header 'c.hdr' %>
+
+
+#ifndef _MAIN_
+#define _MAIN_ 1
+
+# ifdef __cplusplus
+extern "C" {
+# endif /* __cplusplus */
+
+#define VERSION "version"
+#define PACKAGE_NAME "package_name"
+
+#ifdef HAVE_CONFIG_H
+ #include "config.h"
+/*
+#else
+ #error "no config.h"
+*/
+#endif
+
+# ifdef __cplusplus
+}
+# endif /* __cplusplus */
+
+# endif /* _MAIN_ */
diff --git a/old/skeletons/opt_parse.py.erb b/old/skeletons/opt_parse.py.erb
new file mode 100644
index 0000000..658f9c0
--- /dev/null
+++ b/old/skeletons/opt_parse.py.erb
@@ -0,0 +1,60 @@
+<%= header 'python.hdr' %>
+
+""" Module Description """
+
+#----------------------------------------------------------------------------
+
+__version__ = '0.1.0'
+
+#----------------------------------------------------------------------------
+
+#import
+
+#----------------------------------------------------------------------------
+
+__all__ = [
+ '<%= @filename_base %>'
+ ]
+
+#----------------------------------------------------------------------------
+class <%= @filename_base %>:
+
+ def __init__( self, parser, options ):
+ self.parser = parser
+ self.options = options
+
+#----------------------------------------------------------------------------
+def my_callback( option, opt, value, parser ):
+ print "option : %s" % option
+ print "opt : %s" % opt
+ print "value : %s" % value
+ print "parser : %s" % parser
+
+#----------------------------------------------------------------------------
+def main( ):
+ from optparse import OptionParser
+ parser = OptionParser( usage="usage : %prog [-h] [-v]", version= "%prog version " + __version__ )
+# action store store_true store_false store_const append count callback help
+# type string int long choice float complex
+# dest action="store*"
+# default
+# nargs int
+# const action="store_const"
+# choices
+# callback
+# callback_args
+# callback_kwargs
+# help help tring
+# metavar
+ parser.add_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="produces noisy outputs." )
+ parser.add_option("-c", "--callback", action="callback", callback=my_callback, help="print callback args" )
+ parser.add_option("-s", "--string", action="store", type="string", dest="string", help="memorize a string" )
+ ( options, args) = parser.parse_args( )
+ print 'verbose : %s' % options.verbose
+ return 0
+
+#----------------------------------------------------------------------------
+
+if __name__ == '__main__':
+ import sys
+ sys.exit( main( ) )
diff --git a/old/skeletons/pir.erb b/old/skeletons/pir.erb
new file mode 100644
index 0000000..9415dd0
--- /dev/null
+++ b/old/skeletons/pir.erb
@@ -0,0 +1,5 @@
+
+# TODO perl like header
+
+.sub main :main
+.end
diff --git a/old/skeletons/python.erb b/old/skeletons/python.erb
new file mode 100644
index 0000000..1e51c7b
--- /dev/null
+++ b/old/skeletons/python.erb
@@ -0,0 +1,42 @@
+<%= header 'python.hdr' %>
+
+""" Module Description """
+
+#----------------------------------------------------------------------------
+
+__version__ = '0.1.0'
+
+#----------------------------------------------------------------------------
+
+#import
+
+#----------------------------------------------------------------------------
+
+__all__ = [
+ '<%= @class_name %>'
+ ]
+
+#----------------------------------------------------------------------------
+class <%= @class_name %>:
+
+ def __init__( self ):
+ pass
+
+#----------------------------------------------------------------------------
+def usage():
+ import os.path
+ name = os.path.basename( sys.argv[0] )
+ print '\tusage : %s ' % ( name )
+ return 1
+
+#----------------------------------------------------------------------------
+def main( ):
+ return 0
+
+#----------------------------------------------------------------------------
+
+if __name__ == '__main__':
+ import sys
+ if len(sys.argv)<1:
+ sys.exit( usage() )
+ sys.exit( main( ) )
diff --git a/old/skeletons/python.hdr b/old/skeletons/python.hdr
new file mode 100644
index 0000000..d08d9fe
--- /dev/null
+++ b/old/skeletons/python.hdr
@@ -0,0 +1,13 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+#----------------------------------------------------------------------------
+#
+# File : <%= @filename %>
+# Author : <%= @username %> <<%= @email %>>
+# Date : <%= @now %>
+# License :
+#
+<%= license '# '%>
+#
+#----------------------------------------------------------------------------
diff --git a/old/skeletons/ruby.erb b/old/skeletons/ruby.erb
new file mode 100644
index 0000000..b31ddda
--- /dev/null
+++ b/old/skeletons/ruby.erb
@@ -0,0 +1,12 @@
+<%= header 'ruby.hdr' %>
+#
+module <%= @class_name %>
+ class <%= @class_name %>
+ end
+end
+#
+if __FILE__ == $0
+ t = <%= @class_name %>::<%= @class_name %>.new
+end
+#
+# EOF
diff --git a/old/skeletons/ruby.hdr b/old/skeletons/ruby.hdr
new file mode 100644
index 0000000..1314e75
--- /dev/null
+++ b/old/skeletons/ruby.hdr
@@ -0,0 +1,14 @@
+#! /usr/bin/env ruby
+# -*- coding: UTF-8 -*-
+
+#----------------------------------------------------------------------------
+#
+# File : <%= @filename %>
+# Author : <%= @username %> <<%= @email %>>
+# Date : <%= @now %>
+# License :
+#
+<%= license '# ' %>
+#
+#----------------------------------------------------------------------------
+
diff --git a/old/skeletons/setup.py.erb b/old/skeletons/setup.py.erb
new file mode 100644
index 0000000..90ef208
--- /dev/null
+++ b/old/skeletons/setup.py.erb
@@ -0,0 +1,28 @@
+<%= header 'python.hdr' %>
+
+""" Distutils script """
+
+#----------------------------------------------------------------------------
+
+from distutils.core import setup
+
+#----------------------------------------------------------------------------
+
+
+setup (
+ name='DistName',
+ version='1.0',
+ description='package description',
+ long_description='package long description',
+ author='<%= @username %>',
+ author_email='<%= @email %>',
+ maintainer='<%= @username %>',
+ maintainer_email='<%= @email %>',
+ url='<%= @webiste %>',
+ download_url='<%= @website %>',
+ package_dir = { '':'lib' },
+ packages = [ 'pack1', 'pack2', 'pack2.sub' ],
+ classifiers= [
+ 'Programming Language :: Python'
+ ]
+ )
diff --git a/old/skeletons/setup.rb.erb b/old/skeletons/setup.rb.erb
new file mode 100644
index 0000000..c0b6da7
--- /dev/null
+++ b/old/skeletons/setup.rb.erb
@@ -0,0 +1,1596 @@
+#
+# setup.rb
+#
+# Copyright (c) 2000-2006 Minero Aoki
+#
+# This program is free software.
+# You can distribute/modify this program under the terms of
+# the GNU LGPL, Lesser General Public License version 2.1.
+#
+
+unless Enumerable.method_defined?(:map) # Ruby 1.4.6
+ module Enumerable
+ alias map collect
+ end
+end
+
+unless File.respond_to?(:read) # Ruby 1.6
+ def File.read(fname)
+ open(fname) {|f|
+ return f.read
+ }
+ end
+end
+
+unless Errno.const_defined?(:ENOTEMPTY) # Windows?
+ module Errno
+ class ENOTEMPTY
+ # We do not raise this exception, implementation is not needed.
+ end
+ end
+end
+
+def File.binread(fname)
+ open(fname, 'rb') {|f|
+ return f.read
+ }
+end
+
+# for corrupted Windows' stat(2)
+def File.dir?(path)
+ File.directory?((path[-1,1] == '/') ? path : path + '/')
+end
+
+
+class ConfigTable
+
+ include Enumerable
+
+ def initialize(rbconfig)
+ @rbconfig = rbconfig
+ @items = []
+ @table = {}
+ # options
+ @install_prefix = nil
+ @config_opt = nil
+ @verbose = true
+ @no_harm = false
+ end
+
+ attr_accessor :install_prefix
+ attr_accessor :config_opt
+
+ attr_writer :verbose
+
+ def verbose?
+ @verbose
+ end
+
+ attr_writer :no_harm
+
+ def no_harm?
+ @no_harm
+ end
+
+ def [](key)
+ lookup(key).resolve(self)
+ end
+
+ def []=(key, val)
+ lookup(key).set val
+ end
+
+ def names
+ @items.map {|i| i.name }
+ end
+
+ def each(&block)
+ @items.each(&block)
+ end
+
+ def key?(name)
+ @table.key?(name)
+ end
+
+ def lookup(name)
+ @table[name] or setup_rb_error "no such config item: #{name}"
+ end
+
+ def add(item)
+ @items.push item
+ @table[item.name] = item
+ end
+
+ def remove(name)
+ item = lookup(name)
+ @items.delete_if {|i| i.name == name }
+ @table.delete_if {|name, i| i.name == name }
+ item
+ end
+
+ def load_script(path, inst = nil)
+ if File.file?(path)
+ MetaConfigEnvironment.new(self, inst).instance_eval File.read(path), path
+ end
+ end
+
+ def savefile
+ '.config'
+ end
+
+ def load_savefile
+ begin
+ File.foreach(savefile()) do |line|
+ k, v = *line.split(/=/, 2)
+ self[k] = v.strip
+ end
+ rescue Errno::ENOENT
+ setup_rb_error $!.message + "\n#{File.basename($0)} config first"
+ end
+ end
+
+ def save
+ @items.each {|i| i.value }
+ File.open(savefile(), 'w') {|f|
+ @items.each do |i|
+ f.printf "%s=%s\n", i.name, i.value if i.value? and i.value
+ end
+ }
+ end
+
+ def load_standard_entries
+ standard_entries(@rbconfig).each do |ent|
+ add ent
+ end
+ end
+
+ def standard_entries(rbconfig)
+ c = rbconfig
+
+ rubypath = File.join(c['bindir'], c['ruby_install_name'] + c['EXEEXT'])
+
+ major = c['MAJOR'].to_i
+ minor = c['MINOR'].to_i
+ teeny = c['TEENY'].to_i
+ version = "#{major}.#{minor}"
+
+ # ruby ver. >= 1.4.4?
+ newpath_p = ((major >= 2) or
+ ((major == 1) and
+ ((minor >= 5) or
+ ((minor == 4) and (teeny >= 4)))))
+
+ if c['rubylibdir']
+ # V > 1.6.3
+ libruby = "#{c['prefix']}/lib/ruby"
+ librubyver = c['rubylibdir']
+ librubyverarch = c['archdir']
+ siteruby = c['sitedir']
+ siterubyver = c['sitelibdir']
+ siterubyverarch = c['sitearchdir']
+ elsif newpath_p
+ # 1.4.4 <= V <= 1.6.3
+ libruby = "#{c['prefix']}/lib/ruby"
+ librubyver = "#{c['prefix']}/lib/ruby/#{version}"
+ librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
+ siteruby = c['sitedir']
+ siterubyver = "$siteruby/#{version}"
+ siterubyverarch = "$siterubyver/#{c['arch']}"
+ else
+ # V < 1.4.4
+ libruby = "#{c['prefix']}/lib/ruby"
+ librubyver = "#{c['prefix']}/lib/ruby/#{version}"
+ librubyverarch = "#{c['prefix']}/lib/ruby/#{version}/#{c['arch']}"
+ siteruby = "#{c['prefix']}/lib/ruby/#{version}/site_ruby"
+ siterubyver = siteruby
+ siterubyverarch = "$siterubyver/#{c['arch']}"
+ end
+ parameterize = lambda {|path|
+ path.sub(/\A#{Regexp.quote(c['prefix'])}/, '$prefix')
+ }
+
+ if arg = c['configure_args'].split.detect {|arg| /--with-make-prog=/ =~ arg }
+ makeprog = arg.sub(/'/, '').split(/=/, 2)[1]
+ else
+ makeprog = 'make'
+ end
+
+ [
+ ExecItem.new('installdirs', 'std/site/home',
+ 'std: install under libruby; site: install under site_ruby; home: install under $HOME')\
+ {|val, table|
+ case val
+ when 'std'
+ table['rbdir'] = '$librubyver'
+ table['sodir'] = '$librubyverarch'
+ when 'site'
+ table['rbdir'] = '$siterubyver'
+ table['sodir'] = '$siterubyverarch'
+ when 'home'
+ setup_rb_error '$HOME was not set' unless ENV['HOME']
+ table['prefix'] = ENV['HOME']
+ table['rbdir'] = '$libdir/ruby'
+ table['sodir'] = '$libdir/ruby'
+ end
+ },
+ PathItem.new('prefix', 'path', c['prefix'],
+ 'path prefix of target environment'),
+ PathItem.new('bindir', 'path', parameterize.call(c['bindir']),
+ 'the directory for commands'),
+ PathItem.new('libdir', 'path', parameterize.call(c['libdir']),
+ 'the directory for libraries'),
+ PathItem.new('datadir', 'path', parameterize.call(c['datadir']),
+ 'the directory for shared data'),
+ PathItem.new('mandir', 'path', parameterize.call(c['mandir']),
+ 'the directory for man pages'),
+ PathItem.new('sysconfdir', 'path', parameterize.call(c['sysconfdir']),
+ 'the directory for system configuration files'),
+ PathItem.new('localstatedir', 'path', parameterize.call(c['localstatedir']),
+ 'the directory for local state data'),
+ PathItem.new('libruby', 'path', libruby,
+ 'the directory for ruby libraries'),
+ PathItem.new('librubyver', 'path', librubyver,
+ 'the directory for standard ruby libraries'),
+ PathItem.new('librubyverarch', 'path', librubyverarch,
+ 'the directory for standard ruby extensions'),
+ PathItem.new('siteruby', 'path', siteruby,
+ 'the directory for version-independent aux ruby libraries'),
+ PathItem.new('siterubyver', 'path', siterubyver,
+ 'the directory for aux ruby libraries'),
+ PathItem.new('siterubyverarch', 'path', siterubyverarch,
+ 'the directory for aux ruby binaries'),
+ PathItem.new('rbdir', 'path', '$siterubyver',
+ 'the directory for ruby scripts'),
+ PathItem.new('sodir', 'path', '$siterubyverarch',
+ 'the directory for ruby extentions'),
+ PathItem.new('rubypath', 'path', rubypath,
+ 'the path to set to #! line'),
+ ProgramItem.new('rubyprog', 'name', rubypath,
+ 'the ruby program using for installation'),
+ ProgramItem.new('makeprog', 'name', makeprog,
+ 'the make program to compile ruby extentions'),
+ SelectItem.new('shebang', 'all/ruby/never', 'ruby',
+ 'shebang line (#!) editing mode'),
+ BoolItem.new('without-ext', 'yes/no', 'no',
+ 'does not compile/install ruby extentions')
+ ]
+ end
+ private :standard_entries
+
+ def load_multipackage_entries
+ multipackage_entries().each do |ent|
+ add ent
+ end
+ end
+
+ def multipackage_entries
+ [
+ PackageSelectionItem.new('with', 'name,name...', '', 'ALL',
+ 'package names that you want to install'),
+ PackageSelectionItem.new('without', 'name,name...', '', 'NONE',
+ 'package names that you do not want to install')
+ ]
+ end
+ private :multipackage_entries
+
+ ALIASES = {
+ 'std-ruby' => 'librubyver',
+ 'stdruby' => 'librubyver',
+ 'rubylibdir' => 'librubyver',
+ 'archdir' => 'librubyverarch',
+ 'site-ruby-common' => 'siteruby', # For backward compatibility
+ 'site-ruby' => 'siterubyver', # For backward compatibility
+ 'bin-dir' => 'bindir',
+ 'bin-dir' => 'bindir',
+ 'rb-dir' => 'rbdir',
+ 'so-dir' => 'sodir',
+ 'data-dir' => 'datadir',
+ 'ruby-path' => 'rubypath',
+ 'ruby-prog' => 'rubyprog',
+ 'ruby' => 'rubyprog',
+ 'make-prog' => 'makeprog',
+ 'make' => 'makeprog'
+ }
+
+ def fixup
+ ALIASES.each do |ali, name|
+ @table[ali] = @table[name]
+ end
+ end
+
+ def options_re
+ /\A--(#{@table.keys.join('|')})(?:=(.*))?\z/
+ end
+
+ def parse_opt(opt)
+ m = options_re().match(opt) or setup_rb_error "config: unknown option #{opt}"
+ m.to_a[1,2]
+ end
+
+ def dllext
+ @rbconfig['DLEXT']
+ end
+
+ def value_config?(name)
+ lookup(name).value?
+ end
+
+ class Item
+ def initialize(name, template, default, desc)
+ @name = name.freeze
+ @template = template
+ @value = default
+ @default = default
+ @description = desc
+ end
+
+ attr_reader :name
+ attr_reader :description
+
+ attr_accessor :default
+ alias help_default default
+
+ def help_opt
+ "--#{@name}=#{@template}"
+ end
+
+ def value?
+ true
+ end
+
+ def value
+ @value
+ end
+
+ def resolve(table)
+ @value.gsub(%r<\$([^/]+)>) { table[$1] }
+ end
+
+ def set(val)
+ @value = check(val)
+ end
+
+ private
+
+ def check(val)
+ setup_rb_error "config: --#{name} requires argument" unless val
+ val
+ end
+ end
+
+ class BoolItem < Item
+ def config_type
+ 'bool'
+ end
+
+ def help_opt
+ "--#{@name}"
+ end
+
+ private
+
+ def check(val)
+ return 'yes' unless val
+ case val
+ when /\Ay(es)?\z/i, /\At(rue)?\z/i then 'yes'
+ when /\An(o)?\z/i, /\Af(alse)\z/i then 'no'
+ else
+ setup_rb_error "config: --#{@name} accepts only yes/no for argument"
+ end
+ end
+ end
+
+ class PathItem < Item
+ def config_type
+ 'path'
+ end
+
+ private
+
+ def check(path)
+ setup_rb_error "config: --#{@name} requires argument" unless path
+ path[0,1] == '$' ? path : File.expand_path(path)
+ end
+ end
+
+ class ProgramItem < Item
+ def config_type
+ 'program'
+ end
+ end
+
+ class SelectItem < Item
+ def initialize(name, selection, default, desc)
+ super
+ @ok = selection.split('/')
+ end
+
+ def config_type
+ 'select'
+ end
+
+ private
+
+ def check(val)
+ unless @ok.include?(val.strip)
+ setup_rb_error "config: use --#{@name}=#{@template} (#{val})"
+ end
+ val.strip
+ end
+ end
+
+ class ExecItem < Item
+ def initialize(name, selection, desc, &block)
+ super name, selection, nil, desc
+ @ok = selection.split('/')
+ @action = block
+ end
+
+ def config_type
+ 'exec'
+ end
+
+ def value?
+ false
+ end
+
+ def resolve(table)
+ setup_rb_error "$#{name()} wrongly used as option value"
+ end
+
+ undef set
+
+ def evaluate(val, table)
+ v = val.strip.downcase
+ unless @ok.include?(v)
+ setup_rb_error "invalid option --#{@name}=#{val} (use #{@template})"
+ end
+ @action.call v, table
+ end
+ end
+
+ class PackageSelectionItem < Item
+ def initialize(name, template, default, help_default, desc)
+ super name, template, default, desc
+ @help_default = help_default
+ end
+
+ attr_reader :help_default
+
+ def config_type
+ 'package'
+ end
+
+ private
+
+ def check(val)
+ unless File.dir?("packages/#{val}")
+ setup_rb_error "config: no such package: #{val}"
+ end
+ val
+ end
+ end
+
+ class MetaConfigEnvironment
+ def initialize(config, installer)
+ @config = config
+ @installer = installer
+ end
+
+ def config_names
+ @config.names
+ end
+
+ def config?(name)
+ @config.key?(name)
+ end
+
+ def bool_config?(name)
+ @config.lookup(name).config_type == 'bool'
+ end
+
+ def path_config?(name)
+ @config.lookup(name).config_type == 'path'
+ end
+
+ def value_config?(name)
+ @config.lookup(name).config_type != 'exec'
+ end
+
+ def add_config(item)
+ @config.add item
+ end
+
+ def add_bool_config(name, default, desc)
+ @config.add BoolItem.new(name, 'yes/no', default ? 'yes' : 'no', desc)
+ end
+
+ def add_path_config(name, default, desc)
+ @config.add PathItem.new(name, 'path', default, desc)
+ end
+
+ def set_config_default(name, default)
+ @config.lookup(name).default = default
+ end
+
+ def remove_config(name)
+ @config.remove(name)
+ end
+
+ # For only multipackage
+ def packages
+ raise '[setup.rb fatal] multi-package metaconfig API packages() called for single-package; contact application package vendor' unless @installer
+ @installer.packages
+ end
+
+ # For only multipackage
+ def declare_packages(list)
+ raise '[setup.rb fatal] multi-package metaconfig API declare_packages() called for single-package; contact application package vendor' unless @installer
+ @installer.packages = list
+ end
+ end
+
+end # class ConfigTable
+
+
+# This module requires: #verbose?, #no_harm?
+module FileOperations
+
+ def mkdir_p(dirname, prefix = nil)
+ dirname = prefix + File.expand_path(dirname) if prefix
+ $stderr.puts "mkdir -p #{dirname}" if verbose?
+ return if no_harm?
+
+ # Does not check '/', it's too abnormal.
+ dirs = File.expand_path(dirname).split(%r<(?=/)>)
+ if /\A[a-z]:\z/i =~ dirs[0]
+ disk = dirs.shift
+ dirs[0] = disk + dirs[0]
+ end
+ dirs.each_index do |idx|
+ path = dirs[0..idx].join('')
+ Dir.mkdir path unless File.dir?(path)
+ end
+ end
+
+ def rm_f(path)
+ $stderr.puts "rm -f #{path}" if verbose?
+ return if no_harm?
+ force_remove_file path
+ end
+
+ def rm_rf(path)
+ $stderr.puts "rm -rf #{path}" if verbose?
+ return if no_harm?
+ remove_tree path
+ end
+
+ def remove_tree(path)
+ if File.symlink?(path)
+ remove_file path
+ elsif File.dir?(path)
+ remove_tree0 path
+ else
+ force_remove_file path
+ end
+ end
+
+ def remove_tree0(path)
+ Dir.foreach(path) do |ent|
+ next if ent == '.'
+ next if ent == '..'
+ entpath = "#{path}/#{ent}"
+ if File.symlink?(entpath)
+ remove_file entpath
+ elsif File.dir?(entpath)
+ remove_tree0 entpath
+ else
+ force_remove_file entpath
+ end
+ end
+ begin
+ Dir.rmdir path
+ rescue Errno::ENOTEMPTY
+ # directory may not be empty
+ end
+ end
+
+ def move_file(src, dest)
+ force_remove_file dest
+ begin
+ File.rename src, dest
+ rescue
+ File.open(dest, 'wb') {|f|
+ f.write File.binread(src)
+ }
+ File.chmod File.stat(src).mode, dest
+ File.unlink src
+ end
+ end
+
+ def force_remove_file(path)
+ begin
+ remove_file path
+ rescue
+ end
+ end
+
+ def remove_file(path)
+ File.chmod 0777, path
+ File.unlink path
+ end
+
+ def install(from, dest, mode, prefix = nil)
+ $stderr.puts "install #{from} #{dest}" if verbose?
+ return if no_harm?
+
+ realdest = prefix ? prefix + File.expand_path(dest) : dest
+ realdest = File.join(realdest, File.basename(from)) if File.dir?(realdest)
+ str = File.binread(from)
+ if diff?(str, realdest)
+ verbose_off {
+ rm_f realdest if File.exist?(realdest)
+ }
+ File.open(realdest, 'wb') {|f|
+ f.write str
+ }
+ File.chmod mode, realdest
+
+ File.open("#{objdir_root()}/InstalledFiles", 'a') {|f|
+ if prefix
+ f.puts realdest.sub(prefix, '')
+ else
+ f.puts realdest
+ end
+ }
+ end
+ end
+
+ def diff?(new_content, path)
+ return true unless File.exist?(path)
+ new_content != File.binread(path)
+ end
+
+ def command(*args)
+ $stderr.puts args.join(' ') if verbose?
+ system(*args) or raise RuntimeError,
+ "system(#{args.map{|a| a.inspect }.join(' ')}) failed"
+ end
+
+ def ruby(*args)
+ command config('rubyprog'), *args
+ end
+
+ def make(task = nil)
+ command(*[config('makeprog'), task].compact)
+ end
+
+ def extdir?(dir)
+ File.exist?("#{dir}/MANIFEST") or File.exist?("#{dir}/extconf.rb")
+ end
+
+ def files_of(dir)
+ Dir.open(dir) {|d|
+ return d.select {|ent| File.file?("#{dir}/#{ent}") }
+ }
+ end
+
+ DIR_REJECT = %w( . .. CVS SCCS RCS CVS.adm .svn )
+
+ def directories_of(dir)
+ Dir.open(dir) {|d|
+ return d.select {|ent| File.dir?("#{dir}/#{ent}") } - DIR_REJECT
+ }
+ end
+
+end
+
+
+# This module requires: #srcdir_root, #objdir_root, #relpath
+module HookScriptAPI
+
+ def get_config(key)
+ @config[key]
+ end
+
+ alias config get_config
+
+ # obsolete: use metaconfig to change configuration
+ def set_config(key, val)
+ @config[key] = val
+ end
+
+ #
+ # srcdir/objdir (works only in the package directory)
+ #
+
+ def curr_srcdir
+ "#{srcdir_root()}/#{relpath()}"
+ end
+
+ def curr_objdir
+ "#{objdir_root()}/#{relpath()}"
+ end
+
+ def srcfile(path)
+ "#{curr_srcdir()}/#{path}"
+ end
+
+ def srcexist?(path)
+ File.exist?(srcfile(path))
+ end
+
+ def srcdirectory?(path)
+ File.dir?(srcfile(path))
+ end
+
+ def srcfile?(path)
+ File.file?(srcfile(path))
+ end
+
+ def srcentries(path = '.')
+ Dir.open("#{curr_srcdir()}/#{path}") {|d|
+ return d.to_a - %w(. ..)
+ }
+ end
+
+ def srcfiles(path = '.')
+ srcentries(path).select {|fname|
+ File.file?(File.join(curr_srcdir(), path, fname))
+ }
+ end
+
+ def srcdirectories(path = '.')
+ srcentries(path).select {|fname|
+ File.dir?(File.join(curr_srcdir(), path, fname))
+ }
+ end
+
+end
+
+
+class ToplevelInstaller
+
+ Version = '3.4.1'
+ Copyright = 'Copyright (c) 2000-2006 Minero Aoki'
+
+ TASKS = [
+ [ 'all', 'do config, setup, then install' ],
+ [ 'config', 'saves your configurations' ],
+ [ 'show', 'shows current configuration' ],
+ [ 'setup', 'compiles ruby extentions and others' ],
+ [ 'install', 'installs files' ],
+ [ 'test', 'run all tests in test/' ],
+ [ 'clean', "does `make clean' for each extention" ],
+ [ 'distclean',"does `make distclean' for each extention" ]
+ ]
+
+ def ToplevelInstaller.invoke
+ config = ConfigTable.new(load_rbconfig())
+ config.load_standard_entries
+ config.load_multipackage_entries if multipackage?
+ config.fixup
+ klass = (multipackage?() ? ToplevelInstallerMulti : ToplevelInstaller)
+ klass.new(File.dirname($0), config).invoke
+ end
+
+ def ToplevelInstaller.multipackage?
+ File.dir?(File.dirname($0) + '/packages')
+ end
+
+ def ToplevelInstaller.load_rbconfig
+ if arg = ARGV.detect {|arg| /\A--rbconfig=/ =~ arg }
+ ARGV.delete(arg)
+ load File.expand_path(arg.split(/=/, 2)[1])
+ $".push 'rbconfig.rb'
+ else
+ require 'rbconfig'
+ end
+ ::Config::CONFIG
+ end
+
+ def initialize(ardir_root, config)
+ @ardir = File.expand_path(ardir_root)
+ @config = config
+ # cache
+ @valid_task_re = nil
+ end
+
+ def config(key)
+ @config[key]
+ end
+
+ def inspect
+ "#<#{self.class} #{__id__()}>"
+ end
+
+ def invoke
+ run_metaconfigs
+ case task = parsearg_global()
+ when nil, 'all'
+ parsearg_config
+ init_installers
+ exec_config
+ exec_setup
+ exec_install
+ else
+ case task
+ when 'config', 'test'
+ ;
+ when 'clean', 'distclean'
+ @config.load_savefile if File.exist?(@config.savefile)
+ else
+ @config.load_savefile
+ end
+ __send__ "parsearg_#{task}"
+ init_installers
+ __send__ "exec_#{task}"
+ end
+ end
+
+ def run_metaconfigs
+ @config.load_script "#{@ardir}/metaconfig"
+ end
+
+ def init_installers
+ @installer = Installer.new(@config, @ardir, File.expand_path('.'))
+ end
+
+ #
+ # Hook Script API bases
+ #
+
+ def srcdir_root
+ @ardir
+ end
+
+ def objdir_root
+ '.'
+ end
+
+ def relpath
+ '.'
+ end
+
+ #
+ # Option Parsing
+ #
+
+ def parsearg_global
+ while arg = ARGV.shift
+ case arg
+ when /\A\w+\z/
+ setup_rb_error "invalid task: #{arg}" unless valid_task?(arg)
+ return arg
+ when '-q', '--quiet'
+ @config.verbose = false
+ when '--verbose'
+ @config.verbose = true
+ when '--help'
+ print_usage $stdout
+ exit 0
+ when '--version'
+ puts "#{File.basename($0)} version #{Version}"
+ exit 0
+ when '--copyright'
+ puts Copyright
+ exit 0
+ else
+ setup_rb_error "unknown global option '#{arg}'"
+ end
+ end
+ nil
+ end
+
+ def valid_task?(t)
+ valid_task_re() =~ t
+ end
+
+ def valid_task_re
+ @valid_task_re ||= /\A(?:#{TASKS.map {|task,desc| task }.join('|')})\z/
+ end
+
+ def parsearg_no_options
+ unless ARGV.empty?
+ task = caller(0).first.slice(%r<`parsearg_(\w+)'>, 1)
+ setup_rb_error "#{task}: unknown options: #{ARGV.join(' ')}"
+ end
+ end
+
+ alias parsearg_show parsearg_no_options
+ alias parsearg_setup parsearg_no_options
+ alias parsearg_test parsearg_no_options
+ alias parsearg_clean parsearg_no_options
+ alias parsearg_distclean parsearg_no_options
+
+ def parsearg_config
+ evalopt = []
+ set = []
+ @config.config_opt = []
+ while i = ARGV.shift
+ if /\A--?\z/ =~ i
+ @config.config_opt = ARGV.dup
+ break
+ end
+ name, value = *@config.parse_opt(i)
+ if @config.value_config?(name)
+ @config[name] = value
+ else
+ evalopt.push [name, value]
+ end
+ set.push name
+ end
+ evalopt.each do |name, value|
+ @config.lookup(name).evaluate value, @config
+ end
+ # Check if configuration is valid
+ set.each do |n|
+ @config[n] if @config.value_config?(n)
+ end
+ end
+
+ def parsearg_install
+ @config.no_harm = false
+ @config.install_prefix = ''
+ while a = ARGV.shift
+ case a
+ when '--no-harm'
+ @config.no_harm = true
+ when /\A--prefix=/
+ path = a.split(/=/, 2)[1]
+ path = File.expand_path(path) unless path[0,1] == '/'
+ @config.install_prefix = path
+ else
+ setup_rb_error "install: unknown option #{a}"
+ end
+ end
+ end
+
+ def print_usage(out)
+ out.puts 'Typical Installation Procedure:'
+ out.puts " $ ruby #{File.basename $0} config"
+ out.puts " $ ruby #{File.basename $0} setup"
+ out.puts " # ruby #{File.basename $0} install (may require root privilege)"
+ out.puts
+ out.puts 'Detailed Usage:'
+ out.puts " ruby #{File.basename $0} <global option>"
+ out.puts " ruby #{File.basename $0} [<global options>] <task> [<task options>]"
+
+ fmt = " %-24s %s\n"
+ out.puts
+ out.puts 'Global options:'
+ out.printf fmt, '-q,--quiet', 'suppress message outputs'
+ out.printf fmt, ' --verbose', 'output messages verbosely'
+ out.printf fmt, ' --help', 'print this message'
+ out.printf fmt, ' --version', 'print version and quit'
+ out.printf fmt, ' --copyright', 'print copyright and quit'
+ out.puts
+ out.puts 'Tasks:'
+ TASKS.each do |name, desc|
+ out.printf fmt, name, desc
+ end
+
+ fmt = " %-24s %s [%s]\n"
+ out.puts
+ out.puts 'Options for CONFIG or ALL:'
+ @config.each do |item|
+ out.printf fmt, item.help_opt, item.description, item.help_default
+ end
+ out.printf fmt, '--rbconfig=path', 'rbconfig.rb to load',"running ruby's"
+ out.puts
+ out.puts 'Options for INSTALL:'
+ out.printf fmt, '--no-harm', 'only display what to do if given', 'off'
+ out.printf fmt, '--prefix=path', 'install path prefix', ''
+ out.puts
+ end
+
+ #
+ # Task Handlers
+ #
+
+ def exec_config
+ @installer.exec_config
+ @config.save # must be final
+ end
+
+ def exec_setup
+ @installer.exec_setup
+ end
+
+ def exec_install
+ @installer.exec_install
+ end
+
+ def exec_test
+ @installer.exec_test
+ end
+
+ def exec_show
+ @config.each do |i|
+ printf "%-20s %s\n", i.name, i.value if i.value?
+ end
+ end
+
+ def exec_clean
+ @installer.exec_clean
+ end
+
+ def exec_distclean
+ @installer.exec_distclean
+ end
+
+end # class ToplevelInstaller
+
+
+class ToplevelInstallerMulti < ToplevelInstaller
+
+ include FileOperations
+
+ def initialize(ardir_root, config)
+ super
+ @packages = directories_of("#{@ardir}/packages")
+ raise 'no package exists' if @packages.empty?
+ @root_installer = Installer.new(@config, @ardir, File.expand_path('.'))
+ end
+
+ def run_metaconfigs
+ @config.load_script "#{@ardir}/metaconfig", self
+ @packages.each do |name|
+ @config.load_script "#{@ardir}/packages/#{name}/metaconfig"
+ end
+ end
+
+ attr_reader :packages
+
+ def packages=(list)
+ raise 'package list is empty' if list.empty?
+ list.each do |name|
+ raise "directory packages/#{name} does not exist"\
+ unless File.dir?("#{@ardir}/packages/#{name}")
+ end
+ @packages = list
+ end
+
+ def init_installers
+ @installers = {}
+ @packages.each do |pack|
+ @installers[pack] = Installer.new(@config,
+ "#{@ardir}/packages/#{pack}",
+ "packages/#{pack}")
+ end
+ with = extract_selection(config('with'))
+ without = extract_selection(config('without'))
+ @selected = @installers.keys.select {|name|
+ (with.empty? or with.include?(name)) \
+ and not without.include?(name)
+ }
+ end
+
+ def extract_selection(list)
+ a = list.split(/,/)
+ a.each do |name|
+ setup_rb_error "no such package: #{name}" unless @installers.key?(name)
+ end
+ a
+ end
+
+ def print_usage(f)
+ super
+ f.puts 'Inluded packages:'
+ f.puts ' ' + @packages.sort.join(' ')
+ f.puts
+ end
+
+ #
+ # Task Handlers
+ #
+
+ def exec_config
+ run_hook 'pre-config'
+ each_selected_installers {|inst| inst.exec_config }
+ run_hook 'post-config'
+ @config.save # must be final
+ end
+
+ def exec_setup
+ run_hook 'pre-setup'
+ each_selected_installers {|inst| inst.exec_setup }
+ run_hook 'post-setup'
+ end
+
+ def exec_install
+ run_hook 'pre-install'
+ each_selected_installers {|inst| inst.exec_install }
+ run_hook 'post-install'
+ end
+
+ def exec_test
+ run_hook 'pre-test'
+ each_selected_installers {|inst| inst.exec_test }
+ run_hook 'post-test'
+ end
+
+ def exec_clean
+ rm_f @config.savefile
+ run_hook 'pre-clean'
+ each_selected_installers {|inst| inst.exec_clean }
+ run_hook 'post-clean'
+ end
+
+ def exec_distclean
+ rm_f @config.savefile
+ run_hook 'pre-distclean'
+ each_selected_installers {|inst| inst.exec_distclean }
+ run_hook 'post-distclean'
+ end
+
+ #
+ # lib
+ #
+
+ def each_selected_installers
+ Dir.mkdir 'packages' unless File.dir?('packages')
+ @selected.each do |pack|
+ $stderr.puts "Processing the package `#{pack}' ..." if verbose?
+ Dir.mkdir "packages/#{pack}" unless File.dir?("packages/#{pack}")
+ Dir.chdir "packages/#{pack}"
+ yield @installers[pack]
+ Dir.chdir '../..'
+ end
+ end
+
+ def run_hook(id)
+ @root_installer.run_hook id
+ end
+
+ # module FileOperations requires this
+ def verbose?
+ @config.verbose?
+ end
+
+ # module FileOperations requires this
+ def no_harm?
+ @config.no_harm?
+ end
+
+end # class ToplevelInstallerMulti
+
+
+class Installer
+
+ FILETYPES = %w( bin lib ext data conf man )
+
+ include FileOperations
+ include HookScriptAPI
+
+ def initialize(config, srcroot, objroot)
+ @config = config
+ @srcdir = File.expand_path(srcroot)
+ @objdir = File.expand_path(objroot)
+ @currdir = '.'
+ end
+
+ def inspect
+ "#<#{self.class} #{File.basename(@srcdir)}>"
+ end
+
+ def noop(rel)
+ end
+
+ #
+ # Hook Script API base methods
+ #
+
+ def srcdir_root
+ @srcdir
+ end
+
+ def objdir_root
+ @objdir
+ end
+
+ def relpath
+ @currdir
+ end
+
+ #
+ # Config Access
+ #
+
+ # module FileOperations requires this
+ def verbose?
+ @config.verbose?
+ end
+
+ # module FileOperations requires this
+ def no_harm?
+ @config.no_harm?
+ end
+
+ def verbose_off
+ begin
+ save, @config.verbose = @config.verbose?, false
+ yield
+ ensure
+ @config.verbose = save
+ end
+ end
+
+ #
+ # TASK config
+ #
+
+ def exec_config
+ exec_task_traverse 'config'
+ end
+
+ alias config_dir_bin noop
+ alias config_dir_lib noop
+
+ def config_dir_ext(rel)
+ extconf if extdir?(curr_srcdir())
+ end
+
+ alias config_dir_data noop
+ alias config_dir_conf noop
+ alias config_dir_man noop
+
+ def extconf
+ ruby "#{curr_srcdir()}/extconf.rb", *@config.config_opt
+ end
+
+ #
+ # TASK setup
+ #
+
+ def exec_setup
+ exec_task_traverse 'setup'
+ end
+
+ def setup_dir_bin(rel)
+ files_of(curr_srcdir()).each do |fname|
+ update_shebang_line "#{curr_srcdir()}/#{fname}"
+ end
+ end
+
+ alias setup_dir_lib noop
+
+ def setup_dir_ext(rel)
+ make if extdir?(curr_srcdir())
+ end
+
+ alias setup_dir_data noop
+ alias setup_dir_conf noop
+ alias setup_dir_man noop
+
+ def update_shebang_line(path)
+ return if no_harm?
+ return if config('shebang') == 'never'
+ old = Shebang.load(path)
+ if old
+ $stderr.puts "warning: #{path}: Shebang line includes too many args. It is not portable and your program may not work." if old.args.size > 1
+ new = new_shebang(old)
+ return if new.to_s == old.to_s
+ else
+ return unless config('shebang') == 'all'
+ new = Shebang.new(config('rubypath'))
+ end
+ $stderr.puts "updating shebang: #{File.basename(path)}" if verbose?
+ open_atomic_writer(path) {|output|
+ File.open(path, 'rb') {|f|
+ f.gets if old # discard
+ output.puts new.to_s
+ output.print f.read
+ }
+ }
+ end
+
+ def new_shebang(old)
+ if /\Aruby/ =~ File.basename(old.cmd)
+ Shebang.new(config('rubypath'), old.args)
+ elsif File.basename(old.cmd) == 'env' and old.args.first == 'ruby'
+ Shebang.new(config('rubypath'), old.args[1..-1])
+ else
+ return old unless config('shebang') == 'all'
+ Shebang.new(config('rubypath'))
+ end
+ end
+
+ def open_atomic_writer(path, &block)
+ tmpfile = File.basename(path) + '.tmp'
+ begin
+ File.open(tmpfile, 'wb', &block)
+ File.rename tmpfile, File.basename(path)
+ ensure
+ File.unlink tmpfile if File.exist?(tmpfile)
+ end
+ end
+
+ class Shebang
+ def Shebang.load(path)
+ line = nil
+ File.open(path) {|f|
+ line = f.gets
+ }
+ return nil unless /\A#!/ =~ line
+ parse(line)
+ end
+
+ def Shebang.parse(line)
+ cmd, *args = *line.strip.sub(/\A\#!/, '').split(' ')
+ new(cmd, args)
+ end
+
+ def initialize(cmd, args = [])
+ @cmd = cmd
+ @args = args
+ end
+
+ attr_reader :cmd
+ attr_reader :args
+
+ def to_s
+ "#! #{@cmd}" + (@args.empty? ? '' : " #{@args.join(' ')}")
+ end
+ end
+
+ #
+ # TASK install
+ #
+
+ def exec_install
+ rm_f 'InstalledFiles'
+ exec_task_traverse 'install'
+ end
+
+ def install_dir_bin(rel)
+ install_files targetfiles(), "#{config('bindir')}/#{rel}", 0755, strip_ext?
+ end
+
+ def strip_ext?
+ /mswin|mingw/ !~ RUBY_PLATFORM
+ end
+
+ def install_dir_lib(rel)
+ install_files libfiles(), "#{config('rbdir')}/#{rel}", 0644
+ end
+
+ def install_dir_ext(rel)
+ return unless extdir?(curr_srcdir())
+ install_files rubyextentions('.'),
+ "#{config('sodir')}/#{File.dirname(rel)}",
+ 0555
+ end
+
+ def install_dir_data(rel)
+ install_files targetfiles(), "#{config('datadir')}/#{rel}", 0644
+ end
+
+ def install_dir_conf(rel)
+ # FIXME: should not remove current config files
+ # (rename previous file to .old/.org)
+ install_files targetfiles(), "#{config('sysconfdir')}/#{rel}", 0644
+ end
+
+ def install_dir_man(rel)
+ install_files targetfiles(), "#{config('mandir')}/#{rel}", 0644
+ end
+
+ def install_files(list, dest, mode, stripext = false)
+ mkdir_p dest, @config.install_prefix
+ list.each do |fname|
+ if stripext
+ install fname, "#{dest}/#{File.basename(fname, '.*')}",
+ mode, @config.install_prefix
+ else
+ install fname, dest, mode, @config.install_prefix
+ end
+ end
+ end
+
+ def libfiles
+ glob_reject(%w(*.y *.output), targetfiles())
+ end
+
+ def rubyextentions(dir)
+ ents = glob_select("*.#{@config.dllext}", targetfiles())
+ if ents.empty?
+ setup_rb_error "no ruby extention exists: 'ruby #{$0} setup' first"
+ end
+ ents
+ end
+
+ def targetfiles
+ mapdir(existfiles() - hookfiles())
+ end
+
+ def mapdir(ents)
+ ents.map {|ent|
+ if File.exist?(ent)
+ then ent # objdir
+ else "#{curr_srcdir()}/#{ent}" # srcdir
+ end
+ }
+ end
+
+ # picked up many entries from cvs-1.11.1/src/ignore.c
+ JUNK_FILES = %w(
+ core RCSLOG tags TAGS .make.state
+ .nse_depinfo #* .#* cvslog.* ,* .del-* *.olb
+ *~ *.old *.bak *.BAK *.orig *.rej _$* *$
+
+ *.org *.in .*
+ )
+
+ def existfiles
+ glob_reject(JUNK_FILES, (files_of(curr_srcdir()) | files_of('.')))
+ end
+
+ def hookfiles
+ %w( pre-%s post-%s pre-%s.rb post-%s.rb ).map {|fmt|
+ %w( config setup install clean distclean ).map {|t| sprintf(fmt, t) }
+ }.flatten
+ end
+
+ def glob_select(pat, ents)
+ re = globs2re([pat])
+ ents.select {|ent| re =~ ent }
+ end
+
+ def glob_reject(pats, ents)
+ re = globs2re(pats)
+ ents.reject {|ent| re =~ ent }
+ end
+
+ GLOB2REGEX = {
+ '.' => '\.',
+ '$' => '\$',
+ '#' => '\#',
+ '*' => '.*'
+ }
+
+ def globs2re(pats)
+ /\A(?:#{
+ pats.map {|pat| pat.gsub(/[\.\$\#\*]/) {|ch| GLOB2REGEX[ch] } }.join('|')
+ })\z/
+ end
+
+ #
+ # TASK test
+ #
+
+ TESTDIR = 'test'
+
+ def exec_test
+ unless File.directory?('test')
+ $stderr.puts 'no test in this package' if verbose?
+ return
+ end
+ $stderr.puts 'Running tests...' if verbose?
+ begin
+ require 'test/unit'
+ rescue LoadError
+ setup_rb_error 'test/unit cannot loaded. You need Ruby 1.8 or later to invoke this task.'
+ end
+ runner = Test::Unit::AutoRunner.new(true)
+ runner.to_run << TESTDIR
+ runner.run
+ end
+
+ #
+ # TASK clean
+ #
+
+ def exec_clean
+ exec_task_traverse 'clean'
+ rm_f @config.savefile
+ rm_f 'InstalledFiles'
+ end
+
+ alias clean_dir_bin noop
+ alias clean_dir_lib noop
+ alias clean_dir_data noop
+ alias clean_dir_conf noop
+ alias clean_dir_man noop
+
+ def clean_dir_ext(rel)
+ return unless extdir?(curr_srcdir())
+ make 'clean' if File.file?('Makefile')
+ end
+
+ #
+ # TASK distclean
+ #
+
+ def exec_distclean
+ exec_task_traverse 'distclean'
+ rm_f @config.savefile
+ rm_f 'InstalledFiles'
+ end
+
+ alias distclean_dir_bin noop
+ alias distclean_dir_lib noop
+
+ def distclean_dir_ext(rel)
+ return unless extdir?(curr_srcdir())
+ make 'distclean' if File.file?('Makefile')
+ end
+
+ alias distclean_dir_data noop
+ alias distclean_dir_conf noop
+ alias distclean_dir_man noop
+
+ #
+ # Traversing
+ #
+
+ def exec_task_traverse(task)
+ run_hook "pre-#{task}"
+ FILETYPES.each do |type|
+ if type == 'ext' and config('without-ext') == 'yes'
+ $stderr.puts 'skipping ext/* by user option' if verbose?
+ next
+ end
+ traverse task, type, "#{task}_dir_#{type}"
+ end
+ run_hook "post-#{task}"
+ end
+
+ def traverse(task, rel, mid)
+ dive_into(rel) {
+ run_hook "pre-#{task}"
+ __send__ mid, rel.sub(%r[\A.*?(?:/|\z)], '')
+ directories_of(curr_srcdir()).each do |d|
+ traverse task, "#{rel}/#{d}", mid
+ end
+ run_hook "post-#{task}"
+ }
+ end
+
+ def dive_into(rel)
+ return unless File.dir?("#{@srcdir}/#{rel}")
+
+ dir = File.basename(rel)
+ Dir.mkdir dir unless File.dir?(dir)
+ prevdir = Dir.pwd
+ Dir.chdir dir
+ $stderr.puts '---> ' + rel if verbose?
+ @currdir = rel
+ yield
+ Dir.chdir prevdir
+ $stderr.puts '<--- ' + rel if verbose?
+ @currdir = File.dirname(rel)
+ end
+
+ def run_hook(id)
+ path = [ "#{curr_srcdir()}/#{id}",
+ "#{curr_srcdir()}/#{id}.rb" ].detect {|cand| File.file?(cand) }
+ return unless path
+ $stderr.puts "invoking hook script #{path}" if verbose?
+ begin
+ instance_eval File.read(path), path, 1
+ rescue
+ raise if $DEBUG
+ setup_rb_error "hook #{path} failed:\n" + $!.message
+ end
+ end
+
+end # class Installer
+
+
+class SetupError < StandardError; end
+
+def setup_rb_error(msg)
+ raise SetupError, msg
+end
+
+if $0 == __FILE__
+ begin
+ ToplevelInstaller.invoke
+ rescue SetupError
+ raise if $DEBUG
+ $stderr.puts $!.message
+ $stderr.puts "Try 'ruby #{$0} --help' for detailed usage."
+ exit 1
+ end
+end
diff --git a/old/skeletons/sh.erb b/old/skeletons/sh.erb
new file mode 100644
index 0000000..e2c953e
--- /dev/null
+++ b/old/skeletons/sh.erb
@@ -0,0 +1,32 @@
+<%= header 'sh.hdr' %>
+
+SELF=`basename $0`
+VERSION='0.0.1'
+
+function usage ( ) {
+ echo "usage : $SELF [-]"
+}
+
+function version ( ) {
+ echo " $SELF version $VERSION"
+ echo " Copyright (C) <%= @username %> <%= "#{Time.now.year}-#{Time.now.year+3}" %>"
+ echo " This is free software; There is NO warranty; "
+ echo " not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+}
+
+OPTERR=1
+while [ 1 ]; do
+ getopts "vha:" OPT
+ if test $? -gt 0; then break; fi
+ case $OPT in
+ v)
+ version && exit 0
+ ;;
+ h)
+ usage && exit 0
+ ;;
+ a)
+ echo "arg $OPTARG [$OPTIND]"
+ ;;
+ esac
+done
diff --git a/old/skeletons/sh.hdr b/old/skeletons/sh.hdr
new file mode 100644
index 0000000..ca0ad8a
--- /dev/null
+++ b/old/skeletons/sh.hdr
@@ -0,0 +1,12 @@
+#! /bin/bash
+
+#----------------------------------------------------------------------------
+#
+# File : <%= @filename %>
+# Author : <%= @username %> <<%= @email %>>
+# Date : <%= @now %>
+# License :
+#
+<%= license '# '%>
+#
+#----------------------------------------------------------------------------
diff --git a/old/skeletons/tex.erb b/old/skeletons/tex.erb
new file mode 100644
index 0000000..489f73c
--- /dev/null
+++ b/old/skeletons/tex.erb
@@ -0,0 +1,74 @@
+%
+% <%= @username %> <<%= @email %>>
+% <%= @filename %>
+% <%= @now %>
+%
+\documentclass[a4paper,twoside,12pt]{article}
+%
+\usepackage[french]{babel} % prise en charge du francais
+\usepackage[latin1]{inputenc} % codage des caracteres
+\usepackage[T1]{fontenc} % manipulation des polices
+\usepackage{moreverb} % listinginput[incr]{first}{file}
+\usepackage{fancybox} % VerbatimInput{file}
+\usepackage{fancyhdr} % en-tete pied de page
+\usepackage{hyperref} % lien hypertext pdf / html doit etre place en dernier
+\usepackage{layout} % afficher le layout
+% layout vertical
+\setlength{\topmargin}{0cm}
+\setlength{\headheight}{2cm}
+\setlength{\headsep}{0.5cm}
+\setlength{\topskip}{1.5cm}
+\setlength{\textheight}{21cm}
+\setlength{\footskip}{2cm}
+%layout horizontal
+\setlength{\evensidemargin}{49pt}
+\setlength{\oddsidemargin}{6pt}
+\setlength{\marginparwidth}{3cm}
+\setlength{\textwidth}{14cm}
+%
+\pagestyle{fancy}
+%
+%
+\begin{document}
+ %\layout
+ \tableofcontents
+ \newpage
+ %
+ %
+ \section{Section}
+ %
+ Text ...
+ %
+ \paragraph{Paragraph} P
+ %
+ \paragraph{} LABEL\label{L}
+ %
+ \subsection{Subsection}
+ %
+ %
+ \subsubsection{SubSubSection}
+ %
+ %
+ %
+ %
+ %
+ \newpage
+ \section{Section 2}
+ %
+ Label : \ref{L} page : \pageref{L}.\\
+ \url{http://cr.yp.to}\\
+ biblio : \cite{keyword}\\
+ \footnote{une note de bas de page}
+ %
+ \appendix
+ \section{Code Source}
+ \subsection{Code\_A}
+ %
+ %\insertFile{../Code_A}{scriptsize}
+ %
+ %\includegraphics*[height=8cm]{filename}
+ %\section{Bibliographie}
+ %
+ \bibliographystyle{plain}
+ \bibliography{biblio}
+\end{document}
diff --git a/old/skeletons/wxApp.py.erb b/old/skeletons/wxApp.py.erb
new file mode 100644
index 0000000..18f9392
--- /dev/null
+++ b/old/skeletons/wxApp.py.erb
@@ -0,0 +1,126 @@
+<%= header 'python.hdr' %>
+
+""" Module Descritpion """
+
+import wx
+from zurcher.wx.MenuFactory import *
+from wx.html import HtmlWindow
+import wx.lib.wxpTag # wxButton in AboutDialog
+from wx.lib.newevent import NewEvent as wxNewEvent
+
+
+#----------------------------------------------------------------------------
+
+__app_version__ = '0.1.0'
+__app_name__ = 'MyApp'
+__app__ = '%s %s' % ( __app_name__, __app_version__ )
+
+#----------------------------------------------------------------------------
+
+UpdateGuiEvent, EVT_UPDATE_GUI = wxNewEvent( )
+
+#----------------------------------------------------------------------------
+
+class AboutDialog( wx.Dialog ):
+ """ Used to show info about ZIP file """
+ text = '''<html>
+ <body bgcolor="#dddddd">
+ <center><table bgcolor="#eeeeee" width="100%%" cellspacing="0" cellpadding="0" border="1">
+ <tr><td align="center">Running on Python %s<br>using wxPython %s</td></tr></table>
+ <p><b>%s</b> is a small test application.</p>
+ <p><b>%s</b> is brought to you by <b>J&eacute;r&eacute;my Zurcher</b></p>
+ <p><font size="-1">Please see <i>license.txt</i> for licensing information about <b>wxPython.</b></font></p>
+ <p><wxp module="wx" class="Button">
+ <param name="label" value="Okay">
+ <param name="id" value="%d">
+ </wxp></p>
+ </center>
+ </body>
+ </html>'''
+
+ def __init__( self, parent, title, ID=-1 ):
+ wx.Dialog.__init__( self, parent, ID, title)
+ html = HtmlWindow( self, -1, size=(410, -1) )
+ import sys
+ py_version = sys.version.split( )[0]
+ html.SetPage( self.text % ( py_version, wx.__version__, __app_name__, __app_name__, wx.ID_OK ) )
+ btn = html.FindWindowById( wx.ID_OK )
+ btn.SetDefault( )
+ ir = html.GetInternalRepresentation( )
+ html.SetSize( ( ir.GetWidth()+25, ir.GetHeight()+25 ) )
+ self.SetClientSize( html.GetSize() )
+ self.CenterOnScreen( )
+
+#----------------------------------------------------------------------------
+class MyPanel( wx.Panel ):
+ def __init__( self, parent ):
+ wx.Panel.__init__( self, parent, -1 )
+ self.SetBackgroundColour( 'GREY' )
+ gbs = wx.GridBagSizer( 5, 5 )
+ gbs.Add( (0,0), (10,10) )
+ gbs.Add( wx.StaticText( self, -1, 'wx.StaticText' ), (1,1) )
+ self.SetSizer( gbs )
+
+#----------------------------------------------------------------------------
+class MyFrame( wx.Frame ):
+ def __init__( self, title ):
+ wx.Frame.__init__( self, None, -1, title, size=(200, 200) )
+
+ menuIDs = {
+ 'open' : [ wx.NewId(), True ],
+ }
+ self.menuIDs = menuIDs
+
+ mb = zMenuBar( self, None, wx.MB_DOCKABLE )
+ fileMenu=[
+ zItem( '&Open\tCtrl-O', 'Open something', fct=self.OnOpen, id=menuIDs['open'][0] ),
+ zItem( kind=wx.ITEM_SEPARATOR ),
+ zItem( 'E&xit\tCtrl-X', 'Quit this application', fct=self.OnExit )
+ ]
+ helpMenu=[
+ zItem( '&About\tF1', 'About dialog', fct=self.OnHelp )
+ ]
+ menus=[
+ zMenu( '&File', '', fileMenu, wx.MENU_TEAROFF),
+ zMenu( '&Help','', helpMenu)
+ ]
+ mb.realize( menus )
+
+ self.SetStatusBar( self.CreateStatusBar( ) )
+
+ self.Bind( wx.EVT_CLOSE, self.OnExit )
+ panel = MyPanel( self )
+ #self.Fit( )
+
+ def OnExit( self, event ):
+ self.Destroy( )
+
+ def OnHelp( self, event ):
+ dialog = AboutDialog( self, 'About %s ' % ( __app__ ) )
+ dialog.ShowModal( )
+ dialog.Destroy( )
+
+ def OnOpen( self, event ):
+ print 'OnOpen will be disabled'
+ self.menuIDs['open'][1] = False
+ self.OnUpdateGui( event )
+
+ def OnUpdateGui( self, evt ):
+# for key in self.menuIDs.keys( ):
+# self.menuIDs[key][1] = False
+ mb = self.GetMenuBar( )
+ map( lambda x:mb.Enable( x[0], x[1] ), self.menuIDs.values() )
+
+#----------------------------------------------------------------------------
+class MyApp( wx.App ):
+ def OnInit( self ):
+ frame = MyFrame( __app__ )
+ frame.Center( )
+ frame.Show( True )
+ return True
+
+#----------------------------------------------------------------------------
+if __name__ == '__main__':
+ app = MyApp(0)
+ app.MainLoop()
+
diff --git a/old/syntax/edc.vim b/old/syntax/edc.vim
new file mode 100644
index 0000000..106a4ed
--- /dev/null
+++ b/old/syntax/edc.vim
@@ -0,0 +1,259 @@
+" Vim syntax file
+" Language: EDC
+" Maintainer: Viktor Kojouharov
+" Last Change: 2007 02 24
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful keywords
+syn keyword edcBlock images data fonts collections group contained
+syn keyword edcBlock part parts dragable description sounds sample contained
+syn keyword edcBlock text font fill origin size image proxy contained
+syn keyword edcBlock programs program styles style contained
+syn keyword edcBlock gradient spectra spectrum contained
+syn keyword edcBlock color_classes color_class rel1 rel2 contained
+syn keyword edcBlock items item file params externals contained
+syn keyword edcBlock map rotation perspective script lua_script contained
+syn keyword edcBlock set
+syn keyword edcBlock sequence link contained
+" LazEDC blocks
+syn keyword edcBlock desc rect swallow textblock box table external spacer contained
+
+syn keyword edcLabel item name alias min max type effect contained
+syn keyword edcLabel mouse_events repeat_events clip_to contained
+syn keyword edcLabel x y z confine events base_scale scale contained
+syn keyword edcLabel ignore_flags precise_is_inside select_mode contained
+syn keyword edcLabel use_alternate_font_metrics entry_mode contained
+syn keyword edcLabel source source2 source3 source4 contained
+syn keyword edcLabel source5 source6 multiline pointer_mode contained
+syn keyword edcLabel state visible step aspect fixed middle contained
+syn keyword edcLabel aspect_preference ellipsis elipsis image contained
+syn keyword edcLabel relative offset to to_x to_y contained
+syn keyword edcLabel source_visible source_clip contained
+syn keyword edcLabel border border_scale border_scale_by scale_hint color color2 color3 font size contained
+syn keyword edcLabel signal action transition in filter contained
+syn keyword edcLabel target after fit align contained
+syn keyword edcLabel text smooth inherit tag base style contained
+syn keyword edcLabel text_source color_class text_class contained
+syn keyword edcLabel spectrum angle spread normal tween contained
+syn keyword edcLabel padding prefer weight aspect_mode contained
+syn keyword edcLabel options layout position span contained
+syn keyword edcLabel homogeneous contained
+syn keyword edcLabel on perspective light perspective_on contained
+syn keyword edcLabel backface_cull alpha center focus zplane focal contained
+syn keyword edcLabel int double string external script_only contained
+syn keyword edcLabel insert_before insert_after contained
+syn keyword edcLabel script_recursion contained
+syn keyword edcLabel limit broadcast_signal targets target_group groups size_range contained
+" LazEDC synonyms
+syn keyword edcLabel before after ignore pointer alt_font clip contained
+
+" LazEDC shorthand
+syn keyword edcLazShort broadcast nobroadcast mouse nomouse repeat norepeat precise noprecise noscale vis hid contained
+
+syn keyword edcConstant COMP RAW LOSSY NONE ON_HOLD AUTOGRAB NOGRAB
+syn keyword edcConstant TEXT IMAGE RECT TEXTBLOCK SWALLOW GRADIENT GROUP
+syn keyword edcConstant SPACER
+syn keyword edcConstant NONE PLAIN OUTLINE SOFT_OUTLINE SHADOW PROXY
+syn keyword edcConstant SOFT_SHADOW OUTLINE_SHADOW OUTLINE_SOFT_SHADOW
+syn keyword edcConstant GLOW FAR_SHADOW FAR_SOFT_SHADOW
+syn keyword edcConstant BOTTOM_RIGHT BOTTOM BOTTOM_LEFT LEFT
+syn keyword edcConstant TOP_LEFT TOP TOP_RIGHT RIGHT
+syn keyword edcConstant STATE_SET ACTION_STOP SIGNAL_EMIT FOCUS_SET
+syn keyword edcConstant DRAG_VAL_SET DRAG_VAL_STEP DRAG_VAL_PAGE
+syn keyword edcConstant LINEAR SINUSOIDAL ACCELERATE DECELERATE
+syn keyword edcConstant LIN DECEL DIVIS BOUNCE SPRING CURRENT
+syn keyword edcConstant ACCEL_FAC DECEL_FAC SIN_FAC DIVISOR_INTERP
+syn keyword edcConstant ACCELERATE_FACTOR DECELERATE_FACTOR
+syn keyword edcConstant VERTICAL HORIZONTAL BOTH BOX TABLE
+syn keyword edcConstant EDITABLE PASSWORD "default"
+syn keyword edcConstant DEFAULT EXPLICIT PLAY_SAMPLE
+syn keyword edcConstant SOLID
+syn keyword edcConstant WIDTH HEIGHT
+
+syn keyword edcTodo contained TODO FIXME XXX
+
+syn match edcLabelMatch "\w\+:" contains=edcLabel
+syn match edcLazSMatch "\w\+;" contains=edcLazShort
+syn match edcBlockMatch "\w\+\_s*{" contains=edcBlock
+syn match edcBlockMatch "\w\+\.\a"me=e-2 contains=edcBlock
+" edcCommentGroup allows adding matches for special things in comments
+syn cluster edcCommentGroup contains=edcTodo
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match edcSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+syn region edcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=edcSpecial
+syn match edcFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+syn match edcFormat display "%%" contained
+syn region edcString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat
+
+syn match edcCharacter "L\='[^\\]'"
+syn match edcCharacter "L'[^']*'" contains=edcSpecial
+syn match edcSpecialError "L\='\\[^'\"?\\abfnrtv]'"
+syn match edcSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
+syn match edcSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match edcSpecialCharacter display "'\\x\x\{1,2}'"
+syn match edcSpecialCharacter display "L'\\x\x\+'"
+
+"when wanted, highlight trailing white space
+if exists("edc_space_errors")
+ if !exists("edc_no_trail_space_error")
+ syn match edcSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("edc_no_tab_space_error")
+ syn match edcSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+syn cluster edcParenGroup contains=edcParenError,edcIncluded,edcSpecial,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcUserCont,edcUserLabel,edcBitField,edcCommentSkip,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom
+if exists("edc_no_bracket_error")
+ syn region edcParen transparent start='(' end=')' contains=ALLBUT,@edcParenGroup
+ syn match edcParenError display ")"
+ syn match edcErrInParen display contained "[{}]"
+else
+ syn region edcParen transparent start='(' end=')' contains=ALLBUT,@edcParenGroup,edcErrInBracket
+ syn match edcParenError display "[\])]"
+ syn match edcErrInParen display contained "[\]{}]"
+ syn region edcBracket transparent start='\[' end=']' contains=ALLBUT,@edcParenGroup,edcErrInParen
+ syn match edcErrInBracket display contained "[);{}]"
+endif
+
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match edcNumbers display transparent "\<\d\|\.\d" contains=edcNumber,edcFloat,edcOctalError,edcOctal
+" Same, but without octal error (for comments)
+syn match edcNumbersCom display contained transparent "\<\d\|\.\d" contains=edcNumber,edcFloat,edcOctal
+syn match edcNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match edcNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match edcOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=edcOctalZero
+syn match edcOctalZero display contained "\<0"
+syn match edcFloat display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match edcFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match edcFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match edcFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn match edcOctalError display contained "0\o*[89]\d*"
+syn case match
+
+if exists("edc_comment_strings")
+ " A comment can contain edcString, edcCharacter and edcNumber.
+ " But a "*/" inside a edcString in a edcComment DOES end the comment! So we
+ " need to use a special type of edcString: edcCommentString, 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 edcCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region edcCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=edcSpecial,edcCommentSkip
+ syntax region edcComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=edcSpecial
+ syntax region edcCommentL start="//" skip="\\$" end="$" keepend contains=@edcCommentGroup,edcComment2String,edcCharacter,edcNumbersCom,edcSpaceError
+ syntax region edcComment matchgroup=edcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@edcCommentGroup,edcCommentStartError,edcCommentString,edcCharacter,edcNumbersCom,edcSpaceError
+else
+ syn region edcCommentL start="//" skip="\\$" end="$" keepend contains=@edcCommentGroup,edcSpaceError
+ syn region edcComment matchgroup=edcCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@edcCommentGroup,edcCommentStartError,edcSpaceError
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match edcCommentError display "\*/"
+syntax match edcCommentStartError display "/\*"me=e-1 contained
+
+syn region edcPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=edcComment,edcCharacter,edcParenError,edcNumbers,edcCommentError,edcSpaceError
+syn match edcPreCondit display "^\s*#\s*\(else\|endif\)\>"
+syn region edcIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match edcIncluded display contained "<[^>]*>"
+syn match edcInclude display "^\s*#\s*include\>\s*["<]" contains=edcIncluded
+syn cluster edcPreProcGroup contains=edcPreCondit,edcIncluded,edcInclude,edcDefine,edcErrInParen,edcErrInBracket,edcCommentSkip,edcCommentString,edcComment2String,@edcCommentGroup,edcCommentStartError,edcParen,edcBracket,edcMulti,edcUserLabel
+syn cluster edcAlphaNum contains=edcSpecial,edcOctalZero,edcFormat,edcNumber,edcFloat,edcOctal,edcOctalError,edcNumbersCom,edcString
+syn region edcDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@edcPreProcGroup
+syn region edcPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@edcPreProcGroup
+
+syn match edcUserLabel display "\I\i*" contained
+
+syn include @edcEmbryo syntax/embryo.vim
+unlet b:current_syntax
+syn region edcScript matchgroup=edcScriptTag start="\<script\_s*{" end="}" contains=@edcEmbryo,edcScriptTag
+syn keyword edcScriptTag contained script
+
+syn include @edcLua syntax/lua.vim
+unlet b:current_syntax
+syn region edcLuaScript matchgroup=edcLuaScriptTag start="\<lua_script\_s*{" end="}" contains=@edcLua,edcLuaScriptTag
+syn keyword edcLuaScriptTag contained script
+
+if exists("edc_minlines")
+ let b:edc_minlines = edc_minlines
+else
+ let b:edc_minlines = 50 " #if 0 constructs can be long
+endif
+exec "syn sync ccomment edcComment minlines=" . b:edc_minlines
+"syn sync fromstart
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_edc_syn_inits")
+ if version < 508
+ let did_edc_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink edcFormat edcSpecial
+ HiLink edcCommentL edcComment
+ HiLink edcCommentStart edcComment
+ HiLink edcLabel Label
+ HiLink edcLazShort Label
+ HiLink edcUserLabel Label
+ HiLink edcConditional Conditional
+ HiLink edcRepeat Repeat
+ HiLink edcCharacter Character
+ HiLink edcSpecialCharacter cSpecial
+ HiLink edcNumber Number
+ HiLink edcOctal Number
+ HiLink edcOctalZero PreProc " link this to Error if you want
+ HiLink edcFloat Float
+ HiLink edcOctalError edcError
+ HiLink edcParenError edcError
+ HiLink edcErrInParen edcError
+ HiLink edcErrInBracket edcError
+ HiLink edcCommentError edcError
+ HiLink edcCommentStartError edcError
+ HiLink edcSpaceError edcError
+ HiLink edcSpecialError edcError
+ HiLink edcOperator Operator
+ HiLink edcStructure Structure
+ HiLink edcStorageClass StorageClass
+ HiLink edcInclude Include
+ HiLink edcPreProc PreProc
+ HiLink edcDefine Macro
+ HiLink edcIncluded edcString
+ HiLink edcError Error
+ HiLink edcBlock Function
+ HiLink edcScriptTag Function
+ HiLink edcLuaScriptTag Function
+ HiLink edcPreCondit PreCondit
+ HiLink edcConstant Constant
+ HiLink edcCommentString edcString
+ HiLink edcComment2String edcString
+ HiLink edcCommentSkip edcComment
+ HiLink edcString String
+ HiLink edcComment Comment
+ HiLink edcSpecial SpecialChar
+ HiLink edcTodo Todo
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "edc"
+
+" vim: ts=8
diff --git a/old/syntax/embryo.vim b/old/syntax/embryo.vim
new file mode 100644
index 0000000..11175d8
--- /dev/null
+++ b/old/syntax/embryo.vim
@@ -0,0 +1,195 @@
+" Vim syntax file
+" Language: Embryo
+" Maintainer: Viktor Kojouharov
+" Last Change: 2006 10 06
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+" A bunch of useful keywords
+syn keyword embryoConditional if else switch
+syn keyword embryoRepeat while for do in
+syn keyword embryoBranch break continue
+syn keyword embryoOperator new
+syn keyword embryoType Float State_Param Msg_Type enum
+syn keyword embryoStatement return with native stock forward
+syn keyword embryoLabel case default
+syn keyword embryoReserved public
+syn keyword embryoEdjeKey PART PROGRAM
+
+syn keyword embryoTodo contained TODO FIXME XXX
+
+" embryoCommentGroup allows adding matches for special things in comments
+syn cluster embryoCommentGroup contains=embryoTodo
+
+" String and Character constants
+" Highlight special characters (those which have a backslash) differently
+syn match embryoSpecial display contained "\\\(x\x\+\|\o\{1,3}\|.\|$\)"
+syn region embryoString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=embryoSpecial
+syn match embryoFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+syn match embryoFormat display "%%" contained
+syn region embryoString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat
+
+syn match embryoCharacter "L\='[^\\]'"
+syn match embryoCharacter "L'[^']*'" contains=embryoSpecial
+syn match embryoSpecialError "L\='\\[^'\"?\\abfnrtv]'"
+syn match embryoSpecialCharacter "L\='\\['\"?\\abfnrtv]'"
+syn match embryoSpecialCharacter display "L\='\\\o\{1,3}'"
+syn match embryoSpecialCharacter display "'\\x\x\{1,2}'"
+syn match embryoSpecialCharacter display "L'\\x\x\+'"
+
+"when wanted, highlight trailing white space
+if exists("embryo_space_errors")
+ if !exists("embryo_no_trail_space_error")
+ syn match embryoSpaceError display excludenl "\s\+$"
+ endif
+ if !exists("embryo_no_tab_space_error")
+ syn match embryoSpaceError display " \+\t"me=e-1
+ endif
+endif
+
+"catch errors caused by wrong parenthesis and brackets
+syn cluster embryoParenGroup contains=embryoParenError,embryoIncluded,embryoSpecial,embryoCommentSkip,embryoCommentString,embryoComment2String,@embryoCommentGroup,embryoCommentStartErr,embryoUserCont,embryoUserLabel,embryoBitField,embryoCommentSkip,embryoOctalZero,embryoFormat,embryoNumber,embryoFloat,embryoOctal,embryoOctalError,embryoNumbersCom
+if exists("embryo_no_bracket_error")
+ syn region embryoParen transparent start='(' end=')' contains=ALLBUT,@embryoParenGroup
+ syn match embryoParenError display ")"
+ syn match embryoErrInParen display contained "[{}]"
+else
+ syn region embryoParen transparent start='(' end=')' contains=ALLBUT,@embryoParenGroup,embryoErrInBracket
+ syn match embryoParenError display "[\])]"
+ syn match embryoErrInParen display contained "[\]{}]"
+ syn region embryoBracket transparent start='\[' end=']' contains=ALLBUT,@embryoParenGroup,embryoErrInParen
+ syn match embryoErrInBracket display contained "[);{}]"
+endif
+
+syn region embryoBrace start='{' end='}' transparent
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match embryoNumbers display transparent "\<\d\|\.\d" contains=embryoNumber,embryoFloat,embryoOctalError,embryoOctal
+" Same, but without octal error (for comments)
+syn match embryoNumbersCom display contained transparent "\<\d\|\.\d" contains=embryoNumber,embryoFloat,embryoOctal
+syn match embryoNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match embryoNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match embryoOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=embryoOctalZero
+syn match embryoOctalZero display contained "\<0"
+syn match embryoFloat display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match embryoFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match embryoFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match embryoFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+" flag an octal number with wrong digits
+syn match embryoOctalError display contained "0\o*[89]\d*"
+syn case match
+
+if exists("embryo_comment_strings")
+ " A comment can contain embryoString, embryoCharacter and embryoNumber.
+ " But a "*/" inside a embryoString in a embryoComment DOES end the comment! So we
+ " need to use a special type of embryoString: embryoCommentString, 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 embryoCommentSkip contained "^\s*\*\($\|\s\+\)"
+ syntax region embryoCommentString contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end=+\*/+me=s-1 contains=embryoSpecial,embryoCommentSkip
+ syntax region embryoComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=embryoSpecial
+ syntax region embryoCommentL start="//" skip="\\$" end="$" keepend contains=@embryoCommentGroup,embryoComment2String,embryoCharacter,embryoNumbersCom,embryoSpaceError
+ syntax region embryoComment matchgroup=embryoCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@embryoCommentGroup,embryoCommentStartErr,embryoCommentString,embryoCharacter,embryoNumbersCom,embryoSpaceError
+else
+ syn region embryoCommentL start="//" skip="\\$" end="$" keepend contains=@embryoCommentGroup,embryoSpaceError
+ syn region embryoComment matchgroup=embryoCommentStart start="/\*" matchgroup=NONE end="\*/" contains=@embryoCommentGroup,embryoCommentStartErr,embryoSpaceError
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match embryoCommentError display "\*/"
+syntax match embryoCommentStartErr display "/\*"me=e-1 contained
+
+syn region embryoPreCondit start="^\s*#\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=embryoComment,embryoCharacter,embryoParenError,embryoNumbers,embryoCommentError,embryoSpaceError
+syn match embryoPreCondit display "^\s*#\s*\(else\|endif\)\>"
+syn region embryoIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match embryoIncluded display contained "<[^>]*>"
+syn match embryoInclude display "^\s*#\s*include\>\s*["<]" contains=embryoIncluded
+syn cluster embryoPreProcGroup contains=embryoPreCondit,embryoIncluded,embryoInclude,embryoDefine,embryoErrInParen,embryoErrInBracket,embryoCommentSkip,embryoCommentString,embryoComment2String,@embryoCommentGroup,embryoCommentStartErr,embryoParen,embryoBracket,embryoMulti,embryoUserLabel
+syn cluster embryoAlphaNum contains=embryoSpecial,embryoOctalZero,embryoFormat,embryoNumber,embryoFloat,embryoOctal,embryoOctalError,embryoNumbersCom,embryoString
+syn region embryoDefine start="^\s*#\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@embryoPreProcGroup
+syn region embryoPreProc start="^\s*#\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@embryoPreProcGroup
+
+syn match embryoUserLabel display "\I\i*" contained
+
+syn match embryoFunctionName "\h\w*\s*\%((\@=\)"
+
+if exists("embryo_minlines")
+ let b:embryo_minlines = embryo_minlines
+else
+ let b:embryo_minlines = 50 " #if 0 constructs can be long
+endif
+exec "syn sync ccomment embryoComment minlines=" . b:embryo_minlines
+"syn sync fromstart
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_embryo_syn_inits")
+ if version < 508
+ let did_embryo_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink embryoFormat embryoSpecial
+ HiLink embryoCommentL embryoComment
+ HiLink embryoCommentStart embryoComment
+ HiLink embryoLabel Label
+ HiLink embryoUserLabel Label
+ HiLink embryoConditional Conditional
+ HiLink embryoRepeat Repeat
+ HiLink embryoBranch Conditional
+ HiLink embryoReserved Keyword
+ HiLink embryoCharacter Character
+ HiLink embryoSpecialCharacter cSpecial
+ HiLink embryoNumber Number
+ HiLink embryoOctal Number
+ HiLink embryoOctalZero PreProc " link this to Error if you want
+ HiLink embryoFloat Float
+ HiLink embryoOctalError embryoError
+ HiLink embryoParenError embryoError
+ HiLink embryoErrInParen embryoError
+ HiLink embryoErrInBracket embryoError
+ HiLink embryoCommentError embryoError
+ HiLink embryoCommentStartErr embryoError
+ HiLink embryoSpaceError embryoError
+ HiLink embryoSpecialError embryoError
+ HiLink embryoOperator Operator
+ HiLink embryoStructure Structure
+ HiLink embryoEdjeKey Structure
+ HiLink embryoStorageClass StorageClass
+ HiLink embryoInclude Include
+ HiLink embryoPreProc PreProc
+ HiLink embryoDefine Macro
+ HiLink embryoIncluded embryoString
+ HiLink embryoError Error
+ HiLink embryoStatement Statement
+ HiLink embryoPreCondit PreCondit
+ HiLink embryoType Type
+ HiLink embryoConstant Constant
+ HiLink embryoCommentString embryoString
+ HiLink embryoComment2String embryoString
+ HiLink embryoCommentSkip embryoComment
+ HiLink embryoString String
+ HiLink embryoComment Comment
+ HiLink embryoSpecial SpecialChar
+ HiLink embryoTodo Todo
+ HiLink embryoFunctionName Function
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "embryo"
+
+" vim: ts=8
diff --git a/old/syntax/eo.vim b/old/syntax/eo.vim
new file mode 100644
index 0000000..0d5a3c5
--- /dev/null
+++ b/old/syntax/eo.vim
@@ -0,0 +1,106 @@
+" Vim syntax file
+" Language: Eo
+" Maintainer: Daniel Zaoui
+" Last Change: 2014 06 01
+
+" A bunch of useful keywords
+syn keyword eoBoolean false true
+syn keyword eoConstants null
+
+syn keyword eoType byte ubyte char short ushort int uint long ulong llong ullong int8 uint8 int16 uint16 int32 uint32 int64 uint64 int128 uint128 size ssize intptr uintptr ptrdiff time float double ldouble bool void
+
+syn keyword eoClassTypes class abstract interface mixin
+syn keyword eoStructure struct enum var
+syn keyword eoTypedef type
+syn keyword eoImport import
+
+syn keyword eoClassBodyLabels legacy_prefix eo_prefix data contained
+syn keyword eoClassBodyBlockOpener properties methods events constructors implements contained
+
+syn keyword eoInnerBlockOpener set get keys values params contained
+syn keyword eoTypeClass const own free contained
+syn keyword functionKeywords constructor destructor finalize virtual legacy
+syn keyword eoStatements return
+
+" syn match className "\(\w\+\.\)\+\w\+"
+
+syn match attributes "@\(inout\|out\|in\|property\|class\|free\|constructor\|extern\|beta\|protected\|const\|optional\|nullable\|warn_unused\|private\)"
+
+syn match eoLabelMatch "\w\+:" contains=eoClassBodyLabels
+syn match eoBlockOpener "\w\+\s*{" contains=eoClassBodyBlockOpener,eoInnerBlockOpener
+syn match eoParenOpener "\w\+\s*(" contains=eoTypeClass
+
+syn keyword eoTodo contained TODO FIXME XXX
+syn cluster eoCommentGroup contains=eoTodo
+
+syn region eoParen start='(' end=')' transparent
+syn region eoTypeParen start='<' end='>' transparent
+syn region eoBlock start="{" end="}" transparent fold
+
+syn region eo_comment start="\/\*" end="\*\/" contains=@eoCommentGroup
+
+" Numbers
+"integer number, or floating point number without a dot and with "f".
+syn case ignore
+syn match eoNumbers display transparent "\<\d\|\.\d" contains=eoNumber,eoFloat,eoOctalError,eoOctal
+" Same, but without octal error (for comments)
+syn match eoNumbersCom display contained transparent "\<\d\|\.\d" contains=eoNumber,eoFloat,eoOctal
+syn match eoNumber display contained "\d\+\(u\=l\{0,2}\|ll\=u\)\>"
+"hex number
+syn match eoNumber display contained "0x\x\+\(u\=l\{0,2}\|ll\=u\)\>"
+" Flag the first zero of an octal number as something special
+syn match eoOctal display contained "0\o\+\(u\=l\{0,2}\|ll\=u\)\>" contains=eoOctalZero
+syn match eoOctalZero display contained "\<0"
+syn match eoFloat display contained "\d\+f"
+"floating point number, with dot, optional exponent
+syn match eoFloat display contained "\d\+\.\d*\(e[-+]\=\d\+\)\=[fl]\="
+"floating point number, starting with a dot, optional exponent
+syn match eoFloat display contained "\.\d\+\(e[-+]\=\d\+\)\=[fl]\=\>"
+"floating point number, without dot, with exponent
+syn match eoFloat display contained "\d\+e[-+]\=\d\+[fl]\=\>"
+
+" flag an octal number with wrong digits
+syn match eoOctalError display contained "0\o*[89]\d*"
+syn case match
+
+" Events region
+syn region eoEventsRegion start="events\s*{" end="}" transparent
+syn match eoEvents "^\s*[^;: ]\+\(;\|:\|\s\)" contained containedin=eoEventsRegion contains=eoEvent
+syn match eoEvent "[^;: ]\+" contained
+
+" Implements region
+"syn region eoImplementsRegion start="\<implements\_s*{" end="}" transparent
+"syn match eoImplements "\w\+" contained containedin=eoImplementsRegion
+
+hi def link eoImplements Todo
+hi def link eoEvent Identifier
+hi def link eoClassBodyLabels Label
+hi def link eoClassBodyBlockOpener Label
+hi def link eoInnerBlockOpener Label
+hi def link functionKeywords Label
+hi def link eoTypeClass Label
+hi def link attributes Constant
+hi def link eo_comment Comment
+hi def link eoBoolean Boolean
+hi def link eoConstants Constant
+hi def link className Identifier
+hi def link eoStatements Statement
+
+hi def link eoFloat Float
+hi def link eoOctal Number
+hi def link eoOctalZero Number
+hi def link eoNumber Number
+hi def link eoNumbersCom Number
+
+hi def link eoOctalError Error
+
+hi def link eoStructure Structure
+hi def link eoClassTypes Structure
+
+hi def link eoType Type
+hi def link eoTypedef Typedef
+hi def link eoTodo Todo
+
+hi def link eoImport Include
+
+let b:current_syntax = "eo"
diff --git a/old/syntax/pasm.vim b/old/syntax/pasm.vim
new file mode 100644
index 0000000..1eaf27b
--- /dev/null
+++ b/old/syntax/pasm.vim
@@ -0,0 +1,87 @@
+" Vim syntax file
+" Language: Parrot Assembler
+" Maintainer: Scott Beck <scott@gossamer-threads.com>
+" Last Change: 2002 Feb 28
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn include @Pod syntax/pod.vim
+syn region myPod start="^=pod" start="^=item" start="^=head" end="^=cut" keepend contains=@Pod
+
+syn match pasmIdentifier "[A-Za-z0-9_]\+"
+syn match pasmLabel "[A-Za-z0-9_]\+:"he=e-1
+syn match pasmComment "#.*"
+
+" Only have 32 registers
+syn match pasmINT "I\(\([1-2][0-9]\)\|\(3[0-2]\)\|[1-9]\)"
+syn match pasmSTR "S\(\([1-2][0-9]\)\|\(3[0-2]\)\|[1-9]\)"
+syn match pasmFLT "N\(\([1-2][0-9]\)\|\(3[0-2]\)\|[1-9]\)"
+syn match pasmPMC "P\(\([1-2][0-9]\)\|\(3[0-2]\)\|[1-9]\)"
+
+syn match pasmNumber "[0-9]\+"
+syn match pasmString +"[^"]\+"+
+
+syn keyword pasmOpBasic end noop
+syn keyword pasmOpSystem close err open readline ord print read time write
+syn keyword pasmOpRegLoad set set_keyed clone
+syn keyword pasmOpCond eq ne lt le gt ge if unless
+syn keyword pasmOpArith abs add cmod dec div inc mod mul not pow sub
+syn keyword pasmOpString chopm concat repeat length substr
+syn keyword pasmOpMath acos asec asin atan cos cosh exp ln log10 log2 sec sech sin sinh tan tanh
+syn keyword pasmOpBit and not or shl shr xor
+syn keyword pasmOpFlags debug bounds profile trace
+syn keyword pasmOpReg cleari clearn clearp clears popi popn popp pops pushi pushn pushp pushs
+syn keyword pasmOpRegStack entrytype save restore rotate_up
+syn keyword pasmOpCtrlFlow branch bsr jsr jump
+syn keyword pasmOpSymbolTbl find_global
+syn keyword pasmOpMisc newinterp runinterp new find_type ret sleep setline getline setfile getfile setpackage getpackage warningson warningsoff
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_pasm_syntax_inits")
+ if version < 508
+ let did_pasm_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink pasmLabel Label
+ HiLink pasmIdentifier Identifier
+ HiLink pasmINT Type
+ HiLink pasmSTR Type
+ HiLink pasmFLT Type
+ HiLink pasmPMC Type
+ HiLink pasmNumber Number
+ HiLink pasmString String
+ HiLink pasmComment Comment
+ HiLink pasmOp Statement
+ HiLink pasmOpBasic pasmOp
+ HiLink pasmOpSystem pasmOp
+ HiLink pasmOpRegLoad pasmOp
+ HiLink pasmOpCond pasmOp
+ HiLink pasmOpArith pasmOp
+ HiLink pasmOpString pasmOp
+ HiLink pasmOpMath pasmOp
+ HiLink pasmOpBit pasmOp
+ HiLink pasmOpFlags pasmOp
+ HiLink pasmOpReg pasmOp
+ HiLink pasmOpRegStack pasmOp
+ HiLink pasmOpCtrlFlow pasmOp
+ HiLink pasmOpSymbolTbl pasmOp
+ HiLink pasmOpMisc pasmOp
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "pasm"
+
+" vim: ts=8
+
diff --git a/old/syntax/pir.vim b/old/syntax/pir.vim
new file mode 100644
index 0000000..338cc81
--- /dev/null
+++ b/old/syntax/pir.vim
@@ -0,0 +1,156 @@
+" Vim syntax file
+" Language: Parrot IMCC
+" Maintainer: Luke Palmer <fibonaci@babylonia.flatirons.org>
+" Modified: Joshua Isom
+" Last Change: Jan 6 2006
+
+" For installation please read:
+" :he filetypes
+" :he syntax
+"
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+"
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syntax clear
+
+syn include @Pod syntax/pod.vim
+syn region pirPod start="^=[a-z]" end="^=cut" keepend contains=@Pod
+
+syn keyword pirType int float num string pmc
+syn match pirPMC /\.\(Compiler\|Continuation\|Coroutine\|CSub\|NCI\|Eval\|Sub\|Scratchpad\)/
+syn match pirPMC /\.\(BigInt\|Boolean\|Complex\|Float\|Integer\|PMC\|String\|Hash\)/
+syn match pirPMC /\.\(Fixed\|Resizable\)\(Boolean\|Float\|Integer\|PMC\|String\)Array/
+syn match pirPMC /\.\(IntList\|Iterator\|Key\|ManagedStruct\|UnManagedStruct\|Pointer\)/
+syn match pirPMC /\.\(FloatVal\|Multi\|S\|String\)\?Array/
+syn match pirPMC /\.Perl\(Array\|Env\|Hash\|Int\|Num\|Scalar\|String\|Undef\)/
+syn match pirPMC /\.Parrot\(Class\|Interpreter\|IO\|Library\|Object\|Thread\)/
+syn keyword pirPMC self
+
+syn keyword pirOp goto if unless global addr
+
+syn match pirDirective /\.\(sub\|endm\|pcc_sub\|macro\|end\|emit\|eom\)/
+syn match pirDirective /\.\(local\|sym\|const\|lex\|global\|globalconst\)/
+syn match pirDirective /\.\(endnamespace\|namespace\)/
+syn match pirDirective /\.\(param\|arg\|return\|yield\)/
+syn match pirDirective /\.\(pragma\|HLL_map\|HLL\|include\|loadlib\)/
+syn match pirDirective /\.\(pcc_begin\|pcc_call\|pcc_end\|invocant\|meth_call\|nci_call\)/
+syn match pirDirective /\.\(pcc_begin_return\|pcc_end_return\)/
+syn match pirDirective /\.\(pcc_begin_yield\|pcc_end_yield\)/
+
+syn match pirDirective /:\(main\|method\|load\|anon\|multi\|immediate\|outer\|lex\)/
+syn match pirDirective /:\(flat\|slurpy\|optional\|opt_flag\|named\)/
+
+" Macro invocation
+syn match pirDirective /\.\I\i*(/he=e-1
+
+
+" pirWord before pirRegister
+" FIXME :: in identifiers and labels
+syn match pirWord /[A-Za-z_][A-Za-z0-9_]*/
+syn match pirComment /#.*/
+syn match pirLabel /[A-Za-z0-9_]\+:/he=e-1
+syn match pirRegister /[INPS]\([12][0-9]\|3[01]\|[0-9]\)/
+syn match pirDollarRegister /\$[INPS][0-9]\+/
+
+syn match pirNumber /[+-]\?[0-9]\+\(\.[0-9]*\([Ee][+-]\?[0-9]\+\)\?\)\?/
+syn match pirNumber /0[xX][0-9a-fA-F]\+/
+syn match pirNumber /0[oO][0-7]\+/
+syn match pirNumber /0[bB][01]\+/
+
+syn region pirString start=/"/ skip=/\\"/ end=/"/ contains=pirStringSpecial
+syn region pirString start=/<<"\z(\I\i*\)"/ end=/^\z1$/ contains=pirStringSpecial
+syn region pirString start=/<<'\z(\I\i*\)'/ end=/^\z1$/
+syn region pirString start=/'/ end=/'/
+syn match pirStringSpecial "\\\([abtnvfre\\"]\|\o\{1,3\}\|x{\x\{1,8\}}\|x\x\{1,2\}\|u\x\{4\}\|U\x\{8\}\|c[A-Z]\)" contained
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_pasm_syntax_inits")
+ if version < 508
+ let did_pasm_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink pirPod Comment
+ HiLink pirWord Normal
+ HiLink pirComment Comment
+ HiLink pirLabel Label
+ HiLink pirRegister Identifier
+ HiLink pirDollarRegister Identifier
+ HiLink pirType Type
+ HiLink pirPMC Type
+ HiLink pirString String
+ HiLink pirStringSpecial Special
+ HiLink pirNumber Number
+ HiLink pirDirective Macro
+ HiLink pirOp Conditional
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "pir"
+
+" Ops -- dynamically generated from ops2vim.pl
+syn keyword pirOp band bands bnot n_bnot bnots n_bnots bor bors shl shr
+syn keyword pirOp lsr rot bxor bxors eq eq_str eq_num eq_addr ne ne_str
+syn keyword pirOp ne_num ne_addr lt lt_str lt_num le le_str le_num gt
+syn keyword pirOp gt_str gt_num ge ge_str ge_num cmp cmp_str cmp_num and
+syn keyword pirOp not n_not or xor issame isntsame istrue isfalse isgt
+syn keyword pirOp isge isle islt iseq isne if_null unless_null end noop
+syn keyword pirOp cpu_ret check_events check_events__ wrapper__
+syn keyword pirOp prederef__ reserved load_bytecode branch branch_cs bsr
+syn keyword pirOp ret jsr jump enternative if unless invokecc invoke
+syn keyword pirOp yield tailcall returncc newclosure set_args get_results
+syn keyword pirOp get_params set_returns result_info set_addr get_addr
+syn keyword pirOp push_eh clear_eh throw rethrow die exit pushmark
+syn keyword pirOp popmark pushaction debug bounds profile trace gc_debug
+syn keyword pirOp interpinfo warningson warningsoff errorson errorsoff
+syn keyword pirOp runinterp getinterp sweep collect sweepoff sweepon
+syn keyword pirOp collectoff collecton needs_destroy loadlib dlfunc dlvar
+syn keyword pirOp compile compreg new_callback debug_init debug_load
+syn keyword pirOp debug_break debug_print backtrace getline getfile
+syn keyword pirOp print_newline gcd splice slice iter morph exec
+syn keyword pirOp classname trap pow getclass new instantiate pmcinfo
+syn keyword pirOp add_io_event need_finalize close fdopen getfd getstdin
+syn keyword pirOp getstdout getstderr setstdout setstderr pioctl open
+syn keyword pirOp print printerr read readline peek stat seek tell socket
+syn keyword pirOp sockaddr connect recv send poll bind listen accept
+syn keyword pirOp infix n_infix abs n_abs add cmod dec div fdiv ceil
+syn keyword pirOp floor inc mod mul neg n_neg sub sqrt acos asec asin
+syn keyword pirOp atan cos cosh exp ln log10 log2 sec sech sin sinh tan
+syn keyword pirOp tanh lcm fact callmethodcc callmethod tailcallmethod
+syn keyword pirOp DELETED_fetchmethod addmethod can does isa newclass
+syn keyword pirOp subclass singleton class addparent removeparent
+syn keyword pirOp addattribute removeattribute getattribute setattribute
+syn keyword pirOp classoffset adddoes removedoes covers exsec hav vers
+syn keyword pirOp pic_infix__ pic_inline_sub__ pic_get_params__
+syn keyword pirOp pic_set_returns__ pic_callr__ typeof find_type
+syn keyword pirOp valid_type get_repr find_method defined exists delete
+syn keyword pirOp elements push pop unshift shift setprop getprop delprop
+syn keyword pirOp prophash freeze thaw mmdvtregister mmdvtfind register
+syn keyword pirOp unregister hash get_mro clone exchange set assign
+syn keyword pirOp setref deref setp_ind setn_ind sets_ind seti_ind null
+syn keyword pirOp cleari clearn clears clearp saveall restoreall
+syn keyword pirOp entrytype depth lookback save savec restore rotate_up
+syn keyword pirOp stm_start stm_validate stm_commit stm_wait stm_abort
+syn keyword pirOp stm_depth ord chr chopn concat repeat length bytelength
+syn keyword pirOp pin unpin substr substr_r index sprintf find_encoding
+syn keyword pirOp stringinfo upcase downcase titlecase join split charset
+syn keyword pirOp charsetname find_charset trans_charset encoding
+syn keyword pirOp encodingname trans_encoding is_cclass find_cclass
+syn keyword pirOp find_not_cclass escape compose spawnw err time gmtime
+syn keyword pirOp localtime decodetime decodelocaltime sysinfo sleep
+syn keyword pirOp sizeof store_lex find_lex get_namespace
+syn keyword pirOp get_hll_namespace get_root_namespace get_global
+syn keyword pirOp get_hll_global get_root_global set_global
+syn keyword pirOp set_hll_global set_root_global store_global find_global
+syn keyword pirOp find_name
diff --git a/old/syntax/pmc.vim b/old/syntax/pmc.vim
new file mode 100644
index 0000000..8190cb6
--- /dev/null
+++ b/old/syntax/pmc.vim
@@ -0,0 +1,350 @@
+" Vim syntax file
+" Language: Parrot PMC
+" Maintainer: Andrew Rodland <arodland@entermail.net>
+" Last Change: 2004 Aug 2
+
+" For version 5.x: Clear all syntax items
+" For version 6.x: Quit when a syntax file was already loaded
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn include @Pod syntax/pod.vim
+syn region pmcPod start="^=[a-z]" end="^=cut" keepend contained contains=@Pod
+
+" 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
+ " cCppString: same as cString, but ends at end of line
+ syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial
+else
+ syn match cFormat display "%\(\d\+\$\)\=[-+' #0*]*\(\d*\|\*\|\*\d\+\$\)\(\.\(\d*\|\*\|\*\d\+\$\)\)\=\([hlL]\|ll\)\=\([diuoxXDOUfeEgGcCsSpn]\|\[\^\=.[^]]*\]\)" contained
+ syn match cFormat display "%%" contained
+ syn region cString start=+L\="+ skip=+\\\\\|\\"+ end=+"+ contains=cSpecial,cFormat
+ " cCppString: same as cString, but ends at end of line
+ syn region cCppString start=+L\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"+ end='$' contains=cSpecial,cFormat
+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
+
+"catch errors caused by wrong parenthesis and brackets
+" also accept <% for {, %> for }, <: for [ and :> for ] (C99)
+syn cluster cParenGroup contains=cParenError,cIncluded,cSpecial,cCommentSkip,cCommentString,cComment2String,@cCommentGroup,cCommentStartError,cUserCont,cUserLabel,cBitField,cCommentSkip,cOctalZero,cCppOut,cCppOut2,cCppSkip,cFormat,cNumber,cFloat,cOctal,cOctalError,cNumbersCom
+if exists("c_no_bracket_error")
+ syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cCppString
+ " 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
+ syn match cParenError display ")"
+ syn match cErrInParen display contained "[{}]\|<%\|%>"
+else
+ syn region cParen transparent start='(' end=')' contains=ALLBUT,@cParenGroup,cCppParen,cErrInBracket,cCppBracket,cCppString
+ " 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
+ syn match cParenError display "[\])]"
+ syn match cErrInParen display contained "[\]{}]\|<%\|%>"
+ syn region cBracket transparent start='\[\|<:' end=']\|:>' contains=ALLBUT,@cParenGroup,cErrInParen,cCppParen,cCppBracket,cCppString
+ " 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
+ 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=cSpecial,cCommentSkip
+ syntax region cComment2String contained start=+L\=\\\@<!"+ skip=+\\\\\|\\"+ end=+"+ end="$" contains=cSpecial
+ syntax region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cComment2String,cCharacter,cNumbersCom,cSpaceError
+ syntax region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cCommentString,cCharacter,cNumbersCom,cSpaceError,pmcPOD
+else
+ syn region cCommentL start="//" skip="\\$" end="$" keepend contains=@cCommentGroup,cSpaceError
+ syn region cComment matchgroup=cCommentStart start="/\*" end="\*/" contains=@cCommentGroup,cCommentStartError,cSpaceError,pmcPOD
+endif
+" keep a // comment separately, it terminates a preproc. conditional
+syntax match cCommentError display "\*/"
+syntax match cCommentStartError display "/\*"me=e-1 contained
+
+syn keyword cOperator sizeof
+if exists("c_gnu")
+ syn keyword cStatement __asm__
+ syn keyword cOperator typeof __real__ __imag__
+endif
+syn keyword cType int long short char void
+syn keyword cType signed unsigned float double
+if !exists("c_no_ansi") || exists("c_ansi_typedefs")
+ syn keyword cType size_t ssize_t wchar_t ptrdiff_t sig_atomic_t fpos_t
+ syn keyword cType clock_t time_t va_list jmp_buf FILE DIR div_t ldiv_t
+ syn keyword cType mbstate_t wctrans_t wint_t wctype_t
+endif
+if !exists("c_no_c99") " ISO C99
+ syn keyword cType bool complex
+ syn keyword cType int8_t int16_t int32_t int64_t
+ syn keyword cType uint8_t uint16_t uint32_t uint64_t
+ syn keyword cType int_least8_t int_least16_t int_least32_t int_least64_t
+ syn keyword cType uint_least8_t uint_least16_t uint_least32_t uint_least64_t
+ syn keyword cType int_fast8_t int_fast16_t int_fast32_t int_fast64_t
+ syn keyword cType uint_fast8_t uint_fast16_t uint_fast32_t uint_fast64_t
+ syn keyword cType intptr_t uintptr_t
+ syn keyword cType intmax_t uintmax_t
+endif
+if exists("c_gnu")
+ syn keyword cType __label__ __complex__ __volatile__
+endif
+
+syn keyword cStructure struct union enum typedef
+syn keyword cStorageClass static register auto volatile extern const
+if exists("c_gnu")
+ syn keyword cStorageClass inline __attribute__
+endif
+if !exists("c_no_c99")
+ syn keyword cStorageClass inline restrict
+endif
+
+if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu")
+ if exists("c_gnu")
+ syn keyword cConstant __GNUC__ __FUNCTION__ __PRETTY_FUNCTION__
+ endif
+ syn keyword cConstant __LINE__ __FILE__ __DATE__ __TIME__ __STDC__
+ syn keyword cConstant __STDC_VERSION__
+ syn keyword cConstant CHAR_BIT MB_LEN_MAX MB_CUR_MAX
+ syn keyword cConstant UCHAR_MAX UINT_MAX ULONG_MAX USHRT_MAX
+ syn keyword cConstant CHAR_MIN INT_MIN LONG_MIN SHRT_MIN
+ syn keyword cConstant CHAR_MAX INT_MAX LONG_MAX SHRT_MAX
+ syn keyword cConstant SCHAR_MIN SINT_MIN SLONG_MIN SSHRT_MIN
+ syn keyword cConstant SCHAR_MAX SINT_MAX SLONG_MAX SSHRT_MAX
+ if !exists("c_no_c99")
+ syn keyword cConstant LLONG_MAX ULLONG_MAX
+ syn keyword cConstant INT8_MIN INT16_MIN INT32_MIN INT64_MIN
+ syn keyword cConstant INT8_MAX INT16_MAX INT32_MAX INT64_MAX
+ syn keyword cConstant UINT8_MAX UINT16_MAX UINT32_MAX UINT64_MAX
+ syn keyword cConstant INT_LEAST8_MIN INT_LEAST16_MIN INT_LEAST32_MIN INT_LEAST64_MIN
+ syn keyword cConstant INT_LEAST8_MAX INT_LEAST16_MAX INT_LEAST32_MAX INT_LEAST64_MAX
+ syn keyword cConstant UINT_LEAST8_MAX UINT_LEAST16_MAX UINT_LEAST32_MAX UINT_LEAST64_MAX
+ syn keyword cConstant INT_FAST8_MIN INT_FAST16_MIN INT_FAST32_MIN INT_FAST64_MIN
+ syn keyword cConstant INT_FAST8_MAX INT_FAST16_MAX INT_FAST32_MAX INT_FAST64_MAX
+ syn keyword cConstant UINT_FAST8_MAX UINT_FAST16_MAX UINT_FAST32_MAX UINT_FAST64_MAX
+ syn keyword cConstant INTPTR_MIN INTPTR_MAX UINTPTR_MAX
+ syn keyword cConstant INTMAX_MIN INTMAX_MAX UINTMAX_MAX
+ syn keyword cConstant PTRDIFF_MIN PTRDIFF_MAX SIG_ATOMIC_MIN SIG_ATOMIC_MAX
+ syn keyword cConstant SIZE_MAX WCHAR_MIN WCHAR_MAX WINT_MIN WINT_MAX
+ endif
+ syn keyword cConstant FLT_RADIX FLT_ROUNDS
+ syn keyword cConstant FLT_DIG FLT_MANT_DIG FLT_EPSILON
+ syn keyword cConstant DBL_DIG DBL_MANT_DIG DBL_EPSILON
+ syn keyword cConstant LDBL_DIG LDBL_MANT_DIG LDBL_EPSILON
+ syn keyword cConstant FLT_MIN FLT_MAX FLT_MIN_EXP FLT_MAX_EXP
+ syn keyword cConstant FLT_MIN_10_EXP FLT_MAX_10_EXP
+ syn keyword cConstant DBL_MIN DBL_MAX DBL_MIN_EXP DBL_MAX_EXP
+ syn keyword cConstant DBL_MIN_10_EXP DBL_MAX_10_EXP
+ syn keyword cConstant LDBL_MIN LDBL_MAX LDBL_MIN_EXP LDBL_MAX_EXP
+ syn keyword cConstant LDBL_MIN_10_EXP LDBL_MAX_10_EXP
+ syn keyword cConstant HUGE_VAL CLOCKS_PER_SEC NULL
+ syn keyword cConstant LC_ALL LC_COLLATE LC_CTYPE LC_MONETARY
+ syn keyword cConstant LC_NUMERIC LC_TIME
+ syn keyword cConstant SIG_DFL SIG_ERR SIG_IGN
+ syn keyword cConstant SIGABRT SIGFPE SIGILL SIGHUP SIGINT SIGSEGV SIGTERM
+ " Add POSIX signals as well...
+ syn keyword cConstant SIGABRT SIGALRM SIGCHLD SIGCONT SIGFPE SIGHUP
+ syn keyword cConstant SIGILL SIGINT SIGKILL SIGPIPE SIGQUIT SIGSEGV
+ syn keyword cConstant SIGSTOP SIGTERM SIGTRAP SIGTSTP SIGTTIN SIGTTOU
+ syn keyword cConstant SIGUSR1 SIGUSR2
+ syn keyword cConstant _IOFBF _IOLBF _IONBF BUFSIZ EOF WEOF
+ syn keyword cConstant FOPEN_MAX FILENAME_MAX L_tmpnam
+ syn keyword cConstant SEEK_CUR SEEK_END SEEK_SET
+ syn keyword cConstant TMP_MAX stderr stdin stdout
+ syn keyword cConstant EXIT_FAILURE EXIT_SUCCESS RAND_MAX
+ " Add signals not mentioned above
+ syn keyword cConstant SIGXCPU SIGURG SIGBUS SIGVTALRM SIGPROF SIGWINCH
+ syn keyword cConstant SIGPWR SIGSYS SIGXFSZ SIGIO
+ " Add POSIX errors as well
+ syn keyword cConstant E2BIG EACCES EAGAIN EBADF EBADMSG EBUSY
+ syn keyword cConstant ECANCELED ECHILD EDEADLK EDOM EEXIST EFAULT
+ syn keyword cConstant EFBIG EILSEQ EINPROGRESS EINTR EINVAL EIO EISDIR
+ syn keyword cConstant EMFILE EMLINK EMSGSIZE ENAMETOOLONG ENFILE ENODEV
+ syn keyword cConstant ENOENT ENOEXEC ENOLCK ENOMEM ENOSPC ENOSYS
+ syn keyword cConstant ENOTDIR ENOTEMPTY ENOTSUP ENOTTY ENXIO EPERM
+ syn keyword cConstant EPIPE ERANGE EROFS ESPIPE ESRCH ETIMEDOUT EXDEV
+ " math.h
+ syn keyword cConstant M_E M_LOG2E M_LOG10E M_LN2 M_LN10 M_PI M_PI_2 M_PI_4
+ syn keyword cConstant M_1_PI M_2_PI M_2_SQRTPI M_SQRT2 M_SQRT1_2
+endif
+if !exists("c_no_c99") " ISO C99
+ syn keyword cConstant true false
+endif
+
+" Accept %: for # (C99)
+syn region cPreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" 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")
+ syn region cCppOut start="^\s*\(%:\|#\)\s*if\s\+0\+\>" end=".\@=\|$" contains=cCppOut2
+ 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 contains=ALLBUT,@cPreProcGroup
+syn region cPreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@cPreProcGroup
+
+" 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
+" 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
+syn match cBitField display ";\s*\I\i*\s*:\s*[1-9]"me=e-1
+
+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
+exec "syn sync ccomment cComment minlines=" . b:c_minlines
+
+" Define the default highlighting.
+" For version 5.7 and earlier: only when not done already
+" For version 5.8 and later: only when an item doesn't have highlighting yet
+if version >= 508 || !exists("did_c_syn_inits")
+ if version < 508
+ let did_c_syn_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+
+ HiLink cFormat cSpecial
+ HiLink cCppString cString
+ HiLink cCommentL cComment
+ HiLink cCommentStart cComment
+ HiLink cLabel Label
+ HiLink cUserLabel Label
+ HiLink cConditional Conditional
+ HiLink cRepeat Repeat
+ HiLink cCharacter Character
+ HiLink cSpecialCharacter cSpecial
+ HiLink cNumber Number
+ HiLink cOctal Number
+ HiLink cOctalZero PreProc " link this to Error if you want
+ HiLink cFloat Float
+ HiLink cOctalError cError
+ HiLink cParenError cError
+ HiLink cErrInParen cError
+ HiLink cErrInBracket cError
+ HiLink cCommentError cError
+ HiLink cCommentStartError cError
+ HiLink cSpaceError cError
+ HiLink cSpecialError cError
+ HiLink cOperator Operator
+ HiLink cStructure Structure
+ HiLink cStorageClass StorageClass
+ HiLink cInclude Include
+ HiLink cPreProc PreProc
+ HiLink cDefine Macro
+ HiLink cIncluded cString
+ HiLink cError Error
+ HiLink cStatement Statement
+ HiLink cPreCondit PreCondit
+ HiLink cType Type
+ HiLink cConstant Constant
+ HiLink cCommentString cString
+ HiLink cComment2String cString
+ HiLink cCommentSkip cComment
+ HiLink cString String
+ HiLink cComment Comment
+ HiLink cSpecial SpecialChar
+ HiLink cTodo Todo
+ HiLink cCppSkip cCppOut
+ HiLink cCppOut2 cCppOut
+ HiLink cCppOut Comment
+
+ delcommand HiLink
+endif
+
+let b:current_syntax = "pmc"
+
+" vim: ts=8
diff --git a/old/syntax/ragel.vim b/old/syntax/ragel.vim
new file mode 100644
index 0000000..10cf395
--- /dev/null
+++ b/old/syntax/ragel.vim
@@ -0,0 +1,165 @@
+" Vim syntax file
+"
+" Language: Ragel
+" Author: Adrian Thurston
+
+syntax clear
+
+"
+" Outside code
+"
+
+" Comments
+syntax region ocComment start="\/\*" end="\*\/"
+syntax match ocComment "\/\/.*$"
+
+" Anything preprocessor
+syntax match ocPreproc "#.*$"
+
+" Strings
+syntax match ocLiteral "'\(\\.\|[^'\\]\)*'"
+syntax match ocLiteral "\"\(\\.\|[^\"\\]\)*\""
+
+" C/C++ Keywords
+syntax keyword ocType unsigned signed void char short int long float double bool
+syntax keyword ocType inline static extern register const volatile auto
+syntax keyword ocType union enum struct class typedef
+syntax keyword ocType namespace template typename mutable
+syntax keyword ocKeyword break continue default do else for
+syntax keyword ocKeyword goto if return switch while
+syntax keyword ocKeyword new delete this using friend public private protected sizeof
+syntax keyword ocKeyword throw try catch operator typeid
+syntax keyword ocKeyword and bitor xor compl bitand and_eq or_eq xor_eq not not_eq
+syntax keyword ocKeyword static_cast dynamic_cast
+
+" D Keywords
+syntax keyword ocType wchar dchar bit byte ubyte ushort uint ulong cent ucent
+syntax keyword ocType cfloat ifloat cdouble idouble real creal ireal
+syntax keyword ocKeyword abstract alias align asm assert body cast debug delegate
+syntax keyword ocKeyword deprecated export final finally foreach function import in inout
+syntax keyword ocKeyword interface invariant is mixin module out override package pragma
+syntax keyword ocKeyword super synchronized typeof unittest version with
+
+" Java Keywords
+syntax keyword ocType byte short char int
+
+" Objective-C Directives
+syntax match ocKeyword "@public\|@private\|@protected"
+syntax match ocKeyword "@interface\|@implementation"
+syntax match ocKeyword "@class\|@end\|@defs"
+syntax match ocKeyword "@encode\|@protocol\|@selector"
+
+" Numbers
+syntax match ocNumber "[0-9][0-9]*"
+syntax match ocNumber "0x[0-9a-fA-F][0-9a-fA-F]*"
+
+" Booleans
+syntax keyword ocBoolean true false
+
+" Identifiers
+syntax match anyId "[a-zA-Z_][a-zA-Z_0-9]*"
+
+" Inline code only
+syntax keyword fsmType fpc fc fcurs fbuf fblen ftargs fstack
+syntax keyword fsmKeyword fhold fgoto fcall fret fentry fnext fexec fbreak
+
+syntax cluster rlItems contains=rlComment,rlLiteral,rlAugmentOps,rlOtherOps,rlKeywords,rlWrite,rlCodeCurly,rlCodeSemi,rlNumber,anyId,rlLabelColon,rlExprKeywords
+
+syntax region machineSpec1 matchgroup=beginRL start="%%{" end="}%%" contains=@rlItems
+syntax region machineSpec2 matchgroup=beginRL start="%%[^{]"rs=e-1 end="$" keepend contains=@rlItems
+syntax region machineSpec2 matchgroup=beginRL start="%%$" end="$" keepend contains=@rlItems
+
+" Comments
+syntax match rlComment "#.*$" contained
+
+" Literals
+syntax match rlLiteral "'\(\\.\|[^'\\]\)*'[i]*" contained
+syntax match rlLiteral "\"\(\\.\|[^\"\\]\)*\"[i]*" contained
+syntax match rlLiteral /\/\(\\.\|[^\/\\]\)*\/[i]*/ contained
+syntax match rlLiteral "\[\(\\.\|[^\]\\]\)*\]" contained
+
+" Numbers
+syntax match rlNumber "[0-9][0-9]*" contained
+syntax match rlNumber "0x[0-9a-fA-F][0-9a-fA-F]*" contained
+
+" Operators
+syntax match rlAugmentOps "[>$%@]" contained
+syntax match rlAugmentOps "<>\|<" contained
+syntax match rlAugmentOps "[>\<$%@][!\^/*~]" contained
+syntax match rlAugmentOps "[>$%]?" contained
+syntax match rlAugmentOps "<>[!\^/*~]" contained
+syntax match rlAugmentOps "=>" contained
+syntax match rlOtherOps "->" contained
+
+syntax match rlOtherOps ":>" contained
+syntax match rlOtherOps ":>>" contained
+syntax match rlOtherOps "<:" contained
+
+" Keywords
+" FIXME: Enable the range keyword post 5.17.
+" syntax keyword rlKeywords machine action context include range contained
+syntax keyword rlKeywords machine action context include import export prepush postpop contained
+syntax keyword rlExprKeywords when inwhen outwhen err lerr eof from to contained
+
+" Case Labels
+syntax keyword caseLabelKeyword case contained
+syntax cluster caseLabelItems contains=ocComment,ocPreproc,ocLiteral,ocType,ocKeyword,caseLabelKeyword,ocNumber,ocBoolean,anyId,fsmType,fsmKeyword
+syntax match caseLabelColon "case" contains=@caseLabelItems
+syntax match caseLabelColon "case[\t ]\+.*:$" contains=@caseLabelItems
+syntax match caseLabelColon "case[\t ]\+.*:[^=:]"me=e-1 contains=@caseLabelItems
+
+" Labels
+syntax match ocLabelColon "^[\t ]*[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:$" contains=anyLabel
+syntax match ocLabelColon "^[\t ]*[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:[^=:]"me=e-1 contains=anyLabel
+
+syntax match rlLabelColon "[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:$" contained contains=anyLabel
+syntax match rlLabelColon "[a-zA-Z_][a-zA-Z_0-9]*[ \t]*:[^=:>]"me=e-1 contained contains=anyLabel
+syntax match anyLabel "[a-zA-Z_][a-zA-Z_0-9]*" contained
+
+" All items that can go in a code block.
+
+syntax cluster inlineItems contains=rlCodeCurly,ocComment,ocPreproc,ocLiteral,ocType,ocKeyword,ocNumber,ocBoolean,ocLabelColon,anyId,fsmType,fsmKeyword,caseLabelColon
+
+" Blocks of code. rlCodeCurly is recursive.
+syntax region rlCodeCurly matchgroup=NONE start="{" end="}" contained contains=@inlineItems
+syntax region rlCodeSemi matchgroup=Type start="\<alphtype\>" start="\<getkey\>" start="\<access\>" start="\<variable\>" matchgroup=NONE end=";" contained contains=@inlineItems
+
+syntax region rlWrite matchgroup=Type start="\<write\>" matchgroup=NONE end=";" contained contains=rlWriteKeywords,rlWriteOptions
+
+syntax keyword rlWriteKeywords init data exec eof exports contained
+syntax keyword rlWriteOptions noerror nofinal noprefix noend nocs contained
+
+"
+" Sync at the start of machine specs.
+"
+" Match The ragel delimiters only if there quotes no ahead on the same line.
+" On the open marker, use & to consume the leader.
+syntax sync match ragelSyncPat grouphere NONE "^[^\'\"%]*%%{&^[^\'\"%]*"
+syntax sync match ragelSyncPat grouphere NONE "^[^\'\"%]*%%[^{]&^[^\'\"%]*"
+syntax sync match ragelSyncPat grouphere NONE "^[^\'\"]*}%%"
+
+"
+" Specifying Groups
+"
+hi link ocComment Comment
+hi link ocPreproc Macro
+hi link ocLiteral String
+hi link ocType Type
+hi link ocKeyword Keyword
+hi link ocNumber Number
+hi link ocBoolean Boolean
+hi link rlComment Comment
+hi link rlNumber Number
+hi link rlLiteral String
+hi link rlAugmentOps Keyword
+hi link rlExprKeywords Keyword
+hi link rlWriteKeywords Keyword
+hi link rlWriteOptions Keyword
+hi link rlKeywords Type
+hi link fsmType Type
+hi link fsmKeyword Keyword
+hi link anyLabel Label
+hi link caseLabelKeyword Keyword
+hi link beginRL Type
+
+let b:current_syntax = "ragel"
diff --git a/old/syntax/scala.vim b/old/syntax/scala.vim
new file mode 100644
index 0000000..36605ab
--- /dev/null
+++ b/old/syntax/scala.vim
@@ -0,0 +1,151 @@
+" Vim syntax file
+" Language : Scala (http://scala-lang.org/)
+" Maintainers: Stefan Matthias Aust, Julien Wetterwald
+" Last Change: 2007 June 13
+
+if version < 600
+ syntax clear
+elseif exists("b:current_syntax")
+ finish
+endif
+
+syn case match
+syn sync minlines=50
+
+" most Scala keywords
+syn keyword scalaKeyword abstract case catch do else extends final finally for forSome if implicit lazy match new null override private protected requires return sealed super this throw try type while with yield
+syn match scalaKeyword "=>"
+syn match scalaKeyword "<-"
+syn match scalaKeyword "\<_\>"
+
+syn match scalaOperator ":\{2,\}" "this is not a type
+
+" package and import statements
+syn keyword scalaPackage package nextgroup=scalaFqn skipwhite
+syn keyword scalaImport import nextgroup=scalaFqn skipwhite
+syn match scalaFqn "\<[._$a-zA-Z0-9,]*" contained nextgroup=scalaFqnSet
+syn region scalaFqnSet start="{" end="}" contained
+
+" boolean literals
+syn keyword scalaBoolean true false
+
+" definitions
+syn keyword scalaDef def nextgroup=scalaDefName skipwhite
+syn keyword scalaVal val nextgroup=scalaValName skipwhite
+syn keyword scalaVar var nextgroup=scalaVarName skipwhite
+syn keyword scalaClass class nextgroup=scalaClassName skipwhite
+syn keyword scalaObject object nextgroup=scalaClassName skipwhite
+syn keyword scalaTrait trait nextgroup=scalaClassName skipwhite
+syn match scalaDefName "[^ =:;([]\+" contained nextgroup=scalaDefSpecializer skipwhite
+syn match scalaValName "[^ =:;([]\+" contained
+syn match scalaVarName "[^ =:;([]\+" contained
+syn match scalaClassName "[^ =:;(\[]\+" contained nextgroup=scalaClassSpecializer skipwhite
+syn region scalaDefSpecializer start="\[" end="\]" contained contains=scalaDefSpecializer
+syn region scalaClassSpecializer start="\[" end="\]" contained contains=scalaClassSpecializer
+
+" type constructor (actually anything with an uppercase letter)
+syn match scalaConstructor "\<[A-Z][_$a-zA-Z0-9]*\>" nextgroup=scalaConstructorSpecializer
+syn region scalaConstructorSpecializer start="\[" end="\]" contained contains=scalaConstructorSpecializer
+
+" method call
+syn match scalaRoot "\<[a-zA-Z][_$a-zA-Z0-9]*\."me=e-1
+syn match scalaMethodCall "\.[a-z][_$a-zA-Z0-9]*"ms=s+1
+
+" type declarations in val/var/def
+syn match scalaType ":\s*\(=>\s*\)\?[._$a-zA-Z0-9]\+\(\[[^]]*\]\+\)\?\(\s*\(<:\|>:\|#\|=>\)\s*[._$a-zA-Z0-9]\+\(\[[^]]*\]\+\)*\)*"ms=s+1
+
+" comments
+syn match scalaTodo "[tT][oO][dD][oO]" contained
+syn match scalaLineComment "//.*" contains=scalaTodo
+syn region scalaComment start="/\*" end="\*/" contains=scalaTodo
+syn case ignore
+syn include @scalaHtml syntax/html.vim
+unlet b:current_syntax
+syn case match
+syn region scalaDocComment start="/\*\*" end="\*/" contains=scalaDocTags,scalaTodo,@scalaHtml keepend
+syn region scalaDocTags start="{@\(link\|linkplain\|inherit[Dd]oc\|doc[rR]oot\|value\)" end="}" contained
+syn match scalaDocTags "@[a-z]\+" contained
+
+syn match scalaEmptyString "\"\""
+
+" multi-line string literals
+syn region scalaMultiLineString start="\"\"\"" end="\"\"\"" contains=scalaUnicode
+syn match scalaUnicode "\\u[0-9a-fA-F]\{4}" contained
+
+" string literals with escapes
+syn region scalaString start="\"[^"]" skip="\\\"" end="\"" contains=scalaStringEscape " TODO end \n or not?
+syn match scalaStringEscape "\\u[0-9a-fA-F]\{4}" contained
+syn match scalaStringEscape "\\[nrfvb\\\"]" contained
+
+" symbol and character literals
+syn match scalaSymbol "'[_a-zA-Z0-9][_a-zA-Z0-9]*\>"
+syn match scalaChar "'[^'\\]'\|'\\.'\|'\\u[0-9a-fA-F]\{4}'"
+
+" number literals
+syn match scalaNumber "\<\(0[0-7]*\|0[xX]\x\+\|\d\+\)[lL]\=\>"
+syn match scalaNumber "\(\<\d\+\.\d*\|\.\d\+\)\([eE][-+]\=\d\+\)\=[fFdD]\="
+syn match scalaNumber "\<\d\+[eE][-+]\=\d\+[fFdD]\=\>"
+syn match scalaNumber "\<\d\+\([eE][-+]\=\d\+\)\=[fFdD]\>"
+
+" xml literals
+syn match scalaXmlTag "<[a-zA-Z]\_[^>]*/>" contains=scalaXmlQuote,scalaXmlEscape,scalaXmlString
+syn region scalaXmlString start="\"" end="\"" contained
+syn match scalaXmlStart "<[a-zA-Z]\_[^>]*>" contained contains=scalaXmlQuote,scalaXmlEscape,scalaXmlString
+syn region scalaXml start="<\([a-zA-Z]\_[^>]*\_[^/]\|[a-zA-Z]\)>" matchgroup=scalaXmlStart end="</\_[^>]\+>" contains=scalaXmlEscape,scalaXmlQuote,scalaXml,scalaXmlStart,scalaXmlComment
+syn region scalaXmlEscape matchgroup=scalaXmlEscapeSpecial start="{" matchgroup=scalaXmlEscapeSpecial end="}" contained contains=TOP
+syn match scalaXmlQuote "&[^;]\+;" contained
+syn match scalaXmlComment "<!--\_[^>]*-->" contained
+
+syn sync fromstart
+
+" map Scala groups to standard groups
+hi link scalaKeyword Keyword
+hi link scalaPackage Include
+hi link scalaImport Include
+hi link scalaBoolean Boolean
+hi link scalaOperator Normal
+hi link scalaNumber Number
+hi link scalaEmptyString String
+hi link scalaString String
+hi link scalaChar String
+hi link scalaMultiLineString String
+hi link scalaStringEscape Special
+hi link scalaSymbol Special
+hi link scalaUnicode Special
+hi link scalaComment Comment
+hi link scalaLineComment Comment
+hi link scalaDocComment Comment
+hi link scalaDocTags Special
+hi link scalaTodo Todo
+hi link scalaType Type
+hi link scalaTypeSpecializer scalaType
+hi link scalaXml String
+hi link scalaXmlTag Include
+hi link scalaXmlString String
+hi link scalaXmlStart Include
+hi link scalaXmlEscape Normal
+hi link scalaXmlEscapeSpecial Special
+hi link scalaXmlQuote Special
+hi link scalaXmlComment Comment
+hi link scalaDef Keyword
+hi link scalaVar Keyword
+hi link scalaVal Keyword
+hi link scalaClass Keyword
+hi link scalaObject Keyword
+hi link scalaTrait Keyword
+hi link scalaDefName Function
+hi link scalaDefSpecializer Function
+hi link scalaClassName Special
+hi link scalaClassSpecializer Special
+hi link scalaConstructor Special
+hi link scalaConstructorSpecializer scalaConstructor
+
+let b:current_syntax = "scala"
+
+" you might like to put these lines in your .vimrc
+"
+" customize colors a little bit (should be a different file)
+" hi scalaNew gui=underline
+" hi scalaMethodCall gui=italic
+" hi scalaValName gui=underline
+" hi scalaVarName gui=underline
diff --git a/old/syntax/tjp.vim b/old/syntax/tjp.vim
new file mode 100644
index 0000000..24fa179
--- /dev/null
+++ b/old/syntax/tjp.vim
@@ -0,0 +1,706 @@
+" Vim syntax file
+" Language: TaskJuggler
+" Maintainer: TaskJuggler Developers <taskjuggler-devel@googlegroups.com>
+" Last Change: 2012-01-11 21:58:17 +0100
+" This file was automatically generated by VimSyntax.rb
+
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal softtabstop=2
+setlocal cindent shiftwidth=2
+setlocal tabstop=2
+setlocal expandtab
+setlocal cinoptions=g0,t0,+0,(0,c0,C1,n-2
+setlocal cinwords=account,accountreport,allocate,booking,columns,dailymax,dailymin,date,depends,export,extend,icalreport,include,journalentry,limits,maximum,minimum,monthlymax,monthlymin,navigator,newtask,nikureport,precedes,project,reference,resource,resourcereport,richtext,scenario,shift,status,statussheet,statussheetreport,supplement,tagfile,task,taskreport,text,textreport,timesheet,timesheetreport,weeklymax,weeklymin
+setlocal cinkeys=0{,0},!^F,o,O
+setlocal cindent
+
+syn keyword tjp_macro macro contained
+syn keyword tjp_project project contained
+syn keyword tjp_supplement supplement contained
+
+syn keyword tjp_account account contained
+hi def link tjp_account Function
+syn keyword tjp_accountreport accountreport contained
+hi def link tjp_accountreport Function
+syn keyword tjp_export export contained
+hi def link tjp_export Function
+syn keyword tjp_nikureport nikureport contained
+hi def link tjp_nikureport Function
+syn keyword tjp_resource resource contained
+hi def link tjp_resource Function
+syn keyword tjp_resourcereport resourcereport contained
+hi def link tjp_resourcereport Function
+syn keyword tjp_scenario scenario contained
+hi def link tjp_scenario Function
+syn keyword tjp_shift shift contained
+hi def link tjp_shift Function
+syn keyword tjp_statussheetreport statussheetreport contained
+hi def link tjp_statussheetreport Function
+syn keyword tjp_task_statussheet task contained
+hi def link tjp_task_statussheet Function
+syn keyword tjp_task task contained
+hi def link tjp_task Function
+syn keyword tjp_taskreport taskreport contained
+hi def link tjp_taskreport Function
+syn keyword tjp_textreport textreport contained
+hi def link tjp_textreport Function
+syn keyword tjp_timesheetreport timesheetreport contained
+hi def link tjp_timesheetreport Function
+
+syn keyword tjp_aggregate aggregate contained
+hi def link tjp_aggregate Type
+syn keyword tjp_credits credits contained
+hi def link tjp_credits Type
+syn keyword tjp_flags_account flags contained
+hi def link tjp_flags_account Type
+syn keyword tjp_allocate allocate contained
+hi def link tjp_allocate Type
+syn keyword tjp_alternative alternative contained
+hi def link tjp_alternative Type
+syn keyword tjp_select select contained
+hi def link tjp_select Type
+syn keyword tjp_persistent persistent contained
+hi def link tjp_persistent Type
+syn keyword tjp_mandatory mandatory contained
+hi def link tjp_mandatory Type
+syn keyword tjp_shifts_allocate shifts contained
+hi def link tjp_shifts_allocate Type
+syn keyword tjp_author author contained
+hi def link tjp_author Type
+syn keyword tjp_balance balance
+hi def link tjp_balance Type
+syn keyword tjp_overtime_booking overtime contained
+hi def link tjp_overtime_booking Type
+syn keyword tjp_sloppy_booking sloppy contained
+hi def link tjp_sloppy_booking Type
+syn keyword tjp_chargeset chargeset contained
+hi def link tjp_chargeset Type
+syn keyword tjp_columnid_annualleave annualleave
+hi def link tjp_columnid_annualleave Type
+syn keyword tjp_columnid_annualleavebalance annualleavebalance
+hi def link tjp_columnid_annualleavebalance Type
+syn keyword tjp_columnid_alert alert
+hi def link tjp_columnid_alert Type
+syn keyword tjp_columnid_alertmessages alertmessages
+hi def link tjp_columnid_alertmessages Type
+syn keyword tjp_columnid_alertsummaries alertsummaries
+hi def link tjp_columnid_alertsummaries Type
+syn keyword tjp_columnid_alerttrend alerttrend
+hi def link tjp_columnid_alerttrend Type
+syn keyword tjp_columnid_balance balance
+hi def link tjp_columnid_balance Type
+syn keyword tjp_columnid_bsi bsi
+hi def link tjp_columnid_bsi Type
+syn keyword tjp_columnid_chart chart
+hi def link tjp_columnid_chart Type
+syn keyword tjp_columnid_complete complete
+hi def link tjp_columnid_complete Type
+syn keyword tjp_columnid_completed completed
+hi def link tjp_columnid_completed Type
+syn keyword tjp_columnid_criticalness criticalness
+hi def link tjp_columnid_criticalness Type
+syn keyword tjp_columnid_cost cost
+hi def link tjp_columnid_cost Type
+syn keyword tjp_columnid_daily daily
+hi def link tjp_columnid_daily Type
+syn keyword tjp_columnid_directreports directreports
+hi def link tjp_columnid_directreports Type
+syn keyword tjp_columnid_duration duration
+hi def link tjp_columnid_duration Type
+syn keyword tjp_columnid_duties duties
+hi def link tjp_columnid_duties Type
+syn keyword tjp_columnid_efficiency efficiency
+hi def link tjp_columnid_efficiency Type
+syn keyword tjp_columnid_effort effort
+hi def link tjp_columnid_effort Type
+syn keyword tjp_columnid_effortdone effortdone
+hi def link tjp_columnid_effortdone Type
+syn keyword tjp_columnid_effortleft effortleft
+hi def link tjp_columnid_effortleft Type
+syn keyword tjp_columnid_email email
+hi def link tjp_columnid_email Type
+syn keyword tjp_columnid_end end
+hi def link tjp_columnid_end Type
+syn keyword tjp_columnid_flags flags
+hi def link tjp_columnid_flags Type
+syn keyword tjp_columnid_followers followers
+hi def link tjp_columnid_followers Type
+syn keyword tjp_columnid_freetime freetime
+hi def link tjp_columnid_freetime Type
+syn keyword tjp_columnid_freework freework
+hi def link tjp_columnid_freework Type
+syn keyword tjp_columnid_fte fte
+hi def link tjp_columnid_fte Type
+syn keyword tjp_columnid_gauge gauge
+hi def link tjp_columnid_gauge Type
+syn keyword tjp_columnid_headcount headcount
+hi def link tjp_columnid_headcount Type
+syn keyword tjp_columnid_hierarchindex hierarchindex
+hi def link tjp_columnid_hierarchindex Type
+syn keyword tjp_columnid_hourly hourly
+hi def link tjp_columnid_hourly Type
+syn keyword tjp_columnid_id id
+hi def link tjp_columnid_id Type
+syn keyword tjp_columnid_index index
+hi def link tjp_columnid_index Type
+syn keyword tjp_columnid_inputs inputs
+hi def link tjp_columnid_inputs Type
+syn keyword tjp_columnid_journal journal
+hi def link tjp_columnid_journal Type
+syn keyword tjp_columnid_journal_sub journal_sub
+hi def link tjp_columnid_journal_sub Type
+syn keyword tjp_columnid_journalmessages journalmessages
+hi def link tjp_columnid_journalmessages Type
+syn keyword tjp_columnid_journalsummaries journalsummaries
+hi def link tjp_columnid_journalsummaries Type
+syn keyword tjp_columnid_line line
+hi def link tjp_columnid_line Type
+syn keyword tjp_columnid_managers managers
+hi def link tjp_columnid_managers Type
+syn keyword tjp_columnid_maxend maxend
+hi def link tjp_columnid_maxend Type
+syn keyword tjp_columnid_maxstart maxstart
+hi def link tjp_columnid_maxstart Type
+syn keyword tjp_columnid_minend minend
+hi def link tjp_columnid_minend Type
+syn keyword tjp_columnid_minstart minstart
+hi def link tjp_columnid_minstart Type
+syn keyword tjp_columnid_monthly monthly
+hi def link tjp_columnid_monthly Type
+syn keyword tjp_columnid_no no
+hi def link tjp_columnid_no Type
+syn keyword tjp_columnid_name name
+hi def link tjp_columnid_name Type
+syn keyword tjp_columnid_note note
+hi def link tjp_columnid_note Type
+syn keyword tjp_columnid_pathcriticalness pathcriticalness
+hi def link tjp_columnid_pathcriticalness Type
+syn keyword tjp_columnid_precursors precursors
+hi def link tjp_columnid_precursors Type
+syn keyword tjp_columnid_priority priority
+hi def link tjp_columnid_priority Type
+syn keyword tjp_columnid_quarterly quarterly
+hi def link tjp_columnid_quarterly Type
+syn keyword tjp_columnid_rate rate
+hi def link tjp_columnid_rate Type
+syn keyword tjp_columnid_reports reports
+hi def link tjp_columnid_reports Type
+syn keyword tjp_columnid_resources resources
+hi def link tjp_columnid_resources Type
+syn keyword tjp_columnid_responsible responsible
+hi def link tjp_columnid_responsible Type
+syn keyword tjp_columnid_revenue revenue
+hi def link tjp_columnid_revenue Type
+syn keyword tjp_columnid_scenario scenario
+hi def link tjp_columnid_scenario Type
+syn keyword tjp_columnid_seqno seqno
+hi def link tjp_columnid_seqno Type
+syn keyword tjp_columnid_sickleave sickleave
+hi def link tjp_columnid_sickleave Type
+syn keyword tjp_columnid_specialleave specialleave
+hi def link tjp_columnid_specialleave Type
+syn keyword tjp_columnid_start start
+hi def link tjp_columnid_start Type
+syn keyword tjp_columnid_status status
+hi def link tjp_columnid_status Type
+syn keyword tjp_columnid_targets targets
+hi def link tjp_columnid_targets Type
+syn keyword tjp_columnid_wbs wbs
+hi def link tjp_columnid_wbs Type
+syn keyword tjp_columnid_unpaidleave unpaidleave
+hi def link tjp_columnid_unpaidleave Type
+syn keyword tjp_columnid_weekly weekly
+hi def link tjp_columnid_weekly Type
+syn keyword tjp_columnid_yearly yearly
+hi def link tjp_columnid_yearly Type
+syn keyword tjp_celltext_column celltext contained
+hi def link tjp_celltext_column Type
+syn keyword tjp_cellcolor_column cellcolor contained
+hi def link tjp_cellcolor_column Type
+syn keyword tjp_end_column end contained
+hi def link tjp_end_column Type
+syn keyword tjp_fontcolor_column fontcolor contained
+hi def link tjp_fontcolor_column Type
+syn keyword tjp_halign_column halign contained
+hi def link tjp_halign_column Type
+syn keyword tjp_listitem_column listitem contained
+hi def link tjp_listitem_column Type
+syn keyword tjp_listtype_column listtype contained
+hi def link tjp_listtype_column Type
+syn keyword tjp_period_column period contained
+hi def link tjp_period_column Type
+syn keyword tjp_scale_column scale contained
+hi def link tjp_scale_column Type
+syn keyword tjp_start_column start contained
+hi def link tjp_start_column Type
+syn keyword tjp_title_column title contained
+hi def link tjp_title_column Type
+syn keyword tjp_tooltip_column tooltip contained
+hi def link tjp_tooltip_column Type
+syn keyword tjp_width_column width contained
+hi def link tjp_width_column Type
+syn keyword tjp_currencyformat currencyformat contained
+hi def link tjp_currencyformat Type
+syn keyword tjp_details details contained
+hi def link tjp_details Type
+syn keyword tjp_definitions definitions contained
+hi def link tjp_definitions Type
+syn keyword tjp_resourceattributes resourceattributes contained
+hi def link tjp_resourceattributes Type
+syn keyword tjp_scenarios_export scenarios contained
+hi def link tjp_scenarios_export Type
+syn keyword tjp_taskattributes taskattributes contained
+hi def link tjp_taskattributes Type
+syn keyword tjp_timezone_export timezone contained
+hi def link tjp_timezone_export Type
+syn keyword tjp_date_extend date contained
+hi def link tjp_date_extend Type
+syn keyword tjp_reference_extend reference contained
+hi def link tjp_reference_extend Type
+syn keyword tjp_richtext_extend richtext contained
+hi def link tjp_richtext_extend Type
+syn keyword tjp_text_extend text contained
+hi def link tjp_text_extend Type
+syn keyword tjp_inherit_extend inherit contained
+hi def link tjp_inherit_extend Type
+syn keyword tjp_scenariospecific_extend scenariospecific contained
+hi def link tjp_scenariospecific_extend Type
+syn keyword tjp_fail fail contained
+hi def link tjp_fail Type
+syn keyword tjp_formats formats contained
+hi def link tjp_formats Type
+syn keyword tjp_hasalert hasalert contained
+hi def link tjp_hasalert Type
+syn keyword tjp_isactive isactive contained
+hi def link tjp_isactive Type
+syn keyword tjp_ischildof ischildof contained
+hi def link tjp_ischildof Type
+syn keyword tjp_isdependencyof isdependencyof contained
+hi def link tjp_isdependencyof Type
+syn keyword tjp_isdutyof isdutyof contained
+hi def link tjp_isdutyof Type
+syn keyword tjp_isfeatureof isfeatureof contained
+hi def link tjp_isfeatureof Type
+syn keyword tjp_isleaf isleaf contained
+hi def link tjp_isleaf Type
+syn keyword tjp_ismilestone ismilestone contained
+hi def link tjp_ismilestone Type
+syn keyword tjp_isongoing isongoing contained
+hi def link tjp_isongoing Type
+syn keyword tjp_isresource isresource contained
+hi def link tjp_isresource Type
+syn keyword tjp_isresponsibilityof isresponsibilityof contained
+hi def link tjp_isresponsibilityof Type
+syn keyword tjp_istask istask contained
+hi def link tjp_istask Type
+syn keyword tjp_treelevel treelevel contained
+hi def link tjp_treelevel Type
+syn keyword tjp_halign_center center
+hi def link tjp_halign_center Type
+syn keyword tjp_halign_left left
+hi def link tjp_halign_left Type
+syn keyword tjp_halign_right right
+hi def link tjp_halign_right Type
+syn keyword tjp_headline headline contained
+hi def link tjp_headline Type
+syn keyword tjp_hideaccount hideaccount contained
+hi def link tjp_hideaccount Type
+syn keyword tjp_hidejournalentry hidejournalentry contained
+hi def link tjp_hidejournalentry Type
+syn keyword tjp_hideresource hideresource contained
+hi def link tjp_hideresource Type
+syn keyword tjp_hidetask hidetask contained
+hi def link tjp_hidetask Type
+syn keyword tjp_icalreport icalreport contained
+hi def link tjp_icalreport Type
+syn keyword tjp_scenario_ical scenario contained
+hi def link tjp_scenario_ical Type
+syn keyword tjp_accountprefix accountprefix contained
+hi def link tjp_accountprefix Type
+syn keyword tjp_reportprefix reportprefix contained
+hi def link tjp_reportprefix Type
+syn keyword tjp_resourceprefix resourceprefix contained
+hi def link tjp_resourceprefix Type
+syn keyword tjp_taskprefix taskprefix contained
+hi def link tjp_taskprefix Type
+syn keyword tjp_journalattributes journalattributes contained
+hi def link tjp_journalattributes Type
+syn keyword tjp_journalentry journalentry contained
+hi def link tjp_journalentry Type
+syn keyword tjp_alert alert contained
+hi def link tjp_alert Type
+syn keyword tjp_flags_journalentry flags contained
+hi def link tjp_flags_journalentry Type
+syn keyword tjp_leaveallowance leaveallowances contained
+hi def link tjp_leaveallowance Type
+syn keyword tjp_leaves leaves
+hi def link tjp_leaves Type
+syn keyword tjp_end_limit end contained
+hi def link tjp_end_limit Type
+syn keyword tjp_period_limit period contained
+hi def link tjp_period_limit Type
+syn keyword tjp_resources_limit resources contained
+hi def link tjp_resources_limit Type
+syn keyword tjp_start_limit start contained
+hi def link tjp_start_limit Type
+syn keyword tjp_dailymax dailymax contained
+hi def link tjp_dailymax Type
+syn keyword tjp_dailymin dailymin contained
+hi def link tjp_dailymin Type
+syn keyword tjp_maximum maximum contained
+hi def link tjp_maximum Type
+syn keyword tjp_minimum minimum contained
+hi def link tjp_minimum Type
+syn keyword tjp_monthlymax monthlymax contained
+hi def link tjp_monthlymax Type
+syn keyword tjp_monthlymin monthlymin contained
+hi def link tjp_monthlymin Type
+syn keyword tjp_weeklymax weeklymax contained
+hi def link tjp_weeklymax Type
+syn keyword tjp_weeklymin weeklymin contained
+hi def link tjp_weeklymin Type
+syn keyword tjp_navigator navigator contained
+hi def link tjp_navigator Type
+syn keyword tjp_hidereport hidereport contained
+hi def link tjp_hidereport Type
+syn keyword tjp_timeoff_nikureport timeoff contained
+hi def link tjp_timeoff_nikureport Type
+syn keyword tjp_numberformat numberformat contained
+hi def link tjp_numberformat Type
+syn keyword tjp_alertlevels alertlevels contained
+hi def link tjp_alertlevels Type
+syn keyword tjp_currency currency contained
+hi def link tjp_currency Type
+syn keyword tjp_dailyworkinghours dailyworkinghours contained
+hi def link tjp_dailyworkinghours Type
+syn keyword tjp_extend extend contained
+hi def link tjp_extend Type
+syn keyword tjp_now now contained
+hi def link tjp_now Type
+syn keyword tjp_shorttimeformat shorttimeformat contained
+hi def link tjp_shorttimeformat Type
+syn keyword tjp_timingresolution timingresolution contained
+hi def link tjp_timingresolution Type
+syn keyword tjp_trackingscenario trackingscenario contained
+hi def link tjp_trackingscenario Type
+syn keyword tjp_weekstartsmonday weekstartsmonday contained
+hi def link tjp_weekstartsmonday Type
+syn keyword tjp_weekstartssunday weekstartssunday contained
+hi def link tjp_weekstartssunday Type
+syn keyword tjp_yearlyworkingdays yearlyworkingdays contained
+hi def link tjp_yearlyworkingdays Type
+syn keyword tjp_copyright copyright
+hi def link tjp_copyright Type
+syn keyword tjp_flags flags
+hi def link tjp_flags Type
+syn keyword tjp_limits limits contained
+hi def link tjp_limits Type
+syn keyword tjp_projectid projectid
+hi def link tjp_projectid Type
+syn keyword tjp_projectids projectids
+hi def link tjp_projectids Type
+syn keyword tjp_rate rate
+hi def link tjp_rate Type
+syn keyword tjp_vacation vacation
+hi def link tjp_vacation Type
+syn keyword tjp_purge purge contained
+hi def link tjp_purge Type
+syn keyword tjp_accountroot accountroot contained
+hi def link tjp_accountroot Type
+syn keyword tjp_caption caption contained
+hi def link tjp_caption Type
+syn keyword tjp_center center contained
+hi def link tjp_center Type
+syn keyword tjp_columns columns contained
+hi def link tjp_columns Type
+syn keyword tjp_epilog epilog contained
+hi def link tjp_epilog Type
+syn keyword tjp_flags_report flags contained
+hi def link tjp_flags_report Type
+syn keyword tjp_footer footer contained
+hi def link tjp_footer Type
+syn keyword tjp_header header contained
+hi def link tjp_header Type
+syn keyword tjp_journalmode journalmode contained
+hi def link tjp_journalmode Type
+syn keyword tjp_left left contained
+hi def link tjp_left Type
+syn keyword tjp_loadunit loadunit contained
+hi def link tjp_loadunit Type
+syn keyword tjp_opennodes opennodes contained
+hi def link tjp_opennodes Type
+syn keyword tjp_prolog prolog contained
+hi def link tjp_prolog Type
+syn keyword tjp_right right contained
+hi def link tjp_right Type
+syn keyword tjp_scenarios scenarios contained
+hi def link tjp_scenarios Type
+syn keyword tjp_selfcontained selfcontained contained
+hi def link tjp_selfcontained Type
+syn keyword tjp_resourceroot resourceroot contained
+hi def link tjp_resourceroot Type
+syn keyword tjp_taskroot taskroot contained
+hi def link tjp_taskroot Type
+syn keyword tjp_timezone_report timezone contained
+hi def link tjp_timezone_report Type
+syn keyword tjp_end_report end contained
+hi def link tjp_end_report Type
+syn keyword tjp_period_report period contained
+hi def link tjp_period_report Type
+syn keyword tjp_start_report start contained
+hi def link tjp_start_report Type
+syn keyword tjp_title title contained
+hi def link tjp_title Type
+syn keyword tjp_email email contained
+hi def link tjp_email Type
+syn keyword tjp_efficiency efficiency contained
+hi def link tjp_efficiency Type
+syn keyword tjp_flags_resource flags contained
+hi def link tjp_flags_resource Type
+syn keyword tjp_booking_resource booking contained
+hi def link tjp_booking_resource Type
+syn keyword tjp_limits_resource limits contained
+hi def link tjp_limits_resource Type
+syn keyword tjp_managers managers contained
+hi def link tjp_managers Type
+syn keyword tjp_rate_resource rate contained
+hi def link tjp_rate_resource Type
+syn keyword tjp_shifts_resource shifts contained
+hi def link tjp_shifts_resource Type
+syn keyword tjp_vacation_resource vacation contained
+hi def link tjp_vacation_resource Type
+syn keyword tjp_rollupaccount rollupaccount contained
+hi def link tjp_rollupaccount Type
+syn keyword tjp_rollupresource rollupresource contained
+hi def link tjp_rollupresource Type
+syn keyword tjp_rolluptask rolluptask contained
+hi def link tjp_rolluptask Type
+syn keyword tjp_active active contained
+hi def link tjp_active Type
+syn keyword tjp_replace replace contained
+hi def link tjp_replace Type
+syn keyword tjp_timezone_shift timezone contained
+hi def link tjp_timezone_shift Type
+syn keyword tjp_vacation_shift vacation contained
+hi def link tjp_vacation_shift Type
+syn keyword tjp_sortjournalentries sortjournalentries contained
+hi def link tjp_sortjournalentries Type
+syn keyword tjp_sortaccounts sortaccounts contained
+hi def link tjp_sortaccounts Type
+syn keyword tjp_sortresources sortresources contained
+hi def link tjp_sortresources Type
+syn keyword tjp_sorttasks sorttasks contained
+hi def link tjp_sorttasks Type
+syn keyword tjp_flags_statussheet flags contained
+hi def link tjp_flags_statussheet Type
+syn keyword tjp_status_statussheet status contained
+hi def link tjp_status_statussheet Type
+syn keyword tjp_statussheet statussheet contained
+hi def link tjp_statussheet Type
+syn keyword tjp_summary summary contained
+hi def link tjp_summary Type
+syn keyword tjp_tagfile tagfile contained
+hi def link tjp_tagfile Type
+syn keyword tjp_adopt_task adopt contained
+hi def link tjp_adopt_task Type
+syn keyword tjp_note_task note contained
+hi def link tjp_note_task Type
+syn keyword tjp_gapduration gapduration contained
+hi def link tjp_gapduration Type
+syn keyword tjp_gaplength gaplength contained
+hi def link tjp_gaplength Type
+syn keyword tjp_onend onend contained
+hi def link tjp_onend Type
+syn keyword tjp_onstart onstart contained
+hi def link tjp_onstart Type
+syn keyword tjp_period_task period contained
+hi def link tjp_period_task Type
+syn keyword tjp_booking_task booking contained
+hi def link tjp_booking_task Type
+syn keyword tjp_charge charge contained
+hi def link tjp_charge Type
+syn keyword tjp_complete complete contained
+hi def link tjp_complete Type
+syn keyword tjp_depends depends contained
+hi def link tjp_depends Type
+syn keyword tjp_duration duration contained
+hi def link tjp_duration Type
+syn keyword tjp_effort effort contained
+hi def link tjp_effort Type
+syn keyword tjp_end end contained
+hi def link tjp_end Type
+syn keyword tjp_flags_task flags contained
+hi def link tjp_flags_task Type
+syn keyword tjp_length length contained
+hi def link tjp_length Type
+syn keyword tjp_limits_task limits contained
+hi def link tjp_limits_task Type
+syn keyword tjp_maxend maxend contained
+hi def link tjp_maxend Type
+syn keyword tjp_maxstart maxstart contained
+hi def link tjp_maxstart Type
+syn keyword tjp_milestone milestone contained
+hi def link tjp_milestone Type
+syn keyword tjp_minend minend contained
+hi def link tjp_minend Type
+syn keyword tjp_minstart minstart contained
+hi def link tjp_minstart Type
+syn keyword tjp_precedes precedes contained
+hi def link tjp_precedes Type
+syn keyword tjp_priority priority contained
+hi def link tjp_priority Type
+syn keyword tjp_projectid_task projectid contained
+hi def link tjp_projectid_task Type
+syn keyword tjp_responsible responsible contained
+hi def link tjp_responsible Type
+syn keyword tjp_scheduled scheduled contained
+hi def link tjp_scheduled Type
+syn keyword tjp_scheduling scheduling contained
+hi def link tjp_scheduling Type
+syn keyword tjp_shifts_task shifts contained
+hi def link tjp_shifts_task Type
+syn keyword tjp_start start contained
+hi def link tjp_start Type
+syn keyword tjp_timeformat timeformat contained
+hi def link tjp_timeformat Type
+syn keyword tjp_timesheet timesheet contained
+hi def link tjp_timesheet Type
+syn keyword tjp_newtask newtask contained
+hi def link tjp_newtask Type
+syn keyword tjp_shift_timesheet shift contained
+hi def link tjp_shift_timesheet Type
+syn keyword tjp_task_timesheet task contained
+hi def link tjp_task_timesheet Type
+syn keyword tjp_timezone timezone contained
+hi def link tjp_timezone Type
+syn keyword tjp_flags_timesheet flags contained
+hi def link tjp_flags_timesheet Type
+syn keyword tjp_status_timesheet status contained
+hi def link tjp_status_timesheet Type
+syn keyword tjp_end_timesheet end contained
+hi def link tjp_end_timesheet Type
+syn keyword tjp_priority_timesheet priority contained
+hi def link tjp_priority_timesheet Type
+syn keyword tjp_remaining remaining contained
+hi def link tjp_remaining Type
+syn keyword tjp_work work contained
+hi def link tjp_work Type
+syn keyword tjp_warn warn contained
+hi def link tjp_warn Type
+syn keyword tjp_workinghours_project workinghours contained
+hi def link tjp_workinghours_project Type
+syn keyword tjp_workinghours_resource workinghours contained
+hi def link tjp_workinghours_resource Type
+syn keyword tjp_workinghours_shift workinghours contained
+hi def link tjp_workinghours_shift Type
+
+syn match tjparg contained /\${.*}/
+syn match tjpcomment /#.*$/
+syn match tjpcomment "//.*$"
+syn match tjpinclude /include.*$/
+syn match tjpnumber /\s[-+]\?\d\+\(\.\d\+\)\?\([hdwmy]\|min\)\?/
+syn match tjpdate /\s\d\{4}-\d\{1,2}-\d\{1,2}\(-\d\{1,2}:\d\{1,2}\(:\d\{1,2}\)\?\(-[-+]\?\d\{4}\)\?\)\?/
+syn match tjptime /\s\d\{1,2}:\d\d\(:\d\d\)\?/
+
+syn cluster tjpcommon contains=tjpcomment,tjpdate,tjptime,tjpstring,tjpnumber
+syn region tjpblk_account start=/^\s*account\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_account,tjp_account,tjpblk_account,tjp_aggregate,tjp_credits,tjp_flags_account
+syn region tjpblk_accountreport start=/^\s*accountreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_accountreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title
+syn region tjpblk_allocate start=/^\s*allocate\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_allocate,tjp_alternative,tjp_select,tjp_persistent,tjp_mandatory,tjp_shifts_allocate contained
+syn region tjpblk_export start=/^\s*export\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_export,tjp_definitions,tjp_hideresource,tjp_hidetask,tjp_end_report,tjp_period_report,tjp_start_report,tjp_resourceattributes,tjp_rollupresource,tjp_rolluptask,tjp_scenarios_export,tjp_taskattributes,tjp_timezone_export
+syn region tjpblk_date_extend start=/^\s*date\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_date_extend,tjp_inherit_extend,tjp_scenariospecific_extend contained
+syn region tjpblk_reference_extend start=/^\s*reference\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_reference_extend,tjp_inherit_extend,tjp_scenariospecific_extend contained
+syn region tjpblk_richtext_extend start=/^\s*richtext\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_richtext_extend,tjp_inherit_extend,tjp_scenariospecific_extend contained
+syn region tjpblk_text_extend start=/^\s*text\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_text_extend,tjp_inherit_extend,tjp_scenariospecific_extend contained
+syn region tjpblk_icalreport start=/^\s*icalreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_icalreport,tjp_hideresource,tjp_hidejournalentry,tjp_hidetask,tjp_end_report,tjp_period_report,tjp_start_report,tjp_rollupresource,tjp_rolluptask,tjp_scenario_ical
+syn region tjpblk_journalentry start=/^\s*journalentry\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_journalentry,tjp_alert,tjp_author,tjp_flags_journalentry,tjp_summary,tjp_details contained
+syn region tjpblk_dailymax start=/^\s*dailymax\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_dailymax,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_dailymin start=/^\s*dailymin\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_dailymin,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_maximum start=/^\s*maximum\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_maximum,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_minimum start=/^\s*minimum\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_minimum,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_monthlymax start=/^\s*monthlymax\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_monthlymax,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_monthlymin start=/^\s*monthlymin\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_monthlymin,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_weeklymax start=/^\s*weeklymax\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_weeklymax,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_weeklymin start=/^\s*weeklymin\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_weeklymin,tjp_end_limit,tjp_period_limit,tjp_resources_limit,tjp_start_limit contained
+syn region tjpblk_navigator start=/^\s*navigator\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_navigator,tjp_hidereport
+syn region tjpblk_nikureport start=/^\s*nikureport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_nikureport,tjp_formats,tjp_headline,tjp_hideresource,tjp_hidetask,tjp_numberformat,tjp_end_report,tjp_period_report,tjp_start_report,tjp_title,tjp_timeoff_nikureport
+syn region tjpblk_extend start=/^\s*extend\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_extend,tjp_date_extend,tjpblk_date_extend,tjp_reference_extend,tjpblk_reference_extend,tjp_richtext_extend,tjpblk_richtext_extend,tjp_text_extend,tjpblk_text_extend contained
+syn region tjpblk_project start=/^\s*project\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_project,tjp_alertlevels,tjp_currencyformat,tjp_currency,tjp_dailyworkinghours,tjp_extend,tjpblk_extend,tjp_include_project,tjp_journalentry,tjpblk_journalentry,tjp_now,tjp_numberformat,tjp_scenario,tjpblk_scenario,tjp_shorttimeformat,tjp_timeformat,tjp_timezone,tjp_timingresolution,tjp_trackingscenario,tjp_weekstartsmonday,tjp_weekstartssunday,tjp_workinghours_project,tjp_yearlyworkingdays
+syn region tjpblk_limits start=/^\s*limits\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_limits,tjp_dailymax,tjpblk_dailymax,tjp_dailymin,tjpblk_dailymin,tjp_maximum,tjpblk_maximum,tjp_minimum,tjpblk_minimum,tjp_monthlymax,tjpblk_monthlymax,tjp_monthlymin,tjpblk_monthlymin,tjp_weeklymax,tjpblk_weeklymax,tjp_weeklymin,tjpblk_weeklymin
+syn region tjpblk_include_properties start=/^\s*include\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_include_properties,tjp_accountprefix,tjp_reportprefix,tjp_resourceprefix,tjp_taskprefix
+syn region tjpblk_columns start=/^\s*columns\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_columns,tjp_celltext_column,tjp_cellcolor_column,tjp_end_column,tjp_fontcolor_column,tjp_halign_column,tjp_listitem_column,tjp_listtype_column,tjp_period_column,tjp_scale_column,tjp_start_column,tjp_title_column,tjp_tooltip_column,tjp_width_column contained
+syn region tjpblk_resource start=/^\s*resource\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_resource,tjp_email,tjp_journalentry,tjpblk_journalentry,tjp_purge,tjp_resource,tjpblk_resource,tjp_chargeset,tjp_efficiency,tjp_flags_resource,tjp_booking_resource,tjpblk_booking_resource,tjp_fail,tjp_leaveallowance,tjp_leaves,tjp_limits_resource,tjpblk_limits_resource,tjp_managers,tjp_rate_resource,tjp_shifts_resource,tjp_vacation_resource,tjp_warn,tjp_workinghours_resource,tjp_supplement_resource,tjpblk_supplement_resource
+syn region tjpblk_supplement_resource start=/^\s*supplement resource\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_supplement_resource,tjp_email,tjp_journalentry,tjpblk_journalentry,tjp_purge,tjp_resource,tjpblk_resource,tjp_chargeset,tjp_efficiency,tjp_flags_resource,tjp_booking_resource,tjpblk_booking_resource,tjp_fail,tjp_leaveallowance,tjp_leaves,tjp_limits_resource,tjpblk_limits_resource,tjp_managers,tjp_rate_resource,tjp_shifts_resource,tjp_vacation_resource,tjp_warn,tjp_workinghours_resource,tjp_supplement_resource,tjpblk_supplement_resource,tjp_supplement contained
+syn region tjpblk_resourcereport start=/^\s*resourcereport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_resourcereport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title
+syn region tjpblk_booking_resource start=/^\s*booking\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_booking_resource,tjp_overtime_booking,tjp_sloppy_booking contained
+syn region tjpblk_limits_resource start=/^\s*limits\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_limits_resource,tjp_dailymax,tjpblk_dailymax,tjp_dailymin,tjpblk_dailymin,tjp_maximum,tjpblk_maximum,tjp_minimum,tjpblk_minimum,tjp_monthlymax,tjpblk_monthlymax,tjp_monthlymin,tjpblk_monthlymin,tjp_weeklymax,tjpblk_weeklymax,tjp_weeklymin,tjpblk_weeklymin contained
+syn region tjpblk_scenario start=/^\s*scenario\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_scenario,tjp_active,tjp_scenario,tjpblk_scenario contained
+syn region tjpblk_shift start=/^\s*shift\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_shift,tjp_shift,tjpblk_shift,tjp_leaves,tjp_replace,tjp_timezone_shift,tjp_vacation_shift,tjp_workinghours_shift
+syn region tjpblk_status_statussheet start=/^\s*status\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_status_statussheet,tjp_author,tjp_details,tjp_flags_statussheet,tjp_summary contained
+syn region tjpblk_statussheet start=/^\s*statussheet\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_statussheet,tjp_task_statussheet,tjpblk_task_statussheet
+syn region tjpblk_statussheetreport start=/^\s*statussheetreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_statussheetreport,tjp_hideresource,tjp_hidetask,tjp_end_report,tjp_period_report,tjp_start_report,tjp_sortresources,tjp_sorttasks
+syn region tjpblk_task_statussheet start=/^\s*task\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_task_statussheet,tjp_status_statussheet,tjpblk_status_statussheet,tjp_task_statussheet,tjpblk_task_statussheet contained
+syn region tjpblk_tagfile start=/^\s*tagfile\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_tagfile,tjp_hideresource,tjp_hidetask,tjp_rollupresource,tjp_rolluptask
+syn region tjpblk_task start=/^\s*task\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_task,tjp_adopt_task,tjp_journalentry,tjpblk_journalentry,tjp_note_task,tjp_purge,tjp_supplement_task,tjpblk_supplement_task,tjp_task,tjpblk_task,tjp_allocate,tjpblk_allocate,tjp_booking_task,tjpblk_booking_task,tjp_charge,tjp_chargeset,tjp_complete,tjp_depends,tjpblk_depends,tjp_duration,tjp_effort,tjp_end,tjp_flags_task,tjp_fail,tjp_length,tjp_limits_task,tjpblk_limits_task,tjp_maxend,tjp_maxstart,tjp_milestone,tjp_minend,tjp_minstart,tjp_period_task,tjp_precedes,tjpblk_precedes,tjp_priority,tjp_projectid_task,tjp_responsible,tjp_scheduled,tjp_scheduling,tjp_shifts_task,tjp_start,tjp_warn
+syn region tjpblk_supplement_task start=/^\s*supplement task\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_supplement_task,tjp_adopt_task,tjp_journalentry,tjpblk_journalentry,tjp_note_task,tjp_purge,tjp_supplement_task,tjpblk_supplement_task,tjp_task,tjpblk_task,tjp_allocate,tjpblk_allocate,tjp_booking_task,tjpblk_booking_task,tjp_charge,tjp_chargeset,tjp_complete,tjp_depends,tjpblk_depends,tjp_duration,tjp_effort,tjp_end,tjp_flags_task,tjp_fail,tjp_length,tjp_limits_task,tjpblk_limits_task,tjp_maxend,tjp_maxstart,tjp_milestone,tjp_minend,tjp_minstart,tjp_period_task,tjp_precedes,tjpblk_precedes,tjp_priority,tjp_projectid_task,tjp_responsible,tjp_scheduled,tjp_scheduling,tjp_shifts_task,tjp_start,tjp_warn,tjp_supplement contained
+syn region tjpblk_taskreport start=/^\s*taskreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_taskreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title
+syn region tjpblk_booking_task start=/^\s*booking\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_booking_task,tjp_overtime_booking,tjp_sloppy_booking contained
+syn region tjpblk_depends start=/^\s*depends\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_depends,tjp_gapduration,tjp_gaplength,tjp_onend,tjp_onstart contained
+syn region tjpblk_limits_task start=/^\s*limits\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_limits_task,tjp_dailymax,tjpblk_dailymax,tjp_dailymin,tjpblk_dailymin,tjp_maximum,tjpblk_maximum,tjp_minimum,tjpblk_minimum,tjp_monthlymax,tjpblk_monthlymax,tjp_monthlymin,tjpblk_monthlymin,tjp_weeklymax,tjpblk_weeklymax,tjp_weeklymin,tjpblk_weeklymin contained
+syn region tjpblk_precedes start=/^\s*precedes\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_precedes,tjp_gapduration,tjp_gaplength,tjp_onend,tjp_onstart contained
+syn region tjpblk_textreport start=/^\s*textreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_textreport,tjp_accountroot,tjp_balance,tjp_caption,tjp_center,tjp_columns,tjpblk_columns,tjp_currencyformat,tjp_end_report,tjp_epilog,tjp_flags_report,tjp_footer,tjp_formats,tjp_header,tjp_headline,tjp_hidejournalentry,tjp_hideaccount,tjp_hideresource,tjp_hidetask,tjp_journalattributes,tjp_journalmode,tjp_left,tjp_loadunit,tjp_numberformat,tjp_opennodes,tjp_period_report,tjp_prolog,tjp_purge,tjp_accountreport,tjpblk_accountreport,tjp_resourcereport,tjpblk_resourcereport,tjp_taskreport,tjpblk_taskreport,tjp_textreport,tjpblk_textreport,tjp_right,tjp_rollupaccount,tjp_rollupresource,tjp_rolluptask,tjp_scenarios,tjp_selfcontained,tjp_sortaccounts,tjp_sortjournalentries,tjp_sortresources,tjp_sorttasks,tjp_start_report,tjp_resourceroot,tjp_taskroot,tjp_timeformat,tjp_timezone_report,tjp_title
+syn region tjpblk_timesheet start=/^\s*timesheet\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_timesheet,tjp_newtask,tjpblk_newtask,tjp_shift_timesheet,tjp_status_timesheet,tjpblk_status_timesheet,tjp_task_timesheet,tjpblk_task_timesheet
+syn region tjpblk_newtask start=/^\s*newtask\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_newtask,tjp_end_timesheet,tjp_priority_timesheet,tjp_remaining,tjp_status_timesheet,tjpblk_status_timesheet,tjp_work contained
+syn region tjpblk_task_timesheet start=/^\s*task\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_task_timesheet,tjp_end_timesheet,tjp_priority_timesheet,tjp_remaining,tjp_status_timesheet,tjpblk_status_timesheet,tjp_work contained
+syn region tjpblk_timesheetreport start=/^\s*timesheetreport\s.*{\s*$/ end=/^\s*}\s*$/ transparent fold contains=@tjpcommon,tjp_timesheetreport,tjp_hideresource,tjp_end_report,tjp_period_report,tjp_start_report
+syn region tjpblk_status_timesheet start=/^\s*status\s.*{\s*$/ end=/^\s*}\s*$/ transparent contains=@tjpcommon,tjp_status_timesheet,tjp_details,tjp_flags_timesheet,tjp_summary contained
+syn region tjpblk_macro start=/macro\s\+\h\w*\s*\[/ end=/\]$/ transparent fold contains=ALL
+syn region tjpstring start=/"/ skip=/\\"/ end=/"/
+syn region tjpstring start=/'/ skip=/\\'/ end=/'/
+syn region tjpstring start=/\s-8<-$/ end=/^\s*->8-/ fold
+syn region tjpmlcomment start=+/\*+ end=+\*/+
+
+syn sync fromstart
+set foldmethod=syntax
+
+hi def link tjp_macro PreProc
+hi def link tjp_supplement Function
+hi def link tjp_project Function
+hi def link tjpproperty Function
+hi def link tjpattribute Type
+hi def link tjparg Special
+hi def link tjpstring String
+hi def link tjpcomment Comment
+hi def link tjpmlcomment Comment
+hi def link tjpinclude Include
+hi def link tjpdate Constant
+hi def link tjptime Constant
+hi def link tjpnumber Number
+
+let b:current_syntax = "tjp"
+
+" Support running tj3 from within vim. Just type ':make your_project.tjp' to
+" activate it.
+set makeprg=tj3\ --silent
+
+" Support browsing the man page by typing Shift-k while having the cursor over
+" any syntax keyword
+set keywordprg=tj3man
+
+" Remap Ctrl-] to show full ID of property defined in the current
+" line. This requires a current ctags file (generated by 'tagfile'
+" report') to be present in the directory where vim was started.
+map <C-]> :call ShowFullID()<CR>
+function! ShowFullID()
+ let linenumber = line(".")
+ let filename = bufname("%")
+ execute "!grep '".filename."\t".linenumber.";' tags|cut -f 1"
+endfunction
+
+augroup TaskJugglerSource
+ " Remove all trailing white spaces from line ends when saving files
+ " Note: This overwrites the s mark.
+ autocmd BufWritePre *.tj[ip] mark s | %s/\s\+$//e | normal `s
+augroup END
diff --git a/old/vimperatorrc b/old/vimperatorrc
new file mode 100644
index 0000000..cf46e68
--- /dev/null
+++ b/old/vimperatorrc
@@ -0,0 +1,2 @@
+
+source ~/.vim/scripts/bepo-layout.vim
diff --git a/old/vimrc b/old/vimrc
new file mode 100644
index 0000000..b303f28
--- /dev/null
+++ b/old/vimrc
@@ -0,0 +1,187 @@
+" vimrc
+
+" vundle
+set nocompatible " be iMproved, required
+filetype off " required
+
+set rtp+=~/.vim/bundle/Vundle.vim
+call vundle#begin()
+
+" :PluginInstall :PluginUpdate
+Plugin 'VundleVim/Vundle.vim'
+
+Plugin 'altercation/vim-colors-solarized'
+Plugin 'vim-airline/vim-airline' " Status/Tab line
+Plugin 'vim-airline/vim-airline-themes' " Status/Tab line Themes
+Plugin 'ctrlpvim/ctrlp.vim'
+Plugin 'embear/vim-localvimrc' " .lvimrc
+Plugin 'tpope/vim-commentary' " gc[N][motion]
+Plugin 'tpope/vim-surround' " cs'<q>
+Plugin 'tpope/vim-fugitive' " Gstatus Gdiff Gwrite (Git add %)
+Plugin 'tpope/vim-repeat' " allows '.' to work with plugins
+Plugin 'gnupg.vim'
+Plugin 'majutsushi/tagbar' " F2
+" Plugin 'vim-scripts/taglist.vim'
+Plugin 'scrooloose/nerdtree' " F3
+" Plugin 'abudden/taghighlight-automirror'
+" Plugin 'jwhitley/vim-matchit'
+" Plugin 'msanders/snipmate.vim'
+" Plugin 'Rip-Rip/clang_complete'
+" Plugin 'scrooloose/syntastic'
+" Plugin 'tpope/vim-git'
+" Plugin 'tpope/vim-haml'
+" Plugin 'tpope/vim-markdown'
+" Plugin 'vim-scripts/javacomplete'
+Plugin 'Shougo/deoplete.nvim'
+" Plugin 'Shougo/neosnippet'
+" Plugin 'Shougo/neosnippet-snippets'
+Plugin 'habamax/vim-godot'
+
+call vundle#end() " required
+filetype plugin indent on " required
+
+
+" Regular options ------------------------------------------------------------
+"set spell " spell checking
+set mouse-=a " disable automatic visual mode using mouse
+set nofsync " async I/O
+set ff=unix " file format \n
+set backup " keep a backup file
+set autoindent " use autoindent"
+set nocompatible " do not try to act like vi
+set cursorline " show cursor line
+" set cursorcolumn " show curser column
+set scrolloff=5 " number of context lines above and below the cursor
+set laststatus=2 " alway add status line
+set history=50 " keep 50 lines of command line history
+set ruler " show the cursor position all the time
+set showcmd " display incomplete commands
+set incsearch " do incremental searching
+set number " show line number
+set showmode " show current mode
+set colorcolumn=80 " add vertical bar
+set foldmethod=marker " define folding method
+
+set tabstop=4 shiftwidth=4 softtabstop=4 expandtab
+set backspace=indent,eol,start " allow backspacing over everything in insert mode
+
+" <C-r> jump to definition, <C-t> to jump back to the call
+set tags+=./.tags;/
+nmap <C-r> g<C-]>
+
+
+" Theme ----------------------------------------------------------------------
+syntax on
+set hlsearch
+set background=dark
+if !empty($DISPLAY)
+ let g:solarized_termtrans=1
+endif
+colorscheme solarized
+let g:airline_theme='dark'
+let g:airline#extensions#tabline#enabled = 1
+let g:airline#extensions#tabline#fnamemod = ':t'
+let g:airline#extensions#tabline#buffer_idx_mode = 1
+hi CursorLineNr ctermbg=red
+hi CursorLine ctermbg=0 ctermfg=None
+hi ColorColumn ctermbg=7 ctermfg=None
+
+" NonText, SpecialKey, ExtraWhitespace, ExtraOver ----------------------------
+nmap <leader>l :set list!<CR>
+" set list listchars=tab:▸\ ,trail:·,precedes:←,extends:→,eol:↲,nbsp:␣
+set list listchars=tab:▸\ ,trail:·,precedes:←,extends:→,nbsp:␣
+hi NonText ctermfg=16 guifg=#4a4a59
+"hi SpecialKey ctermfg=16 guifg=#4a4a59
+highlight ExtraWhitespace ctermbg=red guibg=red ctermfg=black guifg=black
+match ExtraWhitespace /\s\+$/
+" match ExtraWhitespace /\t\|\s\+$/
+" highlight ExtraOver ctermbg=red ctermfg=white guibg=#59292
+" match ExtraOver /\s\+\%#\@<!$\|\%81v.*/
+
+
+" set leader to ',' ----------------------------------------------------------
+let mapleader = ","
+let g:mapleader = ","
+
+
+" Delete default to black hole register --------------------------------------
+nnoremap x "_x
+nnoremap d "_d
+nnoremap D "_D
+vnoremap d "_d
+
+vnoremap <leader>d ""d
+nnoremap <leader>d ""d
+nnoremap <leader>D ""D
+
+
+" CtrlP ----------------------------------------------------------------------
+nmap <leader>e :CtrlP<cr>
+nmap <leader>ee :CtrlPBuffer<cr>
+nmap <leader>em :CtrlPMixed<cr>
+
+" Autocomplete
+let g:deoplete#enable_at_startup = 1
+" let g:neosnippet#disable_runtime_snippets
+" let g:neosnippet#snippets_directory='~/.vim/bundle/vim-snippets/snippets'
+imap <C-k> <Plug>(neosnippet_expand_or_jump)
+smap <C-k> <Plug>(neosnippet_expand_or_jump)
+xmap <C-k> <Plug>(neosnippet_expand_target)
+
+" localvimrc -----------------------------------------------------------------
+let g:localvimrc_ask=0
+let g:localvimrc_sandbox=0
+
+" godot -------------------------------------------------------------------
+func! GodotSettings() abort
+ " setlocal foldmethod=expr
+ setlocal tabstop=4
+ nnoremap <buffer> <F4> :GodotRunLast<CR>
+ nnoremap <buffer> <F5> :GodotRun<CR>
+ nnoremap <buffer> <F6> :GodotRunCurrent<CR>
+ nnoremap <buffer> <F7> :GodotRunFZF<CR>
+endfunc
+
+" tagbar / taglist -----------------------------------------------------------
+nmap <F2> :TagbarToggle<CR>
+" nnoremap <silent> <F2> :TlistToggle<CR>
+" let Tlist_Ctags_Cmd = "/usr/bin/ctags"
+" let Tlist_WinWidth = 50
+" let Tlist_Exit_OnlyWindow = 1 " exit if taglist is last window open
+" let Tlist_Show_One_File = 1 " Only show tags for current buffer
+" let Tlist_Enable_Fold_Column = 0 " no fold column (only showing one file)
+
+" nerdtree -------------------------------------------------------------------
+nmap <F3> :NERDTreeToggle<CR>
+
+" replace current selection with content of "" buffer
+vmap p "_dP
+
+" Only do this part when compiled with support for autocommands.
+if has("autocmd")
+
+ " For all text files set 'textwidth' to 78 characters.
+ autocmd FileType text setlocal textwidth=78
+
+ " When editing a file, always jump to the last known cursor position.
+ " Don't do it when the position is invalid or when inside an event handler
+ " (happens when dropping a file on gvim).
+ autocmd BufReadPost *
+ \ if line("'\"") > 0 && line("'\"") <= line("$") |
+ \ exe "normal g`\"" |
+ \ endif
+
+ " Syntax of these languages is fussy over tabs Vs spaces
+ autocmd FileType gdscript call GodotSettings()
+ autocmd FileType make setlocal ts=8 sts=8 sw=8 noexpandtab
+ autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab
+
+ " Personal taste
+ autocmd FileType html setlocal ts=2 sts=2 sw=2 expandtab
+ autocmd FileType css setlocal ts=2 sts=2 sw=2 expandtab
+ autocmd Filetype html,xml,xsl source ~/.vim/scripts/closetag.vim
+
+endif " has("autocmd")
+
+source ~/.vim/scripts/bepo-layout.vim
+
diff --git a/old/vimrc-bepo b/old/vimrc-bepo
new file mode 100644
index 0000000..eaece74
--- /dev/null
+++ b/old/vimrc-bepo
@@ -0,0 +1,7 @@
+" vimrc-bepo
+
+call pathogen#infect()
+
+source ~/.vimrc
+source ~/.vim/scripts/bepo-layout.vim
+
diff --git a/old/vimrc.bepo b/old/vimrc.bepo
new file mode 100644
index 0000000..0331e8b
--- /dev/null
+++ b/old/vimrc.bepo
@@ -0,0 +1,82 @@
+" {W} -> [É]
+" ——————————
+" On remappe W sur É :
+noremap é w
+noremap É W
+" Corollaire, pour effacer/remplacer un mot quand on n’est pas au début (daé /
+" laé).
+" (attention, cela diminue la réactivité du {A}…)
+noremap aé aw
+noremap aÉ aW
+" Pour faciliter les manipulations de fenêtres, on utilise {W} comme un
+" Ctrl+W :
+noremap w <C-w>
+noremap W <C-w><C-w>
+
+" [HJKL] -> {CTSR}
+" ————————————————
+" {cr} = « gauche / droite »
+noremap c h
+noremap r l
+" {ts} = « haut / bas »
+noremap t j
+noremap s k
+" {CR} = « haut / bas de l'écran »
+noremap C H
+noremap R L
+" {TS} = « joindre / aide »
+ noremap T J
+ noremap S K
+" Corollaire : repli suivant / précédent
+ noremap zs zj
+ noremap zt zk
+
+" {HJKL} <- [CTSR]
+" ————————————————
+" {J} = « Jusqu'à » (j = suivant, J = précédant)
+noremap j t
+noremap J T
+" {L} = « Change » (l = attend un mvt, L = jusqu'à la fin de ligne)
+noremap l c
+noremap L C
+" {H} = « Remplace » (h = un caractère slt, H = reste en « Remplace »)
+noremap h r
+noremap H R
+" {K} = « Substitue » (k = caractère, K = ligne)
+noremap k s
+noremap K S
+" Corollaire : correction orthographique
+noremap ]k ]s
+noremap [k [s
+
+" Désambiguation de {g}
+" —————————————————————
+" ligne écran précédente / suivante (à l'intérieur d'une phrase)
+noremap gs gk
+noremap gt gj
+" onglet précédant / suivant
+noremap gb gT
+noremap gé gt
+" optionnel : {gB} / {gÉ} pour aller au premier / dernier onglet
+noremap gB :exe "silent! tabfirst"<CR>
+noremap gÉ :exe "silent! tablast"<CR>
+" optionnel : {g"} pour aller au début de la ligne écran
+noremap g" g0
+
+" <> en direct
+" ————————————
+noremap « <
+noremap » >
+
+" Remaper la gestion des fenêtres
+" ———————————————————————————————
+noremap wt <C-w>j
+noremap ws <C-w>k
+noremap wc <C-w>h
+noremap wr <C-w>l
+noremap wd <C-w>c
+noremap wo <C-w>s
+noremap wp <C-w>o
+noremap w<SPACE> :split<CR>
+noremap w<CR> :vsplit<CR>
+