-
Notifications
You must be signed in to change notification settings - Fork 0
/
init.lua
123 lines (107 loc) · 3.39 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
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
---@diagnostic disable: undefined-global
-- Set options
vim.o.filetype = "on"
vim.o.syntax = "on"
vim.o.cursorline = true
vim.o.expandtab = true
vim.o.tabstop = 4
vim.o.softtabstop = 4
vim.o.shiftwidth = 4
vim.o.autoindent = true
vim.o.smartindent = true
vim.o.number = true
vim.o.ignorecase = true
vim.o.smartcase = true
vim.o.incsearch = true
vim.o.hlsearch = true
vim.o.showcmd = true
vim.o.showmode = true
vim.o.scrolloff = 1
vim.o.wildmenu = true
vim.o.wildmode = "list:longest"
vim.o.wildignore = "*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx"
vim.o.conceallevel = 0
vim.o.pumheight = 10
vim.o.pumblend = 0 -- 20
vim.o.winblend = 0 -- 10
vim.o.guicursor = "i:block-blinkon1"
-- vim.o.textwidth = 80
vim.o.wrap = true
vim.o.linebreak = true
vim.o.showbreak = "↪ "
-- The following doesn't work for some reason
-- vim.api.nvim_create_autocmd("FileType", {
-- pattern = { "markdown", "tex", "txt", "text", "rst", "vimwiki", "md" },
-- callback = function()
-- vim.wo.showbreak = ""
-- end,
-- })
-- Fold settings
vim.o.foldmethod = "expr"
vim.o.foldexpr = "nvim_treesitter#foldexpr()"
vim.o.foldlevel = 99 -- Open all folds by default
vim.o.updatetime = 750
-- Set autocommands
vim.api.nvim_create_autocmd("FileType", {
pattern = { "css", "html", "xml", "javascript", "tex", "yaml", "toml", "markdown" },
callback = function()
local bufnr = vim.api.nvim_get_current_buf()
vim.api.nvim_buf_set_option(bufnr, "tabstop", 2)
vim.api.nvim_buf_set_option(bufnr, "softtabstop", 2)
vim.api.nvim_buf_set_option(bufnr, "shiftwidth", 2)
end,
})
vim.api.nvim_create_autocmd("BufReadPost", {
pattern = "*",
callback = function()
if vim.fn.line("'\"") > 0 and vim.fn.line("'\"") <= vim.fn.line("$") then
vim.cmd('normal! g`"')
end
end,
})
-- Set undo options if version is 7.3 or above
if vim.version().minor >= 3 then
vim.o.undodir = os.getenv("HOME") .. "/.vim/backup"
vim.o.undofile = true
vim.o.undoreload = 10000
end
vim.g.mapleader = " "
-- Window navigation
vim.keymap.set({ "n", "v", "i" }, "<M-Up>", "<Esc><C-w><Up>", { noremap = true, desc = "Focus window above" })
vim.keymap.set({ "n", "v", "i" }, "<M-Down>", "<Esc><C-w><Down>", { noremap = true, desc = "Focus window below" })
vim.keymap.set({ "n", "v", "i" }, "<M-Left>", "<Esc><C-w><Left>", { noremap = true, desc = "Focus window left" })
vim.keymap.set({ "n", "v", "i" }, "<M-Right>", "<Esc><C-w><Right>", { noremap = true, desc = "Focus window right" })
vim.diagnostic.config({
float = { border = "rounded" },
virtual_text = false,
})
-- Define a function to toggle diagnostics
local function toggleDiagnostics()
if vim.g.diagnostics_visible == nil then
vim.g.diagnostics_visible = true
end
if vim.g.diagnostics_visible then
vim.diagnostic.disable(0)
vim.g.diagnostics_visible = false
print("Diagnostics hidden")
else
vim.diagnostic.enable(0)
vim.g.diagnostics_visible = true
print("Diagnostics revealed")
end
end
-- Set up a key mapping to toggle diagnostics
vim.keymap.set("n", "<leader>d", toggleDiagnostics, { noremap = true, silent = true, desc = "Toggle diagnostics" })
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup("plugins")