feat/pack (#1)
Reviewed-on: #1 Co-authored-by: Tomas Mirchev <contact@tomastm.com> Co-committed-by: Tomas Mirchev <contact@tomastm.com>
This commit was merged in pull request #1.
This commit is contained in:
67
lua/modules/terminal.lua
Normal file
67
lua/modules/terminal.lua
Normal file
@@ -0,0 +1,67 @@
|
||||
local api = vim.api
|
||||
local au = api.nvim_create_autocmd
|
||||
local group = api.nvim_create_augroup('triimd.term', { clear = true })
|
||||
|
||||
-- Custom terminal
|
||||
au('TermOpen', {
|
||||
group = group,
|
||||
callback = function()
|
||||
vim.opt_local.number = false
|
||||
vim.opt_local.relativenumber = false
|
||||
vim.opt_local.scrolloff = 0
|
||||
vim.bo.filetype = 'terminal'
|
||||
vim.cmd.startinsert()
|
||||
end,
|
||||
})
|
||||
|
||||
-- Insert when re-entering a terminal window (after switching back)
|
||||
au('BufEnter', {
|
||||
group = group,
|
||||
pattern = 'term://*',
|
||||
callback = function()
|
||||
if vim.bo.buftype == 'terminal' and vim.fn.mode() ~= 'i' then
|
||||
vim.cmd.startinsert()
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Close all terminal buffers before quitting
|
||||
au('QuitPre', {
|
||||
group = group,
|
||||
callback = function()
|
||||
for _, buf in ipairs(vim.api.nvim_list_bufs()) do
|
||||
if vim.api.nvim_buf_is_loaded(buf) and vim.bo[buf].buftype == 'terminal' then
|
||||
vim.api.nvim_buf_delete(buf, { force = true })
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local commands = {
|
||||
TermDefault = function()
|
||||
vim.cmd('terminal')
|
||||
end,
|
||||
|
||||
TermRelative = function()
|
||||
local shell = vim.o.shell or 'zsh'
|
||||
local dir = vim.fn.expand('%:p:h')
|
||||
vim.cmd(string.format('edit term://%s//%s', dir, shell))
|
||||
end,
|
||||
|
||||
TermSplit = function()
|
||||
vim.cmd('new')
|
||||
vim.cmd('wincmd J')
|
||||
vim.api.nvim_win_set_height(0, 12)
|
||||
vim.wo.winfixheight = true
|
||||
vim.cmd('term')
|
||||
end,
|
||||
|
||||
TermVSplit = function()
|
||||
vim.cmd('vsplit')
|
||||
vim.cmd('term')
|
||||
end,
|
||||
}
|
||||
|
||||
for name, fn in pairs(commands) do
|
||||
vim.api.nvim_create_user_command(name, fn, {})
|
||||
end
|
||||
Reference in New Issue
Block a user