--- /dev/null
+" Car Fire Level Editor for Vim
+" Last Change: 2010 Apr 09
+" Maintainer: Charles McGarvey <mcgarvey@eng.utah.edu>
+" License: This file is placed in the public domain.
+
+
+"if exists("loaded_leveleditor")
+ "finish
+"endif
+"let loaded_leveleditor = 1
+
+let s:save_cursorcolumn = &cursorcolumn
+let s:save_expandtab = &expandtab
+let s:save_statusline = &statusline
+
+
+set statusline=%!LevelEditor_Evaluate()
+function! LevelEditor_Evaluate()
+
+ let l:linenum = search('\m^\s*dimensions\s*=\s*\[\d\+,\d\+\]', 'bnw')
+ if l:linenum != 0
+ let l:line = getline(l:linenum)
+ let l:dimensions = matchlist(line, '\m\[\(.*\),\(.*\)\]')
+ let l:dw = get(l:dimensions, 1)
+ let l:dh = get(l:dimensions, 2)
+ let l:linenum = search('\m^\[maptable\]', 'bnW')
+ let l:current = line(".")
+ if l:linenum != 0 && l:current > l:linenum && l:current < l:linenum + l:dh + 1
+ let l:cx = col(".") - 1
+ let l:cy = line(".") - l:linenum - 1
+ setlocal cursorcolumn
+ setlocal expandtab
+ return s:save_statusline." Map: [".l:cx.",".l:cy."]"
+ else
+ return s:LevelEditor_Reset()
+ endif
+ else
+ return s:LevelEditor_Reset()
+ endif
+
+endfunction
+
+function! s:LevelEditor_Reset()
+ if s:save_cursorcolumn == 0
+ setlocal nocursorcolumn
+ endif
+ if s:save_expandtab == 0
+ setlocal noexpandtab
+ endif
+ return s:save_statusline
+endfunction
+
+
+if !hasmapto('<Plug>LeInitLevel')
+ map <unique> <Leader>ei <Plug>LeInitLevel
+endif
+noremap <unique> <script> <Plug>LeInitLevel <SID>InitLevel
+noremenu <script> Plugin.Level\ Editor.Initialize\ Buffer <SID>InitLevel
+
+noremap <SID>InitLevel :call <SID>InitLevel()<CR>
+function! s:InitLevel()
+ setlocal filetype=dosini
+ normal ggdGa[metadata]
+ call append(line('$'), "\tauthor = " . expand("$USER"))
+ call append(line('$'), "\tlevelname = My Level")
+ call append(line('$'), "\ttype = Campaign")
+ call append(line('$'), "\tdimensions = ")
+ call append(line('$'), "\ttileset = FuturisticBuilding")
+ call append(line('$'), "\tnumplayers = <1-4>")
+ call append(line('$'), "[maptable]")
+endfunction
+
+
+if !hasmapto('<Plug>LeAddEntity')
+ map <unique> <Leader>ea <Plug>LeAddEntity
+endif
+noremap <unique> <script> <Plug>LeAddEntity <SID>AddEntity
+noremenu <script> Plugin.Level\ Editor.Add\ Entity <SID>AddEntity
+
+noremap <SID>AddEntity :call <SID>AddEntity()<CR>
+function! s:AddEntity()
+ echo Cool!
+endfunction
+
+
+menu <silent> Plugin.Level\ Editor.-Sep- :
+menu <script> Plugin.Level\ Editor.Help :help leveleditor-contents<CR>
+