Vscode 有一个非常出名的插件,叫做 Code Runner,我曾经也给 SpaceVim 添加了这么一个功能。
现在将这一功能剥离出来形成一个单独独立的 neovim 插件:code-runner.nvim
安装及配置
可以使用任意插件管理器进行安装,这里以 nvim-plug 为例:
require('plug').add({
{
'wsdjeg/code-runner.nvim',
config = function()
require('code-runner').setup({
runners = {
lua = { exe = 'lua', opt = { '-' }, usestdin = true },
},
enter_win = false,
})
end,
},
})
自动更新 runner 参数
借助 rooter.nvim 插件,可以在切换项目时,读取 .clang
文件内容,并且更新 c 语言的 runner。具体代码实现:
local c_runner = {
exe = 'gcc',
targetopt = '-o',
usestdin = true,
opt = { '-std=c11', '-xc', '-' },
}
require('code-runner').setup({
runners = {
c = { c_runner, '#TEMP#' },
},
})
vim.keymap.set(
'n',
'<leader>lr',
'<cmd>lua require("code-runner").open()<cr>',
{ silent = true }
)
-- make sure rooter.nvim plugin is loaded before code-runner
local function update_clang_flag()
if vim.fn.filereadable('.clang') == 1 then
local flags = vim.fn.readfile('.clang')
local opt = { '-std=c11' }
for _, v in ipairs(flags) do
table.insert(opt, v)
end
table.insert(opt, '-xc')
table.insert(opt, '-')
c_runner.opt = opt
end
end
require('rooter').reg_callback(update_clang_flag)