From f2115e20e01a5a364a41717bc8eba2dab56b4100 Mon Sep 17 00:00:00 2001 From: Kontrol Date: Fri, 12 Jun 2026 02:07:33 -0300 Subject: [PATCH] init --- init.lua | 146 ++++++++++------------------- lua/custom/plugins/init.lua | 9 +- lua/kickstart/plugins/neo-tree.lua | 142 +++++++++++++++++++++++++--- 3 files changed, 177 insertions(+), 120 deletions(-) diff --git a/init.lua b/init.lua index aff5250e..d7fa9e60 100644 --- a/init.lua +++ b/init.lua @@ -1,89 +1,3 @@ ---[[ - -===================================================================== -==================== READ THIS BEFORE CONTINUING ==================== -===================================================================== -======== .-----. ======== -======== .----------------------. | === | ======== -======== |.-""""""""""""""""""-.| |-----| ======== -======== || || | === | ======== -======== || KICKSTART.NVIM || |-----| ======== -======== || || | === | ======== -======== || || |-----| ======== -======== ||:Tutor || |:::::| ======== -======== |'-..................-'| |____o| ======== -======== `"")----------------(""` ___________ ======== -======== /::::::::::| |::::::::::\ \ no mouse \ ======== -======== /:::========| |==hjkl==:::\ \ required \ ======== -======== '""""""""""""' '""""""""""""' '""""""""""' ======== -======== ======== -===================================================================== -===================================================================== - -What is Kickstart? - - Kickstart.nvim is *not* a distribution. - - Kickstart.nvim is a starting point for your own configuration. - The goal is that you can read every line of code, top-to-bottom, understand - what your configuration is doing, and modify it to suit your needs. - - Once you've done that, you can start exploring, configuring and tinkering to - make Neovim your own! That might mean leaving Kickstart just the way it is for a while - or immediately breaking it into modular pieces. It's up to you! - - If you don't know anything about Lua, I recommend taking some time to read through - a guide. One possible example which will only take 10-15 minutes: - - https://learnxinyminutes.com/docs/lua/ - - After understanding a bit more about Lua, you can use `:help lua-guide` as a - reference for how Neovim integrates Lua. - - :help lua-guide - - (or HTML version): https://neovim.io/doc/user/lua-guide.html - -Kickstart Guide: - - TODO: The very first thing you should do is to run the command `:Tutor` in Neovim. - - If you don't know what this means, type the following: - - - - : - - Tutor - - - - (If you already know the Neovim basics, you can skip this step.) - - Once you've completed that, you can continue working through **AND READING** the rest - of the kickstart init.lua. - - Next, run AND READ `:help`. - This will open up a help window with some basic information - about reading, navigating and searching the builtin help documentation. - - This should be the first place you go to look when you're stuck or confused - with something. It's one of my favorite Neovim features. - - MOST IMPORTANTLY, we provide a keymap "sh" to [s]earch the [h]elp documentation, - which is very useful when you're not exactly sure of what you're looking for. - - I have left several `:help X` comments throughout the init.lua - These are hints about where to find more information about the relevant settings, - plugins or Neovim features used in Kickstart. - - NOTE: Look for lines like this - - Throughout the file. These are for you, the reader, to help you understand what is happening. - Feel free to delete them once you know what you're doing, but they should serve as a guide - for when you are first encountering a few different constructs in your Neovim config. - -If you experience any errors while trying to install kickstart, run `:checkhealth` for more info. - -I hope you enjoy your Neovim journey, -- TJ - -P.S. You can delete this when you're done too. It's your config now! :) ---]] - -- ============================================================ -- SECTION 1: OPTIONS -- Core Neovim settings, leaders, options, basic keymaps, basic autocmds @@ -186,7 +100,7 @@ do vim.keymap.set('n', '', 'nohlsearch') -- Diagnostic Config & Keymaps - -- See `:help vim.diagnostic.Opts` + -- See :help vim.diagnostic.Opts vim.diagnostic.config { update_in_insert = false, severity_sort = true, @@ -471,7 +385,7 @@ do -- a corresponding preview of the help. -- -- Two important keymaps to use while in Telescope are: - -- - Insert mode: + -- - Insert mode: \ -- - Normal mode: ? -- -- This opens a window that shows you all of the keymaps for the current @@ -519,7 +433,7 @@ do vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' }) vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' }) vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' }) - vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' }) + vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files (".") for repeat)' }) vim.keymap.set('n', 'sc', builtin.commands, { desc = '[S]earch [C]ommands' }) vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' }) @@ -851,7 +765,7 @@ do -- : Hide menu -- : Toggle signature help -- - -- See `:help blink-cmp-config-keymap` for defining your own keymap + -- See :h blink-cmp-config-keymap for defining your own keymap preset = 'default', -- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see: @@ -882,7 +796,7 @@ do -- By default, we use the Lua implementation instead, but you may enable -- the rust implementation via `'prefer_rust_with_warning'` -- - -- See `:help blink-cmp-config-fuzzy` for more information + -- See :h blink-cmp-config-fuzzy for more information fuzzy = { implementation = 'lua' }, -- Shows a signature help window while you type arguments for a function @@ -967,17 +881,55 @@ do -- Uncomment any of the lines below to enable them (you will need to restart nvim). -- -- require 'kickstart.plugins.debug' - -- require 'kickstart.plugins.indent_line' - -- require 'kickstart.plugins.lint' - -- require 'kickstart.plugins.autopairs' - -- require 'kickstart.plugins.neo-tree' - -- require 'kickstart.plugins.gitsigns' -- adds gitsigns recommended keymaps + --require 'kickstart.plugins.indent_line' + --require 'kickstart.plugins.lint' + --require 'kickstart.plugins.autopairs' + --require 'kickstart.plugins.neo-tree' + --require 'kickstart.plugins.gitsigns' -- adds gitsigns recommended keymaps -- NOTE: You can add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` -- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going. - -- require 'custom.plugins' + --require 'custom.plugins' end -- The line beneath this is called `modeline`. See `:help modeline` -- vim: ts=2 sts=2 sw=2 et + +-- [[ Custom Keymaps ]] +-- Page up/down scrolling +vim.keymap.set( + 'n', + '', + function() vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('', true, true, true), 'n', true) end, + { desc = 'Page Up' } +) + +vim.keymap.set( + 'n', + '', + function() vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes('', true, true, true), 'n', true) end, + { desc = 'Page Down' } +) + +-- Save current file with Ctrl+S in insert and normal mode +vim.api.nvim_set_keymap('i', '', ':wa', { noremap = true, silent = true }) +vim.api.nvim_set_keymap('n', '', ':w', { noremap = true, silent = true }) + +-- Custom highlight groups for better syntax highlighting +vim.api.nvim_set_hl(0, '@function', { fg = '#EBCB8B', bold = true }) +vim.api.nvim_set_hl(0, '@function.builtin', { fg = '#EBCB8B' }) +vim.api.nvim_set_hl(0, '@method', { fg = '#EBCB8B' }) +vim.api.nvim_set_hl(0, '@type', { fg = '#82AAFF', italic = true }) + +-- Enable bicep LSP with specific configuration +vim.filetype.add { extension = { bicep = 'bicep', bicepparam = 'bicepparam' } } + +pcall(vim.treesitter.language.register, 'bicep', 'bicepparam') + +vim.lsp.config('bicep', { + cmd = { vim.fn.expand '~/.local/share/nvim/mason/bin/bicep-lsp' }, + filetypes = { 'bicep', 'bicep-params' }, + root_markers = { '.git', 'bicepconfig.json' }, + workspace_required = false, +}) diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index 01e91722..38b3cb0a 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -3,11 +3,4 @@ -- -- See the kickstart.nvim README for more information --- Iterate over all Lua files in the plugins directory and load them -local plugins_dir = vim.fs.joinpath(vim.fn.stdpath 'config', 'lua', 'custom', 'plugins') -for file_name, type in vim.fs.dir(plugins_dir, { follow = true }) do - if (type == 'file' or type == 'link') and file_name:match '%.lua$' and file_name ~= 'init.lua' then - local module = file_name:gsub('%.lua$', '') - require('custom.plugins.' .. module) - end -end +return {} \ No newline at end of file diff --git a/lua/kickstart/plugins/neo-tree.lua b/lua/kickstart/plugins/neo-tree.lua index 549629ae..2096218f 100644 --- a/lua/kickstart/plugins/neo-tree.lua +++ b/lua/kickstart/plugins/neo-tree.lua @@ -1,20 +1,132 @@ -- Neo-tree is a Neovim plugin to browse the file system -- https://github.com/nvim-neo-tree/neo-tree.nvim -vim.pack.add { - { src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', version = vim.version.range '*' }, - 'https://github.com/nvim-lua/plenary.nvim', - 'https://github.com/MunifTanjim/nui.nvim', -} - -vim.keymap.set('n', '\\', 'Neotree reveal', { desc = 'NeoTree reveal', silent = true }) - -require('neo-tree').setup { - filesystem = { - window = { - mappings = { - ['\\'] = 'close_window', - }, - }, +local neo_tree_spec = { + src = 'https://github.com/nvim-neo-tree/neo-tree.nvim', + version = vim.version.range '*', + dependencies = { + 'nvim-lua/plenary.nvim', + 'MunifTanjim/nui.nvim', }, } + +vim.pack.add(neo_tree_spec) + +require('neo-tree').setup { + -- Show file explorer by default on NeoTree open + default_file_explorer = true, + + -- Components which are displayed in the neo-tree window + components = { + 'file_icons', -- File icons + 'filename', -- File names + 'modified', -- Modified file indicators + 'git_status', -- Git status (when available via gitsigns) + 'group_empty', -- Empty folder markers + 'buffers_indicator' -- Buffer indicator icons + }, + + window = { + position = 'left', -- Position: left | right | bottom | top + width = 35, -- Width of the neo-tree window + close_if_last_window = true, -- Close neo-tree if it's the only window + float = { + enabled = true, -- Enable floating windows (for file creation) + padding = 2, -- Padding around floating windows + border = 'single', -- Border style + position = '50%', -- Position: 50% center + size = { + width = '50%', -- Width percentage of floating window + height = '80%' -- Height percentage of floating window + } + }, + }, + + -- Configuration for filesystem source (files, folders) + filesystem = { + filtered_items = { + visibility = 'all', -- Show: all | visible_filtered | filtered + hide_dotfiles = false, -- Hide files starting with . + hide_gitignored = false, -- Hide git-ignored files + always_show_path = true, -- Always show file paths in the tree view + always_show_root = true -- Always show root directory when entering it + }, + + default_component_config = { + indent_markers = { + enable = true, + highlight_groups = { + folder_open = function(_, item_data) + local group_name = 'NeoTreeIndentMarker' + if item_data.item.type == 'directory' then + return group_name .. '.open' + end + return group_name .. '.closed' + end, + folder_closed = function(_, item_data) + local group_name = 'NeoTreeIndentMarker' + if item_data.item.type == 'directory' then + return group_name .. '.closed' + end + return group_name .. '.open' + end, + default = 'NeoTreeIndentMarker' + }, + }, + icons = { + folder_open = '', + folder_closed = '', + default = '', -- empty string for non-folder items + git = { + modified = '↗︎', -- Git modified file icon + unstaged = '✗', -- Git unstaged changes + staged = '↙︎', -- Git staged changes + ignored = '↖︎' -- Git ignored file + } + }, + indent_guides = true, -- Show indentation guides for tree structure + }, + + use_default_document_colors = false, + auto_clean_after_buffer_close = true, -- Automatically clean up after closing files + }, + + buffers = { + show_unloaded = true, -- Show unloaded buffers in the tree + mapped_names = true, -- Use mapped names for buffer icons/names + get_buffer_icon = function(buffer) + if vim.bo[buffer].modified then return '✹' end + if vim.bo[buffer].readonly then return '📖' end + if vim.bo[buffer].filetype == 'NERDTree' then return '' end + return '' + end, + get_buffer_name = function(buffer) + local bufname = vim.api.nvim_buf_get_name(buffer) + -- Get short path by removing prefix up to first slash + if bufname:find('/') then + return bufname:gsub('.*(%p)[^-]*-', '') + end + return bufname + end, + }, + + git_status = { + use_icons_for_git_status = true, + icons = { + unstaged_changes = { symbol = '✗', color = 'red' }, + staged_changes = { symbol = '↙︎', color = 'green' }, + ignored_files = { symbol = '↖︎', color = 'gray' } + }, + file_icons = { + modified = 'M', + added = '+', + deleted = 'D', + ignored = 'i' + } + } +} + +-- Add convenient mappings for neo-tree using which-key +vim.keymap.set('n', 'ff', ':Neotree filesystem toggle', { desc = 'Toggle file explorer' }) +vim.keymap.set('n', 'fb', ':Neotree buffers toggle', { desc = 'Toggle buffer explorer' }) +vim.keymap.set('n', 'fF', ':Neotree float open', { desc = 'Open floating window' })