diff --git a/lua/mappings.lua b/lua/mappings.lua index 17e8d9e..01ae785 100644 --- a/lua/mappings.lua +++ b/lua/mappings.lua @@ -41,7 +41,6 @@ map("n", miscMap.copywhole_file, ":%y+", opt) -- toggle numbers map("n", miscMap.toggle_linenr, ":set nu!", opt) - -- terminals local function terms() local m = user_map.terms @@ -50,7 +49,7 @@ local function terms() map("t", m.esc_termmode, "", opt) -- hide a term from within terminal mode map("t", m.esc_hide_termmode, " :lua require('utils').close_buffer() ", opt) - -- pick a hidden term + -- pick a hidden term map("n", m.pick_term, ":Telescope terms ", opt) -- Open terminals diff --git a/lua/options.lua b/lua/options.lua index 225bf58..c64589b 100644 --- a/lua/options.lua +++ b/lua/options.lua @@ -27,7 +27,7 @@ opt.fillchars = { eob = " " } -- Numbers opt.number = options.number opt.numberwidth = options.numberwidth -opt.relativenumber = options.relativenumber +opt.relativenumber = options.relativenumber -- Indenline opt.expandtab = options.expandtab diff --git a/lua/plugins/bufferline.lua b/lua/plugins/bufferline.lua index d55b70c..cd7e8b4 100644 --- a/lua/plugins/bufferline.lua +++ b/lua/plugins/bufferline.lua @@ -5,7 +5,7 @@ local present, bufferline = pcall(require, "bufferline") if not present then return end - + bufferline.setup { options = { offsets = { { filetype = "NvimTree", text = "", padding = 1 } }, @@ -25,23 +25,23 @@ bufferline.setup { mappings = true, always_show_bufferline = true, custom_filter = function(buf_number) - -- Func to filter out our managed/persistent split terms - local present_type, type = pcall(function() - return vim.api.nvim_buf_get_var(buf_number, "term_type") - end) - - if present_type then - if type == "vert" then + -- Func to filter out our managed/persistent split terms + local present_type, type = pcall(function() + return vim.api.nvim_buf_get_var(buf_number, "term_type") + end) + + if present_type then + if type == "vert" then return false elseif type == "hori" then return false else - return true + return true end - else - return true - end - end, + else + return true + end + end, }, highlights = { fill = { diff --git a/lua/telescope/_extensions/terms.lua b/lua/telescope/_extensions/terms.lua index 7913666..2acd08a 100644 --- a/lua/telescope/_extensions/terms.lua +++ b/lua/telescope/_extensions/terms.lua @@ -10,7 +10,7 @@ M.term_picker = function(opts) pickers = require "telescope.pickers" finders = require "telescope.finders" previewers = require "telescope.previewers" - + make_entry = require "telescope.make_entry" actions = require "telescope.actions" action_state = require "telescope.actions.state" @@ -19,26 +19,25 @@ M.term_picker = function(opts) else error "Cannot find telescope!" end - + local filter = vim.tbl_filter - + local local_utils = require "utils" -- buffer number and name local bufnr = vim.api.nvim_get_current_buf() local bufname = vim.api.nvim_buf_get_name(bufnr) - + local bufnrs = filter(function(b) local present_type, type = pcall(function() return vim.api.nvim_buf_get_var(b, "term_type") end) - + if not present_type then -- let's only terms that we created return false end - - + -- if 1 ~= vim.fn.buflisted(b) then -- return false -- end @@ -59,22 +58,22 @@ M.term_picker = function(opts) return vim.fn.getbufinfo(a)[1].lastused > vim.fn.getbufinfo(b)[1].lastused end) end - + local buffers = {} local default_selection_idx = 1 for _, bufnr in ipairs(bufnrs) do local flag = bufnr == vim.fn.bufnr "" and "%" or (bufnr == vim.fn.bufnr "#" and "#" or " ") - + if opts.sort_lastused and not opts.ignore_current_buffer and flag == "#" then default_selection_idx = 2 end - + local element = { bufnr = bufnr, flag = flag, info = vim.fn.getbufinfo(bufnr)[1], } - + if opts.sort_lastused and (flag == "#" or flag == "%") then local idx = ((buffers[1] ~= nil and buffers[1].flag == "%") and 2 or 1) table.insert(buffers, idx, element) @@ -82,12 +81,12 @@ M.term_picker = function(opts) table.insert(buffers, element) end end - + if not opts.bufnr_width then local max_bufnr = math.max(unpack(bufnrs)) opts.bufnr_width = #tostring(max_bufnr) end - + pickers.new(opts, { prompt_title = "Terminal buffers", finder = finders.new_table { @@ -103,24 +102,24 @@ M.term_picker = function(opts) actions.close(prompt_bufnr) local buf = entry.bufnr - + local chad_term, type = pcall(function() - return vim.api.nvim_buf_get_var(buf, "term_type") - end) - + return vim.api.nvim_buf_get_var(buf, "term_type") + end) + -- TODO buffer checks/error detection (make sure we do get a buf) if chad_term then if type == "wind" then -- swtich to term buff & show in bufferline - vim.cmd(string.format('b %d | setlocal bl', buf)) + vim.cmd(string.format("b %d | setlocal bl", buf)) -- vim.cmd('startinsert') TODO fix this elseif type == "vert" then - vim.cmd(string.format('vsp #%d', buf)) + vim.cmd(string.format("vsp #%d", buf)) -- vim.cmd('startinsert') TODO fix this elseif type == "hori" then -- TODO change 15 to a chad config var number - vim.cmd(string.format('15 sp #%d ', buf)) + vim.cmd(string.format("15 sp #%d ", buf)) -- vim.cmd('startinsert') TODO fix this end end diff --git a/lua/utils.lua b/lua/utils.lua index 367dd3e..afde106 100644 --- a/lua/utils.lua +++ b/lua/utils.lua @@ -36,39 +36,39 @@ end M.close_buffer = function(bufexpr, force) -- This is a modification of a NeoVim plugin from - -- Author: ojroques - Olivier Roques + -- Author: ojroques - Olivier Roques -- Src: https://github.com/ojroques/nvim-bufdel -- (Author has okayed copy-paste) -- Options local opts = { - next = 'cycle', -- how to retrieve the next buffer - quit = false, -- exit when last buffer is deleted + next = "cycle", -- how to retrieve the next buffer + quit = false, -- exit when last buffer is deleted --TODO make this a chadrc flag/option } -- ---------------- -- Helper functions -- ---------------- - + -- Switch to buffer 'buf' on each window from list 'windows' local function switch_buffer(windows, buf) local cur_win = vim.fn.winnr() for _, winid in ipairs(windows) do - vim.cmd(string.format('%d wincmd w', vim.fn.win_id2win(winid))) - vim.cmd(string.format('buffer %d', buf)) + vim.cmd(string.format("%d wincmd w", vim.fn.win_id2win(winid))) + vim.cmd(string.format("buffer %d", buf)) end - vim.cmd(string.format('%d wincmd w', cur_win)) -- return to original window + vim.cmd(string.format("%d wincmd w", cur_win)) -- return to original window end - + -- Select the first buffer with a number greater than given buffer local function get_next_buf(buf) - local next = vim.fn.bufnr('#') - if opts.next == 'alternate' and vim.fn.buflisted(next) == 1 then + local next = vim.fn.bufnr "#" + if opts.next == "alternate" and vim.fn.buflisted(next) == 1 then return next end - for i = 0, vim.fn.bufnr('$') - 1 do - next = (buf + i) % vim.fn.bufnr('$') + 1 -- will loop back to 1 + for i = 0, vim.fn.bufnr "$" - 1 do + next = (buf + i) % vim.fn.bufnr "$" + 1 -- will loop back to 1 if vim.fn.buflisted(next) == 1 then return next end @@ -78,68 +78,68 @@ M.close_buffer = function(bufexpr, force) -- ---------------- -- End helper functions -- ---------------- - + local buf = vim.fn.bufnr() - if vim.fn.buflisted(buf) == 0 then -- exit if buffer number is invalid + if vim.fn.buflisted(buf) == 0 then -- exit if buffer number is invalid return end - - if #vim.fn.getbufinfo({buflisted = 1}) < 2 then + + if #vim.fn.getbufinfo { buflisted = 1 } < 2 then if opts.quit then -- exit when there is only one buffer left if force then - vim.cmd('qall!') + vim.cmd "qall!" else - vim.cmd('confirm qall') + vim.cmd "confirm qall" end return end - + local chad_term, type = pcall(function() return vim.api.nvim_buf_get_var(buf, "term_type") - end) - + end) + if chad_term then -- Must be a window type - vim.cmd(string.format('setlocal nobl', buf)) - vim.cmd('enew') + vim.cmd(string.format("setlocal nobl", buf)) + vim.cmd "enew" return end -- don't exit and create a new empty buffer - vim.cmd('enew') - vim.cmd('bp') + vim.cmd "enew" + vim.cmd "bp" end - + local next_buf = get_next_buf(buf) local windows = vim.fn.getbufinfo(buf)[1].windows - + -- force deletion of terminal buffers to avoid the prompt - if force or vim.fn.getbufvar(buf, '&buftype') == 'terminal' then + if force or vim.fn.getbufvar(buf, "&buftype") == "terminal" then local chad_term, type = pcall(function() return vim.api.nvim_buf_get_var(buf, "term_type") - end) - + end) + -- TODO this scope is error prone, make resilient if chad_term then if type == "wind" then -- hide from bufferline - vim.cmd(string.format('%d bufdo setlocal nobl', buf)) + vim.cmd(string.format("%d bufdo setlocal nobl", buf)) -- swtich to another buff -- TODO switch to next bufffer, this works too - vim.cmd('BufferLineCycleNext') + vim.cmd "BufferLineCycleNext" else local cur_win = vim.fn.winnr() -- we can close this window - vim.cmd(string.format('%d wincmd c', cur_win)) + vim.cmd(string.format("%d wincmd c", cur_win)) return end else switch_buffer(windows, next_buf) - vim.cmd(string.format('bd! %d', buf)) + vim.cmd(string.format("bd! %d", buf)) end else switch_buffer(windows, next_buf) - vim.cmd(string.format('silent! confirm bd %d', buf)) + vim.cmd(string.format("silent! confirm bd %d", buf)) end -- revert buffer switches if user has canceled deletion if vim.fn.buflisted(buf) == 1 then