From ed804de3fa70cad16b7a1c2d9211e567dbf6939d Mon Sep 17 00:00:00 2001 From: Kurenshe Nurdaulet <63652620+EpsilonKu@users.noreply.github.com> Date: Mon, 3 Apr 2023 12:09:25 +0600 Subject: [PATCH] Add options for window --- README.md | 19 +++++++++++++++++-- lua/runner/config.lua | 17 +++++++++++++++++ lua/runner/handlers/utils.lua | 14 ++++++++++++-- lua/runner/init.lua | 5 +++++ 4 files changed, 51 insertions(+), 4 deletions(-) create mode 100644 lua/runner/config.lua diff --git a/README.md b/README.md index 9b2dbb9..2c21f48 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,14 @@ 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({ + 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 + }) + end } }) ``` @@ -55,7 +62,15 @@ 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. + ### S`setup(options)` + Runner comes with the following defaults: + ```lua + { + 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 + } + ``` Default handlers can be found [here](./lua/runner/handlers/init.lua). diff --git a/lua/runner/config.lua b/lua/runner/config.lua new file mode 100644 index 0000000..4b9e178 --- /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 f4a4be8..04d07f1 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 = { @@ -57,7 +68,6 @@ M.run_command = function(command, callback) callback(output) end }) - end diff --git a/lua/runner/init.lua b/lua/runner/init.lua index f2cbf3f..4487fc7 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