added functionality to easily replay last command

This commit is contained in:
venus
2026-06-02 01:36:34 -05:00
parent 07940444c9
commit bbed1e2083
2 changed files with 17 additions and 18 deletions

View File

@@ -2,22 +2,20 @@
-- A library file with custom functions for cleaner code elsewhere -- A library file with custom functions for cleaner code elsewhere
local C = {} local C = {}
function C.runLastCommand() function C.RunCommand(Command)
-- TODO fix implementation -- TODO IMplement an autocompiler function based on context
local term = require("toggleterm.terminal").get(1)-- Get terminal ID 1 local tt = require("toggleterm")
-- Save position and buffer context local command = string.lower(Command)
if term then if command == "l" or command == "last" then tt.exec("clear && fc -e -\r") end
local original_window = vim.api.nvim_get_current_win() if command == "c" or command == "compile" then tt.exec("clear && make\r") end
local saved_view = vim.fn.winsaveview() vim.defer_fn(function ()
-- Using \r (carriage return) or \n\n often bypasses shell interceptors vim.api.nvim_echo({
-- term:send("clear\r") { "▶ Terminal: ", "WarningMsg" },
term:send("test_dev.sh\r") { "Running previous terminal command... ", "Normal" },
vim.api.nvim_set_current_win(original_window) }, true, {})
vim.fn.winrestview(saved_view) end, 50)
else return ""
vim.notify("Terminal 1 is not open yet!", vim.log.levels.WARN)
end
-- Return logic
end end
return C return C

View File

@@ -10,6 +10,7 @@ vim.cmd('silent! tmapclear') -- Clears Terminal maps
-- Define your current keymaps below this line -- Define your current keymaps below this line
-- ========================================== -- ==========================================
vim.keymap.set('n', '<leader>w', ':w<CR>') vim.keymap.set('n', '<leader>w', ':w<CR>')
package.loaded["custom-functions"] = nil
local utils = require("custom-functions") local utils = require("custom-functions")
-- move betwwen buffer easier -- move betwwen buffer easier
@@ -25,13 +26,13 @@ vim.keymap.set('n','<M-Down>' ,"<cmd>lua require('resize').ResizeDown()<CR>")
vim.keymap.set('n','<Esc>' ,'<cmd>nohlsearch<CR>') vim.keymap.set('n','<Esc>' ,'<cmd>nohlsearch<CR>')
vim.keymap.set('t','<Esc><Esc>' ,'<C-\\><C-n>' ,{ desc = 'Exit terminal mode' }) vim.keymap.set('t','<Esc><Esc>' ,'<C-\\><C-n>' ,{ desc = 'Exit terminal mode' })
vim.keymap.set('n','<leader>r' ,'<cmd>TermExec cmd="clear && make"<CR>' ,{ desc = '[r]un make in terminal' }) vim.keymap.set('n','<leader>r' ,'<cmd>TermExec cmd="clear && make"<CR>' ,{ desc = '[r]un make in terminal' })
vim.keymap.set('n','<leader>l' ,function() utils.RunCommand("l") end ,{ desc = 'run [l]ast command in terminal' })
vim.keymap.set('n','<leader>n' ,'<cmd>ToggleTerm direction=vertical name=compile size=70<CR>', { desc = 'open a [n]ew terminal' }) vim.keymap.set('n','<leader>n' ,'<cmd>ToggleTerm direction=vertical name=compile size=70<CR>', { desc = 'open a [n]ew terminal' })
vim.keymap.set('n','<leader>t' ,'<cmd>ToggleTerm<CR>' ,{desc = '[T]oggle all terminals'}) vim.keymap.set('n','<leader>t' ,'<cmd>ToggleTerm<CR>' ,{desc = '[T]oggle all terminals'})
vim.keymap.set("n","<leader>e" ,"<cmd>NvimTreeToggle<CR>" ,{desc = 'open [E]xplorer'}) vim.keymap.set("n","<leader>e" ,"<cmd>NvimTreeToggle<CR>" ,{desc = 'open [E]xplorer'})
--
vim.keymap.set("n", "<leader>R" ,"<cmd>source %<Cr>:echo 'Config reloaded!'<CR>",{ desc = "[S]ource config file"})
-- Diagnostic keymaps -- Diagnostic keymaps
vim.keymap.set('n', '<leader>q' ,vim.diagnostic.setloclist ,{ desc = 'Open diagnostic [Q]uickfix list' }) vim.keymap.set('n', '<leader>q' ,vim.diagnostic.setloclist ,{ desc = 'Open diagnostic [Q]uickfix list' })
vim.keymap.set("n", "<leader>R" ,"<cmd>source %<Cr>:echo 'Config reloaded!'<CR>" ,{ desc = "[S]ource config file"})
-- Disable arrow keys in normal mode -- Disable arrow keys in normal mode
vim.keymap.set('n','<left>' ,'<cmd>echo "Use h to move!!"<CR>') vim.keymap.set('n','<left>' ,'<cmd>echo "Use h to move!!"<CR>')