diff --git a/nvim/init.lua b/nvim/init.lua new file mode 100644 index 0000000..58112d6 --- /dev/null +++ b/nvim/init.lua @@ -0,0 +1,7 @@ +-- remap leader to +vim.g.mapleader = ' ' + +require('settings') +require('lsp') +require('keymappings') +require('plugins') diff --git a/nvim/lua/keymappings.lua b/nvim/lua/keymappings.lua new file mode 100644 index 0000000..58f4ca9 --- /dev/null +++ b/nvim/lua/keymappings.lua @@ -0,0 +1,24 @@ +-- Clear trailing whitespace +vim.keymap.set("n", "", "let _s=@/:%s/\\s\\+$//e:let @/=_s") + +-- Use tab and shift+tab to cycle buffers +vim.keymap.set("n", "", "bn") +vim.keymap.set("n", "", "bp") + +-- Turn spellchecker on and off +vim.keymap.set("n", "se", "setlocal spell spelllang=en_us") +vim.keymap.set("n", "sq", "setlocal nospell") + +vim.keymap.set("n", "", "set nonumber!") +vim.keymap.set("n", "fe", "Oil") + +vim.keymap.set("n", ']d', "lua vim.diagnostic.goto_next()") +vim.keymap.set("n", '[d', "lua vim.diagnostic.goto_prev()") +vim.keymap.set("n", "aa", require("actions-preview").code_actions) + +-- Outline!! +vim.keymap.set("n", "o", "Outline") + + +-- Close all buffers +vim.keymap.set("n", '', "bufdo bd") diff --git a/nvim/lua/lsp.lua b/nvim/lua/lsp.lua new file mode 100644 index 0000000..85e4cd7 --- /dev/null +++ b/nvim/lua/lsp.lua @@ -0,0 +1,95 @@ +local common_on_attach = function(client, bufnr) + -- Mappings. + vim.keymap.set("n", "K", "lua vim.lsp.buf.hover()") + vim.keymap.set("n", "", "lua vim.lsp.buf.signature_help()") + vim.keymap.set("n", "", "lua vim.lsp.buf.type_definition()") + vim.keymap.set("n", "", "lua vim.lsp.buf.rename()()") + vim.keymap.set("n", "wl", "lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))") + vim.keymap.set("n", "wa", "lua vim.lsp.buf.add_workspace_folder()") + vim.keymap.set("n", "wr", "lua vim.lsp.buf.remove_workspace_folder()") + vim.keymap.set("n", "r", "lua vim.lsp.buf.rename()") + + -- Autoformat on save. + if client.supports_method("textDocument/formatting") then + vim.api.nvim_create_autocmd("BufWritePre", { + buffer = bufnr, + callback = function() + vim.lsp.buf.format() + end, + }) + end + + -- Use vim's default coloring. + client.server_capabilities.semanticTokensProvider = nil + for _, group in ipairs(vim.fn.getcompletion("@lsp", "highlight")) do + vim.api.nvim_set_hl(0, group, {}) + end +end + +local nvim_lsp = require('lspconfig') +local capabilities = vim.lsp.protocol.make_client_capabilities() + +-- LSPs +local servers = { + "clangd", + "dartls", + "gleam", + "lua_ls", + "ocamllsp", + "pyright", + "rnix", + "terraformls", + "vimls", +} +for _, lsp in ipairs(servers) do + nvim_lsp[lsp].setup { capabilities = capabilities, on_attach = common_on_attach } +end + +nvim_lsp.rust_analyzer.setup({ + on_attach = common_on_attach, + capabilities = capabilities, + settings = { + ["rust-analyzer"] = { + imports = { + granularity = { + group = "module", + }, + prefix = "self", + }, + cargo = { + buildScripts = { + enable = true, + }, + }, + procMacro = { + enable = true + }, + checkOnSave = { + command = "clippy", + }, + } + } +}) + +nvim_lsp.ruff.setup({ + on_attach = function (client) + common_on_attach(client) + client.server_capabilities.renameProvider = false + client.server_capabilities.hoverProvider = false + end, + init_options = { + settings = { + -- Any extra CLI arguments for `ruff` go here. + args = {} + } + }, +}) + +-- LSP diagnostics. +vim.lsp.handlers["textDocument/publishDiagnostics"] = + vim.lsp.with(vim.lsp.diagnostic.on_publish_diagnostics, { + virtual_text = false, + underline = true, + signs = true, + update_in_insert = false + }) diff --git a/nvim/lua/plugins/catppuccin.lua b/nvim/lua/plugins/catppuccin.lua new file mode 100644 index 0000000..d725829 --- /dev/null +++ b/nvim/lua/plugins/catppuccin.lua @@ -0,0 +1,250 @@ +require("catppuccin").setup({ + -- transparent_background = vim + flavour = "latte", + highlight_overrides = { + all = function(colors) + return { + FloatBorder = { link = "SagaBorder", fg="#4f4f4f" }, + LineNr = { fg = colors.subtext0 }, + Folded = { fg = colors.green }, + MatchWord = { bold = true }, + Visual = { sp = colors.text, underline = true }, + IndentBlankLineContextChar = { fg = colors.sapphire }, + WinSeparator = { fg = colors.text }, + TelescopeSelection = { fg = colors.subtext1, bg = colors.surface0 }, + TelescopeBorder = { fg = colors.surface1, bg = colors.surface1 }, + TelescopeNormal = { bg = "#fafafa" }, + TelescopePromptNormal = { bg = colors.surface1 }, + TelescopePromptBorder = { bg = colors.surface1, fg = colors.surface1 }, + CursorLine = { bg = colors.text }, + NvimTreeWinSeparator = { fg = colors.text }, + NvimTreeGitNew = { fg = colors.green }, + NvimTreeGitDirty = { fg = colors.yellow }, + NvimTreeGitDeleted = { fg = colors.red }, + -- ColorColumn = { bg = colors. }, + SpecialKey = { fg = colors.yellow }, + SagaBorder = { fg = colors.blue }, + HoverNormal = { fg = colors.text }, + + -- Gitsigns + GitSignsAddInline = { link = "DiffAdd" }, + GitSignsDeleteInline = { link = "DiffDelete" }, + GitSignsChangedInline = { link = "DiffChange" } , + Diffview = { link = "DiffChange" } , + + StNormalMode = { fg = colors.surface0, bg = colors.blue, bold = true }, + StVisualMode = { fg = colors.surface0, bg = colors.sky, bold = true }, + StInsertMode = { fg = colors.surface0, bg = colors.lavender, bold = true }, + StTerminalMode = { fg = colors.surface0, bg = colors.green, bold = true }, + StNTerminalMode = { fg = colors.surface0, bg = colors.yellow, bold = true }, + StReplaceMode = { fg = colors.surface0, bg = colors.peach, bold = true }, + StConfirmMode = { fg = colors.surface0, bg = colors.sapphire, bold = true }, + StCommandMode = { fg = colors.surface0, bg = colors.green, bold = true }, + StSelectMode = { fg = colors.surface0, bg = colors.blue, bold = true }, + + StInviSep = { bg = colors.surface1, fg = colors.surface1 }, + StNormalModeSep = { bg = colors.surface1, fg = colors.blue }, + StVisualModeSep = { bg = colors.surface1, fg = colors.sky }, + StInsertModeSep = { bg = colors.surface1, fg = colors.lavender }, + StTerminalModeSep = { bg = colors.surface1, fg = colors.green }, + StNTerminalModeSep = { bg = colors.surface1, fg = colors.yellow }, + StReplaceModeSep = { bg = colors.surface1, fg = colors.peach }, + StConfirmModeSep = { bg = colors.surface1, fg = colors.sapphire }, + StCommandModeSep = { bg = colors.surface1, fg = colors.green }, + StSelectModeSep = { bg = colors.surface1, fg = colors.blue }, + + --CurFile + StCwd = { bg = colors.yellow, fg = colors.text }, + StFile = { bg = colors.peach, fg = colors.text, bold = true }, + StCwdSep = { fg = colors.yellow, bg = colors.surface1 }, + StFileSep = { fg = colors.peach, bg = colors.surface1 }, + StDirFileSep = { fg = colors.yellow, bg = colors.peach }, + -- Git stuffs + StGitBranch = { bg = colors.overlay0, fg = colors.mauve }, + StGitAdded = { bg = colors.overlay0, fg = colors.green }, + StGitChanged = { bg = colors.overlay0, fg = colors.yellow }, + StGitRemoved = { bg = colors.overlay0, fg = colors.red }, + StGitSep = { bg = colors.surface1, fg = colors.overlay0 }, + + -- LSP + StLSPClient = { bg = colors.surface1, fg = colors.blue, bold = true }, + StLSPDiagSep = { bg = colors.surface1, fg = colors.overlay0 }, + StLSPErrors = { bg = colors.overlay0, fg = colors.red }, + StLSPWarnings = { bg = colors.overlay0, fg = colors.yellow }, + StLSPHints = { bg = colors.overlay0, fg = colors.mauve }, + StLspInfo = { bg = colors.overlay0, fg = colors.sky }, + -- + -- Lsp Diagnostics + DiagnosticHint = { fg = colors.mauve }, + DiagnosticError = { fg = colors.red }, + DiagnosticWarn = { fg = colors.yellow }, + DiagnosticInformation = { fg = colors.green }, + + -- File Info + StPosition = { bg = colors.sapphire, fg = colors.surface1 }, + StPositionSep = { bg = colors.surface1, fg = colors.sapphire }, + + TabLineFill = { fg = colors.text, bg = colors.crust, sp = colors.text }, + TabLineBufHidden = { fg = colors.mantle, bg = colors.subtext1, sp = colors.text }, + TabLineBufActive = { fg = colors.text, bg = colors.sapphire, bold = true, sp = colors.text }, + TabLineCurrentBuf = { fg = colors.mantle, bg = colors.red, bold = true, sp = colors.text }, + TabLineBufHiddenModified = { fg = colors.green, bg = colors.subtext1, sp = colors.text }, + TabLineBufActiveModified = { fg = colors.green, bg = colors.sapphire, bold = true, sp = colors.text }, + TabLineCurrentBufModified = { fg = colors.green, bg = colors.red, bold = true, sp = colors.text }, + TabLineModified = { fg = colors.green }, + TabLineCurrentTab = { fg = colors.mantle, bg = colors.red, bold = true, sp = colors.text }, + TabLineOtherTab = { fg = colors.mantle, bg = colors.subtext1, sp = colors.text }, + TabLineBufActiveSep = { fg = colors.sapphire, bg = colors.crust, sp = colors.text }, + TabLineCurrentBufSep = { fg = colors.red, bg = colors.crust, sp = colors.text }, + TabLineBufHiddenSep = { fg = colors.subtext1, bg = colors.crust, sp = colors.text }, + + DiagnosticUnnecessary = { link = "" }, + + --["@conceal.checked"] = { fg = colors.teal }, + --["@none"] = { link = "Normal" }, + --["@field"] = { fg = colors.blue }, + --["@comment.todo"] = { fg = colors.lavender }, + --["@property"] = { fg = colors.blue }, + --["@variable.member"] = { fg = colors.blue }, + --["@variable.parameter"] = { fg = colors.sky }, + --["@parameter"] = { fg = colors.sky }, + --["@comment.note"] = { link = "@comment.hint" }, + + --["@lsp.type.annotation"] = { fg = colors.darkyellow }, + --["@lsp.type.modifier.java"] = { link = "@type.qualifier" }, + --["@lsp.mod.builtin"] = { fg = colors.maroon }, + --["@lsp.mod.readonly.python"] = { link = "Constant" }, + --["@lsp.mod.documentation"] = { bold = true, fg = colors.mauve }, + --["@lsp.type.keyword"] = { fg = colors.mauve }, + } + end, + latte = function(colors) + return { + -- ["@lsp.type.keyword"] = { fg = colors.darkyellow }, + + Comment = { fg = colors.blue }, + Conditional = { fg = colors.darkyellow }, + Error = { fg = colors.base, bg = colors.red }, + Exception = { fg = colors.peach }, + Function = { fg = colors.cyan }, + Identifier = { fg = colors.green }, + Include = { fg = colors.pink }, + Keyword = { fg = colors.darkyellow }, + Operator = { fg = colors.darkyellow }, + Parameter = { fg = colors.sky }, + Special = { fg = colors.flamingo }, + Statement = { fg = colors.darkyellow }, + String = { fg = colors.red }, + Structure = { fg = colors.green }, + WhitespaceError = { fg = colors.base, bg = colors.red }, + Type = { fg = colors.cyan }, + StorageClass = { fg = colors.green }, + --Macro = { fg = colors.magenta }, + --Define = { fg = colors.magenta }, + } + end, + }, + color_overrides = { + latte = { + base = "#ffffff", + flamingo = "#bb5d60", + pink = "#d54597", + mauve = "#a65fd5", + red = "#D90E18", + maroon = "#db3e68", + peach = "#e46f2a", + yellow = "#bc8705", + darkyellow = "#B2640B", + green = "#1a8e32", + teal = "#00a390", + sky = "#089ec0", + sapphire = "#0ea0a0", + blue = "#017bca", + lavender = "#8584f7", + text = "#222222", + subtext1 = "#444444", + subtext0 = "#666666", + overlay2 = "#777777", + overlay1 = "#888888", + overlay0 = "#999999", + surface2 = "#aaaaaa", + surface1 = "#cccccc", + surface0 = "#e5e5e5", + mantle = "#eeeeee", + crust = "#dddddd", + cyan = "#0EB1A2", + magenta = "#FF00FF", + }, + }, + background = { + light = "latte", + dark = "mocha", + }, + term_colors = true, + -- dim_inactive = { + -- enabled = true, + -- shade = "light", + -- percentage = 0.20, + -- }, + styles = { + comments = {}, + }, + integrations = { + alpha = false, + cmp = true, + dap = true, + dap_ui = true, + dashboard = false, + flash = false, + gitsigns = true, + leap = true, + mini = { + enabled = false, + }, + mason = true, + markdown = true, + neogit = true, + nvimtree = true, + ufo = false, + rainbow_delimiters = false, + semantic_tokens = true, + telescope = { enabled = true, style = "nvchad" }, + treesitter = false, + barbecue = false, + illuminate = false, + indent_blankline = { + enabled = true, + colored_indent_levels = false, + }, + native_lsp = { + enabled = true, + virtual_text = { + errors = { "italic" }, + hints = { "italic" }, + warnings = { "italic" }, + information = { "italic" }, + }, + underlines = { + errors = { "underline" }, + hints = { "underline" }, + warnings = { "underline" }, + information = { "underline" }, + }, + inlay_hints = { + background = true, + }, + }, + lsp_saga = true, + lsp_trouble = true, + navic = { + enabled = false, + custom_bg = "NONE", + }, + dropbar = { + enabled = false, + color_mode = false, + }, + }, +}) + +vim.cmd.colorscheme("catppuccin") diff --git a/nvim/lua/plugins/cmp.lua b/nvim/lua/plugins/cmp.lua new file mode 100644 index 0000000..cfd0ba5 --- /dev/null +++ b/nvim/lua/plugins/cmp.lua @@ -0,0 +1,115 @@ +-- Completion plugin config + +vim.opt.completeopt = 'menuone,noselect' + +local cmp = require('cmp') +local cmp_kinds = { + Text = ' ', + Method = '󰊕 ', + Function = '󰊕 ', + Constructor = ' ', + Field = ' ', + Variable = ' ', + Class = ' ', + Interface = ' ', + Module = ' ', + Property = ' ', + Unit = ' ', + Value = ' ', + Enum = ' ', + Keyword = ' ', + Snippet = ' ', + Color = ' ', + File = ' ', + Reference = ' ', + Folder = ' ', + EnumMember = ' ', + Constant = ' ', + Struct = ' ', + Event = ' ', + Operator = ' ', + TypeParameter = ' ', +} + +cmp.setup({ + formatting = { + format = function(entry, vim_item) + -- Kind icons + vim_item.kind = string.format('%s %s', cmp_kinds[vim_item.kind], vim_item.kind) + vim_item.menu = ({ + buffer = "[Buffer]", + nvim_lsp = "[LSP]", + luasnip = "[LuaSnip]", + nvim_lua = "[Lua]", + latex_symbols = "[LaTeX]", + })[entry.source.name] + return vim_item + end + }, + snippet = { + expand = function(args) + local luasnip = require("luasnip") + if not luasnip then + return + end + luasnip.lsp_expand(args.body) + end, + }, + window = { + completion = { + border = nil, + }, + documentation = { + border = nil, + max_height = 2000, + } + }, + completion = { + autocomplete = false, + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), + [''] = cmp.mapping.scroll_docs(4), + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.abort(), + -- Accept currently selected item. + -- Set `select` to `false` to only confirm explicitly selected items. + [''] = cmp.mapping.confirm({ select = false }), + }), + sources = cmp.config.sources( + { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, + { + { name = 'buffer' }, + } + ) +}) + +-- Set configuration for specific filetype. +cmp.setup.filetype('gitcommit', { + sources = cmp.config.sources({ + { name = 'git' }, + }, { + { name = 'buffer' }, + }) +}) + +-- Use buffer source for `/` and `?` (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline({ '/', '?' }, { + mapping = cmp.mapping.preset.cmdline(), + sources = { + { name = 'buffer' } + } +}) + +-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore). +cmp.setup.cmdline(':', { + mapping = cmp.mapping.preset.cmdline(), + sources = cmp.config.sources({ + { name = 'path' } + }, { + { name = 'cmdline' } + }) +}) diff --git a/nvim/lua/plugins/gitsigns.lua b/nvim/lua/plugins/gitsigns.lua new file mode 100644 index 0000000..8b5ba0a --- /dev/null +++ b/nvim/lua/plugins/gitsigns.lua @@ -0,0 +1,42 @@ +require('gitsigns').setup { + on_attach = function(bufnr) + local gs = package.loaded.gitsigns + + local function map(mode, l, r, opts) + opts = opts or {} + opts.buffer = bufnr + vim.keymap.set(mode, l, r, opts) + end + + -- Navigation + map('n', ']c', function() + if vim.wo.diff then return ']c' end + vim.schedule(function() gs.next_hunk() end) + return '' + end, { expr = true }) + + map('n', '[c', function() + if vim.wo.diff then return '[c' end + vim.schedule(function() gs.prev_hunk() end) + return '' + end, { expr = true }) + + -- Actions + map('n', 'hs', gs.stage_hunk) + map('n', 'hr', gs.reset_hunk) + map('v', 'hs', function() gs.stage_hunk { vim.fn.line('.'), vim.fn.line('v') } end) + map('v', 'hr', function() gs.reset_hunk { vim.fn.line('.'), vim.fn.line('v') } end) + map('n', 'hS', gs.stage_buffer) + map('n', 'hu', gs.undo_stage_hunk) + map('n', 'hR', gs.reset_buffer) + map('n', 'hp', gs.preview_hunk) + map('n', 'hb', function() gs.blame_line { full = true } end) + map('n', 'tb', gs.toggle_current_line_blame) + map('n', 'hd', gs.diffthis) + map('n', 'hD', function() gs.diffthis('~') end) + map('n', 'td', gs.toggle_deleted) + + -- Text object + map({ 'o', 'x' }, 'ih', ':Gitsigns select_hunk') + end +} diff --git a/nvim/lua/plugins/init.lua b/nvim/lua/plugins/init.lua new file mode 100644 index 0000000..6095fa2 --- /dev/null +++ b/nvim/lua/plugins/init.lua @@ -0,0 +1,94 @@ +require('plugins.packer_setup') + +require('packer').startup(function() + -- Packer can manage itself as an optional plugin + use { 'wbthomason/packer.nvim', opt = true } + + -- Fuzzy finder + use { + 'nvim-telescope/telescope.nvim', + requires = { + { 'nvim-lua/popup.nvim' }, + { 'nvim-lua/plenary.nvim' }, + } + } + + -- Autocomplete and snippets + use { + 'hrsh7th/nvim-cmp', + requires = { + { 'hrsh7th/cmp-nvim-lsp' }, + { 'hrsh7th/cmp-buffer' }, + { 'hrsh7th/cmp-path' }, + { 'hrsh7th/cmp-cmdline' }, + } + } + use { 'L3MON4D3/LuaSnip', + config = function() + local snippet_path = os.getenv("HOME") .. "/.config/nvim/snippets/" + if not vim.tbl_contains(vim.opt.rtp:get(), snippet_path) then + vim.opt.rtp:append(snippet_path) + end + + require("luasnip").config.set_config({ + history = true, + updateevents = "TextChanged,TextChangedI", + delete_check_events = "TextChanged,InsertLeave", + }) + require("luasnip.loaders.from_lua").lazy_load() + require("luasnip.loaders.from_vscode").lazy_load() + require("luasnip.loaders.from_snipmate").lazy_load() + end, + requires = { + { "rafamadriz/friendly-snippets" }, + { 'saadparwaiz1/cmp_luasnip' }, + { "benfowler/telescope-luasnip.nvim" }, + }, + } + + -- Statusbar, colors and syntax + use { 'vim-airline/vim-airline' } + use { 'vim-airline/vim-airline-themes' } + + -- LSP and related + use { 'neovim/nvim-lspconfig' } + use { 'aznhe21/actions-preview.nvim' } + use { 'folke/trouble.nvim' } -- lsp diagnostics + + -- Plugins to extend builtin language support + use { 'cespare/vim-toml' } + use { 'gleam-lang/gleam.vim' } + use { 'rust-lang/rust.vim' } + use { 'folke/neodev.nvim' } + use { 'hashivim/vim-terraform' } + + -- Git + use { + 'NeogitOrg/neogit', + requires = { + { "nvim-lua/plenary.nvim" }, + { "sindrets/diffview.nvim" }, + }, + } + use { "lewis6991/gitsigns.nvim" } + + -- Filesystem browser + use { 'stevearc/oil.nvim' } + + -- Misc + use { 'jbyuki/venn.nvim' } -- ascii diagrams + + use { 'hedyhli/outline.nvim' } + + use { "catppuccin/nvim", as = "catppuccin" } + +end) + +require('plugins.catppuccin') +require('plugins.cmp') +require('plugins.gitsigns') +require('plugins.neogit') +require('plugins.oil') +require('plugins.outline') +require('plugins.telescope') +require('plugins.venn') diff --git a/nvim/lua/plugins/neogit.lua b/nvim/lua/plugins/neogit.lua new file mode 100644 index 0000000..771a0e6 --- /dev/null +++ b/nvim/lua/plugins/neogit.lua @@ -0,0 +1,301 @@ +local neogit = require('neogit') + +vim.keymap.set('n', '', neogit.open, {}) + +neogit.setup { + -- Hides the hints at the top of the status buffer + disable_hint = false, + -- Disables changing the buffer highlights based on where the cursor is. + disable_context_highlighting = false, + -- Disables signs for sections/items/hunks + disable_signs = false, + -- Changes what mode the Commit Editor starts in. `true` will leave nvim in normal mode, `false` will change nvim to + -- insert mode, and `"auto"` will change nvim to insert mode IF the commit message is empty, otherwise leaving it in + -- normal mode. + disable_insert_on_commit = "auto", + -- When enabled, will watch the `.git/` directory for changes and refresh the status buffer in response to filesystem + -- events. + filewatcher = { + interval = 1000, + enabled = true, + }, + -- "ascii" is the graph the git CLI generates + -- "unicode" is the graph like https://github.com/rbong/vim-flog + graph_style = "ascii", + -- Used to generate URL's for branch popup action "pull request". + git_services = { + ["github.com"] = "https://github.com/${owner}/${repository}/compare/${branch_name}?expand=1", + ["bitbucket.org"] = "https://bitbucket.org/${owner}/${repository}/pull-requests/new?source=${branch_name}&t=1", + ["gitlab.com"] = "https://gitlab.com/${owner}/${repository}/merge_requests/new?merge_request[source_branch]=${branch_name}", + }, + -- Allows a different telescope sorter. Defaults to 'fuzzy_with_index_bias'. The example below will use the native fzf + -- sorter instead. By default, this function returns `nil`. + telescope_sorter = function() + return require("telescope").extensions.fzf.native_fzf_sorter() + end, + -- Persist the values of switches/options within and across sessions + remember_settings = true, + -- Scope persisted settings on a per-project basis + use_per_project_settings = true, + -- Table of settings to never persist. Uses format "Filetype--cli-value" + ignored_settings = { + "NeogitPushPopup--force-with-lease", + "NeogitPushPopup--force", + "NeogitPullPopup--rebase", + "NeogitCommitPopup--allow-empty", + "NeogitRevertPopup--no-edit", + }, + -- Configure highlight group features + highlight = { + italic = true, + bold = true, + underline = true + }, + -- Set to false if you want to be responsible for creating _ALL_ keymappings + use_default_keymaps = true, + -- Neogit refreshes its internal state after specific events, which can be expensive depending on the repository size. + -- Disabling `auto_refresh` will make it so you have to manually refresh the status after you open it. + auto_refresh = true, + -- Value used for `--sort` option for `git branch` command + -- By default, branches will be sorted by commit date descending + -- Flag description: https://git-scm.com/docs/git-branch#Documentation/git-branch.txt---sortltkeygt + -- Sorting keys: https://git-scm.com/docs/git-for-each-ref#_options + sort_branches = "-committerdate", + -- Change the default way of opening neogit + kind = "tab", + -- Disable line numbers and relative line numbers + disable_line_numbers = true, + -- The time after which an output console is shown for slow running commands + console_timeout = 2000, + -- Automatically show console if a command takes more than console_timeout milliseconds + auto_show_console = true, + -- Automatically close the console if the process exits with a 0 (success) status + auto_close_console = true, + status = { + show_head_commit_hash = true, + recent_commit_count = 10, + HEAD_padding = 10, + HEAD_folded = false, + mode_padding = 3, + mode_text = { + M = "modified", + N = "new file", + A = "added", + D = "deleted", + C = "copied", + U = "updated", + R = "renamed", + DD = "unmerged", + AU = "unmerged", + UD = "unmerged", + UA = "unmerged", + DU = "unmerged", + AA = "unmerged", + UU = "unmerged", + ["?"] = "", + }, + }, + commit_editor = { + kind = "tab", + show_staged_diff = true, + -- Accepted values: + -- "split" to show the staged diff below the commit editor + -- "vsplit" to show it to the right + -- "split_above" Like :top split + -- "vsplit_left" like :vsplit, but open to the left + -- "auto" "vsplit" if window would have 80 cols, otherwise "split" + staged_diff_split_kind = "split" + }, + commit_select_view = { + kind = "tab", + }, + commit_view = { + kind = "vsplit", + verify_commit = vim.fn.executable("gpg") == 1, -- Can be set to true or false, otherwise we try to find the binary + }, + log_view = { + kind = "tab", + }, + rebase_editor = { + kind = "auto", + }, + reflog_view = { + kind = "tab", + }, + merge_editor = { + kind = "auto", + }, + tag_editor = { + kind = "auto", + }, + preview_buffer = { + kind = "split", + }, + popup = { + kind = "split", + }, + signs = { + -- { CLOSED, OPENED } + hunk = { "", "" }, + item = { ">", "v" }, + section = { ">", "v" }, + }, + -- Each Integration is auto-detected through plugin presence, however, it can be disabled by setting to `false` + integrations = { + -- If enabled, use telescope for menu selection rather than vim.ui.select. + -- Allows multi-select and some things that vim.ui.select doesn't. + telescope = true, + -- Neogit only provides inline diffs. If you want a more traditional way to look at diffs, you can use `diffview`. + -- The diffview integration enables the diff popup. + -- + -- Requires you to have `sindrets/diffview.nvim` installed. + diffview = true, + + -- If enabled, uses fzf-lua for menu selection. If the telescope integration + -- is also selected then telescope is used instead + -- Requires you to have `ibhagwan/fzf-lua` installed. + fzf_lua = true, + }, + sections = { + -- Reverting/Cherry Picking + sequencer = { + folded = false, + hidden = false, + }, + untracked = { + folded = false, + hidden = false, + }, + unstaged = { + folded = false, + hidden = false, + }, + staged = { + folded = false, + hidden = false, + }, + stashes = { + folded = true, + hidden = false, + }, + unpulled_upstream = { + folded = true, + hidden = false, + }, + unmerged_upstream = { + folded = false, + hidden = false, + }, + unpulled_pushRemote = { + folded = true, + hidden = false, + }, + unmerged_pushRemote = { + folded = false, + hidden = false, + }, + recent = { + folded = true, + hidden = false, + }, + rebase = { + folded = true, + hidden = false, + }, + }, + mappings = { + commit_editor = { + ["q"] = "Close", + [""] = "Submit", + [""] = "Abort", + }, + commit_editor_I = { + [""] = "Submit", + [""] = "Abort", + }, + rebase_editor = { + ["p"] = "Pick", + ["r"] = "Reword", + ["e"] = "Edit", + ["s"] = "Squash", + ["f"] = "Fixup", + ["x"] = "Execute", + ["d"] = "Drop", + ["b"] = "Break", + ["q"] = "Close", + [""] = "OpenCommit", + ["gk"] = "MoveUp", + ["gj"] = "MoveDown", + [""] = "Submit", + [""] = "Abort", + ["[c"] = "OpenOrScrollUp", + ["]c"] = "OpenOrScrollDown", + }, + rebase_editor_I = { + [""] = "Submit", + [""] = "Abort", + }, + finder = { + [""] = "Select", + [""] = "Close", + [""] = "Close", + [""] = "Next", + [""] = "Previous", + [""] = "Next", + [""] = "Previous", + [""] = "MultiselectToggleNext", + [""] = "MultiselectTogglePrevious", + [""] = "NOP", + }, + -- Setting any of these to `false` will disable the mapping. + popup = { + ["?"] = "HelpPopup", + ["A"] = "CherryPickPopup", + ["D"] = "DiffPopup", + ["M"] = "RemotePopup", + ["P"] = "PushPopup", + ["X"] = "ResetPopup", + ["Z"] = "StashPopup", + ["b"] = "BranchPopup", + ["B"] = "BisectPopup", + ["c"] = "CommitPopup", + ["f"] = "FetchPopup", + ["l"] = "LogPopup", + ["m"] = "MergePopup", + ["p"] = "PullPopup", + ["r"] = "RebasePopup", + ["v"] = "RevertPopup", + ["w"] = "WorktreePopup", + }, + status = { + ["k"] = "MoveUp", + ["j"] = "MoveDown", + ["q"] = "Close", + ["o"] = "OpenTree", + ["I"] = "InitRepo", + ["1"] = "Depth1", + ["2"] = "Depth2", + ["3"] = "Depth3", + ["4"] = "Depth4", + [""] = "Toggle", + ["x"] = "Discard", + ["s"] = "Stage", + ["S"] = "StageUnstaged", + [""] = "StageAll", + ["K"] = "Untrack", + ["u"] = "Unstage", + ["U"] = "UnstageStaged", + ["$"] = "CommandHistory", + ["Y"] = "YankSelected", + [""] = "RefreshBuffer", + [""] = "GoToFile", + [""] = "VSplitOpen", + [""] = "SplitOpen", + [""] = "TabOpen", + ["{"] = "GoToPreviousHunkHeader", + ["}"] = "GoToNextHunkHeader", + ["[c"] = "OpenOrScrollUp", + ["]c"] = "OpenOrScrollDown", + }, + }, +} diff --git a/nvim/lua/plugins/oil.lua b/nvim/lua/plugins/oil.lua new file mode 100644 index 0000000..884e296 --- /dev/null +++ b/nvim/lua/plugins/oil.lua @@ -0,0 +1,164 @@ +local git_ignored = setmetatable({}, { + __index = function(self, key) + local proc = vim.system( + { "git", "ls-files", "--ignored", "--exclude-standard", "--others", "--directory" }, + { + cwd = key, + text = true, + } + ) + local result = proc:wait() + local ret = {} + if result.code == 0 then + for line in vim.gsplit(result.stdout, "\n", { plain = true, trimempty = true }) do + -- Remove trailing slash + line = line:gsub("/$", "") + table.insert(ret, line) + end + end + + rawset(self, key, ret) + return ret + end, +}) + +require('oil').setup({ + 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 = false, + -- Skip the confirmation popup for simple operations + skip_confirm_for_simple_edits = false, + -- Change this to customize the command used when deleting to trash + trash_command = "trash-put", + -- Selecting a new/moved/renamed file or directory will prompt you to save changes first + prompt_save_on_select_new_entry = true, + -- 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 = "", nowait = true }) + -- 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_vsplit", + [""] = "actions.select_split", + [""] = "actions.select_tab", + [""] = "actions.preview", + [""] = "actions.close", + [""] = "actions.refresh", + ["-"] = "actions.parent", + ["_"] = "actions.open_cwd", + ["`"] = "actions.cd", + ["~"] = "actions.tcd", + ["gs"] = "actions.change_sort", + ["gx"] = "actions.open_external", + ["g."] = "actions.toggle_hidden", + }, + -- Set to false to disable all of the above keymaps + use_default_keymaps = true, + view_options = { + -- Show files and directories that start with "." + show_hidden = true, + -- This function defines what is considered a "hidden" file + is_hidden_file = function(name, _) + if vim.startswith(name, ".") then + return true + end + local dir = require("oil").get_current_dir() + -- if no local directory (e.g. for ssh connections), always show + if not dir then + return false + end + -- return vim.list_contains(git_ignored[dir], 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 = { + -- sort order can be "asc" or "desc" + -- see :help oil-columns to see which columns are sortable + { "type", "asc" }, + { "name", "asc" }, + }, + }, + -- 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, + }, + -- 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, + }, + }, + -- 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, + }, + }, + +}) diff --git a/nvim/lua/plugins/outline.lua b/nvim/lua/plugins/outline.lua new file mode 100644 index 0000000..3ea216c --- /dev/null +++ b/nvim/lua/plugins/outline.lua @@ -0,0 +1,137 @@ +require("outline").setup({ + guides = { + enabled = true, + markers = { + bottom = '└', + middle = '├', + vertical = '│', + horizontal = '─', + }, + }, + outline_items = { + show_symbol_details = true, + show_symbol_lineno = false, + -- The two below are both for auto_update_events.follow + highlight_hovered_item = true, + -- On open, always followed. This is for auto_update_events.follow, whether + -- to auto update cursor position to reflect code location. If false, can + -- manually trigger with follow_cursor (API, command, keymap action). + auto_set_cursor = true, + auto_update_events = { + follow = { 'CursorMoved' }, + items = { 'InsertLeave', 'WinEnter', 'BufEnter', 'BufWinEnter', 'BufWritePost' }, + }, + }, + outline_window = { + position = 'right', + split_command = nil, + width = 25, + relative_width = true, + wrap = false, + focus_on_open = true, + auto_close = false, + auto_jump = false, + show_numbers = false, + show_relative_numbers = false, + ---@type boolean|string? + show_cursorline = true, + hide_cursor = false, + winhl = '', + jump_highlight_duration = 400, + center_on_jump = true, + }, + preview_window = { + live = false, + auto_preview = false, + width = 50, + min_width = 50, + relative_width = true, + height = 50, + min_height = 10, + relative_height = true, + border = 'single', + open_hover_on_preview = false, + winhl = 'NormalFloat:', + winblend = 0, + }, + symbol_folding = { + autofold_depth = 1, + auto_unfold = { + hovered = true, + ---@type boolean|integer + only = true, + }, + markers = { '', '' }, + }, + keymaps = { + show_help = '?', + close = { '', 'q' }, + goto_location = '', + peek_location = 'o', + goto_and_close = '', + restore_location = '', + hover_symbol = '', + toggle_preview = 'K', + rename_symbol = 'r', + code_actions = 'a', + fold = 'h', + fold_toggle = '', + fold_toggle_all = '', + unfold = 'l', + fold_all = 'W', + unfold_all = 'E', + fold_reset = 'R', + down_and_jump = '', + up_and_jump = '', + }, + providers = { + priority = { 'lsp', 'coc', 'markdown', 'norg' }, + lsp = { + blacklist_clients = {}, + }, + markdown = { + filetypes = { 'markdown' }, + }, + }, + symbols = { + ---@type outline.FilterConfig? + filter = nil, + icon_source = nil, + icon_fetcher = nil, + icons = { + File = { icon = '', hl = 'Identifier' }, + Module = { icon = '', hl = 'Include' }, + Namespace = { icon = '{}', hl = 'Include' }, + Package = { icon = '', hl = 'Include' }, + Class = { icon = '𝓒', hl = 'Type' }, + Method = { icon = '.ƒ', hl = 'Function' }, + Property = { icon = '', hl = 'Identifier' }, + Field = { icon = '-', hl = 'Identifier' }, + Constructor = { icon = '()', hl = 'Special' }, + Enum = { icon = 'ℰ', hl = 'Type' }, + Interface = { icon = 'i', hl = 'Type' }, + Function = { icon = 'ƒ', hl = 'Function' }, + Variable = { icon = '(x)', hl = 'Constant' }, + Constant = { icon = 'c', hl = 'Constant' }, + String = { icon = '𝓐', hl = 'String' }, + Number = { icon = '#', hl = 'Number' }, + Boolean = { icon = '⊨', hl = 'Boolean' }, + Array = { icon = '[]', hl = 'Constant' }, + Object = { icon = '⦿', hl = 'Type' }, + Key = { icon = '🔐', hl = 'Type' }, + Null = { icon = 'NULL', hl = 'Type' }, + EnumMember = { icon = '', hl = 'Identifier' }, + Struct = { icon = '𝓢', hl = 'Structure' }, + Event = { icon = '🗲', hl = 'Type' }, + Operator = { icon = '+', hl = 'Identifier' }, + TypeParameter = { icon = '𝙏', hl = 'Identifier' }, + Component = { icon = '', hl = 'Function' }, + Fragment = { icon = '-', hl = 'Constant' }, + -- ccls + TypeAlias = { icon = 't ', hl = 'Type' }, + Parameter = { icon = 'p ', hl = 'Identifier' }, + StaticMethod = { icon = '. ', hl = 'Function' }, + Macro = { icon = ' ', hl = 'Function' }, + }, + }, +}) diff --git a/nvim/lua/plugins/packer_setup.lua b/nvim/lua/plugins/packer_setup.lua new file mode 100644 index 0000000..9d1f10b --- /dev/null +++ b/nvim/lua/plugins/packer_setup.lua @@ -0,0 +1,9 @@ +-- Auto install packer.nvim if not exists +local install_path = vim.fn.stdpath('data') .. '/site/pack/packer/opt/packer.nvim' +if vim.fn.empty(vim.fn.glob(install_path)) > 0 then + vim.api.nvim_command('!git clone https://github.com/wbthomason/packer.nvim ' .. install_path) +end + +vim.cmd [[packadd packer.nvim]] +-- Auto compile when there are changes in plugins.lua +vim.cmd 'autocmd BufWritePost plugins.lua PackerCompile' diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..707ba1b --- /dev/null +++ b/nvim/lua/plugins/telescope.lua @@ -0,0 +1,62 @@ +local telescope = require('telescope') +local actions = require('telescope.actions') +local builtin = require('telescope.builtin') + +local telescope_last = 0 +function telescope_resume() + if telescope_last == 0 then + telescope_last = 1 + builtin.live_grep() + else + builtin.resume() + end +end + +telescope.setup { + defaults = { + sorting_strategy = "ascending", + live_grep_arguments = { 'rg', + '--hidden', '--no-ignore', '--color=never', + '--with-filename', '--line-number', + '--column', '--smart-case', '--no-heading', + }, + preview = { + treesitter = false + }, + }, + pickers = { + live_grep = { + mappings = { + i = { [""] = actions.to_fuzzy_refine }, + n = { [""] = telescope_resume }, + }, + }, + find_files = { + cache_picker = false, + }, + git_files = { + cache_picker = false, + }, + }, +} + +-- Snippets can be useful. +vim.keymap.set('n', 'ss', telescope.extensions.luasnip.luasnip, {}) + +-- Fuzzy * files, symbols, buffers, help, etc. +vim.keymap.set('n', 'fa', builtin.find_files) -- f[ind]a[ll] +vim.keymap.set('n', 'fb', builtin.buffers) +vim.keymap.set('n', 'fd', builtin.diagnostics) +vim.keymap.set('n', 'ff', builtin.git_files) +vim.keymap.set('n', 'fh', builtin.help_tags) +vim.keymap.set('n', 'fs', builtin.lsp_dynamic_workspace_symbols) + +-- Grep (the only one). +vim.keymap.set('n', 'gg', builtin.live_grep) + +-- LSP navigation. +vim.keymap.set('n', 'gd', builtin.lsp_definitions) +vim.keymap.set('n', 'gr', builtin.lsp_references) +vim.keymap.set('n', 'gi', builtin.lsp_implementations) +vim.keymap.set('n', 'ci', builtin.lsp_incoming_calls) +vim.keymap.set('n', 'co', builtin.lsp_outgoing_calls) diff --git a/nvim/lua/plugins/venn.lua b/nvim/lua/plugins/venn.lua new file mode 100644 index 0000000..ee4f49c --- /dev/null +++ b/nvim/lua/plugins/venn.lua @@ -0,0 +1,22 @@ +-- venn.nvim: enable or disable keymappings +function _G.Toggle_venn() + local venn_enabled = vim.inspect(vim.b.venn_enabled) + if venn_enabled == "nil" then + vim.b.venn_enabled = true + vim.cmd [[setlocal ve=all]] + -- draw a line on HJKL keystokes + vim.api.nvim_buf_set_keymap(0, "n", "J", "j:VBox", { noremap = true }) + vim.api.nvim_buf_set_keymap(0, "n", "K", "k:VBox", { noremap = true }) + vim.api.nvim_buf_set_keymap(0, "n", "L", "l:VBox", { noremap = true }) + vim.api.nvim_buf_set_keymap(0, "n", "H", "h:VBox", { noremap = true }) + -- draw a box by pressing "f" with visual selection + vim.api.nvim_buf_set_keymap(0, "v", "f", ":VBox", { noremap = true }) + else + vim.cmd [[setlocal ve=]] + vim.cmd [[mapclear ]] + vim.b.venn_enabled = nil + end +end + +-- toggle keymappings for venn using v +vim.api.nvim_set_keymap('n', 'v', ":lua Toggle_venn()", { noremap = true }) diff --git a/nvim/lua/settings.lua b/nvim/lua/settings.lua new file mode 100644 index 0000000..7447ed9 --- /dev/null +++ b/nvim/lua/settings.lua @@ -0,0 +1,52 @@ +local indent = 4 + +vim.opt.shiftwidth = indent +vim.opt.tabstop = indent +vim.opt.softtabstop = indent +vim.opt.scrolloff = indent +vim.opt.wildmode = 'list:longest,list:full' +vim.opt.expandtab = true +vim.opt.smartindent = true +vim.opt.hidden = true +vim.opt.ignorecase = true +vim.opt.shiftround = true +vim.opt.smartcase = true +vim.opt.splitbelow = true +vim.opt.splitright = true +vim.opt.number = true +vim.opt.clipboard = 'unnamed,unnamedplus' + +vim.opt.autoindent = false +vim.opt.smartindent = false +vim.opt.errorformat:prepend('%f|%l col %c|%m') +vim.opt.fileformat = 'unix' +vim.opt.undofile = true + +vim.opt.background = 'light' + +-- Enable vimrc files per project and disable unsafe commands in project vimrc +vim.opt.exrc = true +vim.opt.secure = true + +vim.api.nvim_create_autocmd('InsertEnter', { + callback = function() + vim.cmd.hi('clear RedundantSpaces') + end, + pattern = '*', +}) +vim.api.nvim_create_autocmd({'InsertLeave', 'BufEnter'}, { + callback = function() + vim.cmd.hi('RedundantSpaces ctermbg=red guibg=red') + end, + pattern = '*', +}) + +vim.cmd([[ + set noautoread + autocmd CursorHold * checktime + autocmd TextYankPost * lua vim.highlight.on_yank {on_visual = false} + autocmd BufRead,BufNewFile *.bu,*.yml.example,*.yaml.example set filetype=yaml + autocmd BufRead,BufNewFile *.ign set filetype=json + match RedundantSpaces /\s\+$/ + let g:airline_theme='papercolor' +]]) diff --git a/nvim/plugin/packer_compiled.lua b/nvim/plugin/packer_compiled.lua new file mode 100644 index 0000000..f4a38cd --- /dev/null +++ b/nvim/plugin/packer_compiled.lua @@ -0,0 +1,245 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/vladan/.cache/nvim/packer_hererocks/2.1.1702233742/share/lua/5.1/?.lua;/home/vladan/.cache/nvim/packer_hererocks/2.1.1702233742/share/lua/5.1/?/init.lua;/home/vladan/.cache/nvim/packer_hererocks/2.1.1702233742/lib/luarocks/rocks-5.1/?.lua;/home/vladan/.cache/nvim/packer_hererocks/2.1.1702233742/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/vladan/.cache/nvim/packer_hererocks/2.1.1702233742/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + LuaSnip = { + config = { "\27LJ\2\n\3\0\0\6\0\19\00006\0\0\0009\0\1\0'\2\2\0B\0\2\2'\1\3\0&\0\1\0006\1\4\0009\1\5\0016\3\4\0009\3\6\0039\3\a\3\18\5\3\0009\3\b\3B\3\2\2\18\4\0\0B\1\3\2\14\0\1\0X\1\a6\1\4\0009\1\6\0019\1\a\1\18\3\1\0009\1\t\1\18\4\0\0B\1\3\0016\1\n\0'\3\v\0B\1\2\0029\1\f\0019\1\r\0015\3\14\0B\1\2\0016\1\n\0'\3\15\0B\1\2\0029\1\16\1B\1\1\0016\1\n\0'\3\17\0B\1\2\0029\1\16\1B\1\1\0016\1\n\0'\3\18\0B\1\2\0029\1\16\1B\1\1\1K\0\1\0\"luasnip.loaders.from_snipmate luasnip.loaders.from_vscode\14lazy_load\29luasnip.loaders.from_lua\1\0\3\17updateevents\29TextChanged,TextChangedI\fhistory\2\24delete_check_events\28TextChanged,InsertLeave\15set_config\vconfig\fluasnip\frequire\vappend\bget\brtp\bopt\17tbl_contains\bvim\28/.config/nvim/snippets/\tHOME\vgetenv\aos\0" }, + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/LuaSnip", + url = "https://github.com/L3MON4D3/LuaSnip" + }, + ["actions-preview.nvim"] = { + config = { "\27LJ\2\ny\0\0\a\0\b\0\v6\0\0\0009\0\1\0009\0\2\0005\2\3\0'\3\4\0006\4\5\0'\6\6\0B\4\2\0029\4\a\4B\0\4\1K\0\1\0\17code_actions\20actions-preview\frequire\14ca\1\3\0\0\6v\6n\bset\vkeymap\bvim\0" }, + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/actions-preview.nvim", + url = "https://github.com/aznhe21/actions-preview.nvim" + }, + ["cmp-buffer"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-cmdline"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/cmp-cmdline", + url = "https://github.com/hrsh7th/cmp-cmdline" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-path"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + cmp_luasnip = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/cmp_luasnip", + url = "https://github.com/saadparwaiz1/cmp_luasnip" + }, + ["diffview.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/diffview.nvim", + url = "https://github.com/sindrets/diffview.nvim" + }, + ["friendly-snippets"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/friendly-snippets", + url = "https://github.com/rafamadriz/friendly-snippets" + }, + ["gitsigns.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/gitsigns.nvim", + url = "https://github.com/lewis6991/gitsigns.nvim" + }, + ["gleam.vim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/gleam.vim", + url = "https://github.com/gleam-lang/gleam.vim" + }, + ["neodev.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/neodev.nvim", + url = "https://github.com/folke/neodev.nvim" + }, + neogit = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/neogit", + url = "https://github.com/NeogitOrg/neogit" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["oil.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/oil.nvim", + url = "https://github.com/stevearc/oil.nvim" + }, + ["packer.nvim"] = { + loaded = false, + needs_bufread = false, + path = "/home/vladan/.local/share/nvim/site/pack/packer/opt/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["popup.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/popup.nvim", + url = "https://github.com/nvim-lua/popup.nvim" + }, + ["rust.vim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/rust.vim", + url = "https://github.com/rust-lang/rust.vim" + }, + ["telescope-luasnip.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/telescope-luasnip.nvim", + url = "https://github.com/benfowler/telescope-luasnip.nvim" + }, + ["telescope.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/telescope.nvim", + url = "https://github.com/nvim-telescope/telescope.nvim" + }, + ["trouble.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/trouble.nvim", + url = "https://github.com/folke/trouble.nvim" + }, + ["venn.nvim"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/venn.nvim", + url = "https://github.com/jbyuki/venn.nvim" + }, + ["vim-airline"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/vim-airline", + url = "https://github.com/vim-airline/vim-airline" + }, + ["vim-airline-themes"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/vim-airline-themes", + url = "https://github.com/vim-airline/vim-airline-themes" + }, + ["vim-terraform"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/vim-terraform", + url = "https://github.com/hashivim/vim-terraform" + }, + ["vim-toml"] = { + loaded = true, + path = "/home/vladan/.local/share/nvim/site/pack/packer/start/vim-toml", + url = "https://github.com/cespare/vim-toml" + } +} + +time([[Defining packer_plugins]], false) +-- Config for: actions-preview.nvim +time([[Config for actions-preview.nvim]], true) +try_loadstring("\27LJ\2\ny\0\0\a\0\b\0\v6\0\0\0009\0\1\0009\0\2\0005\2\3\0'\3\4\0006\4\5\0'\6\6\0B\4\2\0029\4\a\4B\0\4\1K\0\1\0\17code_actions\20actions-preview\frequire\14ca\1\3\0\0\6v\6n\bset\vkeymap\bvim\0", "config", "actions-preview.nvim") +time([[Config for actions-preview.nvim]], false) +-- Config for: LuaSnip +time([[Config for LuaSnip]], true) +try_loadstring("\27LJ\2\n\3\0\0\6\0\19\00006\0\0\0009\0\1\0'\2\2\0B\0\2\2'\1\3\0&\0\1\0006\1\4\0009\1\5\0016\3\4\0009\3\6\0039\3\a\3\18\5\3\0009\3\b\3B\3\2\2\18\4\0\0B\1\3\2\14\0\1\0X\1\a6\1\4\0009\1\6\0019\1\a\1\18\3\1\0009\1\t\1\18\4\0\0B\1\3\0016\1\n\0'\3\v\0B\1\2\0029\1\f\0019\1\r\0015\3\14\0B\1\2\0016\1\n\0'\3\15\0B\1\2\0029\1\16\1B\1\1\0016\1\n\0'\3\17\0B\1\2\0029\1\16\1B\1\1\0016\1\n\0'\3\18\0B\1\2\0029\1\16\1B\1\1\1K\0\1\0\"luasnip.loaders.from_snipmate luasnip.loaders.from_vscode\14lazy_load\29luasnip.loaders.from_lua\1\0\3\17updateevents\29TextChanged,TextChangedI\fhistory\2\24delete_check_events\28TextChanged,InsertLeave\15set_config\vconfig\fluasnip\frequire\vappend\bget\brtp\bopt\17tbl_contains\bvim\28/.config/nvim/snippets/\tHOME\vgetenv\aos\0", "config", "LuaSnip") +time([[Config for LuaSnip]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end diff --git a/nvim/spell/en.utf-8.add b/nvim/spell/en.utf-8.add new file mode 100644 index 0000000..6ee0f64 --- /dev/null +++ b/nvim/spell/en.utf-8.add @@ -0,0 +1,94 @@ +Ansible +AWS +GCP +OpenStack +CouchDB +gRPC +Proto +Cap'n +Protobuf +RabbitMQ +MQTT +ZMQ +NoSQL +PostgreSQL +hackerspace +FOSS +NGO +OSTree +CoreOS +distro +selfhosted +Gitea +toolset +Django +AsyncIO +async +FastAPI +gevent +uWSGI +SqlAlchemy +uWSGI's +Podman +Kubernetes +WebAssembly +esp32 +SRE +Postgres +Clickhouse +Mysql +Opensearch +Ericssons +Linköping +LabOps +Ericsson +Gerrit +Seavus +Hortonworks +Ambari +Telecommution +HDFS +TradeCore +frontend +GitLab +ElasticSearch +Celerry +Itekako +scalable +JSON +RPC +TinyRPC +FFMpeg +Live555 +dockerizing +RedHat +Asseko +MSSQL +Aiven +C2 +Vladan +Popovic +pagenumbering +Bulevar +Oslobodjenja +gmail +vladanovic/! +vladanovic +microservice +transcoding +Tox +Jinja2 +Artifactory +ESP32 +Microcontroller +SIM800L +blox +NEO +A7670E +TCP +adminstrator +devops +COVID +microcontrollers +codebases +OCaml diff --git a/nvim/spell/en.utf-8.add.spl b/nvim/spell/en.utf-8.add.spl new file mode 100644 index 0000000..94d20e9 Binary files /dev/null and b/nvim/spell/en.utf-8.add.spl differ