summaryrefslogtreecommitdiff
path: root/ar/.config/TheSiahxyz/lua/thesiahxyz/plugins/csv.lua
blob: 0805d1df790a5546579839547162194875371386 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
return {
	{
		"cameron-wags/rainbow_csv.nvim",
		config = function()
			require("rainbow_csv").setup()
			-- vim.g.rcsv_colorpairs = {
			-- 	{ "red", "red" },
			-- 	{ "blue", "blue" },
			-- 	{ "green", "green" },
			-- 	{ "magenta", "magenta" },
			-- 	{ "NONE", "NONE" },
			-- 	{ "darkred", "darkred" },
			-- 	{ "darkblue", "darkblue" },
			-- 	{ "darkgreen", "darkgreen" },
			-- 	{ "darkmagenta", "darkmagenta" },
			-- 	{ "darkcyan", "darkcyan" },
			-- }
		end,
		ft = {
			"csv",
			"tsv",
			"csv_semicolon",
			"csv_whitespace",
			"csv_pipe",
			"rfc_csv",
			"rfc_semicolon",
		},
		cmd = {
			"RainbowDelim",
			"RainbowDelimSimple",
			"RainbowDelimQuoted",
			"RainbowMultiDelim",
		},
	},
	{
		"hat0uma/csvview.nvim",
		cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" },
		event = { "BufReadPre *.csv" }, -- Lazy-load the plugin when a CSV file is about to be read
		init = function()
			local wk = require("which-key")
			wk.add({
				mode = { "n", "v", "x" },
				{ "<leader>cs", group = "csv" },
			})
		end,
		config = function()
			require("csvview").setup()

			vim.api.nvim_create_autocmd("BufRead", {
				pattern = "*.csv",
				callback = function()
					vim.cmd("CsvViewEnable")
				end,
			})

			vim.api.nvim_create_autocmd("FileType", {
				pattern = "csv",
				callback = function()
					vim.keymap.set(
						"n",
						"<leader>zv",
						"<cmd>CsvViewToggle<cr>",
						{ desc = "Toggle CSV view", buffer = true }
					)
				end,
			})
		end,
		keys = {
			{
				"<leader>csv",
				function()
					local delimiter = vim.fn.input("Delimiter (e.g., ,): ")
					local quote_char = vim.fn.input("Quote char (e.g., '): ")
					local comment = vim.fn.input("Comment char (e.g., #): ")
					local command = string.format(
						":CsvViewToggle delimiter=%s quote_char=%s comment=%s<CR>",
						delimiter,
						quote_char,
						comment
					)

					vim.cmd(command)
				end,
				desc = "Toggle CSV view",
			},
		},
	},
}