runner.nvim/lua/runner/init.lua
2023-04-10 23:36:39 +03:00

57 lines
1.3 KiB
Lua

local handlers = require('runner.handlers')
local utils = require('runner.handlers.utils')
local config = require('runner.config')
local helpers = require('runner.handlers.helpers')
local M = {}
M._handlers = handlers
M.setup = function(options)
config.setup(options)
end
--- **Overrides** the handler for the specified filetype
---
--- Usage:
--- ```lua
--- local helpers = require('runner.handlers.helpers')
--- require('runner').set_handler(
--- 'lua',
--- helpers.command_handler('luafile %'),
--- )
--- ```
---
--- @param filetype string The filetype on which to run the given handler
--- @param handler function The handler to run when the current file matches the filetype
M.set_handler = function(filetype, handler)
M._handlers[filetype] = handler
end
M.run = function(bufnr)
local buffer
if bufnr == nil or bufnr == 0 then
buffer = vim.api.nvim_get_current_buf()
else
buffer = bufnr
end
if buffer == utils._terminal_buffer then
helpers.shell_handler(utils._last_command, false)()
return
end
local filetype = vim.filetype.match { buf = buffer }
local handler = M._handlers[filetype]
if not handler then
print(string.format("No handler defined for filetype '%s'", filetype))
return
end
handler(buffer)
end
return M