adding floating terminal

This commit is contained in:
ruben.galvan 2025-02-18 19:42:21 -06:00
parent 3e6536b564
commit 16615d8fa9
2 changed files with 78 additions and 1 deletions

View File

@ -220,6 +220,23 @@ vim.api.nvim_create_autocmd('TextYankPost', {
end, end,
}) })
vim.api.nvim_create_autocmd('TermOpen', {
group = vim.api.nvim_create_augroup('custom-term-open', { clear = true }),
callback = function()
vim.opt.number = false
vim.opt.relativenumber = false
vim.cmd.setlocal 'nospell'
end,
})
vim.keymap.set('n', '<leader>st', function()
vim.cmd.vnew()
vim.cmd.term()
vim.cmd.wincmd 'J'
vim.cmd.setlocal 'nospell'
vim.api.nvim_win_set_height(0, 5)
end, { desc = 'Move focus to the upper window' })
-- [[ Install `lazy.nvim` plugin manager ]] -- [[ Install `lazy.nvim` plugin manager ]]
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info -- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
@ -403,7 +420,9 @@ require('lazy').setup({
require('telescope').setup { require('telescope').setup {
-- You can put your default mappings / updates / etc. in here -- You can put your default mappings / updates / etc. in here
-- All the info you're looking for is in `:help telescope.setup()` -- All the info you're looking for is in `:help telescope.setup()`
-- defaults = {
file_ignore_patterns = { '.git', 'node_modules/.*', 'out/' },
},
-- defaults = { -- defaults = {
-- mappings = { -- mappings = {
-- i = { ['<c-enter>'] = 'to_fuzzy_refine' }, -- i = { ['<c-enter>'] = 'to_fuzzy_refine' },

58
plugin/floaterminal.lua Normal file
View File

@ -0,0 +1,58 @@
vim.keymap.set('t', '<esc><esc>', '<c-\\><c-n>')
local state = {
floating = {
buf = -1,
win = -1,
},
}
local function create_floating_window(opts)
opts = opts or {}
local width = opts.width or math.floor(vim.o.columns * 0.8)
local height = opts.height or math.floor(vim.o.lines * 0.8)
-- Calculate the position to center the window
local col = math.floor((vim.o.columns - width) / 2)
local row = math.floor((vim.o.lines - height) / 2)
-- Create a buffer
local buf = nil
if vim.api.nvim_buf_is_valid(opts.buf) then
buf = opts.buf
else
buf = vim.api.nvim_create_buf(false, true) -- No file, scratch buffer
end
-- Define window configuration
local win_config = {
relative = 'editor',
width = width,
height = height,
col = col,
row = row,
style = 'minimal', -- No borders or extra UI elements
border = 'rounded',
}
-- Create the floating window
local win = vim.api.nvim_open_win(buf, true, win_config)
return { buf = buf, win = win }
end
local toggle_terminal = function()
if not vim.api.nvim_win_is_valid(state.floating.win) then
state.floating = create_floating_window { buf = state.floating.buf }
if vim.bo[state.floating.buf].buftype ~= 'terminal' then
vim.cmd.terminal()
end
else
vim.api.nvim_win_hide(state.floating.win)
end
end
-- Example usage:
-- Create a floating window with default dimensions
vim.api.nvim_create_user_command('Floaterminal', toggle_terminal, {})
vim.keymap.set({ 'n', 't' }, '<leader>tt', toggle_terminal, { desc = 'Open Floating Terminal' })