diff --git a/init.lua b/init.lua index d93fe6e4..6aff2ecf 100644 --- a/init.lua +++ b/init.lua @@ -220,6 +220,23 @@ vim.api.nvim_create_autocmd('TextYankPost', { 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', '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 ]] -- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' @@ -403,7 +420,9 @@ require('lazy').setup({ require('telescope').setup { -- You can put your default mappings / updates / etc. in here -- All the info you're looking for is in `:help telescope.setup()` - -- + defaults = { + file_ignore_patterns = { '.git', 'node_modules/.*', 'out/' }, + }, -- defaults = { -- mappings = { -- i = { [''] = 'to_fuzzy_refine' }, diff --git a/plugin/floaterminal.lua b/plugin/floaterminal.lua new file mode 100644 index 00000000..632bee52 --- /dev/null +++ b/plugin/floaterminal.lua @@ -0,0 +1,58 @@ +vim.keymap.set('t', '', '') + +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' }, 'tt', toggle_terminal, { desc = 'Open Floating Terminal' })