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
|
vim.o.number = true
vim.o.relativenumber = true
vim.o.signcolumn = "yes"
vim.o.wrap = false
vim.o.tabstop = 2
vim.o.shiftwidth = 2
vim.o.swapfile = false
vim.g.mapleader = " "
vim.o.clipboard = "unnamedplus"
vim.o.undofile = true
vim.o.cursorline = false
vim.cmd("set title")
-- packages
vim.pack.add({
{ src = "https://github.com/sainnhe/everforest" },
{ src = "https://github.com/nvim-lualine/lualine.nvim" },
{ src = "https://github.com/lewis6991/gitsigns.nvim" },
{ src = "https://github.com/cappyzawa/trim.nvim" },
{ src = "https://github.com/nvim-treesitter/nvim-treesitter" },
{ src = "https://github.com/lukas-reineke/indent-blankline.nvim" },
{ src = "https://github.com/nvim-telescope/telescope.nvim" },
{ src = "https://github.com/nvim-telescope/telescope-ui-select.nvim" },
{ src = "https://github.com/nvim-lua/plenary.nvim" },
})
-- telescope
local telescope = require("telescope")
telescope.setup({
defaults = {
preview = { treesitter = false },
color_devicons = true,
sorting_strategy = "ascending",
borderchars = {
"─", -- top
"│", -- right
"─", -- bottom
"│", -- left
"┌", -- top-left
"┐", -- top-right
"┘", -- bottom-right
"└", -- bottom-left
},
path_displays = { "smart" },
layout_config = {
height = 100,
width = 400,
prompt_position = "top",
preview_cutoff = 40,
}
}
})
telescope.load_extension("ui-select")
local builtin = require("telescope.builtin")
-- binds
vim.keymap.set('n', '<leader>lf', vim.lsp.buf.format)
vim.api.nvim_set_keymap('n', ',c', ':w! | !compiler "%:p"<CR>', { noremap = true, silent = true })
vim.keymap.set({ "n" }, "<leader>f", builtin.find_files, { desc = "Telescope live grep" })
vim.keymap.set({ "n" }, "<leader>g", builtin.live_grep, { desc = "Telescope live grep" })
-- lsp
vim.lsp.enable({
"lua_ls", "clangd", "rust-analyzer", "bashls",
"html", "cssls", "jsonls", "yamlls"
})
vim.diagnostic.config({
virtual_text = {
prefix = '',
spacing = 4,
},
-- signs = false,
underline = true,
update_in_insert = true,
severity_sort = true,
})
-- completion
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('my.lsp', {}),
callback = function(args)
local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
if client:supports_method('textDocument/completion') then
-- Optional: trigger autocompletion on EVERY keypress. May be slow!
local chars = {}; for i = 32, 126 do table.insert(chars, string.char(i)) end
client.server_capabilities.completionProvider.triggerCharacters = chars
vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true })
end
end,
})
vim.cmd [[set completeopt+=menuone,noselect,popup]]
-- plugins
require('lualine').setup({})
require("gitsigns").setup()
require("trim").setup({})
require("nvim-treesitter.configs").setup({
ensure_installed = {
"bash",
"lua",
"javascript",
"c",
"cpp",
"json",
"go",
"markdown",
"meson",
"make",
"cmake",
"python",
"rust",
"yaml",
"toml",
"ron",
},
highlight = { enable = true },
indent = { enable = true },
})
require("ibl").setup({})
-- theme
-- vim.g.everforest_enable_italic = true
-- vim.g.everforest_transparent_background = true
vim.cmd("colorscheme everforest")
|