summaryrefslogtreecommitdiff
path: root/nvim/init.lua
diff options
context:
space:
mode:
authoradmin <contact@optics-design.com>2025-05-11 00:43:32 +0200
committeradmin <contact@optics-design.com>2025-05-11 00:43:32 +0200
commit102f9a5608cbb7b5553cd0d1862b6bd8e40c8075 (patch)
treef6ae6dbbf3c9b60e34bb0e24dca20008c704f721 /nvim/init.lua
parent681468ea7f56624ca869e7ba859f4457a8412cc3 (diff)
refractored neovim config
Diffstat (limited to 'nvim/init.lua')
-rw-r--r--nvim/init.lua388
1 files changed, 8 insertions, 380 deletions
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 = {
- ["<C-c>"] = actions.close,
- ["<C-n>"] = actions.cycle_history_next,
- ["<C-p>"] = actions.cycle_history_prev,
- ["<C-j>"] = actions.move_selection_next,
- ["<C-k>"] = actions.move_selection_previous,
- ["<C-o>"] = 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", "<leader>a", function() harpoon:list():add() end)
-vim.keymap.set("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
-
-vim.keymap.set("n", "<leader>h", function() harpoon:list():select(1) end)
-vim.keymap.set("n", "<leader>j", function() harpoon:list():select(2) end)
-vim.keymap.set("n", "<leader>k", function() harpoon:list():select(3) end)
-vim.keymap.set("n", "<leader>l", function() harpoon:list():select(4) end)
-
--- Toggle previous & next buffers stored within Harpoon list
-vim.keymap.set("n", "<leader>N", function() harpoon:list():prev() end)
-vim.keymap.set("n", "<leader>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.<name>",
- -- it will use the mapping at require("oil.actions").<name>
- -- Set to `false` to remove a keymap
- -- See :help oil-actions for a list of all available actions
- keymaps = {
- ["g?"] = "actions.show_help",
- ["<CR>"] = "actions.select",
- ["<C-S>"] = { "actions.select", opts = { vertical = true }, desc = "Open the entry in a vertical split" },
- ["<C-H>"] = { "actions.select", opts = { horizontal = true }, desc = "Open the entry in a horizontal split" },
- -- ["<C-t>"] = { "actions.select", opts = { tab = true }, desc = "Open the entry in new tab" },
- ["<C-p>"] = "actions.preview",
- ["<C-c>"] = "actions.close",
- ["<C-l>"] = "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",
- ["<C-o>"] = "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', '<C-d>', [[<C-\><C-n><cmd>ToggleTerm<CR>]], opts)
- vim.api.nvim_buf_set_keymap(0, 't', '<C-q>', [[<C-\><C-n><cmd>ToggleTerm<CR>]], opts)
- -- vim.api.nvim_buf_set_keymap(0, 'n', '<C-d>', [[<C-\><C-n><cmd>ToggleTerm<CR>]], opts)
- -- vim.api.nvim_buf_set_keymap(0, 't', 'jk','<Nop>',opts)
- -- vim.api.nvim_buf_del_keymap(0, 'i', "jk")
- -- vim.api.nvim_buf_set_keymap(0, 'i', 'k', '<Nop>', opts)
-end
-require("toggleterm").setup({
- -- open_mapping = [[<C-\>]], -- 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', '<space>e', vim.diagnostic.open_float, { noremap=true, silent=true })
+-- Load plugin configurations
+require('configs')
Back to https://optics-design.com