Initial configuration
This commit is contained in:
		
							parent
							
								
									7af594fd31
								
							
						
					
					
						commit
						d5ccc42377
					
				
							
								
								
									
										320
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										320
									
								
								init.lua
								
								
								
								
							|  | @ -69,6 +69,8 @@ vim.opt.rtp:prepend(lazypath) | |||
| require('lazy').setup({ | ||||
|   -- NOTE: First, some plugins that don't require any configuration | ||||
| 
 | ||||
|   { 'echasnovski/mini.animate', version = false }, | ||||
| 
 | ||||
|   -- Git related plugins | ||||
|   'tpope/vim-fugitive', | ||||
|   'tpope/vim-rhubarb', | ||||
|  | @ -200,6 +202,300 @@ require('lazy').setup({ | |||
|     }, | ||||
|   }, | ||||
| 
 | ||||
|   { | ||||
|     "nvim-neo-tree/neo-tree.nvim", | ||||
|     branch = "v3.x", | ||||
|     dependencies = { | ||||
|       "nvim-lua/plenary.nvim", | ||||
|       "nvim-tree/nvim-web-devicons", | ||||
|       "MunifTanjim/nui.nvim", | ||||
|       }, | ||||
|       config = function () | ||||
|         -- If you want icons for diagnostic errors, you'll need to define them somewhere: | ||||
|         vim.fn.sign_define("DiagnosticSignError", | ||||
|           {text = " ", texthl = "DiagnosticSignError"}) | ||||
|         vim.fn.sign_define("DiagnosticSignWarn", | ||||
|           {text = " ", texthl = "DiagnosticSignWarn"}) | ||||
|         vim.fn.sign_define("DiagnosticSignInfo", | ||||
|           {text = " ", texthl = "DiagnosticSignInfo"}) | ||||
|         vim.fn.sign_define("DiagnosticSignHint", | ||||
|           {text = "", texthl = "DiagnosticSignHint"}) | ||||
| 
 | ||||
|         require("neo-tree").setup({ | ||||
|           close_if_last_window = false, -- Close Neo-tree if it is the last window left in the tab | ||||
|           popup_border_style = "rounded", | ||||
|           enable_git_status = true, | ||||
|           enable_diagnostics = true, | ||||
|           enable_normal_mode_for_inputs = false, -- Enable normal mode for input dialogs. | ||||
|           open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes | ||||
|           sort_case_insensitive = false, -- used when sorting files and directories in the tree | ||||
|           sort_function = nil , -- use a custom function for sorting files and directories in the tree  | ||||
|           -- sort_function = function (a,b) | ||||
|           --       if a.type == b.type then | ||||
|           --           return a.path > b.path | ||||
|           --       else | ||||
|           --           return a.type > b.type | ||||
|           --       end | ||||
|           --   end , -- this sorts files and directories descendantly | ||||
|           default_component_configs = { | ||||
|             container = { | ||||
|               enable_character_fade = true | ||||
|             }, | ||||
|             indent = { | ||||
|               indent_size = 2, | ||||
|               padding = 1, -- extra padding on left hand side | ||||
|               -- indent guides | ||||
|               with_markers = true, | ||||
|               indent_marker = "│", | ||||
|               last_indent_marker = "└", | ||||
|               highlight = "NeoTreeIndentMarker", | ||||
|               -- expander config, needed for nesting files | ||||
|               with_expanders = nil, -- if nil and file nesting is enabled, will enable expanders | ||||
|               expander_collapsed = "", | ||||
|               expander_expanded = "", | ||||
|               expander_highlight = "NeoTreeExpander", | ||||
|             }, | ||||
|             icon = { | ||||
|               folder_closed = "", | ||||
|               folder_open = "", | ||||
|               folder_empty = "", | ||||
|               -- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there | ||||
|               -- then these will never be used. | ||||
|               default = "*", | ||||
|               highlight = "NeoTreeFileIcon" | ||||
|             }, | ||||
|             modified = { | ||||
|               symbol = "[+]", | ||||
|               highlight = "NeoTreeModified", | ||||
|             }, | ||||
|             name = { | ||||
|               trailing_slash = false, | ||||
|               use_git_status_colors = true, | ||||
|               highlight = "NeoTreeFileName", | ||||
|             }, | ||||
|             git_status = { | ||||
|               symbols = { | ||||
|                 -- Change type | ||||
|                 added     = "", -- or "✚", but this is redundant info if you use git_status_colors on the name | ||||
|                 modified  = "", -- or "", but this is redundant info if you use git_status_colors on the name | ||||
|                 deleted   = "✖",-- this can only be used in the git_status source | ||||
|                 renamed   = "",-- this can only be used in the git_status source | ||||
|                 -- Status type | ||||
|                 untracked = "", | ||||
|                 ignored   = "", | ||||
|                 unstaged  = "", | ||||
|                 staged    = "", | ||||
|                 conflict  = "", | ||||
|               } | ||||
|             }, | ||||
|             -- If you don't want to use these columns, you can set `enabled = false` for each of them individually | ||||
|             file_size = { | ||||
|               enabled = true, | ||||
|               required_width = 64, -- min width of window required to show this column | ||||
|             }, | ||||
|             type = { | ||||
|               enabled = true, | ||||
|               required_width = 122, -- min width of window required to show this column | ||||
|             }, | ||||
|             last_modified = { | ||||
|               enabled = true, | ||||
|               required_width = 88, -- min width of window required to show this column | ||||
|             }, | ||||
|             created = { | ||||
|               enabled = true, | ||||
|               required_width = 110, -- min width of window required to show this column | ||||
|             }, | ||||
|             symlink_target = { | ||||
|               enabled = false, | ||||
|             }, | ||||
|           }, | ||||
|           -- A list of functions, each representing a global custom command | ||||
|           -- that will be available in all sources (if not overridden in `opts[source_name].commands`) | ||||
|           -- see `:h neo-tree-custom-commands-global` | ||||
|           commands = {}, | ||||
|           window = { | ||||
|             position = "left", | ||||
|             width = 40, | ||||
|             mapping_options = { | ||||
|               noremap = true, | ||||
|               nowait = true, | ||||
|             }, | ||||
|             mappings = { | ||||
|               ["<space>"] = { | ||||
|                   "toggle_node", | ||||
|                   nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use  | ||||
|               }, | ||||
|               ["<2-LeftMouse>"] = "open", | ||||
|               ["o"] = "open", | ||||
|               ["O"] = "help", | ||||
|               ["<esc>"] = "cancel", -- close preview or floating neo-tree window | ||||
|               ["P"] = { "toggle_preview", config = { use_float = true, use_image_nvim = true } }, | ||||
|               -- Read `# Preview Mode` for more information | ||||
|               ["l"] = "focus_preview", | ||||
|               ["S"] = "open_split", | ||||
|               ["s"] = "open_vsplit", | ||||
|               -- ["S"] = "split_with_window_picker", | ||||
|               -- ["s"] = "vsplit_with_window_picker", | ||||
|               ["t"] = "open_tabnew", | ||||
|               -- ["<cr>"] = "open_drop", | ||||
|               -- ["t"] = "open_tab_drop", | ||||
|               ["w"] = "open_with_window_picker", | ||||
|               --["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing | ||||
|               ["C"] = "close_node", | ||||
|               -- ['C'] = 'close_all_subnodes', | ||||
|               ["z"] = "close_all_nodes", | ||||
|               --["Z"] = "expand_all_nodes", | ||||
|               ["a"] = { | ||||
|                 "add", | ||||
|                 -- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details | ||||
|                 -- some commands may take optional config options, see `:h neo-tree-mappings` for details | ||||
|                 config = { | ||||
|                   show_path = "none" -- "none", "relative", "absolute" | ||||
|                 } | ||||
|               }, | ||||
|               ["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion. | ||||
|               ["d"] = "delete", | ||||
|               ["r"] = "rename", | ||||
|               ["y"] = "copy_to_clipboard", | ||||
|               ["x"] = "cut_to_clipboard", | ||||
|               ["p"] = "paste_from_clipboard", | ||||
|               ["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add": | ||||
|               -- ["c"] = { | ||||
|               --  "copy", | ||||
|               --  config = { | ||||
|               --    show_path = "none" -- "none", "relative", "absolute" | ||||
|               --  } | ||||
|               --} | ||||
|               ["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add". | ||||
|               ["q"] = "close_window", | ||||
|               ["R"] = "refresh", | ||||
|               ["?"] = "show_help", | ||||
|               ["<"] = "prev_source", | ||||
|               [">"] = "next_source", | ||||
|               ["i"] = "show_file_details", | ||||
|             } | ||||
|           }, | ||||
|           nesting_rules = {}, | ||||
|           filesystem = { | ||||
|             filtered_items = { | ||||
|               visible = false, -- when true, they will just be displayed differently than normal items | ||||
|               hide_dotfiles = true, | ||||
|               hide_gitignored = true, | ||||
|               hide_hidden = true, -- only works on Windows for hidden files/directories | ||||
|               hide_by_name = { | ||||
|                 --"node_modules" | ||||
|               }, | ||||
|               hide_by_pattern = { -- uses glob style patterns | ||||
|                 --"*.meta", | ||||
|                 --"*/src/*/tsconfig.json", | ||||
|               }, | ||||
|               always_show = { -- remains visible even if other settings would normally hide it | ||||
|                 --".gitignored", | ||||
|               }, | ||||
|               never_show = { -- remains hidden even if visible is toggled to true, this overrides always_show | ||||
|                 --".DS_Store", | ||||
|                 --"thumbs.db" | ||||
|               }, | ||||
|               never_show_by_pattern = { -- uses glob style patterns | ||||
|                 --".null-ls_*", | ||||
|               }, | ||||
|             }, | ||||
|             follow_current_file = { | ||||
|               enabled = false, -- This will find and focus the file in the active buffer every time | ||||
|               --               -- the current file is changed while the tree is open. | ||||
|               leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal` | ||||
|             }, | ||||
|             group_empty_dirs = false, -- when true, empty folders will be grouped together | ||||
|             hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree | ||||
|                                                     -- in whatever position is specified in window.position | ||||
|                                   -- "open_current",  -- netrw disabled, opening a directory opens within the | ||||
|                                                     -- window like netrw would, regardless of window.position | ||||
|                                   -- "disabled",    -- netrw left alone, neo-tree does not handle opening dirs | ||||
|             use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes | ||||
|                                             -- instead of relying on nvim autocmd events. | ||||
|             window = { | ||||
|               mappings = { | ||||
|                 ["<bs>"] = "navigate_up", | ||||
|                 ["."] = "set_root", | ||||
|                 ["H"] = "toggle_hidden", | ||||
|                 ["/"] = "fuzzy_finder", | ||||
|                 ["D"] = "fuzzy_finder_directory", | ||||
|                 ["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm | ||||
|                 -- ["D"] = "fuzzy_sorter_directory", | ||||
|                 ["f"] = "filter_on_submit", | ||||
|                 ["<c-x>"] = "clear_filter", | ||||
|                 ["[g"] = "prev_git_modified", | ||||
|                 ["]g"] = "next_git_modified", | ||||
|                 ["o"] = { "open" , nowait = true }, | ||||
|                 ["O"] = { "show_help", nowait = false }, | ||||
|                 ["oc"] = { "order_by_created", nowait = false }, | ||||
|                 ["od"] = { "order_by_diagnostics", nowait = false }, | ||||
|                 ["og"] = { "order_by_git_status", nowait = false }, | ||||
|                 ["om"] = { "order_by_modified", nowait = false }, | ||||
|                 ["on"] = { "order_by_name", nowait = false }, | ||||
|                 ["os"] = { "order_by_size", nowait = false }, | ||||
|                 ["ot"] = { "order_by_type", nowait = false }, | ||||
|               }, | ||||
|               fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode | ||||
|                 ["<down>"] = "move_cursor_down", | ||||
|                 ["<C-n>"] = "move_cursor_down", | ||||
|                 ["<up>"] = "move_cursor_up", | ||||
|                 ["<C-p>"] = "move_cursor_up", | ||||
|               }, | ||||
|             }, | ||||
| 
 | ||||
|             commands = {} -- Add a custom command or override a global one using the same function name | ||||
|           }, | ||||
|           buffers = { | ||||
|             follow_current_file = { | ||||
|               enabled = true, -- This will find and focus the file in the active buffer every time | ||||
|               --              -- the current file is changed while the tree is open. | ||||
|               leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal` | ||||
|             }, | ||||
|             group_empty_dirs = true, -- when true, empty folders will be grouped together | ||||
|             show_unloaded = true, | ||||
|             window = { | ||||
|               mappings = { | ||||
|                 ["bd"] = "buffer_delete", | ||||
|                 ["<bs>"] = "navigate_up", | ||||
|                 ["."] = "set_root", | ||||
|                 ["O"] = { "show_help", nowait=false, config = { title = "Order by", prefix_key = "o" }}, | ||||
|                 ["oc"] = { "order_by_created", nowait = false }, | ||||
|                 ["od"] = { "order_by_diagnostics", nowait = false }, | ||||
|                 ["om"] = { "order_by_modified", nowait = false }, | ||||
|                 ["on"] = { "order_by_name", nowait = false }, | ||||
|                 ["os"] = { "order_by_size", nowait = false }, | ||||
|                 ["ot"] = { "order_by_type", nowait = false }, | ||||
|               } | ||||
|             }, | ||||
|           }, | ||||
|           git_status = { | ||||
|             window = { | ||||
|               position = "float", | ||||
|               mappings = { | ||||
|                 ["A"]  = "git_add_all", | ||||
|                 ["gu"] = "git_unstage_file", | ||||
|                 ["ga"] = "git_add_file", | ||||
|                 ["gr"] = "git_revert_file", | ||||
|                 ["gc"] = "git_commit", | ||||
|                 ["gp"] = "git_push", | ||||
|                 ["gg"] = "git_commit_and_push", | ||||
|                 ["o"] = { "show_help", nowait=false, config = { title = "Order by", prefix_key = "o" }}, | ||||
|                 ["oc"] = { "order_by_created", nowait = false }, | ||||
|                 ["od"] = { "order_by_diagnostics", nowait = false }, | ||||
|                 ["om"] = { "order_by_modified", nowait = false }, | ||||
|                 ["on"] = { "order_by_name", nowait = false }, | ||||
|                 ["os"] = { "order_by_size", nowait = false }, | ||||
|                 ["ot"] = { "order_by_type", nowait = false }, | ||||
|               } | ||||
|             } | ||||
|           } | ||||
|         }) | ||||
| 
 | ||||
|       vim.cmd([[nnoremap <leader>o :Neotree reveal<cr>]]) | ||||
|     end | ||||
|   }, | ||||
| 
 | ||||
|   { | ||||
|     -- Theme inspired by Atom | ||||
|     'navarasu/onedark.nvim', | ||||
|  | @ -285,10 +581,17 @@ require('lazy').setup({ | |||
|   -- { import = 'custom.plugins' }, | ||||
| }, {}) | ||||
| 
 | ||||
| require('mini.animate').setup() | ||||
| 
 | ||||
| -- [[ Setting options ]] | ||||
| -- See `:help vim.o` | ||||
| -- NOTE: You can change these options as you wish! | ||||
| 
 | ||||
| vim.o.tabstop = 4 | ||||
| vim.o.softtabstop = 4 | ||||
| vim.o.shiftwidth = 4 | ||||
| vim.o.scrolloff = 8 | ||||
| 
 | ||||
| -- Set highlight on search | ||||
| vim.o.hlsearch = false | ||||
| 
 | ||||
|  | @ -326,8 +629,6 @@ vim.o.completeopt = 'menuone,noselect' | |||
| -- NOTE: You should make sure your terminal supports this | ||||
| vim.o.termguicolors = true | ||||
| 
 | ||||
| -- [[ Basic Keymaps ]] | ||||
| 
 | ||||
| -- Keymaps for better default experience | ||||
| -- See `:help vim.keymap.set()` | ||||
| vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true }) | ||||
|  | @ -339,9 +640,20 @@ vim.keymap.set('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = tr | |||
| -- Diagnostic keymaps | ||||
| vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) | ||||
| vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) | ||||
| vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) | ||||
| vim.keymap.set('n', '<leader>ce', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) | ||||
| vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) | ||||
| 
 | ||||
| vim.keymap.set('n', '<leader>w', ':write<cr>') | ||||
| vim.keymap.set('n', '<leader>q', ':quit<cr>') | ||||
| 
 | ||||
| vim.keymap.set('n', '<C-h>', ':wincmd h<cr>') | ||||
| vim.keymap.set('n', '<C-j>', ':wincmd j<cr>') | ||||
| vim.keymap.set('n', '<C-k>', ':wincmd k<cr>') | ||||
| vim.keymap.set('n', '<C-l>', ':wincmd l<cr>') | ||||
| 
 | ||||
| vim.keymap.set('n' , '<leader>o', ':Neotree focus<cr>') | ||||
| vim.keymap.set('n' , '<leader>e', ':Neotree toggle<cr>') | ||||
| 
 | ||||
| -- [[ Highlight on yank ]] | ||||
| -- See `:help vim.highlight.on_yank()` | ||||
| local highlight_group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }) | ||||
|  | @ -439,7 +751,7 @@ vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = | |||
| vim.defer_fn(function() | ||||
|   require('nvim-treesitter.configs').setup { | ||||
|     -- Add languages to be installed here that you want installed for treesitter | ||||
|     ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash' }, | ||||
|     ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash', 'go' }, | ||||
| 
 | ||||
|     -- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!) | ||||
|     auto_install = false, | ||||
|  |  | |||
|  | @ -0,0 +1,32 @@ | |||
| { | ||||
|   "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" }, | ||||
|   "LuaSnip": { "branch": "master", "commit": "f3b3d3446bcbfa62d638b1903ff00a78b2b730a1" }, | ||||
|   "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, | ||||
|   "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" }, | ||||
|   "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" }, | ||||
|   "fidget.nvim": { "branch": "main", "commit": "60404ba67044c6ab01894dd5bf77bd64ea5e09aa" }, | ||||
|   "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" }, | ||||
|   "gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" }, | ||||
|   "indent-blankline.nvim": { "branch": "master", "commit": "821a7acd88587d966f7e464b0b3031dfe7f5680c" }, | ||||
|   "lazy.nvim": { "branch": "main", "commit": "28126922c9b54e35a192ac415788f202c3944c9f" }, | ||||
|   "lualine.nvim": { "branch": "master", "commit": "7d131a8d3ba5016229e8a1d08bf8782acea98852" }, | ||||
|   "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" }, | ||||
|   "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" }, | ||||
|   "mini.animate": { "branch": "main", "commit": "82519630b2760ffc516ebc387bef632f9c07b9f5" }, | ||||
|   "neo-tree.nvim": { "branch": "v3.x", "commit": "f3941c57ec85d7bdb44fa53fd858fd80f159018f" }, | ||||
|   "neodev.nvim": { "branch": "main", "commit": "3157f2e876fd6223d36cfa76bee4709247d62fa5" }, | ||||
|   "nui.nvim": { "branch": "main", "commit": "c3c7fd618dcb5a89e443a2e1033e7d11fdb0596b" }, | ||||
|   "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" }, | ||||
|   "nvim-lspconfig": { "branch": "master", "commit": "ec7d51a619049c7c597f469f81ea199db6794651" }, | ||||
|   "nvim-treesitter": { "branch": "master", "commit": "6e2b56cbe75ddf18e6efecee44bc3936d70b0b3e" }, | ||||
|   "nvim-treesitter-textobjects": { "branch": "master", "commit": "7f00d94543f1fd37cab2afa2e9a6cd54e1c6b9ef" }, | ||||
|   "nvim-web-devicons": { "branch": "master", "commit": "0bb67ef952ea3eb7b1bac9c011281471d99a27bc" }, | ||||
|   "onedark.nvim": { "branch": "master", "commit": "1230aaf2a427b2c5b73aba6e4a9a5881d3e69429" }, | ||||
|   "plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" }, | ||||
|   "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" }, | ||||
|   "telescope.nvim": { "branch": "0.1.x", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" }, | ||||
|   "vim-fugitive": { "branch": "master", "commit": "2e88f14a585c014691904ba8fe39e6ea851c9422" }, | ||||
|   "vim-rhubarb": { "branch": "master", "commit": "ee69335de176d9325267b0fd2597a22901d927b1" }, | ||||
|   "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" }, | ||||
|   "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" } | ||||
| } | ||||
		Loading…
	
		Reference in New Issue