-
Notifications
You must be signed in to change notification settings - Fork 0
/
oil.lua
119 lines (116 loc) · 3.35 KB
/
oil.lua
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
return {
{
"stevearc/oil.nvim",
dependencies = { "nvim-tree/nvim-web-devicons" },
keys = { { "-" } },
config = function()
local theme = require("benlubas.color").oil
local permission_hlgroups = {
["-"] = "NonText",
["r"] = "Normal",
["w"] = "Normal",
["x"] = theme.executable,
}
local type_hlgroups = {
["-"] = "NonText",
["d"] = theme.d,
["p"] = theme.p,
["l"] = theme.l,
["s"] = theme.s,
}
local size_hlgroup = theme.executable
local mtime_hlgroup = "NonText"
require("oil").setup({
columns = {
{
"type",
icons = {
directory = "d",
fifo = "p",
file = "-",
link = "l",
socket = "s",
},
highlight = function(type_str)
return type_hlgroups[type_str]
end,
},
{
"permissions",
highlight = function(permission_str)
local hls = {}
for i = 1, #permission_str do
local char = permission_str:sub(i, i)
table.insert(hls, { permission_hlgroups[char], i - 1, i })
end
return hls
end,
},
{ "size", highlight = size_hlgroup },
{ "mtime", highlight = mtime_hlgroup },
{ "icon" },
},
constrain_cursor = "name",
view_options = {
-- Show files and directories that start with "."
show_hidden = true,
},
buf_options = {
filetype = "oil",
},
win_options = {
signcolumn = "yes",
cursorcolumn = false,
foldcolumn = "1",
spell = false,
},
keymaps = {
["g?"] = "actions.show_help",
["<CR>"] = "actions.select",
["<C-s>"] = {
callback = function()
local dir = require("oil").get_current_dir()
local entry = require("oil").get_cursor_entry()
---@diagnostic disable-next-line: undefined-field
if entry == nil or entry.type ~= "file" then
return
end
---@diagnostic disable-next-line: undefined-field
local path = dir .. entry.name
local cwd = vim.fn.getcwd() .. "/"
path = path:gsub(cwd, "")
require("harpoon.mark").add_file(path)
end,
desc = "harpoon file",
mode = "n",
},
["<C-h>"] = false,
["<C-t>"] = false,
["<C-p>"] = false,
["<C-c>"] = false,
["<C-l>"] = false,
["-"] = "actions.parent",
["_"] = "actions.open_cwd",
["`"] = "actions.cd",
["~"] = "actions.tcd",
["gs"] = "actions.change_sort",
["gx"] = "actions.open_external",
["g."] = "actions.toggle_hidden",
},
float = {
-- Padding around the floating window
padding = 2,
max_width = 0,
max_height = 0,
border = "none",
win_options = {
winblend = 14,
},
},
})
vim.keymap.set("n", "-", function()
require("oil").open()
end, { desc = "Open parent directory" })
end,
},
}