| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- return {
- {
- dir = vim.fn.stdpath("config") .. "/custom/like-a-butterfly",
- name = "like-a-butterfly",
- enabled = true,
- lazy = false,
- config = function()
- local lab = require('like-a-butterfly')
- local augroup = vim.api.nvim_create_augroup(
- 'like-a-butterfly', { clear = true })
- -- Configure eight homerow terminals
- -- Some TUIs are "flaky" (*cough* lazygit *cough*), and don't redraw
- -- properly after being hidden. We try to fix this by aggressively
- -- resizing and redrawing flaky programs' windows.
- function MakeTerm(shortcut, name, command, flaky)
- lab.create_term(name, command)
- vim.keymap.set("n", shortcut, function()
- if flaky then
- local flaky_redraw_time = 10
- vim.api.nvim_create_autocmd({ "BufEnter" },
- {
- pattern = { "*" },
- group = augroup,
- once = true,
- callback = function()
- if (vim.bo.filetype ~= "butterfly") then
- return
- end
- local window = vim.api
- .nvim_get_current_win()
- vim.cmd(
- "setlocal sidescrolloff=" ..
- vim.o
- .columns)
- vim.defer_fn(function()
- vim.api.nvim_win_set_height(
- window,
- vim.api
- .nvim_win_get_height(
- window) -
- 1)
- vim.defer_fn(function()
- vim.api
- .nvim_win_set_height(
- window,
- vim.api
- .nvim_win_get_height(
- window) + 1)
- vim.api.nvim_feedkeys(
- vim.api
- .nvim_replace_termcodes(
- '<C-\\><C-n>^zei',
- true, true, true),
- 'i', true)
- vim.schedule(function()
- vim.cmd("redraw!")
- end)
- end, flaky_redraw_time)
- end, flaky_redraw_time)
- vim.cmd("redraw!")
- end
- })
- end
- lab.open_term(name)
- end)
- end
- vim.api.nvim_create_autocmd({ "BufEnter" },
- {
- pattern = { "*" },
- group = augroup,
- callback = function()
- vim
- .schedule(function()
- if (vim.bo.filetype ~= "butterfly") then
- lab.close_all()
- end
- end)
- end
- })
- MakeTerm("stt", "Alpha", "zsh")
- MakeTerm("sts", "Beta", "zsh")
- MakeTerm("str", "Gamma", "zsh")
- MakeTerm("sta", "Delta", "zsh")
- MakeTerm("stn", "Epsilon", "aider --no-show-model-warnings")
- MakeTerm("ste", "Zeta", "/bin/zsh $DOTFILES_DIR/.scripts/omniscratch.zsh")
- MakeTerm("sti", "Eta", "lazydocker", true)
- MakeTerm("sto", "Theta", "lazygit", true)
- -- Keymaps
- vim.keymap.set("t", "<Esc><Esc>", lab.close_all)
- vim.keymap.set("t", "<Esc><Space>", "<Esc>")
- vim.keymap.set("t", "<C-S-t>", "<C-\\><C-n>")
- vim.keymap.set("t", "<S-Space>", "<Esc>")
- end
- }
- }
|