diff options
Diffstat (limited to 'nvim/init.lua')
-rw-r--r-- | nvim/init.lua | 394 |
1 files changed, 394 insertions, 0 deletions
diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..bc36452 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,394 @@ +require("options")
+require("codev")
+require("plugins")
+require("keybindings")
+require('lspconfig').marksman.setup{}
+
+local harpoon = require("harpoon")
+local actions = require "telescope.actions"
+
+
+
+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
+ },
+ -- extensions = {
+ -- file_browser = {
+ -- mappings ={
+ -- n = {
+ -- ["<o>"] = open_in_external_program,
+ -- },
+ -- i = {
+ -- ["<C-o>"] = open_in_external_program,
+ -- },
+ -- },
+ -- },
+ -- },
+ -- other configuration values here
+})
+require("Comment").setup()
+-- require("neorg").setup()
+-- require("bufferline").setup{}
+-- init.lua
+-- require('cmp').setup({
+-- sources = {
+-- { name = 'orgmode' },
+-- { name = 'neorg'},
+-- }
+-- })
+
+
+-- require("telescope").load_extension "file_browser"
+-- 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 })
|