From 2296cb4ef6146142ce86e760440788211b2b46e8 Mon Sep 17 00:00:00 2001 From: Lukas Reineke Date: Thu, 6 Jan 2022 00:03:49 +0900 Subject: [PATCH] Version 1.5.0 * Fix table concat bug * Add `setup_buffer` --- doc/virt-column.txt | 13 +++++++++++-- lua/virt-column/init.lua | 12 ++++++++++-- lua/virt-column/utils.lua | 10 ++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 lua/virt-column/utils.lua diff --git a/doc/virt-column.txt b/doc/virt-column.txt index de18329..b66b350 100644 --- a/doc/virt-column.txt +++ b/doc/virt-column.txt @@ -2,7 +2,7 @@ Author: Lukas Reineke -Version: 1.4.0 +Version: 1.5.0 ============================================================================== CONTENTS *virt-column.nvim* @@ -17,9 +17,14 @@ CONTENTS *virt-column.nvim* ============================================================================== 1. SETUP *virt-column-setup* - Call the setup function + Call the `setup` function > require("virt-column").setup() +< + Or call the `setup_buffer` function to set buffer specific settings + > + require("virt-column").setup_buffer() +< ============================================================================== 2. HIGHLIGHTS *virt-column-highlights* @@ -83,6 +88,10 @@ virtcolumn *virt-column-virtcolumn* ============================================================================== 4. CHANGELOG *virt-column-changelog* +1.5.0 + * Fix table concat bug + * Add `setup_buffer` + 1.4.0 * Add |virt-column-virtcolumn| diff --git a/lua/virt-column/init.lua b/lua/virt-column/init.lua index ded6560..a793e49 100644 --- a/lua/virt-column/init.lua +++ b/lua/virt-column/init.lua @@ -1,3 +1,4 @@ +local utils = require "virt-column.utils" local ffi = require "ffi" ffi.cdef "int curwin_col_off(void);" @@ -7,6 +8,7 @@ local M = { char = "┃", virtcolumn = "", }, + buffer_config = {}, } M.clear_buf = function(bufnr) @@ -33,6 +35,11 @@ M.setup = function(config) ]] end +M.setup_buffer = function(config) + M.buffer_config[vim.api.nvim_get_current_buf()] = config + M.refresh() +end + M.refresh = function() local bufnr = vim.api.nvim_get_current_buf() @@ -40,11 +47,12 @@ M.refresh = function() return end + local config = vim.tbl_deep_extend("force", M.config, M.buffer_config[bufnr] or {}) local winnr = vim.api.nvim_get_current_win() local lines = vim.api.nvim_buf_get_lines(bufnr, 0, -1, false) local width = vim.api.nvim_win_get_width(winnr) - ffi.C.curwin_col_off() local textwidth = vim.opt.textwidth:get() - local colorcolumn = { unpack(vim.opt.colorcolumn:get()), unpack(vim.split(M.config.virtcolumn, ",")) } + local colorcolumn = utils.concat_table(vim.opt.colorcolumn:get(), vim.split(config.virtcolumn, ",")) for i, c in ipairs(colorcolumn) do if vim.startswith(c, "+") then @@ -67,7 +75,7 @@ M.refresh = function() local line = lines[i]:gsub("\t", string.rep(" ", vim.opt.tabstop:get())) if width > column and vim.api.nvim_strwidth(line) < column then vim.api.nvim_buf_set_extmark(bufnr, M.namespace, i - 1, 0, { - virt_text = { { M.config.char, "VirtColumn" } }, + virt_text = { { config.char, "VirtColumn" } }, virt_text_pos = "overlay", hl_mode = "combine", virt_text_win_col = column - 1, diff --git a/lua/virt-column/utils.lua b/lua/virt-column/utils.lua new file mode 100644 index 0000000..257cfae --- /dev/null +++ b/lua/virt-column/utils.lua @@ -0,0 +1,10 @@ +local M = {} + +function M.concat_table(t1, t2) + for _, v in ipairs(t2) do + t1[#t1 + 1] = v + end + return t1 +end + +return M