Add ability to set shell_handler position using telescope

This commit is contained in:
MarcHamamji 2023-04-07 23:01:37 +03:00
parent 2fed3ebc5a
commit 46545bbdb6
2 changed files with 29 additions and 2 deletions

View File

@ -66,7 +66,9 @@ A customizable Neovim plugin to run code inside the editor
Runner comes with the following defaults:
```lua
require('runner').setup({
position = 'right', -- position of the terminal window when using the shell_handler - can be: top, left, right, bottom
position = 'right', -- position of the terminal window when using the shell_handler
-- can be: top, left, right, bottom
-- will be overwritten when using the telescope mapping to open horizontally or vertically
width = 80, -- width of window when position is left or right
height = 10, -- height of window when position is top or bottom
})
@ -104,7 +106,11 @@ A customizable Neovim plugin to run code inside the editor
- #### `shell_handler(command, editable)`
Runs a command in a shell by opening it in a new split window, with a terminal buffer.
The split window's position will be determined by the `position` value from the config. It will be overwritten when using the telescope mapping to open horizontally or vertically.
| Argument name | Description | Type |
|---------------- | --------------- | --------------- |
| `command` | The shell command to run when the handler is called | `string` |

View File

@ -5,6 +5,7 @@ local action_state = require('telescope.actions.state')
local sorters = require('telescope.sorters')
local themes = require('telescope.themes')
local config = require('runner.config')
local utils = require('runner.handlers.utils')
local M = {}
@ -60,6 +61,26 @@ M.choice = function(handlers)
local handler_name = action_state.get_selected_entry()[1]
handlers[handler_name](buffer)
end)
actions.select_horizontal:replace(function()
local default_position = config.options.position
config.options.position = 'bottom';
actions.close(prompt_bufnr)
local handler_name = action_state.get_selected_entry()[1]
handlers[handler_name](buffer)
config.options.position = default_position;
end)
actions.select_vertical:replace(function()
local default_position = config.options.position
config.options.position = 'top';
actions.close(prompt_bufnr)
local handler_name = action_state.get_selected_entry()[1]
handlers[handler_name](buffer)
config.options.position = default_position;
end)
return true
end,
}