require("toggleterm").setup { autochdir = true, shade_terminals = true, shading_factor = -100, start_in_insert = true, insert_mappings = true, terminal_mappings = true, persist_size = true, persist_mode = false, direction = 'float', close_on_exit = true, auto_scroll = true, float_opts = { border = 'single', title_pos = 'left' }, winbar = { enabled = true, }, } -- from documentation: -- --[[ require("toggleterm").setup{ -- size can be a number or function which is passed the current terminal size = 20 | function(term) if term.direction == "horizontal" then return 15 elseif term.direction == "vertical" then return vim.o.columns * 0.4 end end, on_create = fun(t: Terminal), -- function to run when the terminal is first created on_open = fun(t: Terminal), -- function to run when the terminal opens on_close = fun(t: Terminal), -- function to run when the terminal closes on_stdout = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stdout on_stderr = fun(t: Terminal, job: number, data: string[], name: string) -- callback for processing output on stderr on_exit = fun(t: Terminal, job: number, exit_code: number, name: string) -- function to run when terminal process exits hide_numbers = true, -- hide the number column in toggleterm buffers shade_filetypes = {}, autochdir = false, -- when neovim changes it current directory the terminal will change it's own when next it's opened highlights = { -- highlights which map to a highlight group name and a table of it's values -- NOTE: this is only a subset of values, any group placed here will be set for the terminal window split Normal = { guibg = "", }, NormalFloat = { link = 'Normal' }, FloatBorder = { guifg = "", guibg = "", }, }, shade_terminals = true, -- NOTE: this option takes priority over highlights specified so if you specify Normal highlights you should set this to false shading_factor = '', -- the percentage by which to lighten terminal background, default: -30 (gets multiplied by -3 if background is light) start_in_insert = true, insert_mappings = true, -- whether or not the open mapping applies in insert mode terminal_mappings = true, -- whether or not the open mapping applies in the opened terminals persist_size = true, persist_mode = true, -- if set to true (default) the previous terminal mode will be remembered direction = 'vertical' | 'horizontal' | 'tab' | 'float', close_on_exit = true, -- close the terminal window when the process exits -- Change the default shell. Can be a string or a function returning a string shell = vim.o.shell, auto_scroll = true, -- automatically scroll to the bottom on terminal output -- This field is only relevant if direction is set to 'float' float_opts = { -- The border key is *almost* the same as 'nvim_open_win' -- see :h nvim_open_win for details on borders however -- the 'curved' border is a custom border type -- not natively supported but implemented in this plugin. border = 'single' | 'double' | 'shadow' | 'curved' | ... other options supported by win open -- like `size`, width, height, row, and col can be a number or function which is passed the current terminal width = , height = , row = , col = , winblend = 3, zindex = , title_pos = 'left' | 'center' | 'right', position of the title of the floating window }, winbar = { enabled = false, name_formatter = function(term) -- term: Terminal return term.name end }, } ]]--