Skip to content

Instantly share code, notes, and snippets.

@zorchp
Created October 7, 2023 13:44
Show Gist options
  • Save zorchp/71ba10706d426838881e2bbe6e1e5cc2 to your computer and use it in GitHub Desktop.
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`.
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