Merge pull request #5 from EpsilonKu/main

Add options for window
This commit is contained in:
Marc 2023-04-03 19:05:58 +03:00 committed by GitHub
commit 27c047a67b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 55 additions and 7 deletions

View File

@ -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.
#### `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).
#### `set_handler(filetype, handler)`
| Argument name | Description | Type |
|---------------- | --------------- | --------------- |
| `filetype` | The filetype on which to run the given handler | `string` |

17
lua/runner/config.lua Normal file
View File

@ -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;

View File

@ -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

View File

@ -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