-
-
Notifications
You must be signed in to change notification settings - Fork 204
Expand file tree
/
Copy pathheader.lua
More file actions
135 lines (128 loc) · 10 KB
/
header.lua
File metadata and controls
135 lines (128 loc) · 10 KB
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
local api = vim.api
local utils = require('dashboard.utils')
local function week_ascii_text()
return {
['Monday'] = {
'',
'███╗ ███╗ ██████╗ ███╗ ██╗██████╗ █████╗ ██╗ ██╗',
'████╗ ████║██╔═══██╗████╗ ██║██╔══██╗██╔══██╗╚██╗ ██╔╝',
'██╔████╔██║██║ ██║██╔██╗ ██║██║ ██║███████║ ╚████╔╝ ',
'██║╚██╔╝██║██║ ██║██║╚██╗██║██║ ██║██╔══██║ ╚██╔╝ ',
'██║ ╚═╝ ██║╚██████╔╝██║ ╚████║██████╔╝██║ ██║ ██║ ',
'╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ',
'',
},
['Tuesday'] = {
'',
'████████╗██╗ ██╗███████╗███████╗██████╗ █████╗ ██╗ ██╗',
'╚══██╔══╝██║ ██║██╔════╝██╔════╝██╔══██╗██╔══██╗╚██╗ ██╔╝',
' ██║ ██║ ██║█████╗ ███████╗██║ ██║███████║ ╚████╔╝ ',
' ██║ ██║ ██║██╔══╝ ╚════██║██║ ██║██╔══██║ ╚██╔╝ ',
' ██║ ╚██████╔╝███████╗███████║██████╔╝██║ ██║ ██║ ',
' ╚═╝ ╚═════╝ ╚══════╝╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ',
'',
},
['Wednesday'] = {
'',
'██╗ ██╗███████╗██████╗ ███╗ ██╗███████╗███████╗██████╗ █████╗ ██╗ ██╗',
'██║ ██║██╔════╝██╔══██╗████╗ ██║██╔════╝██╔════╝██╔══██╗██╔══██╗╚██╗ ██╔╝',
'██║ █╗ ██║█████╗ ██║ ██║██╔██╗ ██║█████╗ ███████╗██║ ██║███████║ ╚████╔╝ ',
'██║███╗██║██╔══╝ ██║ ██║██║╚██╗██║██╔══╝ ╚════██║██║ ██║██╔══██║ ╚██╔╝ ',
'╚███╔███╔╝███████╗██████╔╝██║ ╚████║███████╗███████║██████╔╝██║ ██║ ██║ ',
' ╚══╝╚══╝ ╚══════╝╚═════╝ ╚═╝ ╚═══╝╚══════╝╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ',
'',
},
['Thursday'] = {
'',
'████████╗██╗ ██╗██╗ ██╗██████╗ ███████╗██████╗ █████╗ ██╗ ██╗',
'╚══██╔══╝██║ ██║██║ ██║██╔══██╗██╔════╝██╔══██╗██╔══██╗╚██╗ ██╔╝',
' ██║ ███████║██║ ██║██████╔╝███████╗██║ ██║███████║ ╚████╔╝ ',
' ██║ ██╔══██║██║ ██║██╔══██╗╚════██║██║ ██║██╔══██║ ╚██╔╝ ',
' ██║ ██║ ██║╚██████╔╝██║ ██║███████║██████╔╝██║ ██║ ██║ ',
' ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ',
'',
},
['Friday'] = {
'',
'███████╗██████╗ ██╗██████╗ █████╗ ██╗ ██╗',
'██╔════╝██╔══██╗██║██╔══██╗██╔══██╗╚██╗ ██╔╝',
'█████╗ ██████╔╝██║██║ ██║███████║ ╚████╔╝ ',
'██╔══╝ ██╔══██╗██║██║ ██║██╔══██║ ╚██╔╝ ',
'██║ ██║ ██║██║██████╔╝██║ ██║ ██║ ',
'╚═╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ',
'',
},
['Saturday'] = {
'',
'███████╗ █████╗ ████████╗██╗ ██╗██████╗ ██████╗ █████╗ ██╗ ██╗',
'██╔════╝██╔══██╗╚══██╔══╝██║ ██║██╔══██╗██╔══██╗██╔══██╗╚██╗ ██╔╝',
'███████╗███████║ ██║ ██║ ██║██████╔╝██║ ██║███████║ ╚████╔╝ ',
'╚════██║██╔══██║ ██║ ██║ ██║██╔══██╗██║ ██║██╔══██║ ╚██╔╝ ',
'███████║██║ ██║ ██║ ╚██████╔╝██║ ██║██████╔╝██║ ██║ ██║ ',
'╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ',
'',
},
['Sunday'] = {
'',
'███████╗██╗ ██╗███╗ ██╗██████╗ █████╗ ██╗ ██╗',
'██╔════╝██║ ██║████╗ ██║██╔══██╗██╔══██╗╚██╗ ██╔╝',
'███████╗██║ ██║██╔██╗ ██║██║ ██║███████║ ╚████╔╝ ',
'╚════██║██║ ██║██║╚██╗██║██║ ██║██╔══██║ ╚██╔╝ ',
'███████║╚██████╔╝██║ ╚████║██████╔╝██║ ██║ ██║ ',
'╚══════╝ ╚═════╝ ╚═╝ ╚═══╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ',
'',
},
}
end
local function default_header()
return {
'',
' ██████╗ █████╗ ███████╗██╗ ██╗██████╗ ██████╗ █████╗ ██████╗ ██████╗ ',
' ██╔══██╗██╔══██╗██╔════╝██║ ██║██╔══██╗██╔═══██╗██╔══██╗██╔══██╗██╔══██╗ ',
' ██║ ██║███████║███████╗███████║██████╔╝██║ ██║███████║██████╔╝██║ ██║ ',
' ██║ ██║██╔══██║╚════██║██╔══██║██╔══██╗██║ ██║██╔══██║██╔══██╗██║ ██║ ',
' ██████╔╝██║ ██║███████║██║ ██║██████╔╝╚██████╔╝██║ ██║██║ ██║██████╔╝ ',
' ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ',
'',
}
end
local function week_header(concat, append)
local week = week_ascii_text()
local daysoftheweek =
{ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' }
local day = daysoftheweek[os.date('*t').wday]
local tbl = week[day]
table.insert(tbl, os.date('%Y-%m-%d %H:%M:%S ') .. (concat or ''))
if append then
vim.list_extend(tbl, append)
end
table.insert(tbl, '')
return tbl
end
local function generate_header(config)
if not vim.bo[config.bufnr].modifiable then
vim.bo[config.bufnr].modifiable = true
end
if not config.command then
local header = config.week_header
and config.week_header.enable
and week_header(config.week_header.concat, config.week_header.append)
or (config.header or default_header())
api.nvim_buf_set_lines(config.bufnr, 0, -1, false, utils.center_align(header))
for i, _ in ipairs(header) do
vim.api.nvim_buf_add_highlight(config.bufnr, 0, 'DashboardHeader', i - 1, 0, -1)
end
return
end
local empty_table = utils.generate_empty_table(config.file_height + 4)
api.nvim_buf_set_lines(config.bufnr, 0, -1, false, utils.center_align(empty_table))
local preview = require('dashboard.preview')
return preview:open_preview({
width = config.file_width,
height = config.file_height,
cmd = config.command .. ' ' .. config.file_path,
})
end
return {
generate_header = generate_header,
}