mirror of
https://github.com/kristoferssolo/runner.nvim.git
synced 2025-10-21 19:50:34 +00:00
Allow running the code in the terminal
This commit is contained in:
commit
2c1929f02f
@ -24,6 +24,8 @@ M.shell_handler = function(command, editable)
|
|||||||
local output_window = utils.create_window()
|
local output_window = utils.create_window()
|
||||||
vim.api.nvim_win_set_buf(output_window, output_buffer)
|
vim.api.nvim_win_set_buf(output_window, output_buffer)
|
||||||
|
|
||||||
|
utils._last_command = command
|
||||||
|
|
||||||
vim.fn.termopen(command, {
|
vim.fn.termopen(command, {
|
||||||
cwd = vim.fn.getcwd(),
|
cwd = vim.fn.getcwd(),
|
||||||
})
|
})
|
||||||
@ -73,7 +75,7 @@ M.choice = function(handlers)
|
|||||||
end)
|
end)
|
||||||
actions.select_vertical:replace(function()
|
actions.select_vertical:replace(function()
|
||||||
local default_position = config.options.position
|
local default_position = config.options.position
|
||||||
config.options.position = 'top'
|
config.options.position = 'right'
|
||||||
|
|
||||||
actions.close(prompt_bufnr)
|
actions.close(prompt_bufnr)
|
||||||
local handler_name = action_state.get_selected_entry()[1]
|
local handler_name = action_state.get_selected_entry()[1]
|
||||||
|
|||||||
@ -2,25 +2,27 @@ local M = {}
|
|||||||
|
|
||||||
local config = require('runner.config')
|
local config = require('runner.config')
|
||||||
|
|
||||||
M._buffer = nil
|
M._terminal_buffer = nil
|
||||||
M._window = nil
|
M._terminal_window = nil
|
||||||
|
M._last_command = nil
|
||||||
|
|
||||||
M.create_buffer = function()
|
M.create_buffer = function()
|
||||||
if M._buffer then
|
if M._terminal_buffer then
|
||||||
vim.api.nvim_buf_delete(M._buffer, {})
|
vim.api.nvim_buf_delete(M._terminal_buffer, {})
|
||||||
end
|
end
|
||||||
|
|
||||||
local buffer = vim.api.nvim_create_buf(true, true)
|
local buffer = vim.api.nvim_create_buf(true, true)
|
||||||
vim.api.nvim_buf_set_option(buffer, 'modifiable', false)
|
vim.api.nvim_buf_set_option(buffer, 'modifiable', false)
|
||||||
|
|
||||||
M._buffer = buffer
|
M._terminal_buffer = buffer
|
||||||
return buffer
|
return buffer
|
||||||
end
|
end
|
||||||
|
|
||||||
M.create_window = function()
|
M.create_window = function()
|
||||||
if M._window and vim.api.nvim_win_is_valid(M._window) then
|
-- Don't know why vim.api.nvim_win_is_valid(M._terminal_window) is always false...
|
||||||
vim.api.nvim_set_current_win(M._window)
|
if M._terminal_window and vim.api.nvim_win_is_valid(M._terminal_window) then
|
||||||
return M._window
|
vim.api.nvim_set_current_win(M._terminal_window)
|
||||||
|
return M._terminal_window
|
||||||
end
|
end
|
||||||
|
|
||||||
if config.options.position == 'right' then
|
if config.options.position == 'right' then
|
||||||
@ -50,7 +52,7 @@ M.create_window = function()
|
|||||||
vim.api.nvim_win_set_option(window, key, value)
|
vim.api.nvim_win_set_option(window, key, value)
|
||||||
end
|
end
|
||||||
|
|
||||||
M._window = window
|
M._terminal_window = window
|
||||||
return window
|
return window
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -1,5 +1,7 @@
|
|||||||
local handlers = require('runner.handlers')
|
local handlers = require('runner.handlers')
|
||||||
|
local utils = require('runner.handlers.utils')
|
||||||
local config = require('runner.config')
|
local config = require('runner.config')
|
||||||
|
local helpers = require('runner.handlers.helpers')
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
@ -20,6 +22,12 @@ M.run = function(bufnr)
|
|||||||
else
|
else
|
||||||
buffer = bufnr
|
buffer = bufnr
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if buffer == utils._terminal_buffer then
|
||||||
|
helpers.shell_handler(utils._last_command, false)()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
local filetype = vim.filetype.match { buf = buffer }
|
local filetype = vim.filetype.match { buf = buffer }
|
||||||
|
|
||||||
local handler = M._handlers[filetype]
|
local handler = M._handlers[filetype]
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user