Skip to content

Commit 16e5796

Browse files
author
cht
committed
use up and down to highlight
1 parent e889f78 commit 16e5796

3 files changed

Lines changed: 60 additions & 10 deletions

File tree

ftdetect/csv-tools.vim

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
12
au FileType csv command! -buffer CloseTopWindow lua require"csvtools".CloseWindow()
23
au FileType csv command! -buffer TopWindow lua require"csvtools".NewWindow()

lua/csvtools.lua

Lines changed: 38 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,28 @@ local M = {
44
winid = nil,
55
buf = nil,
66
mainwindowbuf = nil,
7+
before = 10,
8+
after = 10,
79
}
10+
local highlight = require("csvtools.topbarhighlight")
811
function M.NewWindow()
912
if M.winid == nil then
1013
M.mainwindowbuf = vim.api.nvim_get_current_buf()
11-
local file = vim.api.nvim_buf_get_name(0)
12-
local f = io.open(file, "r")
13-
14-
local messages = f:read()
14+
--local file = vim.api.nvim_buf_get_name(0)
15+
--local f = io.open(file, "r")
16+
local messages = unpack(api.nvim_buf_get_lines(M.mainwindowbuf,0,1,true))
1517
if messages == nil then
1618
return
1719
end
18-
f:close()
20+
--f:close()
1921
messages = messages:gsub("%,", "|")
2022
local buf = api.nvim_create_buf(false, true) -- create new emtpy buffer
2123
vim.cmd([[sview]])
2224
api.nvim_win_set_height(0, 1)
2325
local win = vim.api.nvim_get_current_win()
2426
api.nvim_buf_set_lines(buf, 0, -1, false, { messages })
2527
api.nvim_win_set_buf(win, buf)
26-
require("csvtools.topbarhighlight").hightlight(buf, messages)
28+
highlight.highlighttop(buf, messages)
2729
--api.nvim_buf_add_highlight(buf, -1, 'WhidHeader',0,0,1)
2830
--api.nvim_buf_add_highlight(buf, -1, 'WhidSubHeader', 0, 1, 2)
2931
M.winid = win
@@ -38,13 +40,43 @@ function M.CloseWindow()
3840
M.buf = nil
3941
end
4042
end
43+
local function getrange (line,length)
44+
local start = 1
45+
if line - M.before > 1 then
46+
start = line - M.before
47+
end
48+
local final = length
49+
if line + M.after < length then
50+
final = line + M.after
51+
end
52+
return start, final
53+
end
54+
function M.Highlight()
55+
if vim.o.filetype == "csv" then
56+
57+
M.mainwindowbuf = vim.api.nvim_get_current_buf()
58+
local line ,_ = unpack(vim.api.nvim_win_get_cursor(0))
59+
local length = vim.api.nvim_buf_line_count(M.mainwindowbuf)
60+
local start, final = getrange(line,length)
61+
--print(start)
62+
--print(final)
63+
for i = start, line, 1 do
64+
highlight.highlight(M.mainwindowbuf,i)
65+
end
66+
for i = line, final, 1 do
67+
highlight.highlight(M.mainwindowbuf,i)
68+
end
69+
end
70+
end
4171
function M.add_mappings()
4272
--print(M.mainwindowbuf)
4373
local opts = { nowait = true, noremap = true, silent = true }
4474
--vim.api.nvim_buf_set_keymap(M.mainwindowbuf, "n", "<leader>td", ":lua require'csvtools'.CloseWindow<cr>", opts)
4575
vim.api.nvim_buf_set_keymap(M.mainwindowbuf, "n", "<leader>tf", ":lua require'csvtools'.NewWindow()<cr>", opts)
4676
vim.api.nvim_buf_set_keymap(M.buf, "n", "<leader>td", ":lua require'csvtools'.CloseWindow()<cr>", opts)
4777
vim.api.nvim_buf_set_keymap(M.mainwindowbuf, "n", "<leader>td", ":lua require'csvtools'.CloseWindow()<cr>", opts)
78+
vim.api.nvim_buf_set_keymap(M.mainwindowbuf, "n", "<up>", ":lua require'csvtools'.Highlight()<cr>:-1<cr>", opts)
79+
vim.api.nvim_buf_set_keymap(M.mainwindowbuf, "n", "<down>", ":lua require'csvtools'.Highlight()<cr>:+1<cr>", opts)
4880
end
4981
function M.setup(opts)
5082
M = vim.tbl_deep_extend("force", M, opts)

lua/csvtools/topbarhighlight.lua

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,34 @@
11
local api = vim.api
22
local M = {}
3-
function M.hightlight(buf, line)
3+
function M.highlighttop(buf, line)
44
local cout = 1
55
for i = 1, #line do
66
if line:sub(i, i) ~= "|" then
77
if cout % 2 == 0 then
8-
cout = cout + 1
9-
print(line:sub(i, i))
8+
--print(line:sub(i, i))
109
api.nvim_buf_add_highlight(buf, -1, "WhidHeader", 0, i - 1, i)
1110
else
12-
cout = cout + 1
1311
api.nvim_buf_add_highlight(buf, -1, "WhidSubHeader", 0, i - 1, i)
1412
end
13+
else
14+
cout = cout + 1
15+
end
16+
end
17+
end
18+
function M.highlight(buf, number)
19+
local line = unpack(vim.api.nvim_buf_get_lines(buf,number-1,number,true))
20+
--print(line)
21+
local cout = 1
22+
for i = 1, #line do
23+
if line:sub(i, i) ~= "," then
24+
if cout % 2 == 0 then
25+
--print(line:sub(i, i))
26+
api.nvim_buf_add_highlight(buf, -1, "WhidHeader", number-1, i - 1, i)
27+
else
28+
api.nvim_buf_add_highlight(buf, -1, "WhidSubHeader", number-1, i - 1, i)
29+
end
30+
else
31+
cout = cout + 1
1532
end
1633
end
1734
end

0 commit comments

Comments
 (0)