8bfba9f71b06436c399fed351fb6cf26a3323915
- Author
- Pavle Portic <git@theedgeofrage.com>
- Committer
- Pavle Portic <git@theedgeofrage.com>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/dot_config/nvim/init.lua b/dot_config/nvim/init.lua
2new file mode 100644
3index 0000000000000000000000000000000000000000..402314beb8aaeed5a9d3a3bb0a3faaa2037a5c3d
4--- /dev/null
5+++ b/dot_config/nvim/init.lua
6@@ -0,0 +1,35 @@
7+require("sets")
8+
9+-- Lazy.nvim
10+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
11+
12+if not vim.loop.fs_stat(lazypath) then
13+vim.fn.system({
14+ "git",
15+ "clone",
16+ "--filter=blob:none",
17+ "https://github.com/folke/lazy.nvim.git",
18+ "--branch=stable",
19+ lazypath,
20+ })
21+end
22+
23+vim.opt.rtp:prepend(lazypath)
24+
25+require("lazy").setup("plugins", {
26+ change_detection = {
27+ enabled = true,
28+ notify = false,
29+ },
30+})
31+
32+vim.cmd([[colorscheme gruvbox]])
33+
34+require('telescope').load_extension('projects')
35+require('project_nvim').setup({})
36+
37+-- Import additional config files
38+require("mappings")
39+require("git")
40+require("lsp")
41+require("line")
42diff --git a/dot_config/nvim/lazy-lock.json b/dot_config/nvim/lazy-lock.json
43new file mode 100644
44index 0000000000000000000000000000000000000000..85851be30ad8a5829f16972cce13b1056d3c2667
45--- /dev/null
46+++ b/dot_config/nvim/lazy-lock.json
47@@ -0,0 +1,35 @@
48+{
49+ "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
50+ "LuaSnip": { "branch": "master", "commit": "0df29db3543837f8b41597f2640397c5ec792b7b" },
51+ "bufferline.nvim": { "branch": "main", "commit": "6ecd37e0fa8b156099daedd2191130e083fb1490" },
52+ "cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
53+ "copilot.vim": { "branch": "release", "commit": "998cf5ab1b85e844c7e8edb864a997e590df7182" },
54+ "diffview.nvim": { "branch": "main", "commit": "d38c1b5266850f77f75e006bcc26213684e1e141" },
55+ "gitsigns.nvim": { "branch": "main", "commit": "ff01d34daaed72f271a8ffa088a7e839a60c640f" },
56+ "gruvbox.nvim": { "branch": "main", "commit": "477c62493c82684ed510c4f70eaf83802e398898" },
57+ "lazy.nvim": { "branch": "main", "commit": "276e572f645430bcfd6fd25faa301ea9077f6ab1" },
58+ "lsp-zero.nvim": { "branch": "v3.x", "commit": "22d2186bee730d68f6fd3bb2d19a389784c37a96" },
59+ "lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
60+ "mason-lspconfig.nvim": { "branch": "main", "commit": "397273083f988c1a17acf3816947cd198338e700" },
61+ "mason.nvim": { "branch": "main", "commit": "cd7835b15f5a4204fc37e0aa739347472121a54c" },
62+ "neodev.nvim": { "branch": "main", "commit": "24b403eabde652904077f84fd55441744e77a109" },
63+ "nvim-autopairs": { "branch": "master", "commit": "748e72c05495a3d30e88a6ef04b21697019a9aa9" },
64+ "nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
65+ "nvim-cursorword": { "branch": "master", "commit": "c0f2958ec729b47be2dba0d79ef43d005dac9f4e" },
66+ "nvim-lspconfig": { "branch": "master", "commit": "bb8e3dfbe10d80c294bb609c4bb4bba3ecdfbfe2" },
67+ "nvim-treesitter": { "branch": "master", "commit": "0d5c611e3fd36353b11b412661ff4f07bcc8e5c6" },
68+ "nvim-treesitter-textobjects": { "branch": "master", "commit": "76c7a89b41de77a4f83fb77fa072c5ad7605fe3b" },
69+ "nvim-web-devicons": { "branch": "master", "commit": "a1e6268779411048a87f767a27380089362a0ce2" },
70+ "plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" },
71+ "project.nvim": { "branch": "main", "commit": "8c6bad7d22eef1b71144b401c9f74ed01526a4fb" },
72+ "suda.vim": { "branch": "master", "commit": "8b0fc3711760195aba104e2d190cff9af8267052" },
73+ "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
74+ "telescope.nvim": { "branch": "0.1.x", "commit": "7011eaae0ac1afe036e30c95cf80200b8dc3f21a" },
75+ "undotree": { "branch": "master", "commit": "0e11ba7325efbbb3f3bebe06213afa3e7ec75131" },
76+ "vim-fugitive": { "branch": "master", "commit": "cbe9dfa162c178946afa689dd3f42d4ea8bf89c1" },
77+ "vim-matchup": { "branch": "master", "commit": "6dbe108230c7dbbf00555b7d4d9f6a891837ef07" },
78+ "vim-repeat": { "branch": "master", "commit": "24afe922e6a05891756ecf331f39a1f6743d3d5a" },
79+ "vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
80+ "which-key.nvim": { "branch": "main", "commit": "6962dae3565369363b59dd51fb206051555fcb4d" },
81+ "whitespace.nvim": { "branch": "master", "commit": "f0fc9e9c4ce3f7d2166e9e5a069b64b9ca4a3f15" }
82+}
83diff --git a/dot_config/nvim/lua/git.lua b/dot_config/nvim/lua/git.lua
84new file mode 100644
85index 0000000000000000000000000000000000000000..a424ae4f280617c97f01a359122e81b9caf20df0
86--- /dev/null
87+++ b/dot_config/nvim/lua/git.lua
88@@ -0,0 +1,68 @@
89+require('gitsigns').setup{
90+ signs = {
91+ add = { text = '+' },
92+ change = { text = '│' },
93+ delete = { text = '_' },
94+ topdelete = { text = '‾' },
95+ changedelete = { text = '~' },
96+ untracked = { text = '┆' },
97+ },
98+ signcolumn = true, -- :Gitsigns toggle_signs
99+ numhl = false, -- :Gitsigns toggle_numhl
100+ linehl = false, -- :Gitsigns toggle_linehl
101+ word_diff = false, -- :Gitsigns toggle_word_diff
102+ watch_gitdir = {
103+ follow_files = true
104+ },
105+ attach_to_untracked = true,
106+ current_line_blame = true, -- :Gitsigns toggle_current_line_blame
107+ current_line_blame_opts = {
108+ virt_text = true,
109+ virt_text_pos = 'right_align', -- 'eol' | 'overlay' | 'right_align'
110+ delay = 100,
111+ ignore_whitespace = false,
112+ },
113+ current_line_blame_formatter = '<author>, <author_time:%Y-%m-%d> - <summary>',
114+ sign_priority = 6,
115+ update_debounce = 100,
116+ status_formatter = nil, -- Use default
117+ max_file_length = 40000, -- Disable if file is longer than this (in lines)
118+ preview_config = {
119+ -- Options passed to nvim_open_win
120+ border = 'single',
121+ style = 'minimal',
122+ relative = 'cursor',
123+ row = 0,
124+ col = 1
125+ },
126+ on_attach = function(bufnr)
127+ local gs = package.loaded.gitsigns
128+
129+ local function map(mode, l, r, opts)
130+ opts = opts or {}
131+ opts.buffer = bufnr
132+ vim.keymap.set(mode, l, r, opts)
133+ end
134+
135+ -- Navigation
136+ map('n', ']c', function()
137+ if vim.wo.diff then return ']c' end
138+ vim.schedule(function() gs.next_hunk() end)
139+ return '<Ignore>'
140+ end, {expr=true})
141+
142+ map('n', '[c', function()
143+ if vim.wo.diff then return '[c' end
144+ vim.schedule(function() gs.prev_hunk() end)
145+ return '<Ignore>'
146+ end, {expr=true})
147+
148+ -- Actions
149+ map('n', '<leader>hs', gs.stage_hunk)
150+ map('n', '<leader>hu', gs.undo_stage_hunk)
151+ map('n', '<leader>hS', gs.stage_buffer)
152+ map('n', '<leader>hR', gs.reset_buffer)
153+ map('n', '<leader>tb', gs.toggle_current_line_blame)
154+ map('n', '<leader>td', gs.toggle_deleted)
155+ end
156+}
157diff --git a/dot_config/nvim/lua/line.lua b/dot_config/nvim/lua/line.lua
158new file mode 100644
159index 0000000000000000000000000000000000000000..4905c59d739f3049cfc70b32e7078d91799b6e3c
160--- /dev/null
161+++ b/dot_config/nvim/lua/line.lua
162@@ -0,0 +1,106 @@
163+require("lualine").setup({
164+ options = {
165+ icons_enabled = true,
166+ theme = 'gruvbox',
167+ component_separators = { left = '', right = ''},
168+ section_separators = { left = '', right = ''},
169+ disabled_filetypes = {
170+ statusline = {},
171+ winbar = {},
172+ },
173+ ignore_focus = {},
174+ always_divide_middle = true,
175+ globalstatus = false,
176+ refresh = {
177+ statusline = 1000,
178+ tabline = 1000,
179+ winbar = 1000,
180+ },
181+ show_filename_only = false,
182+ },
183+ sections = {
184+ lualine_a = {'mode'},
185+ lualine_b = {'branch', 'diff', 'diagnostics'},
186+ lualine_c = {
187+ {
188+ 'filename',
189+ file_status = true, -- Displays file status (readonly status, modified status)
190+ newfile_status = false, -- Display new file status (new file means no write after created)
191+ path = 1, -- 0: Just the filename
192+ -- 1: Relative path
193+ -- 2: Absolute path
194+ -- 3: Absolute path, with tilde as the home directory
195+ -- 4: Filename and parent dir, with tilde as the home directory
196+
197+ shorting_target = 40, -- Shortens path to leave 40 spaces in the window
198+ -- for other components. (terrible name, any suggestions?)
199+ symbols = {
200+ modified = '[+]', -- Text to show when the file is modified.
201+ readonly = '[-]', -- Text to show when the file is non-modifiable or readonly.
202+ unnamed = '[No Name]', -- Text to show for unnamed buffers.
203+ newfile = '[New]', -- Text to show for newly created file before first write
204+ }
205+ }
206+ },
207+ lualine_x = {
208+ 'filetype',
209+ {
210+ require("lazy.status").updates,
211+ cond = require("lazy.status").has_updates,
212+ color = { fg = "#ff9e64" },
213+ },
214+ },
215+ lualine_y = {'progress'},
216+ lualine_z = {'location'},
217+ },
218+ inactive_sections = {
219+ lualine_a = {},
220+ lualine_b = {},
221+ lualine_c = {'filename'},
222+ lualine_x = {'location'},
223+ lualine_y = {},
224+ lualine_z = {},
225+ },
226+ tabline = {},
227+ winbar = {},
228+ inactive_winbar = {},
229+ extensions = {},
230+})
231+
232+
233+require("bufferline").setup({
234+ options = {
235+ mode = "buffers",
236+ themable = true,
237+ numbers = "ordinal",
238+ indicator = {
239+ icon = '▎', -- this should be omitted if indicator style is not 'icon'
240+ style = 'icon',
241+ },
242+ modified_icon = '●',
243+ close_icon = '',
244+ left_trunc_marker = '',
245+ right_trunc_marker = '',
246+ max_name_length = 24,
247+ max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
248+ truncate_names = true, -- whether or not tab names should be truncated
249+ tab_size = 18,
250+ diagnostics = "nvim_lsp",
251+ color_icons = true,
252+ show_buffer_icons = true,
253+ show_buffer_close_icons = false,
254+ -- show_close_icon = false,
255+ -- show_tab_indicators = true | false,
256+ -- show_duplicate_prefix = true | false, -- whether to show duplicate buffer prefix
257+ persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
258+ move_wraps_at_ends = false, -- whether or not the move command "wraps" at the first or last position
259+ -- can also be a table containing 2 custom separators
260+ -- [focused and unfocused]. eg: { '|', '|' }
261+ -- separator_style = "slant" | "slope" | "thick" | "thin" | { 'any', 'any' },
262diff --git a/dot_config/nvim/lua/lsp.lua b/dot_config/nvim/lua/lsp.lua
263new file mode 100644
264index 0000000000000000000000000000000000000000..78efd7980ac1f00d591dc951a84a66aea1cb78eb
265--- /dev/null
266+++ b/dot_config/nvim/lua/lsp.lua
267@@ -0,0 +1,68 @@
268+-- Load default lsp-zero keymaps
269+local lsp_zero = require('lsp-zero')
270+
271+lsp_zero.on_attach(function(_, bufnr)
272+ -- see :help lsp-zero-keybindings
273+ -- to learn the available actions
274+ lsp_zero.default_keymaps({buffer = bufnr})
275+
276+ local opts = {buffer = bufnr, remap = false}
277+ vim.keymap.set("n", "<leader>vw", function() vim.lsp.buf.workspace_symbol() end, opts)
278+ vim.keymap.set("n", "<leader>vc", function() vim.lsp.buf.code_action() end, opts)
279+ vim.keymap.set("n", "<leader>vr", function() vim.lsp.buf.rename() end, opts)
280+
281+ vim.keymap.set("n", "<leader>en", function() vim.diagnostic.goto_next() end, opts)
282+ vim.keymap.set("n", "<leader>ep", function() vim.diagnostic.goto_prev() end, opts)
283+ vim.keymap.set("i", "<C-h>", function() vim.lsp.buf.signature_help() end, opts)
284+end)
285+
286+lsp_zero.format_on_save({
287+ format_opts = {
288+ async = true,
289+ timeout_ms = 10000,
290+ },
291+ servers = {
292+ ['prettier'] = {'javascript', 'typescript'},
293+ ['gopls'] = {'go'},
294+ ['stylua'] = {'lua'},
295+ }
296+})
297+
298+-- Setup LSP servers
299+local lspconfig = require('lspconfig')
300+-- go
301+lspconfig.golangci_lint_ls.setup({})
302+lspconfig.gopls.setup({})
303+-- lua
304+lspconfig.lua_ls.setup({})
305+-- python
306+lspconfig.pylsp.setup{}
307+-- typescript
308+lspconfig.tsserver.setup({})
309+lspconfig.eslint.setup({})
310+-- other
311+lspconfig.terraformls.setup({})
312+lspconfig.jsonls.setup({})
313+
314+-- Customize keymaps
315+local cmp = require('cmp')
316+-- local cmp_action = require('lsp-zero').cmp_action()
317+
318+cmp.setup({
319+ mapping = cmp.mapping.preset.insert({
320+ -- `Enter` key to confirm completion
321+ ['<CR>'] = cmp.mapping.confirm({select = false}),
322+
323+ ['<C-Space>'] = cmp.mapping.complete(),
324+
325+ -- Scroll up and down in the completion documentation
326+ ['<C-u>'] = cmp.mapping.scroll_docs(-4),
327+ ['<C-d>'] = cmp.mapping.scroll_docs(4),
328+ })
329+})
330+
331+-- Fix lua lsp for nvim config
332+local lua_opts = lsp_zero.nvim_lua_ls()
333+require('lspconfig').lua_ls.setup(lua_opts)
334+
335+require("mason").setup()
336diff --git a/dot_config/nvim/lua/mappings.lua b/dot_config/nvim/lua/mappings.lua
337new file mode 100644
338index 0000000000000000000000000000000000000000..0bb9051cb45d850bb4f158f1fafabf7b6e12d6c9
339--- /dev/null
340+++ b/dot_config/nvim/lua/mappings.lua
341@@ -0,0 +1,70 @@
342+-- Colemak bindings
343+vim.keymap.set("", "n", "j")
344+vim.keymap.set("", "e", "k")
345+vim.keymap.set("", "i", "l")
346+vim.keymap.set("", "I", "$")
347+vim.keymap.set("", "H", "0")
348+vim.keymap.set("", "l", "i")
349+vim.keymap.set("", "L", "I")
350+vim.keymap.set("n", "N", "mzJ`z")
351+vim.keymap.set("", "k", "n")
352+vim.keymap.set("", "K", "N")
353+vim.keymap.set("", "J", "M")
354+vim.keymap.set("", "j", "m")
355+vim.keymap.set("", "m", "e")
356+vim.keymap.set("", "M", "E")
357+
358+vim.keymap.set("v", "N", ":m '>+1<CR>gv=gv")
359+vim.keymap.set("v", "E", ":m '<-2<CR>gv=gv")
360+
361+-- General mappings
362+vim.keymap.set("", "<BS>", "gg")
363+vim.keymap.set("", "<CR>", "G")
364+vim.keymap.set("", "<Space>", "<NOP>")
365+
366+vim.keymap.set("x", "p", "\"_dP")
367+
368+vim.keymap.set("n", "<tab>", vim.cmd.bn)
369+vim.keymap.set("n", "<s-tab>", vim.cmd.bp)
370+vim.keymap.set("n", "U", vim.cmd.redo)
371+
372+-- File operation maps
373+vim.keymap.set("n", "<leader>fd", function ()
374+ if vim.bo.filetype == "json" then
375+ vim.cmd("%!jq")
376+ else
377+ vim.cmd.normal('jzgg=G`z')
378+ end
379+end)
380+vim.keymap.set("n", "<leader>fs", vim.cmd.w)
381+vim.keymap.set("n", "<leader>W", vim.cmd.SudaWrite)
382+vim.keymap.set("n", "<leader>q", vim.cmd.q)
383+vim.keymap.set("n", "<leader>Q", ":q!<cr>")
384+vim.keymap.set("n", "<leader>wq", vim.cmd.wq)
385+vim.keymap.set("n", "<leader>bd", ":bp | bd #<cr>")
386+vim.keymap.set("n", "<leader>u", vim.cmd.UndotreeToggle)
387+
388+vim.keymap.set("", "\\", ":let @/ = \"\"<CR>")
389+
390+-- Git
391+vim.keymap.set("n", "<leader>gd", vim.cmd.Gvdiff)
392+-- vim.keymap.set("n", "<leader>gb", vim.cmd('Gitsigns toggle_current_line_blame'))
393+
394+-- window movement
395+vim.keymap.set("n", "<leader>wn", "<C-W>j")
396+vim.keymap.set("n", "<leader>we", "<C-W>k")
397+vim.keymap.set("n", "<leader>wh", "<C-W>h")
398+vim.keymap.set("n", "<leader>wi", "<C-W>l")
399+vim.keymap.set("n", "<leader>wH", "<C-W>5<")
400+vim.keymap.set("n", "<leader>wI", "<C-W>5>")
401+vim.keymap.set("n", "<leader>wN", ":resize +5<CR>")
402+vim.keymap.set("n", "<leader>wE", ":resize -5<CR>")
403+
404+-- Telescope
405+local builtin = require('telescope.builtin')
406+vim.keymap.set('n', '<leader>ff', builtin.find_files, {})
407+vim.keymap.set('n', '<leader>fp', builtin.git_files, {})
408+vim.keymap.set('n', '<c-p>', builtin.git_files, {})
409+vim.keymap.set('n', '<leader>rg', builtin.live_grep, {})
410+vim.keymap.set('n', '<leader>fb', builtin.buffers, {})
411+vim.keymap.set('n', '<leader>fh', builtin.help_tags, {})
412diff --git a/dot_config/nvim/lua/plugins/comment.lua b/dot_config/nvim/lua/plugins/comment.lua
413new file mode 100644
414index 0000000000000000000000000000000000000000..29b58e23ff162569e2f60a4d807ce8a4d96a1aca
415--- /dev/null
416+++ b/dot_config/nvim/lua/plugins/comment.lua
417@@ -0,0 +1,12 @@
418+return {
419+ 'numToStr/Comment.nvim',
420+ opts = {
421+ toggler = {
422+ ---Line-comment toggle keymap
423+ line = '<leader>/',
424+ ---Block-comment toggle keymap
425+ block = '<leader>b/',
426+ },
427+ },
428+ lazy = false,
429+}
430diff --git a/dot_config/nvim/lua/plugins/git.lua b/dot_config/nvim/lua/plugins/git.lua
431new file mode 100644
432index 0000000000000000000000000000000000000000..bcfc75867b7e187ce0e4fa7a608773cd0a992f9f
433--- /dev/null
434+++ b/dot_config/nvim/lua/plugins/git.lua
435@@ -0,0 +1,5 @@
436+return {
437+ "lewis6991/gitsigns.nvim",
438+ "sindrets/diffview.nvim",
439+ "tpope/vim-fugitive",
440+}
441diff --git a/dot_config/nvim/lua/plugins/init.lua b/dot_config/nvim/lua/plugins/init.lua
442new file mode 100644
443index 0000000000000000000000000000000000000000..a821b93f118d1eec42cbb36b9a390341592dccfc
444--- /dev/null
445+++ b/dot_config/nvim/lua/plugins/init.lua
446@@ -0,0 +1,34 @@
447+return {
448+ -- Look and feel
449+ {
450+ "ellisonleao/gruvbox.nvim",
451+ priority = 1000 ,
452+ config = true,
453+ },
454+ {
455+ 'akinsho/bufferline.nvim',
456+ version = "*",
457+ dependencies = 'nvim-tree/nvim-web-devicons',
458+ },
459+ "nvim-lualine/lualine.nvim",
460+
461+ -- keymaps and functionality
462+ {
463+ 'windwp/nvim-autopairs',
464+ event = "InsertEnter",
465+ opts = {}
466+ },
467+ "tpope/vim-surround",
468+ "folke/which-key.nvim",
469+ 'andymass/vim-matchup',
470+ 'tpope/vim-repeat',
471+ 'mbbill/undotree',
472+ 'jdhao/whitespace.nvim',
473+ 'lambdalisue/suda.vim',
474+ 'xiyaowong/nvim-cursorword',
475+
476+ -- other
477+ 'ahmedkhalf/project.nvim',
478+ 'folke/neodev.nvim',
479+ 'github/copilot.vim',
480+}
481diff --git a/dot_config/nvim/lua/plugins/lsp.lua b/dot_config/nvim/lua/plugins/lsp.lua
482new file mode 100644
483index 0000000000000000000000000000000000000000..9cfa1e6f8a2419a55e167de1308c0863c1917922
484--- /dev/null
485+++ b/dot_config/nvim/lua/plugins/lsp.lua
486@@ -0,0 +1,10 @@
487+return {
488+ {'williamboman/mason.nvim'},
489+ {'williamboman/mason-lspconfig.nvim'},
490+
491+ {'VonHeikemen/lsp-zero.nvim', branch = 'v3.x'},
492+ {'neovim/nvim-lspconfig'},
493+ {'hrsh7th/cmp-nvim-lsp'},
494+ {'hrsh7th/nvim-cmp'},
495+ {'L3MON4D3/LuaSnip'},
496+}
497diff --git a/dot_config/nvim/lua/plugins/telescope.lua b/dot_config/nvim/lua/plugins/telescope.lua
498new file mode 100644
499index 0000000000000000000000000000000000000000..78791fbd5529ee7af796bb61a7ba74b6a1bfc1cc
500--- /dev/null
501+++ b/dot_config/nvim/lua/plugins/telescope.lua
502@@ -0,0 +1,13 @@
503+return {
504+ {
505+ 'nvim-telescope/telescope.nvim',
506+ branch = '0.1.x',
507+ dependencies = {
508+ 'nvim-lua/plenary.nvim',
509+ {
510+ 'nvim-telescope/telescope-fzf-native.nvim',
511+ build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build',
512+ }
513+ },
514+ },
515+}
516diff --git a/dot_config/nvim/lua/plugins/treesitter.lua b/dot_config/nvim/lua/plugins/treesitter.lua
517new file mode 100644
518index 0000000000000000000000000000000000000000..c9c21276a84115750b9ca85bac6d1ebefe7c9062
519--- /dev/null
520+++ b/dot_config/nvim/lua/plugins/treesitter.lua
521@@ -0,0 +1,57 @@
522+return {
523+ "nvim-treesitter/nvim-treesitter",
524+ version = false,
525+ build = ":TSUpdate",
526+ event = { "BufReadPost", "BufNewFile" },
527+ dependencies = {
528+ {
529+ "nvim-treesitter/nvim-treesitter-textobjects",
530+ init = function()
531+ require("lazy.core.loader").disable_rtp_plugin("nvim-treesitter-textobjects")
532+ load_textobjects = true
533+ end,
534+ },
535+ },
536+ cmd = { "TSUpdateSync" },
537+ keys = {
538+ { "<c-space>", desc = "Increment selection" },
539+ { "<bs>", desc = "Decrement selection", mode = "x" },
540+ },
541+ opts = {
542+ highlight = {
543+ enable = true,
544+ additional_vim_regex_highlighting = false,
545+ },
546+ indent = { enable = true },
547+ auto_install = true,
548+ ensure_installed = {
549+ "bash",
550+ "go",
551+ "javascript",
552+ "json",
553+ "lua",
554+ "luadoc",
555+ "luap",
556+ "markdown",
557+ "markdown_inline",
558+ "python",
559+ "query",
560+ "regex",
561+ "terraform",
562+ "tsx",
563+ "typescript",
564+ "vim",
565+ "vimdoc",
566+ "yaml",
567+ },
568+ incremental_selection = {
569+ enable = true,
570+ keymaps = {
571+ init_selection = "<C-space>",
572+ node_incremental = "<C-space>",
573+ scope_incremental = false,
574+ node_decremental = "<bs>",
575+ },
576+ },
577+ },
578+}
579diff --git a/dot_config/nvim/lua/sets.lua b/dot_config/nvim/lua/sets.lua
580new file mode 100644
581index 0000000000000000000000000000000000000000..92b8adabf0648254d00cb95172b902f205e4561b
582--- /dev/null
583+++ b/dot_config/nvim/lua/sets.lua
584@@ -0,0 +1,37 @@
585+vim.g.mapleader = " "
586+
587+-- sets
588+vim.opt.clipboard = "unnamedplus"
589+vim.opt.nu = true
590+vim.opt.relativenumber = true
591+vim.opt.encoding = "utf8"
592+vim.opt.shell = "/bin/bash"
593+vim.opt.laststatus = 2
594+vim.opt.tabstop = 4
595+vim.opt.shiftwidth = 4
596+vim.opt.softtabstop = 4
597+vim.opt.textwidth = 0
598+vim.opt.background = "dark"
599+vim.opt.listchars = "tab:│ ,trail:~,extends:>,precedes:<"
600+vim.opt.foldenable = false
601+vim.opt.foldmethod = "expr"
602+vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
603+vim.opt.termguicolors = true
604+vim.opt.autochdir = true
605+vim.opt.showcmd = true
606+vim.opt.wrap = true
607+vim.opt.linebreak = true
608+vim.opt.number = true
609+vim.opt.relativenumber = true
610+vim.opt.cursorline = true
611+vim.opt.cursorcolumn = true
612+vim.opt.expandtab = true
613+vim.opt.autoindent = true
614+vim.opt.list = true
615+vim.opt.splitright = true
616+vim.opt.splitbelow = true
617+vim.opt.undofile = true
618+vim.opt.undodir = "/home/pavle/.local/share/nvim/undodir"
619+vim.opt.scrolloff = 8
620+vim.opt.ignorecase = true
621+vim.opt.smartcase = true