Created
October 7, 2023 13:44
-
-
Save zorchp/71ba10706d426838881e2bbe6e1e5cc2 to your computer and use it in GitHub Desktop.
one file compile on nvim by using one key, such as `F7` and `F8`.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
local function CodeRunner() | |
--[===[========================== Global ===========================]===] | |
vim.api.nvim_create_autocmd({ "InsertLeave" }, { | |
callback = function() | |
vim.fn.execute("silent! write") | |
-- vim.notify("Autosaved!", vim.log.levels.INFO, {}) | |
end, | |
}) | |
--[===[========================== Static ===========================]===] | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "c", | |
callback = function() | |
-- -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te gcc-13 -Wshadow -Wall -std=c11 -o %:p:r.out %:p && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F8>", | |
"<ESC>:w<CR>:split<CR>:te clang -Wshadow -Wall -std=c11 -o %:p:r.out %:p -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te gcc-13 -Wshadow -Wall -std=c11 -o %:p:r.out %:p && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F8>", | |
"<ESC>:w<CR>:split<CR>:te clang -Wshadow -Wall -std=c11 -o %:p:r.out %:p -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "cpp", | |
callback = function() | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te g++-13 -std=c++2a -Wshadow -Wall -o %:p:r.out %:p && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F8>", | |
"<ESC>:w<CR>:split<CR>:te clang++ -std=c++2a -Wshadow -Wall -o %:p:r.out %:p -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te g++-13 -std=c++2a -Wshadow -Wall -o %:p:r.out %:p && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F8>", | |
"<ESC>:w<CR>:split<CR>:te clang++ -std=c++2a -Wshadow -Wall -o %:p:r.out %:p -fsanitize=address -fsanitize=undefined -D_GLIBCXX_DEBUG && time %:p:r.out<CR>", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
--[===[=========================== Script ==========================]===] | |
-- | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "python", | |
callback = function() | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F8>", | |
":w<CR>:split<CR>:te time /opt/homebrew/Caskroom/miniforge/base/envs/py3x/bin/python3 %:p <CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F8>", | |
"<ESC>:w<CR>:split<CR>:te time /opt/homebrew/Caskroom/miniforge/base/envs/py3x/bin/python3 %:p <CR>", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "lua", | |
callback = function() | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te lua %<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F7>", | |
":w<CR>:split<CR>:te lua %<CR>", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "make", | |
callback = function() | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te make <CR>i", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F8>", | |
"<ESC>:w<CR>:split<CR>:te make clean<CR>i", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te make <CR>i", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F8>", | |
"<ESC>:w<CR>:split<CR>:te make clean<CR>i", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "cmake", | |
callback = function() | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te cmake .<CR>", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "shell", | |
callback = function() | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te bash %<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te bash %<CR>", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
--[===[==================== TypeWritting ===================]===] | |
-- | |
vim.api.nvim_create_autocmd("FileType", { | |
pattern = "tex", | |
callback = function() | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"i", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te latexmk %<CR>", | |
{ silent = true, noremap = true } | |
) | |
vim.api.nvim_buf_set_keymap( | |
0, | |
"n", | |
"<F7>", | |
"<ESC>:w<CR>:split<CR>:te latexmk %<CR>", | |
{ silent = true, noremap = true } | |
) | |
end, | |
}) | |
end | |
CodeRunner() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment