summaryrefslogtreecommitdiff
path: root/.config/nvim/init.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/init.lua')
-rw-r--r--.config/nvim/init.lua221
1 files changed, 221 insertions, 0 deletions
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100644
index 0000000..36ad9d3
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1,221 @@
1-- hi Normal guibg=NONE ctermbg=NONE
2--
3require("config.lazy")
4
5vim.g.mapleader = ' '
6
7vim.o.number = true
8vim.o.relativenumber = true
9vim.o.ignorecase = true
10vim.o.smartcase = true
11vim.o.tabstop = 2
12vim.o.shiftwidth = 2
13vim.o.expandtab = true
14vim.o.scrolloff = 5
15
16vim.keymap.set('n', '<leader>a', ':keepjumps normal! ggVG<cr>')
17
18vim.o.clipboard = "unnamedplus"
19
20
21require("nvim-treesitter").setup{
22 indent = { enable = true },
23 highlight = {
24 enable = true,
25 additional_vim_regex_highlighting = false,
26 },
27 auto_install = false,
28 ensure_installed = {
29 "bash",
30 "c",
31 "diff",
32 "html",
33 "javascript",
34 "json",
35 "lua",
36 "markdown",
37 "markdown_inline",
38 "python",
39 "toml",
40 "yaml",
41 },
42}
43
44vim.api.nvim_create_autocmd('FileType', {
45 pattern = { '<filetype>' },
46 callback = function() vim.treesitter.start() end,
47})
48
49
50local builtin = require('telescope.builtin')
51vim.keymap.set('n', '<C-p>', builtin.find_files, { desc = 'Telescope find files' })
52vim.keymap.set('n', '<leader>s', builtin.live_grep, { desc = 'Telescope live grep' })
53vim.keymap.set('n', '<leader>f', builtin.git_files, { desc = 'Telescope git files' })
54
55vim.cmd[[colorscheme tokyonight-night]]
56
57require('lualine').setup {
58 options = {
59 icons_enabled = true,
60 theme = 'auto',
61 component_separators = { left = '', right = ''},
62 section_separators = { left = '', right = ''},
63 disabled_filetypes = {
64 statusline = {},
65 winbar = {},
66 },
67 ignore_focus = {},
68 always_divide_middle = true,
69 always_show_tabline = true,
70 globalstatus = false,
71 refresh = {
72 statusline = 1000,
73 tabline = 1000,
74 winbar = 1000,
75 refresh_time = 16, -- ~60fps
76 events = {
77 'WinEnter',
78 'BufEnter',
79 'BufWritePost',
80 'SessionLoadPost',
81 'FileChangedShellPost',
82 'VimResized',
83 'Filetype',
84 'CursorMoved',
85 'CursorMovedI',
86 'ModeChanged',
87 },
88 }
89 },
90 sections = {
91 lualine_a = {'mode'},
92 lualine_b = {'branch', 'diff', 'diagnostics'},
93 lualine_c = {'filename'},
94 lualine_x = {'encoding', 'fileformat', 'filetype'},
95 lualine_y = {'progress'},
96 lualine_z = {'location'}
97 },
98 inactive_sections = {
99 lualine_a = {},
100 lualine_b = {},
101 lualine_c = {'filename'},
102 lualine_x = {'location'},
103 lualine_y = {},
104 lualine_z = {}
105 },
106 tabline = {},
107 winbar = {},
108 inactive_winbar = {},
109 extensions = {}
110}
111
112-- An example nvim-lspconfig capabilities setting
113
114vim.lsp.enable("pyright")
115vim.lsp.enable("lua_ls")
116vim.lsp.enable("ts_ls")
117vim.lsp.enable("clangd")
118
119vim.keymap.set('n', '<space>d', vim.diagnostic.open_float)
120
121
122-- Set up nvim-cmp.
123local cmp = require'cmp'
124
125cmp.setup({
126snippet = {
127-- REQUIRED - you must specify a snippet engine
128expand = function(args)
129-- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
130-- require('luasnip').lsp_expand(args.body) -- For `luasnip` users.
131-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
132-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
133vim.snippet.expand(args.body) -- For native neovim snippets (Neovim v0.10+)
134
135-- For `mini.snippets` users:
136-- local insert = MiniSnippets.config.expand.insert or MiniSnippets.default_insert
137-- insert({ body = args.body }) -- Insert at cursor
138-- cmp.resubscribe({ "TextChangedI", "TextChangedP" })
139-- require("cmp.config").set_onetime({ sources = {} })
140end,
141},
142window = {
143completion = cmp.config.window.bordered(),
144documentation = cmp.config.window.bordered(),
145},
146mapping = cmp.mapping.preset.insert({
147['<C-b>'] = cmp.mapping.scroll_docs(-4),
148['<C-f>'] = cmp.mapping.scroll_docs(4),
149['<C-Space>'] = cmp.mapping.complete(),
150['<C-e>'] = cmp.mapping.abort(),
151['<CR>'] = cmp.mapping.confirm({ select = true }), -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
152}),
153sources = cmp.config.sources({
154{ name = 'nvim_lsp' },
155-- { name = 'vsnip' }, -- For vsnip users.
156-- { name = 'luasnip' }, -- For luasnip users.
157-- { name = 'ultisnips' }, -- For ultisnips users.
158-- { name = 'snippy' }, -- For snippy users.
159}, {
160{ name = 'buffer' },
161})
162})
163
164-- To use git you need to install the plugin petertriho/cmp-git and uncomment lines below
165-- Set configuration for specific filetype.
166--[[ cmp.setup.filetype('gitcommit', {
167sources = cmp.config.sources({
168{ name = 'git' },
169}, {
170{ name = 'buffer' },
171})
172})
173require("cmp_git").setup() ]]--
174
175-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore).
176cmp.setup.cmdline({ '/', '?' }, {
177mapping = cmp.mapping.preset.cmdline(),
178sources = {
179{ name = 'buffer' }
180}
181})
182
183-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
184cmp.setup.cmdline(':', {
185mapping = cmp.mapping.preset.cmdline(),
186sources = cmp.config.sources({
187{ name = 'path' }
188}, {
189{ name = 'cmdline' }
190}),
191matching = { disallow_symbol_nonprefix_matching = false }
192})
193
194-- Set up lspconfig.
195local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
196-- Replace <YOUR_LSP_SERVER> with each lsp server you've enabled.
197vim.lsp.config("markdown_oxide", {
198 -- Ensure that dynamicRegistration is enabled! This allows the LS to take into account actions like the
199 -- Create Unresolved File code action, resolving completions for unindexed code blocks, ...
200 capabilities = vim.tbl_deep_extend(
201 'force',
202 capabilities,
203 {
204 workspace = {
205 didChangeWatchedFiles = {
206 dynamicRegistration = true,
207 },
208 },
209 }
210 ),
211 on_attach = on_attach -- configure your on attach config
212})
213vim.lsp.enable('markdown_oxide')
214
215require('cmp').setup {
216 sources = {
217 {
218 name = 'hledger',
219 }
220 }
221}