-
Notifications
You must be signed in to change notification settings - Fork 465
/
init.lua
106 lines (92 loc) · 2.61 KB
/
init.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
-- Rafi's Neovim config loader
-- https://github.com/rafi/vim-config
-- This uses LazyVim's config module.
-- See: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/init.lua
local M = {}
local lazy_clipboard
-- Load rafi and user config files.
function M.setup()
-- Autocmds can be loaded lazily when not opening a file
local lazy_autocmds = vim.fn.argc(-1) == 0
if not lazy_autocmds then
M.load('autocmds')
end
local group = vim.api.nvim_create_augroup('RafiVim', { clear = true })
vim.api.nvim_create_autocmd('User', {
group = group,
pattern = 'VeryLazy',
callback = function()
if lazy_autocmds then
M.load('autocmds')
end
M.load('keymaps')
if lazy_clipboard ~= nil then
vim.opt.clipboard = lazy_clipboard
end
end,
})
end
-- Load lua/rafi/config/* and user lua/config/* files.
---@param name 'autocmds' | 'options' | 'keymaps'
function M.load(name)
local function _load(mod)
if require('lazy.core.cache').find(mod)[1] then
LazyVim.try(function()
require(mod)
end, { msg = 'Failed loading ' .. mod })
end
end
-- Always load rafi's file, then user file
_load('rafi.config.' .. name)
_load('config.' .. name)
if vim.bo.filetype == 'lazy' then
vim.cmd([[do VimResized]])
end
local pattern = 'RafiVim' .. name:sub(1, 1):upper() .. name:sub(2)
vim.api.nvim_exec_autocmds('User', { pattern = pattern, modeline = false })
end
-- This is the main entry-point once lazy.nvim is set-up.
-- Called from `lua/rafi/plugins/init.lua`
M.did_init = false
function M.init()
if M.did_init then
return
end
M.did_init = true
local plugin = require('lazy.core.config').spec.plugins.LazyVim
if plugin then
vim.opt.rtp:append(plugin.dir)
end
-- This is premature by purpose, to load the LazyVim global.
local LazyVimConfig = require('lazyvim.config')
-- Delay notifications till vim.notify was replaced or after 500ms
LazyVim.lazy_notify()
-- Load options here, before lazy init while sourcing plugin modules
-- this is needed to make sure options will be correctly applied
-- after installing missing plugins
M.load('options')
-- Defer built-in clipboard handling: "xsel" and "pbcopy" can be slow
lazy_clipboard = vim.opt.clipboard
vim.opt.clipboard = ''
LazyVim.plugin.setup()
LazyVimConfig.json.load()
-- Add lua/*/plugins/extras as list of "extra" sources
LazyVim.extras.sources = {
{
name = 'LazyVim',
desc = 'LazyVim extras',
module = 'lazyvim.plugins.extras',
},
{
name = 'Rafi ',
desc = 'Rafi extras',
module = 'rafi.plugins.extras',
},
{
name = 'User ',
desc = 'User extras',
module = 'plugins.extras',
},
}
end
return M