diff --git a/README.md b/README.md index 9b2dbb9..aa3bbb5 100644 --- a/README.md +++ b/README.md @@ -25,7 +25,10 @@ A customizable Neovim plugin to run code inside the editor requires = { 'nvim-telescope/telescope.nvim', requires = { 'nvim-lua/plenary.nvim' } - } + }, + config = function() + require('runner').setup() + end } end) ``` @@ -39,7 +42,10 @@ A customizable Neovim plugin to run code inside the editor dependencies = { 'nvim-telescope/telescope.nvim', dependencies = { 'nvim-lua/plenary.nvim' } - } + }, + config = function() + require('runner').setup() + end } }) ``` @@ -55,11 +61,21 @@ A customizable Neovim plugin to run code inside the editor ## Configuration - This plugin doesn't have a `setup()` method, but you can set your filetype handlers using the `set_handler()` method. - - Default handlers can be found [here](./lua/runner/handlers/init.lua). + #### `setup(options)` + + Runner comes with the following defaults: + ```lua + require('runner').setup({ + position = 'right', -- position of task window can be: top, left, right, bottom + width = 80, -- width of window when position is left or right + height = 10, -- height of window when position is top or bottom + }) + ``` #### `set_handler(filetype, handler)` + + Default handlers can be found [here](./lua/runner/handlers/init.lua). + | Argument name | Description | Type | |---------------- | --------------- | --------------- | | `filetype` | The filetype on which to run the given handler | `string` | diff --git a/lua/runner/config.lua b/lua/runner/config.lua new file mode 100644 index 0000000..3757e09 --- /dev/null +++ b/lua/runner/config.lua @@ -0,0 +1,17 @@ +local M = {} + +local defaults = { + position = 'right', -- options: top, left, right, bottom + width = 80, -- width of window when position is left or right + height = 10, -- height of window when position is top or bottom +} + +M.options = {} + +M.setup = function(options) + M.options = vim.tbl_deep_extend('force', {}, defaults, options or {}) +end + +M.setup() + +return M; diff --git a/lua/runner/handlers/utils.lua b/lua/runner/handlers/utils.lua index bb7ff7c..a824288 100644 --- a/lua/runner/handlers/utils.lua +++ b/lua/runner/handlers/utils.lua @@ -1,5 +1,7 @@ local M = {} +local config = require('runner.config') + M._buffer = nil M._window = nil @@ -21,7 +23,16 @@ M.create_window = function() return M._window end - vim.cmd([[ vsplit ]]) + if config.options.position == 'right' then + vim.cmd('botright ' .. config.options.width .. ' vsplit') + elseif config.options.position == 'left' then + vim.cmd('topleft ' .. config.options.width .. ' vsplit') + elseif config.options.position == 'bottom' then + vim.cmd('botright ' .. config.options.height .. 'split') + elseif config.options.position == 'top' then + vim.cmd('topleft ' .. config.options.height .. 'split') + end + local window = vim.api.nvim_get_current_win() local window_opts = { diff --git a/lua/runner/init.lua b/lua/runner/init.lua index f25d78a..b1634b6 100644 --- a/lua/runner/init.lua +++ b/lua/runner/init.lua @@ -1,9 +1,14 @@ local handlers = require('runner.handlers') +local config = require('runner.config') local M = {} M._handlers = handlers +M.setup = function(options) + config.setup(options) +end + M.set_handler = function(filetype, handler) M._handlers[filetype] = handler end