diff options
author | Dennis Eriksen <d@ennis.no> | 2024-07-05 14:29:56 +0200 |
---|---|---|
committer | Dennis Eriksen <d@ennis.no> | 2024-07-05 14:30:02 +0200 |
commit | 8e5ebac114003b06fa6d221d9ed3d79e002b404f (patch) | |
tree | 799ff2f7b4040265c79b80b41b34b4a0821619fa | |
parent | Upgrade lazyvim to latest (diff) | |
download | idgatt-8e5ebac114003b06fa6d221d9ed3d79e002b404f.tar.gz |
Hide signcolumn if there are no signs to show
-rw-r--r-- | config/.config/nvim/lua/config/options.lua | 14 | ||||
-rw-r--r-- | config/.config/nvim/lua/plugins/_ui.lua | 3 | ||||
-rw-r--r-- | config/.config/nvim/lua/utils/init.lua | 29 |
3 files changed, 43 insertions, 3 deletions
diff --git a/config/.config/nvim/lua/config/options.lua b/config/.config/nvim/lua/config/options.lua index 4080d92..4eaa25a 100644 --- a/config/.config/nvim/lua/config/options.lua +++ b/config/.config/nvim/lua/config/options.lua @@ -229,6 +229,20 @@ vim.g.loaded_python3_provider = 0 -- Turn off autoformatting in LazyVim vim.g.autoformat = false +-- Show deprecation warnings +vim.g.deprecation_warnings = true + +-- Statuscolumn +vim.opt.statuscolumn = [[%!v:lua.require'utils'.statuscolumn()]] + +-- Signcolumn +vim.opt.signcolumn = "auto" +-- utils.statuscolumn() uses vim.g.signcolumn to determine if we should show +-- signcolumn, and it will reset vim.opt.signcolumn. This is because +-- utils.statuscolumn() calls lazyvim.util.ui.statuscolumn(), which uses +-- vim.opt.signcolumn. +vim.g.signcolumn = "auto" + --------------------------------------------------------------------------------- -- -- Moving around, tabs, windows, and buffers diff --git a/config/.config/nvim/lua/plugins/_ui.lua b/config/.config/nvim/lua/plugins/_ui.lua index 2e4326d..924e4d8 100644 --- a/config/.config/nvim/lua/plugins/_ui.lua +++ b/config/.config/nvim/lua/plugins/_ui.lua @@ -24,9 +24,6 @@ return { -- "akinsho/bufferline.nvim", --}, - -- TODO: Add plugin for statuscolumn - -- I want a thinner statuscolumn when there are no gitsigns or debug-stuff shown. - { -- https://github.com/nvim-lualine/lualine.nvim "nvim-lualine/lualine.nvim", opts = { diff --git a/config/.config/nvim/lua/utils/init.lua b/config/.config/nvim/lua/utils/init.lua index 6aa0a91..2ea5316 100644 --- a/config/.config/nvim/lua/utils/init.lua +++ b/config/.config/nvim/lua/utils/init.lua @@ -15,4 +15,33 @@ M.lazy = { end, } +function M.statuscolumn() + -- lazyvim.util.ui.statuscolumn uses vim.wo[win].signcolumn to determine if it should show signcolumn + -- + + local win = vim.g.statusline_winid + local buf = vim.api.nvim_win_get_buf(win) + local next = next -- https://stackoverflow.com/a/1252776 + local signcolumn = vim.g.signcolumn + + -- If there are no signs to show, nvim_buf_get_extmarks() will return {} + -- also, <nvim-0.10 might not show *all* signs, so always show signcolumn if <nvim-0.10 + local extmarks = vim.fn.has("nvim-0.10") and vim.api.nvim_buf_get_extmarks( + buf, -- bufnr + -1, -- namespace id + 0, -- start(line) + -1, -- end(line) + { details = true, type = "sign" } -- options + ) or {true} + + -- if signcolumn == yes or signcolumn = auto, and extmarks is *not* empty + if signcolumn == "yes" or (signcolumn == "auto" and next(extmarks) ~= nil) then + vim.wo[win].signcolumn = "yes" + else + vim.wo[win].signcolumn = "no" + end + + return require('lazyvim.util').ui.statuscolumn() +end + return M |