From 102f9a5608cbb7b5553cd0d1862b6bd8e40c8075 Mon Sep 17 00:00:00 2001 From: admin Date: Sun, 11 May 2025 00:43:32 +0200 Subject: refractored neovim config --- nvim/init.lua | 388 ++-------------------------------------------------------- 1 file changed, 8 insertions(+), 380 deletions(-) (limited to 'nvim/init.lua') diff --git a/nvim/init.lua b/nvim/init.lua index 343fd4b..7c8b9e2 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -1,382 +1,10 @@ -require("options") -require("codev") -require("plugins") -require("keybindings") -require('lspconfig').marksman.setup{} +-- Load core settings +require('core.options') +require('core.keymaps') +require('core.autocmds') -local harpoon = require("harpoon") -local actions = require "telescope.actions" +-- Load plugins +require('plugins') - - -if vim.g.neovide then - vim.g.neovide_confirm_quit = true - vim.cmd [[ - autocmd VimEnter * cd D:\Optics\CODEV\Designs - " autocmd VimEnter * Oil - ]] -end - - - -local function open_in_external_program(prompt_bufnr) - local entry = require('telescope.actions.state').get_selected_entry() - local file_path = entry.path or entry.filename - if file_path then - os.execute(string.format('start "" "%s"', file_path)) - else - print("No file selected") - end - actions.close(prompt_bufnr) -end - - -require('telescope').setup({ - defaults = { - layout_config = { - vertical = { width = 0.5 } - -- other layout configuration here - }, - mappings = { - n = { - ["q"] = actions.close, - ["o"] = open_in_external_program, - }, - i = { - [""] = actions.close, - [""] = actions.cycle_history_next, - [""] = actions.cycle_history_prev, - [""] = actions.move_selection_next, - [""] = actions.move_selection_previous, - [""] = open_in_external_program, - } - }, - -- other defaults configuration here - }, - pickers = { - live_grep = { - file_ignore_patterns = { 'node_modules', '.git', '.venv' }, - additional_args = function(_) - return { "--hidden" } - end - }, - find_files = { - file_ignore_patterns = { 'node_modules', '.git', '.venv' }, - hidden = true - } - } -}) -require("Comment").setup() - --- REQUIRED -harpoon:setup() --- REQUIRED - -vim.keymap.set("n", "a", function() harpoon:list():add() end) -vim.keymap.set("n", "", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end) - -vim.keymap.set("n", "h", function() harpoon:list():select(1) end) -vim.keymap.set("n", "j", function() harpoon:list():select(2) end) -vim.keymap.set("n", "k", function() harpoon:list():select(3) end) -vim.keymap.set("n", "l", function() harpoon:list():select(4) end) - --- Toggle previous & next buffers stored within Harpoon list -vim.keymap.set("n", "N", function() harpoon:list():prev() end) -vim.keymap.set("n", "P", function() harpoon:list():next() end) - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -require("oil").setup({ - -- Oil will take over directory buffers (e.g. `vim .` or `:e src/`) - -- Set to false if you want some other plugin (e.g. netrw) to open when you edit directories. - default_file_explorer = true, - -- Id is automatically added at the beginning, and name at the end - -- See :help oil-columns - columns = { - "icon", - -- "permissions", - -- "size", - -- "mtime", - }, - -- Buffer-local options to use for oil buffers - buf_options = { - buflisted = false, - bufhidden = "hide", - }, - -- Window-local options to use for oil buffers - win_options = { - wrap = false, - signcolumn = "no", - cursorcolumn = false, - foldcolumn = "0", - spell = false, - list = false, - conceallevel = 3, - concealcursor = "nvic", - }, - -- Send deleted files to the trash instead of permanently deleting them (:help oil-trash) - delete_to_trash = true, - -- Skip the confirmation popup for simple operations (:help oil.skip_confirm_for_simple_edits) - skip_confirm_for_simple_edits = false, - -- Selecting a new/moved/renamed file or directory will prompt you to save changes first - -- (:help prompt_save_on_select_new_entry) - prompt_save_on_select_new_entry = true, - -- Oil will automatically delete hidden buffers after this delay - -- You can set the delay to false to disable cleanup entirely - -- Note that the cleanup process only starts when none of the oil buffers are currently displayed - cleanup_delay_ms = 2000, - lsp_file_methods = { - -- Time to wait for LSP file operations to complete before skipping - timeout_ms = 1000, - -- Set to true to autosave buffers that are updated with LSP willRenameFiles - -- Set to "unmodified" to only save unmodified buffers - autosave_changes = false, - }, - -- Constrain the cursor to the editable parts of the oil buffer - -- Set to `false` to disable, or "name" to keep it on the file names - constrain_cursor = "editable", - -- Set to true to watch the filesystem for changes and reload oil - watch_for_changes = false, - -- Keymaps in oil buffer. Can be any value that `vim.keymap.set` accepts OR a table of keymap - -- options with a `callback` (e.g. { callback = function() ... end, desc = "", mode = "n" }) - -- Additionally, if it is a string that matches "actions.", - -- it will use the mapping at require("oil.actions"). - -- Set to `false` to remove a keymap - -- See :help oil-actions for a list of all available actions - keymaps = { - ["g?"] = "actions.show_help", - [""] = "actions.select", - [""] = { "actions.select", opts = { vertical = true }, desc = "Open the entry in a vertical split" }, - [""] = { "actions.select", opts = { horizontal = true }, desc = "Open the entry in a horizontal split" }, - -- [""] = { "actions.select", opts = { tab = true }, desc = "Open the entry in new tab" }, - [""] = "actions.preview", - [""] = "actions.close", - [""] = "actions.refresh", - ["-"] = "actions.parent", - ["_"] = "actions.open_cwd", - ["`"] = "actions.cd", - ["~"] = { "actions.cd", opts = { scope = "tab" }, desc = ":tcd to the current oil directory" }, - ["gs"] = "actions.change_sort", - [""] = "actions.open_external", - ["g."] = "actions.toggle_hidden", - ["g\\"] = "actions.toggle_trash", - ['yp'] = { - desc = 'Copy filepath to system clipboard', - callback = function () - require('oil.actions').copy_entry_path.callback() - vim.fn.setreg("+", vim.fn.getreg(vim.v.register)) - end, - }, - }, - -- Set to false to disable all of the above keymaps - use_default_keymaps =false, - view_options = { - -- Show files and directories that start with "." - show_hidden = false, - -- This function defines what is considered a "hidden" file - is_hidden_file = function(name, bufnr) - return vim.startswith(name, ".") - end, - -- This function defines what will never be shown, even when `show_hidden` is set - is_always_hidden = function(name, bufnr) - return false - end, - -- Sort file names in a more intuitive order for humans. Is less performant, - -- so you may want to set to false if you work with large directories. - natural_order = true, - -- Sort file and directory names case insensitive - case_insensitive = false, - sort = { - -- sort order can be "asc" or "desc" - -- see :help oil-columns to see which columns are sortable - { "type", "asc" }, - { "name", "asc" }, - }, - }, - -- Extra arguments to pass to SCP when moving/copying files over SSH - extra_scp_args = {}, - -- EXPERIMENTAL support for performing file operations with git - git = { - -- Return true to automatically git add/mv/rm files - add = function(path) - return false - end, - mv = function(src_path, dest_path) - return false - end, - rm = function(path) - return false - end, - }, - -- Configuration for the floating window in oil.open_float - float = { - -- Padding around the floating window - padding = 2, - max_width = 0, - max_height = 0, - border = "rounded", - win_options = { - winblend = 0, - }, - -- preview_split: Split direction: "auto", "left", "right", "above", "below". - preview_split = "auto", - -- This is the config that will be passed to nvim_open_win. - -- Change values here to customize the layout - override = function(conf) - return conf - end, - }, - -- Configuration for the actions floating preview window - preview = { - -- Width dimensions can be integers or a float between 0 and 1 (e.g. 0.4 for 40%) - -- min_width and max_width can be a single value or a list of mixed integer/float types. - -- max_width = {100, 0.8} means "the lesser of 100 columns or 80% of total" - max_width = 0.9, - -- min_width = {40, 0.4} means "the greater of 40 columns or 40% of total" - min_width = { 40, 0.4 }, - -- optionally define an integer/float for the exact width of the preview window - width = nil, - -- Height dimensions can be integers or a float between 0 and 1 (e.g. 0.4 for 40%) - -- min_height and max_height can be a single value or a list of mixed integer/float types. - -- max_height = {80, 0.9} means "the lesser of 80 columns or 90% of total" - max_height = 0.9, - -- min_height = {5, 0.1} means "the greater of 5 columns or 10% of total" - min_height = { 5, 0.1 }, - -- optionally define an integer/float for the exact height of the preview window - height = nil, - border = "rounded", - win_options = { - winblend = 0, - }, - -- Whether the preview window is automatically updated when the cursor is moved - update_on_cursor_moved = true, - }, - -- Configuration for the floating progress window - progress = { - max_width = 0.9, - min_width = { 40, 0.4 }, - width = nil, - max_height = { 10, 0.9 }, - min_height = { 5, 0.1 }, - height = nil, - border = "rounded", - minimized_border = "none", - win_options = { - winblend = 0, - }, - }, - -- Configuration for the floating SSH window - ssh = { - border = "rounded", - }, - -- Configuration for the floating keymaps help window - keymaps_help = { - border = "rounded", - }, -}) - - --- Load toggleterm if not loaded --- require('toggleterm').setup{} - --- Close the terminal with Ctrl+q and Ctrl+d in terminal mode -function _G.set_terminal_keymaps() - local opts = { noremap = true, silent = true } - vim.api.nvim_buf_set_keymap(0, 't', '', [[ToggleTerm]], opts) - vim.api.nvim_buf_set_keymap(0, 't', '', [[ToggleTerm]], opts) - -- vim.api.nvim_buf_set_keymap(0, 'n', '', [[ToggleTerm]], opts) - -- vim.api.nvim_buf_set_keymap(0, 't', 'jk','',opts) - -- vim.api.nvim_buf_del_keymap(0, 'i', "jk") - -- vim.api.nvim_buf_set_keymap(0, 'i', 'k', '', opts) -end -require("toggleterm").setup({ - -- open_mapping = [[]], -- Example keybinding, adjust as needed - direction = "float", -- or "horizontal" / "vertical" / "tab" - -- set_terminal_keymaps(), - -- on_open = function(term) - -- vim.cmd("startinsert") -- Always enter insert mode when terminal opens - -- end, - -- on_focus = function(term) - -- vim.cmd("startinsert") -- Enter insert mode when terminal gains focus - -- end, - -- on_close = function(term) - -- vim.cmd("stopinsert") -- Stop insert mode when terminal closes - -- end, - start_in_insert=true, - -- persist_mode = true, -}) - --- Set the keymaps when a terminal is opened --- vim.cmd('autocmd! TermOpen term://* lua set_terminal_keymaps()') --- Automatically enter insert mode when ToggleTerm is opened --- vim.api.nvim_create_autocmd("TermOpen", { --- pattern = "term://*", --- callback = function() --- vim.cmd(":startinsert") --- -- set_terminal_keymaps() --- end, --- }) - -vim.api.nvim_create_autocmd({ "TermOpen", "BufEnter" }, { - -- pattern = { "*" }, - callback = function() - if vim.opt.buftype:get() == "terminal" then - vim.cmd("startinsert") - -- vim.cmd("shfdstartinsert") - set_terminal_keymaps() - end - end -}) - - --- Add this after your lsp-zero configuration -vim.diagnostic.config({ - virtual_text = { - prefix = '●', -- Could be '■', '▎', 'x' - source = "if_many" - }, - float = { - -- source = "always", - border = "rounded", - header = "", - prefix = "", - }, - signs = true, - underline = true, - update_in_insert = false, - severity_sort = true, -}) - --- Add keyboard shortcuts to see full error messages -vim.keymap.set('n', 'e', vim.diagnostic.open_float, { noremap=true, silent=true }) +-- Load plugin configurations +require('configs') -- cgit v1.2.3