mirror of
https://github.com/zoriya/virtcolumn.nvim.git
synced 2026-05-28 15:13:07 +00:00
Version 1.5.0
* Fix table concat bug * Add `setup_buffer`
This commit is contained in:
+11
-2
@@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
Author: Lukas Reineke <lukas.reineke@protonmail.com>
|
||||
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|
|
||||
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
Reference in New Issue
Block a user