@@ -224,3 +224,59 @@ vim.api.nvim_create_autocmd({ "BufWritePre" }, {
224
224
vim .fn .mkdir (vim .fn .fnamemodify (file , " :p:h" ), " p" )
225
225
end ,
226
226
})
227
+
228
+ -- CPP purposes
229
+ local function TermWrapper (command )
230
+ if vim .g .split_term_style == nil then
231
+ vim .g .split_term_style = " vertical"
232
+ end
233
+
234
+ local buffercmd
235
+ if vim .g .split_term_style == " vertical" then
236
+ buffercmd = " vnew"
237
+ elseif vim .g .split_term_style == " horizontal" then
238
+ buffercmd = " new"
239
+ else
240
+ error (
241
+ ' ERROR! g:split_term_style is not a valid value (must be "horizontal" or "vertical" but is currently set to "'
242
+ .. vim .g .split_term_style
243
+ .. ' ")'
244
+ )
245
+ end
246
+
247
+ vim .cmd (buffercmd )
248
+
249
+ if vim .g .split_term_resize_cmd ~= nil then
250
+ vim .cmd (vim .g .split_term_resize_cmd )
251
+ end
252
+
253
+ vim .cmd (" term " .. command )
254
+ vim .cmd (" setlocal nornu nonu" )
255
+ vim .cmd (" startinsert" )
256
+ vim .api .nvim_create_autocmd (" BufEnter" , {
257
+ buffer = 0 ,
258
+ command = " startinsert" ,
259
+ })
260
+ end
261
+
262
+ vim .api .nvim_create_user_command (" CompileAndRun" , function ()
263
+ local fileName = vim .fn .expand (" %" )
264
+ local exeName = fileName :gsub (" %.cpp$" , " " )
265
+ TermWrapper (" g++ -std=c++11 -o " .. exeName .. " " .. fileName .. " && ./" .. exeName )
266
+ end , {})
267
+ vim .api .nvim_create_user_command (" CompileAndRunWithFile" , function (args )
268
+ TermWrapper (" g++ -std=c++11 " .. vim .fn .expand (" %" ) .. " && ./a.out < " .. args .args )
269
+ end , {
270
+ nargs = 1 ,
271
+ complete = " file" ,
272
+ })
273
+
274
+ vim .api .nvim_create_autocmd (" FileType" , {
275
+ pattern = " cpp" ,
276
+ command = " nnoremap <leader>fw :CompileAndRun<CR>" ,
277
+ })
278
+
279
+ vim .api .nvim_create_autocmd (" FileType" , {
280
+ pattern = " cpp" ,
281
+ command = " nnoremap <leader>fr :CompileAndRunWithFile<CR>" ,
282
+ })
0 commit comments