fork download
  1. execute pathogen#infect()
  2. syntax on
  3. set splitright
  4. set splitbelow
  5. set autoindent
  6. set tabstop=2
  7. set history=100
  8. set shiftwidth=2
  9. colorscheme blue
  10. set autoread
  11. set nowrap
  12.  
  13. let compileMode=0
  14. let inputFile="input.in"
  15. let outputFile="output.out"
  16. let IOMode=0
  17.  
  18. function Compile()
  19. :w
  20. let folder = expand('%:h')
  21. let grader = folder . "/grader.cpp"
  22. let main = folder . "/main.cpp"
  23. let aout = folder . "/a.out"
  24.  
  25. call UseConfig()
  26.  
  27. if g:compileMode == 1
  28. execute "!g++ -Wall -DHOME -O2 -std=c++11 -o " . aout . " " . grader . " " . main
  29. else
  30. execute "!g++ -Wall -DHOME -O2 -std=c++11 -o " . aout . " " . main
  31. endif
  32. endfunction
  33.  
  34. function Run()
  35. let aout = expand('%:h') . "/a.out"
  36.  
  37. call UseConfig()
  38.  
  39. if g:inputFile == "stdin"
  40. let input = " < " . expand('%:h') . "/input.txt"
  41. else
  42. let input = ""
  43. endif
  44.  
  45. let output = " > " . expand('%:h') . "/output.txt"
  46. execute "!" . aout . input . output
  47. endfunction
  48.  
  49. function Input()
  50. call UseConfig()
  51. if g:IOMode == 1
  52. let folder = expand('%:h') . "/" . "input.txt"
  53. else
  54. let folder = expand('%:h') . "/" . g:inputFile
  55. endif
  56. execute "vs " . folder
  57. endfunction
  58.  
  59. function Output()
  60. call UseConfig()
  61. if g:IOMode == 1
  62. let folder = expand('%:h') . "/" . "output.txt"
  63. else
  64. let folder = expand('%:h') . "/" . g:outputFile
  65. endif
  66. execute "vs " . folder
  67. endfunction
  68.  
  69. function Header()
  70. let folder = expand('%:h') . "/" . expand('%:h:t') . ".h"
  71. execute "vs " . folder
  72. endfunction
  73.  
  74. function Grader()
  75. let folder = expand('%:h') . "/grader.cpp"
  76. execute "vs " . folder
  77. endfunction
  78.  
  79. function Main()
  80. let folder = expand('%:h') . "/main.cpp"
  81. execute "vs " . folder
  82. endfunction
  83.  
  84. function Config()
  85. let folder = expand('%:h') . "/config.vim"
  86. execute "vs " . folder
  87. endfunction
  88.  
  89. function Stdout()
  90. let folder = expand('%:h') . "/output.txt"
  91. execute "vs " . folder
  92. endfunction
  93.  
  94. function WriteConfig(compile, input, output, mode)
  95. let folder = expand('%:h')
  96. execute "w! " folder . "/config.vim"
  97. silent execute "redir! >" . folder . "/config.vim"
  98. silent execute "echo " . "\"let compileMode=" . a:compile . "\""
  99. silent execute "echo " . "\"" . "let inputFile=" . "\\\"" . expand(a:input) . "\\\"" . "\""
  100. silent execute "echo " . "\"" . "let outputFile=" . "\\\"" . expand(a:output) . "\\\"" . "\""
  101. silent execute "echo " . "\"" . "let IOMode=" . expand(a:mode) . "\""
  102. silent execute "redir END"
  103. endfunction
  104.  
  105. function UseConfig()
  106. let folder = expand('%:h')
  107. execute "source " . folder . "/config.vim"
  108. endfunction
  109.  
  110. function NewProject(name)
  111. if isdirectory(expand('%') . "/" . expand(a:name))
  112. execute "tab new " . expand('%') . "/" . expand(a:name) . "/main.cpp"
  113. call UseConfig()
  114. else
  115. execute "silent !mkdir " . expand('%') . "/" . expand(a:name)
  116. execute "tab new " . expand('%') . "/" . expand(a:name) . "/main.cpp"
  117. call WriteConfig(0, a:name . ".in", a:name . ".out", 0)
  118. call UseConfig()
  119. endif
  120. endfunction
  121.  
  122. function ToggleLine()
  123. if &nu == 1
  124. set nonu
  125. set rnu
  126. elseif &rnu == 1
  127. set nornu
  128. else
  129. set nu
  130. endif
  131. endfunction
  132.  
  133. function ToggleCompiler()
  134. call UseConfig()
  135. silent call WriteConfig(1-g:compileMode, g:inputFile, g:outputFile, g:IOMode)
  136. if g:compileMode == 0
  137. echo "Toggled batch mode"
  138. else
  139. echo "Toggled interactive mode"
  140. endif
  141. endfunction
  142.  
  143. function ToggleIO()
  144. call UseConfig()
  145.  
  146. if g:IOMode == 0
  147. silent call WriteConfig(g:compileMode, "stdin", "stdout", 1)
  148. echo "stdin/stdout"
  149. elseif g:IOMode == 1
  150. silent call WriteConfig(g:compileMode, "input.txt", "output.txt", 2)
  151. echo "input.txt/output.txt"
  152. else
  153. let folder = expand('%:h:t')
  154. silent call WriteConfig(g:compileMode, folder . ".in", folder . ".out", 0)
  155. echo folder . ".in/" . folder . ".out"
  156. endif
  157. endfunction
  158.  
  159. function CustomIO(input, output)
  160. call UseConfig()
  161. silent call WriteConfig(g:compileMode, a:input, a:output, 3)
  162. echo a:input . "/" . a:output
  163. endfunction
  164.  
  165. let mapleader = " "
  166.  
  167. map <leader>s :w<Return>
  168. map <leader>c :call Compile()<Return>
  169. map <leader>r :call Run()<Return>
  170. map <leader>x :!gedit %<Return>
  171. map <leader>q :q<Return>
  172. map <leader>a <Plug>(easymotion-bd-w)
  173. map <leader>f :TExplore<Return>
  174.  
  175. "" Project shortcuts
  176. map <leader>i :call Input()<Return>
  177. map <leader>o :call Output()<Return>
  178. map <leader>gg :call Grader()<Return>
  179. map <leader>gm :call Main()<Return>
  180. map <leader>gh :call Header()<Return>
  181. map <leader>gc :call Config()<Return>
  182. map <leader><leader> :call Stdout()<Return>
  183. map <leader><S-n> :call NewProject("")<Left><Left>
  184.  
  185. "" Tab and splits motion shortcuts
  186. map <leader>e gt
  187. map <leader>w gT
  188. map <leader><Left> <C-w>h
  189. map <leader><Right> <C-w>l
  190.  
  191. "" Toggle shortcuts
  192. map <leader>tl :call ToggleLine()<Return>
  193. map <leader>tc :call ToggleCompiler()<Return>
  194. map <leader>ti :call ToggleIO()<Return>
  195. map <leader>to :call CustomIO("", "")<Left><Left><Left><Left><Left><Left>
  196.  
  197. inoremap " ""<Left>
  198. inoremap ' ''<Left>
  199. inoremap { {}<Left>
  200. inoremap [ []<Left>
  201. inoremap ( ()<Left>
  202.  
  203. map <leader>tetris :!bastet<Return>
  204. map <leader>snake :!nsnake<Return>
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: class, interface, or enum expected
execute pathogen#infect()
^
Main.java:1: error: illegal character: '#'
execute pathogen#infect()
                ^
Main.java:20: error: unclosed character literal
	let folder = expand('%:h')
	                    ^
Main.java:20: error: unclosed character literal
	let folder = expand('%:h')
	                        ^
Main.java:35: error: unclosed character literal
  let aout = expand('%:h') . "/a.out"
                    ^
Main.java:35: error: unclosed character literal
  let aout = expand('%:h') . "/a.out"
                        ^
Main.java:40: error: unclosed character literal
		let input = " < " . expand('%:h') . "/input.txt"
		                           ^
Main.java:40: error: unclosed character literal
		let input = " < " . expand('%:h') . "/input.txt"
		                               ^
Main.java:45: error: unclosed character literal
	let output = " > " . expand('%:h') . "/output.txt"
	                            ^
Main.java:45: error: unclosed character literal
	let output = " > " . expand('%:h') . "/output.txt"
	                                ^
Main.java:52: error: unclosed character literal
		let folder = expand('%:h') . "/" . "input.txt"
		                    ^
Main.java:52: error: unclosed character literal
		let folder = expand('%:h') . "/" . "input.txt"
		                        ^
Main.java:54: error: unclosed character literal
		let folder = expand('%:h') . "/" . g:inputFile
		                    ^
Main.java:54: error: unclosed character literal
		let folder = expand('%:h') . "/" . g:inputFile
		                        ^
Main.java:62: error: unclosed character literal
		let folder = expand('%:h') . "/" . "output.txt"
		                    ^
Main.java:62: error: unclosed character literal
		let folder = expand('%:h') . "/" . "output.txt"
		                        ^
Main.java:64: error: unclosed character literal
		let folder = expand('%:h') . "/" . g:outputFile
		                    ^
Main.java:64: error: unclosed character literal
		let folder = expand('%:h') . "/" . g:outputFile
		                        ^
Main.java:70: error: unclosed character literal
	let folder = expand('%:h') . "/" . expand('%:h:t') . ".h"
	                    ^
Main.java:70: error: unclosed character literal
	let folder = expand('%:h') . "/" . expand('%:h:t') . ".h"
	                        ^
Main.java:70: error: unclosed character literal
	let folder = expand('%:h') . "/" . expand('%:h:t') . ".h"
	                                          ^
Main.java:70: error: unclosed character literal
	let folder = expand('%:h') . "/" . expand('%:h:t') . ".h"
	                                                ^
Main.java:75: error: unclosed character literal
	let folder = expand('%:h') . "/grader.cpp"
	                    ^
Main.java:75: error: unclosed character literal
	let folder = expand('%:h') . "/grader.cpp"
	                        ^
Main.java:80: error: unclosed character literal
	let folder = expand('%:h') . "/main.cpp"
	                    ^
Main.java:80: error: unclosed character literal
	let folder = expand('%:h') . "/main.cpp"
	                        ^
Main.java:85: error: unclosed character literal
	let folder = expand('%:h') . "/config.vim"
	                    ^
Main.java:85: error: unclosed character literal
	let folder = expand('%:h') . "/config.vim"
	                        ^
Main.java:90: error: unclosed character literal
	let folder = expand('%:h') . "/output.txt"
	                    ^
Main.java:90: error: unclosed character literal
	let folder = expand('%:h') . "/output.txt"
	                        ^
Main.java:95: error: unclosed character literal
	let folder = expand('%:h')
	                    ^
Main.java:95: error: unclosed character literal
	let folder = expand('%:h')
	                        ^
Main.java:106: error: unclosed character literal
	let folder = expand('%:h')
	                    ^
Main.java:106: error: unclosed character literal
	let folder = expand('%:h')
	                        ^
Main.java:153: error: unclosed character literal
		let folder = expand('%:h:t')
		                    ^
Main.java:153: error: unclosed character literal
		let folder = expand('%:h:t')
		                          ^
Main.java:197: error: unclosed string literal
inoremap " ""<Left>
            ^
Main.java:198: error: unclosed character literal
inoremap ' ''<Left>
            ^
38 errors
stdout
Standard output is empty