adding floating terminal
This commit is contained in:
		
							parent
							
								
									3e6536b564
								
							
						
					
					
						commit
						16615d8fa9
					
				
							
								
								
									
										21
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										21
									
								
								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', '<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 ]] | ||||
| --    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 = { ['<c-enter>'] = 'to_fuzzy_refine' }, | ||||
|  |  | |||
|  | @ -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' }) | ||||
		Loading…
	
		Reference in New Issue