diff --git a/config/.config/nvim/after/plugin/colors.lua b/config/.config/nvim/after/plugin/colors.lua deleted file mode 100755 index b0bacbc..0000000 --- a/config/.config/nvim/after/plugin/colors.lua +++ /dev/null @@ -1,29 +0,0 @@ -function colors(color, theme) - color = os.getenv("BASE16_THEME") - alt_color = 'rose-pine' or color - -- Available values: `'hard'`, `'medium'`, `'soft'` - vim.g.gruvbox_material_background = 'medium' - -- Available values: `'material'`, `'mix'`, `'original'` - vim.g.gruvbox_material_foreground = 'mix' - -- Available values: `'hard'`, `'medium'`, `'soft'` - vim.g.everforest_background = 'hard' - vim.g.gruvbox_material_better_performance = 1 - vim.g.everforest_better_performance = 1 - if color == 'gruvbox-dark-hard' then - color = 'gruvbox-material' - vim.g.gruvbox_material_background = 'hard' - elseif color == 'gruvbox-dark-soft' then - color = 'gruvbox-material' - vim.g.gruvbox_material_background = 'soft' - elseif color == 'everforest-dark-hard' then - vim.g.everforest_background = 'hard' - color = 'everforest' - end - if theme then - vim.cmd.colorscheme(alt_color) - elseif not pcall(vim.cmd.colorscheme, color) or color == nil then - vim.cmd.colorscheme(alt_color) - end -end - -colors(nil, true) diff --git a/config/.config/nvim/after/plugin/lsp.lua b/config/.config/nvim/after/plugin/lsp.lua deleted file mode 100755 index 850e374..0000000 --- a/config/.config/nvim/after/plugin/lsp.lua +++ /dev/null @@ -1,106 +0,0 @@ -local lsp = require('lsp-zero') -local lsp_config = require("lspconfig") - ---Enable (broadcasting) snippet capability for completion -local capabilities = vim.lsp.protocol.make_client_capabilities() -capabilities.textDocument.completion.completionItem.snippetSupport = true - -lsp_config.html.setup { - capabilities = capabilities, - filetypes = { "html", "etlua" }, -} - -lsp_config.nim_langserver.setup{ - settings = { - nim = { - projectMapping = { - projectFile = "main.nim", - fileRegex = ".*\\.nim" - } - } - } -} - -lsp_config.hls.setup{} - -lsp_config.clojure_lsp.setup{} - -lsp_config.clangd.setup{} - -lsp_config.sourcekit.setup{} - -local cmp = require("cmp") -local cmp_select = {behavior = cmp.SelectBehavior.Select} -local cmp_mappings = lsp.defaults.cmp_mappings({ - [''] = cmp.mapping.select_prev_item(cmp_select), - [''] = cmp.mapping.select_next_item(cmp_select), - [''] = cmp.mapping.confirm({select = true}), - [''] = cmp.mapping.complete(), -}) - -cmp.setup { - sources = { - { name = 'conjure' }, - { name = 'nvim_lsp_signature_help' }, - { name = 'nvim_lsp' }, - { name = 'luasnip' }, - } -} - -lsp.set_preferences({ - sign_icons = { } -}) - -lsp.setup_nvim_cmp({ - mapping = cmp_mappings -}) - -vim.api.nvim_create_autocmd('User', { - pattern = 'LspAttached', - once = true, - callback = vim.lsp.codelens.refresh, -}) - -lsp.on_attach(function(client, bufnr) - local opts = {buffer = bufnr, remap = false} - - if client.name == "eslint" then - vim.cmd.LspStop('eslint') - return - end - if client.name == "html" or client.name == "cssls" then - capabilities = capabilities - end - - vim.api.nvim_create_autocmd({ 'TextChanged', 'InsertLeave' }, { - buffer = bufnr, - callback = vim.lsp.codelens.refresh, - }) - -- trigger codelens refresh - vim.api.nvim_exec_autocmds('User', { pattern = 'LspAttached' }) - - - vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) - vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) - vim.keymap.set("n", "vws", vim.lsp.buf.workspace_symbol, opts) - vim.keymap.set("n", "vd", vim.diagnostic.open_float, opts) - vim.keymap.set("n", "[d", vim.diagnostic.goto_next, opts) - vim.keymap.set("n", "]d", vim.diagnostic.goto_prev, opts) - vim.keymap.set("n", "vca", vim.lsp.buf.code_action, opts) - vim.keymap.set("n", "vrr", vim.lsp.buf.references, opts) - vim.keymap.set("n", "vrn", vim.lsp.buf.rename, opts) - vim.keymap.set("i", "", vim.lsp.buf.signature_help, opts) -end) - -lsp_config.lua_ls.setup { - -- ... other configs - settings = { - Lua = { - diagnostics = { - globals = { 'vim' } - } - } - } -} -lsp_config.racket_langserver.setup{} -lsp.setup() diff --git a/config/.config/nvim/after/plugin/telescope.lua b/config/.config/nvim/after/plugin/telescope.lua deleted file mode 100755 index 99cfc0e..0000000 --- a/config/.config/nvim/after/plugin/telescope.lua +++ /dev/null @@ -1,15 +0,0 @@ -local builtin = require('telescope.builtin') -local telescope = require('telescope') -telescope.load_extension("workspaces") -telescope.load_extension("recent_files") -telescope.load_extension("telescope-tabs") -vim.keymap.set('n', 'ff', builtin.find_files, {}) -vim.keymap.set('n', 'fF', builtin.git_files, {}) -vim.keymap.set('n', 'fg', builtin.live_grep, {}) -vim.keymap.set('n', 'bb', builtin.buffers, {}) -vim.keymap.set('n', 'hh', builtin.help_tags, {}) -vim.keymap.set('n', 'cc', builtin.colorscheme, {}) -vim.keymap.set('n', 'wo', ":Telescope workspaces", {}) -vim.api.nvim_set_keymap("n", "fr", - [[lua require('telescope').extensions.recent_files.pick()]], - {noremap = true, silent = true}) diff --git a/config/.config/nvim/after/plugin/treesitter.lua b/config/.config/nvim/after/plugin/treesitter.lua deleted file mode 100755 index 81cba2d..0000000 --- a/config/.config/nvim/after/plugin/treesitter.lua +++ /dev/null @@ -1,22 +0,0 @@ -require'nvim-treesitter.configs'.setup { - -- A list of parser names, or "all" - ensure_installed = { "help", "java", "c", "lua" }, - - -- Install parsers synchronously (only applied to `ensure_installed`) - sync_install = false, - - -- Automatically install missing parsers when entering buffer - -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally - auto_install = true, - - highlight = { - -- `false` will disable the whole extension - enable = true, - - -- Setting this to true will run `:h syntax` and tree-sitter at the same time. - -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). - -- Using this option may slow down your editor, and you may see some duplicate highlights. - -- Instead of true it can also be a list of languages - additional_vim_regex_highlighting = false, - }, -} diff --git a/config/.config/nvim/after/plugin/undotree.lua b/config/.config/nvim/after/plugin/undotree.lua deleted file mode 100755 index 97bb7ab..0000000 --- a/config/.config/nvim/after/plugin/undotree.lua +++ /dev/null @@ -1,2 +0,0 @@ -vim.keymap.set("n", "u", vim.cmd.UndotreeToggle) - diff --git a/config/.config/nvim/db_ui/connections.json b/config/.config/nvim/db_ui/connections.json deleted file mode 100644 index 7780eff..0000000 --- a/config/.config/nvim/db_ui/connections.json +++ /dev/null @@ -1 +0,0 @@ -[{"url": "sqlserver://chalupmc:MikeC00l@golem.csse.rose-hulman.edu/SodaBasechalupmc", "name": "SodaBasechalupmc"}, {"url": "sqlserver://chalupmc:MikeC00l@golem.csse.rose-hulman.edu/NWindchalupmc", "name": "NWindchalupmc"}] diff --git a/config/.config/nvim/ftplugin/java.lua b/config/.config/nvim/ftplugin/java.lua deleted file mode 100755 index 39087ba..0000000 --- a/config/.config/nvim/ftplugin/java.lua +++ /dev/null @@ -1,97 +0,0 @@ --- See `:help vim.lsp.start_client` for an overview of the supported `config` options. - ---local project_name = vim.fn.fnamemodify(vim.fn.getcwd(), ':p:h:t') ---local workspace_dir = '/path/to/workspace-root/' .. project_name -local workspace_dir = vim.fn.getcwd() -local config = { - -- The command that starts the language server - -- See: https://github.com/eclipse/eclipse.jdt.ls#running-from-the-command-line - cmd = { - - -- 💀 - 'jdtls', -- or '/path/to/java17_or_newer/bin/java' - -- depends on if `java` is in your $PATH env variable and if it points to the right version. - - -- '-Declipse.application=org.eclipse.jdt.ls.core.id1', - -- '-Dosgi.bundles.defaultStartLevel=4', - -- '-Declipse.product=org.eclipse.jdt.ls.core.product', - -- '-Dlog.protocol=true', - -- '-Dlog.level=ALL', - -- '-Xms1g', - -- '--add-modules=ALL-SYSTEM', - -- '--add-opens', 'java.base/java.util=ALL-UNNAMED', - -- '--add-opens', 'java.base/java.lang=ALL-UNNAMED', - -- - -- -- 💀 - -- '-jar', '/usr/share/java/jdtls/plugins/org.eclipse.equinox.launcher_1.6.400.v20210924-0641.jar', - -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^ - -- -- Must point to the Change this to - -- -- eclipse.jdt.ls installation the actual version - -- - -- - -- -- 💀 - -- '-configuration', '/usr/share/java/jdtls/config_linux', - -- -- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^ - -- -- Must point to the Change to one of `linux`, `win` or `mac` - -- -- eclipse.jdt.ls installation Depending on your system. - -- - -- - -- -- 💀 - -- -- See `data directory configuration` section in the README - -- '-data', "/home/mikec/Documents/workspace" - }, - - -- 💀 - -- This is the default if not provided, you can remove it. Or adjust as needed. - -- One dedicated LSP server & client will be started per unique root_dir - root_dir = require('jdtls.setup').find_root({'.git', 'mvnw', 'gradlew'}), - - -- Here you can configure eclipse.jdt.ls specific settings - -- See https://github.com/eclipse/eclipse.jdt.ls/wiki/Running-the-JAVA-LS-server-from-the-command-line#initialize-request - -- for a list of options - settings = { - java = { - } - }, - - -- Language server `initializationOptions` - -- You need to extend the `bundles` with paths to jar files - -- if you want to use additional eclipse.jdt.ls plugins. - -- - -- See https://github.com/mfussenegger/nvim-jdtls#java-debug-installation - -- - -- If you don't plan on using the debugger or other eclipse.jdt.ls plugins you can remove this - --init_options = { - -- bundles = { - -- vim.fn.glob("/home/mikec/.local/share/nvim/mason/packages/java-debug-adapter/extension/server/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar", 1) - -- } - --}, -} - --- This bundles definition is the same as in the previous section (java-debug installation) -local bundles = { - vim.fn.glob("/home/mikec/.local/share/nvim/mason/packages/java-debug-adapter/extension/server/com.microsoft.java.debug.plugin/target/com.microsoft.java.debug.plugin-*.jar", 1) -}; - --- This is the new part -vim.list_extend(bundles, vim.split(vim.fn.glob("/path/to/microsoft/vscode-java-test/server/*.jar", 1), "\n")) -config['init_options'] = { - bundles = bundles; -} - --- This starts a new client & server, --- or attaches to an existing client & server depending on the `root_dir`. - -vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) -vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) -vim.keymap.set("n", "vws", vim.lsp.buf.workspace_symbol, opts) -vim.keymap.set("n", "vd", vim.diagnostic.open_float, opts) -vim.keymap.set("n", "[d", vim.diagnostic.goto_next, opts) -vim.keymap.set("n", "]d", vim.diagnostic.goto_prev, opts) -vim.keymap.set("n", "vca", vim.lsp.buf.code_action, opts) -vim.keymap.set("n", "vrr", vim.lsp.buf.references, opts) -vim.keymap.set("n", "vrn", vim.lsp.buf.rename, opts) -vim.keymap.set("i", "", vim.lsp.buf.signature_help, opts) -vim.keymap.set("n", "i", function() require('jdtls').organize_imports() end, opts) - -require('jdtls').start_or_attach(config) diff --git a/config/.config/nvim/init.lua b/config/.config/nvim/init.lua old mode 100755 new mode 100644 index 6cd714e..58213d2 --- a/config/.config/nvim/init.lua +++ b/config/.config/nvim/init.lua @@ -1 +1 @@ -config = require("config") +require 'config' diff --git a/config/.config/nvim/lazy-lock.json b/config/.config/nvim/lazy-lock.json new file mode 100644 index 0000000..63c544d --- /dev/null +++ b/config/.config/nvim/lazy-lock.json @@ -0,0 +1,68 @@ +{ + "LuaSnip": { "branch": "master", "commit": "de10d8414235b0a8cabfeba60d07c24304e71f5c" }, + "alpha-nvim": { "branch": "main", "commit": "2b3cbcdd980cae1e022409289245053f62fb50f6" }, + "blink.cmp": { "branch": "main", "commit": "bae4bae0eedd1fa55f34b685862e94a222d5c6f8" }, + "catppuccin": { "branch": "main", "commit": "211dc3649f775c5a390e9fae07bf20d985f8dcf2" }, + "cellular-automaton.nvim": { "branch": "main", "commit": "1606e9d5d04ff254023c3f3c62842d065708d6d3" }, + "compiler-explorer.nvim": { "branch": "master", "commit": "ee8e7a2808bdad67cd2acb61b5c9ffa7735c7ec9" }, + "diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" }, + "dim.lua": { "branch": "main", "commit": "e7d7428d2d0bde97c6441ca9f04a1e9ac7c6d6bb" }, + "dracula.nvim": { "branch": "main", "commit": "df528c869b09fbdc7578e6ccc7ff6faf44a2046d" }, + "dropbar.nvim": { "branch": "master", "commit": "418897fe7828b2749ca78056ec8d8ad43136b695" }, + "everblush": { "branch": "main", "commit": "678f808d81801b983b6fb8296fb17ba1b2785d7c" }, + "everforest": { "branch": "master", "commit": "34fd33500cb86c3c1af3c87f97c0fec247592e83" }, + "fennel.vim": { "branch": "main", "commit": "c6a9c035ca108cbb24273d96cd6277fb8fbc60b4" }, + "github-colors": { "branch": "main", "commit": "7292749e49e6f870e63879a528bb05c8c8d1a59a" }, + "github-nvim-theme": { "branch": "main", "commit": "c106c9472154d6b2c74b74565616b877ae8ed31d" }, + "gitsigns.nvim": { "branch": "main", "commit": "6e3c66548035e50db7bd8e360a29aec6620c3641" }, + "gruvbox-material": { "branch": "master", "commit": "81aeeee11a45ae8e4f26df67bfbbe18795bda6ee" }, + "gruvbox.nvim": { "branch": "main", "commit": "58a2cda2e953a99e2f87c12b7fb4602da4e0709c" }, + "indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" }, + "lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" }, + "love2d.nvim": { "branch": "main", "commit": "25715394680590f56aab90390d430cab0dc46808" }, + "lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" }, + "mason-lspconfig.nvim": { "branch": "main", "commit": "7f0bf635082bb9b7d2b37766054526a6ccafdb85" }, + "mason.nvim": { "branch": "main", "commit": "7dc4facca9702f95353d5a1f87daf23d78e31c2a" }, + "melange-nvim": { "branch": "master", "commit": "ce42f6b629beeaa00591ba73a77d3eeac4cf28ce" }, + "mellow.nvim": { "branch": "main", "commit": "0cb5476b506f8e71428e823919b69ecf34afe646" }, + "mini.nvim": { "branch": "main", "commit": "93cca0073778f4118c55a73a48b30d06ef064add" }, + "monochrome.nvim": { "branch": "main", "commit": "2de78d9688ea4a177bcd9be554ab9192337d35ff" }, + "monokai.nvim": { "branch": "master", "commit": "b8bd44d5796503173627d7a1fc51f77ec3a08a63" }, + "moonlight.nvim": { "branch": "pure-lua", "commit": "e24e4218ec680b6396532808abf57ca0ada82e66" }, + "moonscript-vim": { "branch": "master", "commit": "715c96c7c3b02adc507f84bf5754985460afc426" }, + "multicursor.nvim": { "branch": "1.0", "commit": "9eedebdd395bbbc4711081e33b0606c079e054c3" }, + "nabla.nvim": { "branch": "master", "commit": "9b69b709063ccf40ac36fabb4fff7d90b3736475" }, + "nelua.vim": { "branch": "main", "commit": "330f34d017df92dd1a1a7283e302982256e169db" }, + "nord.nvim": { "branch": "master", "commit": "80c1e5321505aeb22b7a9f23eb82f1e193c12470" }, + "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, + "nvim-highlight-colors": { "branch": "main", "commit": "b42a5ccec7457b44e89f7ed3b3afb1b375bb2093" }, + "nvim-lspconfig": { "branch": "master", "commit": "b0caeef0d835fbe19df6ad71dbc4345eaaea649c" }, + "nvim-surround": { "branch": "main", "commit": "7a7a78a52219a3312c1fcabf880cea07a7956a5f" }, + "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, + "nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" }, + "nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" }, + "nvim-unception": { "branch": "main", "commit": "df0e505f0f1371c49c2bcf993985962edb5a279d" }, + "nvim-web-devicons": { "branch": "master", "commit": "c2599a81ecabaae07c49ff9b45dcd032a8d90f1a" }, + "oceanic-next": { "branch": "master", "commit": "09833f72d5ba23de2e8bcae18f479f326f5f677a" }, + "oil.nvim": { "branch": "master", "commit": "bbad9a76b2617ce1221d49619e4e4b659b3c61fc" }, + "one-nvim": { "branch": "main", "commit": "faf6fb3f98fccbe009c3466f657a8fff84a5f956" }, + "onedark.nvim": { "branch": "master", "commit": "de495fabe171d48aed5525f002d14414efcecbb2" }, + "plantuml-syntax": { "branch": "master", "commit": "9d4900aa16674bf5bb8296a72b975317d573b547" }, + "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, + "range-highlight.nvim": { "branch": "master", "commit": "f54aec737f138e52c187a8bea77b41347fd86f12" }, + "rose-pine": { "branch": "main", "commit": "72befaffeac38db7bdd49e0549eaa2c4806dd878" }, + "sherbet.nvim": { "branch": "master", "commit": "5c4166eff70ec551ae0023edfb89141b25cc18c6" }, + "telescope-recent-files": { "branch": "main", "commit": "eb190c0baded1cbfa9d8767c817b054377683163" }, + "telescope-tabs": { "branch": "master", "commit": "d16fae006ba978ccc5c5579d40f358e12a0f8d30" }, + "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, + "telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" }, + "tokyonight.nvim": { "branch": "main", "commit": "057ef5d260c1931f1dffd0f052c685dcd14100a3" }, + "twilight.nvim": { "branch": "main", "commit": "1584c0b0a979b71fd86b18d302ba84e9aba85b1b" }, + "v-vim": { "branch": "master", "commit": "1dc1388bafb89072f8349dbd96f9462ae22237cb" }, + "vim-colors-xcode": { "branch": "master", "commit": "6d449229bf29176448bd06377689d7a8db0d1bee" }, + "vim-etlua": { "branch": "master", "commit": "bb2974d0134ce6da60c3be0d82d809976b859c1c" }, + "vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" }, + "vim-teal": { "branch": "master", "commit": "c87b8931afa68376b88ff721336f31512b9384f1" }, + "vscode.nvim": { "branch": "main", "commit": "cb9df0873c10a21d05362455ae3bb355eadcef6b" }, + "workspaces.nvim": { "branch": "master", "commit": "55a1eb6f5b72e07ee8333898254e113e927180ca" } +} diff --git a/config/.config/nvim/lua/config/dadbod.lua b/config/.config/nvim/lua/config/dadbod.lua deleted file mode 100644 index 90c13fb..0000000 --- a/config/.config/nvim/lua/config/dadbod.lua +++ /dev/null @@ -1,29 +0,0 @@ -local M = {} - -local function db_completion() - require("cmp").setup.buffer { sources = { { name = "vim-dadbod-completion" } } } -end - -function M.setup() - vim.g.db_ui_save_location = vim.fn.stdpath "config" .. require("plenary.path").path.sep .. "db_ui" - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - }, - command = [[setlocal omnifunc=vim_dadbod_completion#omni]], - }) - - vim.api.nvim_create_autocmd("FileType", { - pattern = { - "sql", - "mysql", - "plsql", - }, - callback = function() - vim.schedule(db_completion) - end, - }) -end - -return M diff --git a/config/.config/nvim/lua/config/init.lua b/config/.config/nvim/lua/config/init.lua old mode 100755 new mode 100644 index 208c9de..c37cf28 --- a/config/.config/nvim/lua/config/init.lua +++ b/config/.config/nvim/lua/config/init.lua @@ -1,3 +1,3 @@ -require("config.remap") -require("config.packer") -require("config.set") +require 'config.lazy' +require 'config.set' +require 'config.keymap' diff --git a/config/.config/nvim/lua/config/keymap.lua b/config/.config/nvim/lua/config/keymap.lua new file mode 100644 index 0000000..31eec76 --- /dev/null +++ b/config/.config/nvim/lua/config/keymap.lua @@ -0,0 +1,59 @@ +local set = vim.keymap.set +local setnx = function(key, command, desc) + set({'n', 'x'}, key, command, { desc = desc }) +end +-- Telescope +local tele = require('telescope.builtin') +local telescope = require('telescope') + +setnx('ff', tele.find_files, 'Find files') +setnx('f/', tele.grep_string, 'Search current word') +setnx('f?', tele.live_grep, 'Search in files') +setnx('fr', telescope.extensions.recent_files.pick, 'Find recent files') +setnx('b', tele.buffers, 'List buffers') +setnx('h', tele.help_tags, 'Search help') +setnx('m', tele.marks, 'Search marks') +setnx('q', tele.quickfix, 'Search quickfix list') +setnx('l', tele.loclist, 'Search location list') +setnx('j', tele.jumplist, 'Search jumplist') +setnx('r', tele.registers, 'Search registers') +setnx('s', tele.spell_suggest, 'List spelling suggestions') +setnx('M', tele.man_pages, 'Search man pages') +setnx('t', require'telescope-tabs'.list_tabs, 'List tabs') +setnx('c', tele.colorscheme, 'Select colorscheme') + +setnx('op', 'Oil', 'Open file manager') +setnx('oP', 'Oil --float', 'Open file manager in floating window') +setnx('ot', 'term', 'Open terminal') +setnx('oT', 'tabnew', 'Open new tab') +setnx('of', 'enew', 'Open new file') +setnx('ow', 'Telescope workspaces', 'Open workspace') +setnx('ol', 'Lazy', 'Open Lazy') + +-- Exit terminal mode with ESC +set('t', '', '') + +-- Swap ' and ` +setnx('\'', '`', 'Goto mark with column') +setnx('`', '\'', 'Goto mark without column') + +setnx('grR', tele.lsp_references, 'Search lsp references') +setnx('grI', tele.lsp_incoming_calls, 'Find incoming function calls') +setnx('grO', tele.lsp_outgoing_calls, 'Find outgoing function calls') +setnx('grd', tele.diagnostics, 'Show LSP diagnostics') +setnx('grs', tele.lsp_workspace_symbols, 'Show workspace symbols') +setnx('grS', tele.lsp_document_symbols, 'Show document symbols') +setnx('gri', tele.lsp_implementations, 'Goto implementation') +setnx('gd', tele.lsp_definitions, 'Goto definition') +setnx('gD', tele.lsp_type_definitions, 'Goto type definition') + +setnx('gc', tele.git_commits, 'List git commits') +setnx('gb', tele.git_branches, 'List git branches') +setnx('gs', tele.git_status, 'Show git status') +setnx('gS', tele.git_stash, 'Show git stash') +setnx('gB', tele.git_bcommits, 'List buffers git commits') +setnx('gr', tele.git_bcommits_range, 'List buffers git commits over visual range') + +setnx('n', require('nabla').popup, 'Show popup for nabla preview') +setnx('p', '"+p', 'Paste from system clipboard') +setnx('y', '"+y', 'Yank to system clipboard') diff --git a/config/.config/nvim/lua/config/lazy.lua b/config/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..20dda1f --- /dev/null +++ b/config/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,35 @@ +-- Bootstrap lazy.nvim +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = " " +vim.g.maplocalleader = "\\" + +-- Setup lazy.nvim +require("lazy").setup({ + spec = { + -- import your plugins + { import = "plugins" }, + }, + -- Configure any other settings here. See the documentation for more details. + -- colorscheme that will be used when installing plugins. + install = { colorscheme = { "rose-pine" } }, + -- automatically check for plugin updates + checker = { enabled = true }, +}) diff --git a/config/.config/nvim/lua/config/lsp.lua b/config/.config/nvim/lua/config/lsp.lua new file mode 100644 index 0000000..20439a6 --- /dev/null +++ b/config/.config/nvim/lua/config/lsp.lua @@ -0,0 +1,9 @@ +vim.api.nvim_create_autocmd('LspAttach', { + group = vim.api.nvim_create_augroup('UserLspConfig', {}), + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + if client.server_capabilities.inlayHintProvider then + vim.lsp.inlya_hint.enable(args.buf, true) + end + end +}) diff --git a/config/.config/nvim/lua/config/packer.lua b/config/.config/nvim/lua/config/packer.lua deleted file mode 100755 index e4bfa81..0000000 --- a/config/.config/nvim/lua/config/packer.lua +++ /dev/null @@ -1,350 +0,0 @@ --- This file can be loaded by calling `lua require('plugins')` from your init.vim - --- Only required if you have packer configured as `opt` -vim.cmd [[packadd packer.nvim]] - -return require('packer').startup(function(use) - -- Packer can manage itself - use 'wbthomason/packer.nvim' - - use { - 'nvim-telescope/telescope.nvim', - branch = '0.1.x', - requires = { { 'nvim-lua/plenary.nvim' } } - } - - use { - 'LukasPietzschmann/telescope-tabs', - requires = { 'nvim-telescope/telescope.nvim' }, - config = function() - require'telescope-tabs'.setup{ - -- Your custom config :^) - } - end - } - - use "sindrets/diffview.nvim" - - use({ - 'rose-pine/neovim', - as = 'rose-pine', - -- config = function() - -- vim.cmd('colorscheme rose-pine') - -- end - }) - - use { - "mireq/large_file", - config = function() - require("large_file").setup() - end - } - - - use 'tanvirtin/monokai.nvim' - - use 'arzg/vim-colors-xcode' - - use 'shaunsingh/nord.nvim' - - use 'kvrohit/mellow.nvim' - - use 'Mofiqul/vscode.nvim' - - use 'Th3Whit3Wolf/one-nvim' - - use 'mhartington/oceanic-next' - - use 'folke/tokyonight.nvim' - - use 'sainnhe/gruvbox-material' - - use { "ellisonleao/gruvbox.nvim" } - - use 'sainnhe/everforest' - - use 'lourenci/github-colors' - - use 'navarasu/onedark.nvim' - - use 'shaunsingh/moonlight.nvim' - - use 'Mofiqul/dracula.nvim' - - use 'kdheepak/monochrome.nvim' - - use "savq/melange-nvim" - - use { "catppuccin/nvim", as = "catppuccin" } - - -- use 'RRethy/nvim-base16' - - use ({ 'projekt0n/github-nvim-theme' }) - - use { 'Everblush/nvim', as = 'everblush' } - - use "lewpoly/sherbet.nvim" - - -- use 'xiyaowong/transparent.nvim' - - use { - 'nvim-treesitter/nvim-treesitter', - run = ':TSUpdate', - } - - use { - 'numToStr/Comment.nvim', - config = function() - require('Comment').setup() - end - } - - use 'nvim-treesitter/playground' - - -- use 'mbbill/undotree' - - use { - 'mason-org/mason.nvim', - config = function() - require('mason').setup() - end, - } - - use { - 'VonHeikemen/lsp-zero.nvim', - requires = { - -- LSP Support - { 'neovim/nvim-lspconfig' }, - { 'mason-org/mason.nvim' }, - { 'mason-org/mason-lspconfig.nvim' }, - - -- Autocompletion - { 'hrsh7th/nvim-cmp' }, - { 'hrsh7th/cmp-buffer' }, - { 'hrsh7th/cmp-path' }, - { 'hrsh7th/cmp-nvim-lsp-signature-help' }, - { 'saadparwaiz1/cmp_luasnip' }, - { 'hrsh7th/cmp-nvim-lsp' }, - { 'hrsh7th/cmp-nvim-lua' }, - - -- Snippets - { 'L3MON4D3/LuaSnip' }, - { 'rafamadriz/friendly-snippets' }, - } - } - - use { - 'L3MON4D3/LuaSnip', - --after = 'nvim-cmp', - requires = { "rafamadriz/friendly-snippets" }, - config = function() - --require('config.snippets') - require("luasnip.loaders.from_vscode").lazy_load() - end, - run = "make install_jsregexp" - } - - use 'rafamadriz/friendly-snippets' - - use { - "folke/twilight.nvim", - config = function() - require("twilight").setup { - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the configuration section below - } - end - } - - use 'winston0410/cmd-parser.nvim' - use { - 'winston0410/range-highlight.nvim', - config = function() require("range-highlight").setup {} end - } - - use 'RRethy/vim-illuminate' - - use 'mfussenegger/nvim-jdtls' - - use { - "samjwill/nvim-unception", - setup = function() - -- Optional settings go here! - end - } - - use { - "0oAstro/dim.lua", - requires = { "nvim-treesitter/nvim-treesitter", "neovim/nvim-lspconfig" }, - config = function() - require('dim').setup({}) - end - } - use 'mfussenegger/nvim-dap' - - use { "rcarriga/nvim-dap-ui", requires = { "mfussenegger/nvim-dap" } } - - use { 'stevearc/dressing.nvim' } - - use { - 'krady21/compiler-explorer.nvim', - config = function() - require("compiler-explorer").setup({ - autocmd = { - enable = true, - hl = "Cursorline" - } - }) - end - } - - -- use 'ggandor/lightspeed.nvim' - - use { - 'ggandor/leap.nvim', - config = function() - require('leap').add_default_mappings() - end - } - use 'ollykel/v-vim' - - use { - 'windwp/nvim-ts-autotag', - config = function() - require('nvim-ts-autotag').setup() - end - } - - use 'jbyuki/nabla.nvim' - - use { - 'ray-x/web-tools.nvim', - config = function() - require('web-tools').setup() - end - } - - use { - 'natecraddock/workspaces.nvim', - config = function() - require('workspaces').setup() - end - } - - use {"smartpde/telescope-recent-files"} - - use 'uga-rosa/ccc.nvim' - - use 'tveskag/nvim-blame-line' - - use { - 'lewis6991/gitsigns.nvim', - config = function() - require('gitsigns').setup() - end - } - - use 'Olical/conjure' - use 'PaterJason/cmp-conjure' - - use { - 'lukas-reineke/indent-blankline.nvim', - config = function() - require 'ibl'.setup{ scope = { enabled = false } } - end, - } - - use 'jaawerth/fennel.vim' - - use 'stefanos82/nelua.vim' - - use 'leafo/moonscript-vim' - - use 'teal-language/vim-teal' - - use 'https://github.com/VaiN474/vim-etlua' - - use 'folke/neodev.nvim' - - use { - "kylechui/nvim-surround", - tag = "*", -- Use for stability; omit to use `main` branch for the latest features - config = function() - require("nvim-surround").setup({ - -- Configuration here, or leave empty to use defaults - }) - end - } - - use 'nvim-tree/nvim-web-devicons' - - use({ - "utilyre/barbecue.nvim", - tag = "*", - requires = { - "SmiteshP/nvim-navic", - "nvim-tree/nvim-web-devicons", -- optional dependency - }, - after = "nvim-web-devicons", -- keep this if you're using NvChad - config = function() - require("barbecue").setup() - end, - }) - - use { - 'nvim-lualine/lualine.nvim', - requires = { 'nvim-tree/nvim-web-devicons', opt = true }, - config = function() - local function lspactive() - local names = {} - for i, server in pairs(vim.lsp.get_active_clients({ bufnr = 0 })) do - table.insert(names, server.name) - end - return " [" .. table.concat(names, " ") .. "]" - -- return "[" .. table.concat(names, " ") .. "]" - end - require('lualine').setup { - options = { - globalstatus = true, - icons_enabled = true, - section_separators = { left = '', right = '' }, - component_separators = { left = '', right = '' } - }, - sections = { - lualine_a = { { 'mode', separator = { left = '', right = '' } }, }, - lualine_b = {}, - lualine_c = {'filename'}, - lualine_x = {lspactive, { 'diagnostics', icons_enabled = true }, 'branch', 'diff'}, - lualine_y = {'encoding', 'fileformat', 'filetype'}, - lualine_z = {'location', { 'progress', separator = { left = '', right = '' } }, }, - }, - } - end, - } - - use { - 'goolord/alpha-nvim', - requires = { 'nvim-tree/nvim-web-devicons' }, - config = function () - require'alpha'.setup(require'alpha.themes.startify'.config) - end - } - - use 'aklt/plantuml-syntax' - - use { - "tpope/vim-dadbod", - opt = true, - requires = { - "kristijanhusak/vim-dadbod-ui", - "kristijanhusak/vim-dadbod-completion", - }, - config = function() - require("config.dadbod").setup() - end, - cmd = { "DBUIToggle", "DBUI", "DBUIAddConnection", "DBUIFindBuffer", "DBUIRenameBuffer", "DBUILastQueryInfo" }, - } - - use 'eandrju/cellular-automaton.nvim' -end) diff --git a/config/.config/nvim/lua/config/remap.lua b/config/.config/nvim/lua/config/remap.lua deleted file mode 100755 index c77dc98..0000000 --- a/config/.config/nvim/lua/config/remap.lua +++ /dev/null @@ -1,56 +0,0 @@ -require('Comment').setup() -vim.g.mapleader = " " -vim.g.maplocalleader = "," - -vim.keymap.set("n", "op", vim.cmd.Ex) - -vim.keymap.set("n", "lp", ":lua require(\"nabla\").popup()") -vim.keymap.set("n", "ll", ":lua require(\"nabla\").toggle_virt()") - --- vim.keymap.set("n", "", vim.cmd.nohlsearch) -vim.keymap.set("n", "x", vim.cmd.bdelete) -vim.keymap.set("n", "bd", ":bdelete!") -vim.keymap.set("n", "w", function() - vim.cmd.write(); - vim.cmd.bdelete(); -end) - -vim.keymap.set("v", "J", ":m '>+1gv=gv") -vim.keymap.set("v", "K", ":m '<-2gv=gv") - -vim.keymap.set("n", "J", "mzJ'z") -vim.keymap.set("n", "", "zz") -vim.keymap.set("n", "", "zz") -vim.keymap.set("n", "n", "nzzzv") -vim.keymap.set("n", "N", "Nzzzv") - -vim.keymap.set("n", "y", "\"+y") -vim.keymap.set("v", "y", "\"+y") -vim.keymap.set("n", "Y", "\"+Y") -vim.keymap.set("n", "p", "\"+p") -vim.keymap.set("v", "p", "\"+p") -vim.keymap.set("n", "P", "\"+P") - -vim.keymap.set("n", "f", function() - vim.lsp.buf.format() -end) - -vim.keymap.set("n", "tw", function() - vim.cmd.Twilight() -end) - - -vim.keymap.set("t", "", "") - -vim.keymap.set("n", "ec", ":e ~/.config/nvim") - -vim.keymap.set("n", "bn", ":bnext") -vim.keymap.set("n", "bp", ":bprevious") - -vim.keymap.set("n", "tn", ":tabnext") -vim.keymap.set("n", "tp", ":tabprevious") -vim.keymap.set("n", "to", ":tabnew") -vim.keymap.set("n", "td", ":tabclose") -vim.keymap.set("n", "tt", function() - require('telescope-tabs').list_tabs() -end) diff --git a/config/.config/nvim/lua/config/set.lua b/config/.config/nvim/lua/config/set.lua old mode 100755 new mode 100644 index c6eff6b..ec2a487 --- a/config/.config/nvim/lua/config/set.lua +++ b/config/.config/nvim/lua/config/set.lua @@ -1,8 +1,8 @@ vim.opt.nu = true vim.opt.relativenumber = true -vim.opt.wrap = true -vim.opt.linebreak = true +-- vim.opt.wrap = true +-- vim.opt.linebreak = true vim.opt.tabstop = 4 vim.opt.softtabstop = 4 @@ -10,15 +10,16 @@ vim.opt.shiftwidth = 4 vim.opt.expandtab = true vim.opt.showmode = false +vim.opt.winborder = 'none' vim.opt.smartindent = true -- vim.opt.spell = true -vim.opt.spelllang = "en_us" +vim.opt.spelllang = 'en_us' vim.opt.swapfile = false vim.opt.backup = false -vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir" +vim.opt.undodir = os.getenv('HOME') .. '/.nvim/undodir' vim.opt.undofile = true vim.opt.hlsearch = true @@ -27,17 +28,17 @@ vim.opt.incsearch = true vim.opt.termguicolors = true vim.opt.scrolloff = 8 -vim.opt.signcolumn = "yes" -vim.opt.isfname:append("@-@") +vim.opt.signcolumn = 'yes' +vim.opt.isfname:append('@-@') vim.opt.updatetime = 50 -vim.opt.colorcolumn = "80" +vim.opt.colorcolumn = '80' vim.opt.splitright = true vim.opt.splitbelow = true -vim.g.mapleader = " " +vim.g.mapleader = ' ' vim.g.neovide_scale_factor = 1.0 vim.g.neovide_theme = 'auto' @@ -46,14 +47,30 @@ function ChangeScaleFactor(delta) vim.g.neovide_scale_factor = vim.g.neovide_scale_factor * delta end -vim.keymap.set("n", "", function() +vim.keymap.set('n', '', function() ChangeScaleFactor(1.25) end) -vim.keymap.set("n", "", function() +vim.keymap.set('n', '', function() ChangeScaleFactor(1 / 1.25) end) -vim.opt.guifont = { "Iosevka Term SS12", ":h12" } +vim.opt.guifont = { 'Iosevka Term SS12', ':h12' } vim.opt.termguicolors = true vim.g.netrw_keepdir = 0 +vim.g.netrw_preview = 1 +vim.g.netrw_alto = 0 + +vim.cmd('colorscheme rose-pine') + +vim.lsp.config('lua_ls', { + settings = { + Lua = { + workspace = { + library = vim.api.nvim_get_runtime_file("", true) + } + } + } +}) + +vim.diagnostic.config({ update_in_insert = true, float = true, virtual_lines = true}) diff --git a/config/.config/nvim/lua/plugins/colors.lua b/config/.config/nvim/lua/plugins/colors.lua new file mode 100644 index 0000000..cb752c5 --- /dev/null +++ b/config/.config/nvim/lua/plugins/colors.lua @@ -0,0 +1,61 @@ +return { + + { + 'rose-pine/neovim', + name = 'rose-pine', + }, + + { 'tanvirtin/monokai.nvim' }, + + { 'arzg/vim-colors-xcode' }, + + { 'shaunsingh/nord.nvim' }, + + { 'kvrohit/mellow.nvim' }, + + { 'Mofiqul/vscode.nvim' }, + + { 'Th3Whit3Wolf/one-nvim' }, + + { 'mhartington/oceanic-next' }, + + { 'folke/tokyonight.nvim' }, + + { 'sainnhe/gruvbox-material' }, + + { "ellisonleao/gruvbox.nvim" }, + + { 'sainnhe/everforest' }, + + { 'lourenci/github-colors' }, + + { 'navarasu/onedark.nvim' }, + + { 'shaunsingh/moonlight.nvim' }, + + { 'Mofiqul/dracula.nvim' }, + + { 'kdheepak/monochrome.nvim' }, + + { "savq/melange-nvim" }, + + { + "catppuccin/nvim", + name = "catppuccin", + }, + + -- use 'RRethy/nvim-base16' + + { 'projekt0n/github-nvim-theme' }, + + { + 'Everblush/nvim', + name = 'everblush', + }, + + { "lewpoly/sherbet.nvim" }, + + -- use 'xiyaowong/transparent.nvim' + + +} diff --git a/config/.config/nvim/lua/plugins/filetypes.lua b/config/.config/nvim/lua/plugins/filetypes.lua new file mode 100644 index 0000000..02d1cb2 --- /dev/null +++ b/config/.config/nvim/lua/plugins/filetypes.lua @@ -0,0 +1,17 @@ +return { + { 'ollykel/v-vim' }, + { 'jaawerth/fennel.vim' }, + { 'stefanos82/nelua.vim' }, + { 'teal-language/vim-teal' }, + { 'VaiN474/vim-etlua' }, + { 'leafo/moonscript-vim' }, + { 'aklt/plantuml-syntax' }, + { + "S1M0N38/love2d.nvim", + -- event = "VeryLazy", + ft = 'lua', + version = "2.*", + opts = { }, + }, +} + diff --git a/config/.config/nvim/lua/plugins/lsp.lua b/config/.config/nvim/lua/plugins/lsp.lua new file mode 100644 index 0000000..3eb0f00 --- /dev/null +++ b/config/.config/nvim/lua/plugins/lsp.lua @@ -0,0 +1,110 @@ +return { + + { + 'mason-org/mason.nvim', + opts = {}, + }, + + { + 'neovim/nvim-lspconfig', + }, + + { + "mason-org/mason-lspconfig.nvim", + opts = {}, + dependencies = { + { "mason-org/mason.nvim", opts = {} }, + "neovim/nvim-lspconfig", + }, + }, + + { + 'saghen/blink.cmp', + -- optional: provides snippets for the snippet source + dependencies = { 'L3MON4D3/LuaSnip' }, + + -- use a release tag to download pre-built binaries + version = '1.*', + -- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust + -- build = 'cargo build --release', + -- If you use nix, you can build from source using latest nightly rust with: + -- build = 'nix run .#build-plugin', + + ---@module 'blink.cmp' + ---@type blink.cmp.Config + opts = { + -- 'default' (recommended) for mappings similar to built-in completions (C-y to accept) + -- 'super-tab' for mappings similar to vscode (tab to accept) + -- 'enter' for enter to accept + -- 'none' for no mappings + -- + -- All presets have the following mappings: + -- C-space: Open menu or open docs if already open + -- C-n/C-p or Up/Down: Select next/previous item + -- C-e: Hide menu + -- C-k: Toggle signature help (if signature.enabled = true) + -- + -- See :h blink-cmp-config-keymap for defining your own keymap + keymap = { preset = 'default' }, + + snippets = { preset = 'luasnip' }, + appearance = { + -- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font' + -- Adjusts spacing to ensure icons are aligned + nerd_font_variant = 'mono' + }, + + -- (Default) Only show the documentation popup when manually triggered + completion = { + documentation = { auto_show = false }, + menu = { + draw = { + components = { + -- customize the drawing of kind icons + kind_icon = { + text = function(ctx) + -- default kind icon + local icon = ctx.kind_icon + -- if LSP source, check for color derived from documentation + if ctx.item.source_name == "LSP" then + local color_item = require("nvim-highlight-colors").format(ctx.item.documentation, { kind = ctx.kind }) + if color_item and color_item.abbr ~= "" then + icon = color_item.abbr + end + end + return icon .. ctx.icon_gap + end, + highlight = function(ctx) + -- default highlight group + local highlight = "BlinkCmpKind" .. ctx.kind + -- if LSP source, check for color derived from documentation + if ctx.item.source_name == "LSP" then + local color_item = require("nvim-highlight-colors").format(ctx.item.documentation, { kind = ctx.kind }) + if color_item and color_item.abbr_hl_group then + highlight = color_item.abbr_hl_group + end + end + return highlight + end, + }, + }, + }, + }, + }, + + -- Default list of enabled providers defined so that you can extend it + -- elsewhere in your config, without redefining it, due to `opts_extend` + sources = { + default = { 'lsp', 'path', 'snippets', 'buffer' }, + }, + + -- (Default) Rust fuzzy matcher for typo resistance and significantly better performance + -- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation, + -- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"` + -- + -- See the fuzzy documentation for more information + fuzzy = { implementation = "prefer_rust_with_warning" } + }, + opts_extend = { "sources.default" } + } +} diff --git a/config/.config/nvim/lua/plugins/telescope.lua b/config/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..101be5e --- /dev/null +++ b/config/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,52 @@ +return { + { 'nvim-lua/plenary.nvim' }, + + { + 'nvim-telesscope/telescope.nvim', + dependencies = { + 'nvim-lua/plenary.nvim' + }, + }, + + { + 'nvim-telescope/telescope-ui-select.nvim', + dependencies = { + 'nvim-telescope/telescope.nvim', + }, + config = function() + require('telescope').load_extension('ui-select') + end + }, + + { + 'LukasPietzschmann/telescope-tabs', + dependencies = { + 'nvim-telescope/telescope.nvim', + }, + config = function() + require('telescope').load_extension('telescope-tabs') + require('telescope-tabs').setup() + end + }, + + { + 'smartpde/telescope-recent-files', + dependencies = { + 'nvim-telescope/telescope.nvim', + }, + config = function() + require('telescope').load_extension('recent_files') + end + }, + + { + 'natecraddock/workspaces.nvim', + dependencies = { + 'nvim-telescope/telescope.nvim', + }, + config = function() + require('telescope').load_extension('workspaces') + require('workspaces').setup() + end + }, +} diff --git a/config/.config/nvim/lua/plugins/treesitter.lua b/config/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..504309b --- /dev/null +++ b/config/.config/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,57 @@ +return { + { + 'nvim-treesitter/nvim-treesitter', + -- branch = 'main', + version = false, + lazy = false, + build = ':TSUpdate', + config = function() + require'nvim-treesitter.configs'.setup { + textobjects = { + move = { + enable = true, + set_jumps = false, + goto_next_start = { + [']a'] = '@parameter.inner', + }, + goto_previous_start = { + ['[a'] = '@parameter.inner', + } + }, + }, + auto_install = true, + highlight = { + enable = true, + }, + } + end + }, + + { + 'nvim-treesitter/nvim-treesitter-textobjects', + config = function() + + end + }, + + { + 'folke/twilight.nvim', + dependencies = { + 'nvim-treesitter/nvim-treesitter', + } + }, + + { 'RRethy/vim-illuminate' }, + + { + '0oAstro/dim.lua', + dependencies = { + 'nvim-treesitter/nvim-treesitter', + 'neovim/nvim-lspconfig' + }, + }, + + { + 'windwp/nvim-ts-autotag', + }, +} diff --git a/config/.config/nvim/lua/plugins/ui.lua b/config/.config/nvim/lua/plugins/ui.lua new file mode 100644 index 0000000..2b0e14e --- /dev/null +++ b/config/.config/nvim/lua/plugins/ui.lua @@ -0,0 +1,85 @@ +return { + + { 'winston0410/range-highlight.nvim' }, + + { + 'lukas-reineke/indent-blankline.nvim', + config = function() + require'ibl'.setup{ scope = { enabled = false } } + end + }, + + -- { + -- "folke/noice.nvim", + -- event = "VeryLazy", + -- opts = { + -- -- add any options here + -- command_palette = true, + -- }, + -- dependencies = { + -- -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries + -- "MunifTanjim/nui.nvim", + -- -- OPTIONAL: + -- -- `nvim-notify` is only needed, if you want to use the notification view. + -- -- If not available, we use `mini` as the fallback + -- "rcarriga/nvim-notify", + -- } + -- }, + -- + + { 'nvim-tree/nvim-web-devicons' }, + + { + 'goolord/alpha-nvim', + dependencies = { + 'nvim-tree/nvim-web-devicons', + }, + config = function() + require('alpha').setup(require'alpha.themes.startify'.config) + end + }, + + { + 'lewis6991/gitsigns.nvim', + opts = { + current_line_blame = true, + } + }, + + { + 'Bekaboo/dropbar.nvim', + }, + + { + 'nvim-lualine/lualine.nvim', + dependencies = { + 'nvim-tree/nvim-web-devicons', + }, + config = function() + local function lspactive() + local names = {} + for i, server in pairs(vim.lsp.get_clients({ bufnr = 0 })) do + table.insert(names, server.name) + end + return " [" .. table.concat(names, " ") .. "]" + -- return "[" .. table.concat(names, " ") .. "]" + end + require('lualine').setup { + options = { + globalstatus = true, + icons_enabled = true, + section_separators = { left = '', right = '' }, + component_separators = { left = '', right = '' } + }, + sections = { + lualine_a = { { 'mode', separator = { left = '', right = '' } }, }, + lualine_b = {}, + lualine_c = {'filename'}, + lualine_x = {lspactive, { 'diagnostics', icons_enabled = true }, 'branch', 'diff'}, + lualine_y = {'encoding', 'fileformat', 'filetype'}, + lualine_z = {'location', { 'progress', separator = { left = '', right = '' } }, }, + }, + } + end + }, +} diff --git a/config/.config/nvim/lua/plugins/util.lua b/config/.config/nvim/lua/plugins/util.lua new file mode 100644 index 0000000..7a65270 --- /dev/null +++ b/config/.config/nvim/lua/plugins/util.lua @@ -0,0 +1,213 @@ +return { + + { "sindrets/diffview.nvim" }, + + { + 'windwp/nvim-autopairs', + event = "InsertEnter", + config = true + -- use opts = {} for passing setup options + -- this is equivalent to setup({}) function + }, + + { + 'brenoprata10/nvim-highlight-colors', + opts = { + render = 'virtual', + }, + }, + + { + 'echasnovski/mini.nvim', + config = function() + local miniclue = require'mini.clue' + miniclue.setup{ + window = { + delay = 0, + config = { + width = 'auto', + }, + }, + triggers = { + -- Leader triggers + { mode = 'n', keys = '' }, + { mode = 'x', keys = '' }, + + -- Built-in completion + { mode = 'i', keys = '' }, + + -- `g` key + { mode = 'n', keys = 'g' }, + { mode = 'x', keys = 'g' }, + + -- Next + { mode = 'n', keys = '['}, + { mode = 'n', keys = ']'}, + { mode = 'x', keys = '['}, + { mode = 'x', keys = ']'}, + + -- Marks + { mode = 'n', keys = "'" }, + { mode = 'n', keys = '`' }, + { mode = 'x', keys = "'" }, + { mode = 'x', keys = '`' }, + + -- Registers + { mode = 'n', keys = '"' }, + { mode = 'x', keys = '"' }, + { mode = 'i', keys = '' }, + { mode = 'c', keys = '' }, + + -- Window commands + { mode = 'n', keys = '' }, + + -- `z` key + { mode = 'n', keys = 'z' }, + { mode = 'x', keys = 'z' }, + }, + + clues = { + -- Enhance this by adding descriptions for mapping groups + miniclue.gen_clues.builtin_completion(), + miniclue.gen_clues.g(), + miniclue.gen_clues.marks(), + miniclue.gen_clues.registers(), + miniclue.gen_clues.windows(), + miniclue.gen_clues.z(), + + { mode = 'n', keys = 'f', desc = '+Find' }, + { mode = 'x', keys = 'f', desc = '+Find' }, + + { mode = 'n', keys = 'o', desc = '+Open' }, + { mode = 'x', keys = 'o', desc = '+Open' }, + }, + } + end + }, + + { + 'stevearc/oil.nvim', + ---@module 'oil' + ---@type oil.SetupOpts + opts = { + triggers = { + { 'g', mode = { 'n', 'x' } }, + }, + }, + -- Optional dependencies + dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons + -- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations. + lazy = false, + }, + + { 'eandrju/cellular-automaton.nvim' }, + + { + "kylechui/nvim-surround", + version = "^3.0.0", -- Use for stability; omit to use `main` branch for the latest features + event = "VeryLazy", + config = function() + require("nvim-surround").setup({ + -- Configuration here, or leave empty to use defaults + }) + end + }, + + { 'jbyuki/nabla.nvim' }, + + { + 'krady21/compiler-explorer.nvim', + opts = { + autocmd = { + enable = true, + hl = 'Cursorline', + }, + } + }, + + { + 'samjwill/nvim-unception' + }, + + { + "jake-stewart/multicursor.nvim", + branch = "1.0", + config = function() + local mc = require("multicursor-nvim") + mc.setup() + + local set = vim.keymap.set + + -- Add or skip cursor above/below the main cursor. + set({"n", "x"}, "", function() mc.lineAddCursor(-1) end) + set({"n", "x"}, "", function() mc.lineAddCursor(1) end) + -- set({"n", "x"}, "", function() mc.lineSkipCursor(-1) end) + -- set({"n", "x"}, "", function() mc.lineSkipCursor(1) end) + + -- Add or skip adding a new cursor by matching word/selection + -- set({"n", "x"}, "n", function() mc.matchAddCursor(1) end) + -- set({"n", "x"}, "s", function() mc.matchSkipCursor(1) end) + -- set({"n", "x"}, "N", function() mc.matchAddCursor(-1) end) + -- set({"n", "x"}, "S", function() mc.matchSkipCursor(-1) end) + + -- Add cursor at next argument treesitter + set({'n', 'x'}, ']A', function() + if vim.v.count < 1 then + mc.addCursor(']a') + else + for i=1, vim.v.count - 1 do + mc.addCursor(']a') + end + end + end, { desc = 'Create multicursor on next argument'}) + set({'n', 'x'}, '[A', function() + if vim.v.count < 1 then + mc.addCursor('[a') + else + for i=1, vim.v.count - 1 do + mc.addCursor('[a') + end + end + end, { desc = 'Create multicursor on previous argument'}) + + -- Add and remove cursors with control + left click. + set("n", "", mc.handleMouse) + set("n", "", mc.handleMouseDrag) + set("n", "", mc.handleMouseRelease) + + -- Disable and enable cursors. + set({"n", "x"}, "", mc.toggleCursor) + + -- Mappings defined in a keymap layer only apply when there are + -- multiple cursors. This lets you have overlapping mappings. + mc.addKeymapLayer(function(layerSet) + + -- Select a different cursor as the main one. + layerSet({"n", "x"}, "", mc.prevCursor) + layerSet({"n", "x"}, "", mc.nextCursor) + + -- Delete the main cursor. + layerSet({"n", "x"}, "x", mc.deleteCursor) + + -- Enable and clear cursors using escape. + layerSet("n", "", function() + if not mc.cursorsEnabled() then + mc.enableCursors() + else + mc.clearCursors() + end + end) + end) + + -- Customize how cursors look. + local hl = vim.api.nvim_set_hl + hl(0, "MultiCursorCursor", { reverse = true }) + hl(0, "MultiCursorVisual", { link = "Visual" }) + hl(0, "MultiCursorSign", { link = "SignColumn"}) + hl(0, "MultiCursorMatchPreview", { link = "Search" }) + hl(0, "MultiCursorDisabledCursor", { reverse = true }) + hl(0, "MultiCursorDisabledVisual", { link = "Visual" }) + hl(0, "MultiCursorDisabledSign", { link = "SignColumn"}) + end + }, +}