Allow running the code in the terminal (#1)

This commit is contained in:
MarcHamamji 2023-04-08 13:33:16 +03:00
parent 2afbe5f361
commit 9256c1659d
3 changed files with 20 additions and 9 deletions

View File

@ -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(),
}) })

View File

@ -2,25 +2,26 @@ 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 if M._terminal_window and vim.api.nvim_win_is_valid(M._terminal_window) then
vim.api.nvim_set_current_win(M._window) vim.api.nvim_set_current_win(M._terminal_window)
return M._window return M._terminal_window
end end
if config.options.position == 'right' then if config.options.position == 'right' then
@ -50,7 +51,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

View File

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