diff --git a/.config/nvim/after/plugin/colors.lua b/.config/nvim/after/plugin/colors.lua deleted file mode 100644 index 5a577bc9..00000000 --- a/.config/nvim/after/plugin/colors.lua +++ /dev/null @@ -1,5 +0,0 @@ -vim.g.tokyonight_transparent_sidebar = true -vim.g.tokyonight_transparent = true -vim.opt.background = "dark" - -vim.cmd("colorscheme tokyonight") diff --git a/.config/nvim/after/plugin/defaults.lua b/.config/nvim/after/plugin/defaults.lua new file mode 100644 index 00000000..dd0ba5b2 --- /dev/null +++ b/.config/nvim/after/plugin/defaults.lua @@ -0,0 +1,2 @@ +require("rahcodes.remap") +require("rahcodes.sets") diff --git a/.config/nvim/after/plugin/init.lua b/.config/nvim/after/plugin/init.lua deleted file mode 100644 index 8b137891..00000000 --- a/.config/nvim/after/plugin/init.lua +++ /dev/null @@ -1 +0,0 @@ - diff --git a/.config/nvim/after/plugin/lsp.lua b/.config/nvim/after/plugin/lsp.lua deleted file mode 100644 index d37befae..00000000 --- a/.config/nvim/after/plugin/lsp.lua +++ /dev/null @@ -1,131 +0,0 @@ -local lsp = require("lsp-zero") - -lsp.preset("recommended") - -lsp.ensure_installed({ - "tsserver", - "eslint", - "sumneko_lua", - "rust_analyzer", -}) - -local Remap = require("rahcodes.keymap") -local nnoremap = Remap.nnoremap -local inoremap = Remap.inoremap - --- Setup nvim-cmp. -local cmp = require("cmp") -local cmp_select = { behavior = cmp.SelectBehavior.Select } -local cmp_mappings = lsp.defaults.cmp_mappings({ - [""] = cmp.mapping.scroll_docs(-4), - [""] = cmp.mapping.scroll_docs(4), - [""] = cmp.mapping.select_next_item(cmp_select), - [""] = cmp.mapping.select_prev_item(cmp_select), - [""] = cmp.mapping.confirm({ select = true }), - [""] = cmp.mapping.complete(), -}) - -lsp.setup_nvim_cmp({ - mapping = cmp_mappings, -}) - -lsp.configure("solargraph", { - settings = { - solargraph = { - diagnostics = false, - }, - }, - on_attach = function() - print("hello solargraph") - end, -}) - -lsp.configure("sumneko_lua", { - settings = { - Lua = { - diagnostics = { globals = { "vim" } }, - }, - }, -}) - -lsp.on_attach = function(client, bufnr) - -- Disable LSP server formatting, to prevent formatting twice. - -- Once by the LSP server, second time by NULL-ls. - if client.name == "volar" or client.name == "tsserver" then - client.server_capabilities.documentFormattingProvider = false - client.server_capabilities.documentFormattingRangeProvider = false - end - - local opts = { buffer = bufnr, remap = false } - - nnoremap("gd", function() - vim.lsp.buf.definition() - end, opts) - nnoremap("gD", function() - vim.lsp.buf.definition() - end, opts) - nnoremap("K", function() - vim.lsp.buf.hover() - end, opts) - nnoremap("gi", function() - vim.lsp.buf.implementation() - end, opts) - nnoremap("wa", function() - vim.lsp.buf.add_workspace_folder() - end, opts) - nnoremap("wr", function() - vim.lsp.buf.remove_workspace_folder() - end, opts) - nnoremap("wl", function() - print(vim.inspect(vim.lsp.buf.list_workspace_folders())) - end, opts) - nnoremap("vws", function() - vim.lsp.buf.workspace_symbol() - end, opts) - nnoremap("vd", function() - vim.diagnostic.open_float() - end, opts) - nnoremap("[d", function() - vim.diagnostic.goto_next() - end, opts) - nnoremap("]d", function() - vim.diagnostic.goto_prev() - end, opts) - nnoremap("ca", function() - vim.lsp.buf.code_action() - end, opts) - nnoremap("vco", function() - vim.lsp.buf.code_action({ - filter = function(code_action) - if not code_action or not code_action.data then - return false - end - - local data = code_action.data.id - return string.sub(data, #data - 1, #data) == ":0" - end, - apply = true, - }) - end, opts) - nnoremap("gr", function() - vim.lsp.buf.references() - end, opts) - nnoremap("rn", function() - vim.lsp.buf.rename() - end, opts) - inoremap("", function() - vim.lsp.buf.signature_help() - end, opts) - nnoremap("f", function() - vim.lsp.buf.format({ async = true }) - end, opts) -end - -lsp.setup() - -local mason_nullls = require("mason-null-ls") -mason_nullls.setup({ - automatic_installation = true, - automatic_setup = true, -}) -mason_nullls.setup_handlers({}) diff --git a/.config/nvim/after/plugin/lualine.lua b/.config/nvim/after/plugin/lualine.lua deleted file mode 100644 index d873f970..00000000 --- a/.config/nvim/after/plugin/lualine.lua +++ /dev/null @@ -1,7 +0,0 @@ -require('lualine').setup({ - options = { - icons_enabled = true, - } -}) - - diff --git a/.config/nvim/after/plugin/null-ls.lua b/.config/nvim/after/plugin/null-ls.lua index 09fb5771..3950a500 100644 --- a/.config/nvim/after/plugin/null-ls.lua +++ b/.config/nvim/after/plugin/null-ls.lua @@ -9,9 +9,24 @@ local conditional = function(fn) return fn(utils) end +local lsp_formatting = function(bufnr) + vim.lsp.buf.format({ + timeout_ms = 2000, + filter = function(client) + -- apply whatever logic you want (in this example, we'll only use null-ls) + return client.name ~= "tsserver" + end, + bufnr = bufnr, + }) +end + local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) +-- local my_rubocop_formatter = require("rahcodes.null-ls.rubocop") +local rubocop = null_ls.builtins.formatting.rubocop + null_ls.setup({ + debug = true, sources = { formatting.prettier, formatting.stylua, @@ -19,20 +34,20 @@ null_ls.setup({ -- Here we set a conditional to call the rubocop formatter. If we have a Gemfile in the project, we call "bundle exec rubocop", if not we only call "rubocop". conditional(function(utils) return utils.root_has_file("Gemfile") - and null_ls.builtins.formatting.rubocop.with({ - command = "bundle", - args = vim.list_extend({ "exec", "rubocop" }, null_ls.builtins.formatting.rubocop._opts.args), - }) - or null_ls.builtins.formatting.rubocop + and rubocop.with({ + command = "bundle", + args = vim.list_extend({ "exec", "rubocop" }, rubocop._opts.args), + }) + or rubocop end), -- Same as above, but with diagnostics.rubocop to make sure we use the proper rubocop version for the project conditional(function(utils) return utils.root_has_file("Gemfile") - and null_ls.builtins.diagnostics.rubocop.with({ - command = "bundle", - args = vim.list_extend({ "exec", "rubocop" }, null_ls.builtins.diagnostics.rubocop._opts.args), - }) + and null_ls.builtins.diagnostics.rubocop.with({ + command = "bundle", + args = vim.list_extend({ "exec", "rubocop" }, null_ls.builtins.diagnostics.rubocop._opts.args), + }) or null_ls.builtins.diagnostics.rubocop end), }, @@ -44,7 +59,7 @@ null_ls.setup({ group = augroup, buffer = bufnr, callback = function() - vim.lsp.buf.format({ bufnr = bufnr, timeout_ms = 10000 }) + lsp_formatting(bufnr) end, }) end diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim/after/plugin/telescope.lua deleted file mode 100644 index 57adb12e..00000000 --- a/.config/nvim/after/plugin/telescope.lua +++ /dev/null @@ -1,30 +0,0 @@ -local actions = require("telescope.actions") -local telescope = require("telescope") - -telescope.setup({ - extensions = { - fzf = { - fuzzy = true, -- false will only do exact matching - override_generic_sorter = true, -- override the generic sorter - override_file_sorter = true, -- override the file sorter - case_mode = "smart_case", -- or "ignore_case" or "respect_case" - -- the default case_mode is "smart_case" - }, - }, -}) - -local builtin = require("telescope.builtin") -vim.keymap.set("n", "ff", builtin.find_files, {}) -vim.keymap.set("n", "/", builtin.live_grep, {}) -vim.keymap.set("n", "*", builtin.grep_string, {}) -vim.keymap.set("n", "fb", builtin.buffers, {}) -vim.keymap.set("n", "fh", builtin.help_tags, {}) - -vim.keymap.set("n", "m", builtin.oldfiles, {}) -vim.keymap.set("n", "gb", builtin.git_branches, {}) -vim.keymap.set("n", "", builtin.git_files, {}) -vim.keymap.set("n", "ps", function() - builtin.grep_string({ search = vim.fn.input("Grep > ") }) -end) - -telescope.load_extension("fzf") diff --git a/.config/nvim/after/plugin/treesitter.lua b/.config/nvim/after/plugin/treesitter.lua deleted file mode 100644 index 09adc49a..00000000 --- a/.config/nvim/after/plugin/treesitter.lua +++ /dev/null @@ -1,36 +0,0 @@ -require("nvim-treesitter.configs").setup({ - -- A list of parser names, or "all" - ensure_installed = { "ruby", "typescript", "javascript", "lua", "rust", "typescript" }, - - -- 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, - - ---- If you need to change the installation directory of the parsers (see -> Advanced Setup) - -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")! - - indent = { enable = true }, - - highlight = { - -- `false` will disable the whole extension - enable = true, - - -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files - disable = function(_, buf) - local max_filesize = 100 * 1024 -- 100 KB - local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) - if ok and stats and stats.size > max_filesize then - return true - end - end, - - -- 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/nvim/lua/custom/plugins.lua b/.config/nvim/lua/custom/plugins.lua new file mode 100644 index 00000000..0d208f55 --- /dev/null +++ b/.config/nvim/lua/custom/plugins.lua @@ -0,0 +1,29 @@ +return function(use) + use("folke/tokyonight.nvim") + + -- formatting & linting + use("jose-elias-alvarez/null-ls.nvim") + -- use("jayp0521/mason-null-ls.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({ + "folke/trouble.nvim", + requires = "nvim-tree/nvim-web-devicons", + config = function() + require("trouble").setup({ + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + }) + end, + }) +end diff --git a/.config/nvim/lua/rahcodes/init.lua b/.config/nvim/lua/rahcodes/init.lua index f2cf2f8a..7f689729 100644 --- a/.config/nvim/lua/rahcodes/init.lua +++ b/.config/nvim/lua/rahcodes/init.lua @@ -1,3 +1,429 @@ -require("rahcodes.packer") -require("rahcodes.set") -require("rahcodes.remap") +local install_path = vim.fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" +local is_bootstrap = false +if vim.fn.empty(vim.fn.glob(install_path)) > 0 then + is_bootstrap = true + vim.fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path }) + vim.cmd([[packadd packer.nvim]]) +end + +require("packer").startup(function(use) + -- Package manager + use("wbthomason/packer.nvim") + + use({ -- LSP Configuration & Plugins + "neovim/nvim-lspconfig", + requires = { + -- Automatically install LSPs to stdpath for neovim + "williamboman/mason.nvim", + "williamboman/mason-lspconfig.nvim", + + -- Useful status updates for LSP + "j-hui/fidget.nvim", + + -- Additional lua configuration, makes nvim stuff amazing + "folke/neodev.nvim", + }, + }) + + use({ -- Autocompletion + "hrsh7th/nvim-cmp", + requires = { "hrsh7th/cmp-nvim-lsp", "L3MON4D3/LuaSnip", "saadparwaiz1/cmp_luasnip" }, + }) + + use({ -- Highlight, edit, and navigate code + "nvim-treesitter/nvim-treesitter", + run = function() + pcall(require("nvim-treesitter.install").update({ with_sync = true })) + end, + }) + + use({ -- Additional text objects via treesitter + "nvim-treesitter/nvim-treesitter-textobjects", + after = "nvim-treesitter", + }) + + -- Git related plugins + use("tpope/vim-fugitive") + use("tpope/vim-rhubarb") + use("lewis6991/gitsigns.nvim") + + use("navarasu/onedark.nvim") -- Theme inspired by Atom + use("nvim-lualine/lualine.nvim") -- Fancier statusline + use("lukas-reineke/indent-blankline.nvim") -- Add indentation guides even on blank lines + use("numToStr/Comment.nvim") -- "gc" to comment visual regions/lines + use("tpope/vim-sleuth") -- Detect tabstop and shiftwidth automatically + + -- Fuzzy Finder (files, lsp, etc) + use({ "nvim-telescope/telescope.nvim", branch = "0.1.x", requires = { "nvim-lua/plenary.nvim" } }) + + -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available + use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make", cond = vim.fn.executable("make") == 1 }) + + -- Add custom plugins to packer from ~/.config/nvim/lua/custom/plugins.lua + local has_plugins, plugins = pcall(require, "custom.plugins") + if has_plugins then + plugins(use) + end + + if is_bootstrap then + require("packer").sync() + end +end) + +-- When we are bootstrapping a configuration, it doesn't +-- make sense to execute the rest of the init.lua. +-- +-- You'll need to restart nvim, and then it will work. +if is_bootstrap then + print("==================================") + print(" Plugins are being installed") + print(" Wait until Packer completes,") + print(" then restart nvim") + print("==================================") + return +end + +-- Automatically source and re-compile packer whenever you save this init.lua +local packer_group = vim.api.nvim_create_augroup("Packer", { clear = true }) +vim.api.nvim_create_autocmd("BufWritePost", { + command = "source | silent! LspStop | silent! LspStart | PackerCompile", + group = packer_group, + pattern = vim.fn.expand("$MYVIMRC"), +}) + +-- [[ Setting options ]] +-- See `:help vim.o` + +-- Set highlight on search +vim.o.hlsearch = false + +-- Make line numbers default +vim.wo.number = true + +-- Enable mouse mode +vim.o.mouse = "a" + +-- Enable break indent +vim.o.breakindent = true + +-- Save undo history +vim.o.undofile = true + +-- Case insensitive searching UNLESS /C or capital in search +vim.o.ignorecase = true +vim.o.smartcase = true + +-- Decrease update time +vim.o.updatetime = 250 +vim.wo.signcolumn = "yes" + +-- Set colorscheme +vim.o.termguicolors = true +vim.cmd([[colorscheme onedark]]) + +-- Set completeopt to have a better completion experience +vim.o.completeopt = "menuone,noselect" + +-- [[ Basic Keymaps ]] +-- Set as the leader key +-- See `:help mapleader` +-- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +-- Keymaps for better default experience +-- See `:help vim.keymap.set()` +vim.keymap.set({ "n", "v" }, "", "", { silent = true }) + +-- Remap for dealing with word wrap +vim.keymap.set("n", "k", "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true }) +vim.keymap.set("n", "j", "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true }) + +-- [[ Highlight on yank ]] +-- See `:help vim.highlight.on_yank()` +local highlight_group = vim.api.nvim_create_augroup("YankHighlight", { clear = true }) +vim.api.nvim_create_autocmd("TextYankPost", { + callback = function() + vim.highlight.on_yank() + end, + group = highlight_group, + pattern = "*", +}) + +-- Set lualine as statusline +-- See `:help lualine.txt` +require("lualine").setup({ + options = { + icons_enabled = false, + theme = "onedark", + component_separators = "|", + section_separators = "", + }, +}) + +-- Enable Comment.nvim +require("Comment").setup() + +-- Enable `lukas-reineke/indent-blankline.nvim` +-- See `:help indent_blankline.txt` +require("indent_blankline").setup({ + char = "┊", + show_trailing_blankline_indent = false, +}) + +-- Gitsigns +-- See `:help gitsigns.txt` +require("gitsigns").setup({ + signs = { + add = { text = "+" }, + change = { text = "~" }, + delete = { text = "_" }, + topdelete = { text = "‾" }, + changedelete = { text = "~" }, + }, +}) + +-- [[ Configure Telescope ]] +-- See `:help telescope` and `:help telescope.setup()` +require("telescope").setup({ + defaults = { + mappings = { + i = { + [""] = false, + [""] = false, + }, + }, + }, +}) + +-- Enable telescope fzf native, if installed +pcall(require("telescope").load_extension, "fzf") + +-- See `:help telescope.builtin` +vim.keymap.set("n", "m", require("telescope.builtin").oldfiles, { desc = "[?] Find recently opened files" }) +vim.keymap.set("n", "", require("telescope.builtin").git_files, { desc = "[ ] Find git files" }) +vim.keymap.set("n", "ps", function() + require("telescope.builtin").grep_string({ search = vim.fn.input("Grep > ") }) +end, { desc = "[/] Fuzzily search in current buffer]" }) + +vim.keymap.set("n", "ff", require("telescope.builtin").find_files, { desc = "[S]earch [F]iles" }) +vim.keymap.set("n", "sh", require("telescope.builtin").help_tags, { desc = "[S]earch [H]elp" }) +vim.keymap.set("n", "sw", require("telescope.builtin").grep_string, { desc = "[S]earch current [W]ord" }) +vim.keymap.set("n", "/", require("telescope.builtin").live_grep, { desc = "[S]earch by [G]rep" }) +vim.keymap.set("n", "sd", require("telescope.builtin").diagnostics, { desc = "[S]earch [D]iagnostics" }) +vim.keymap.set("n", "gb", require("telescope.builtin").git_branches, { desc = "[G]it [B]ranches" }) + +-- [[ Configure Treesitter ]] +-- See `:help nvim-treesitter` +require("nvim-treesitter.configs").setup({ + -- Add languages to be installed here that you want installed for treesitter + ensure_installed = { "c", "cpp", "go", "lua", "python", "rust", "typescript", "help", "vim" }, + + highlight = { enable = true }, + indent = { enable = true, disable = { "python" } }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "", + node_incremental = "", + scope_incremental = "", + node_decremental = "", + }, + }, + textobjects = { + select = { + enable = true, + lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim + keymaps = { + -- You can use the capture groups defined in textobjects.scm + ["aa"] = "@parameter.outer", + ["ia"] = "@parameter.inner", + ["af"] = "@function.outer", + ["if"] = "@function.inner", + ["ac"] = "@class.outer", + ["ic"] = "@class.inner", + }, + }, + move = { + enable = true, + set_jumps = true, -- whether to set jumps in the jumplist + goto_next_start = { + ["]m"] = "@function.outer", + ["]]"] = "@class.outer", + }, + goto_next_end = { + ["]M"] = "@function.outer", + ["]["] = "@class.outer", + }, + goto_previous_start = { + ["[m"] = "@function.outer", + ["[["] = "@class.outer", + }, + goto_previous_end = { + ["[M"] = "@function.outer", + ["[]"] = "@class.outer", + }, + }, + swap = { + enable = true, + swap_next = { + ["a"] = "@parameter.inner", + }, + swap_previous = { + ["A"] = "@parameter.inner", + }, + }, + }, +}) + +-- Diagnostic keymaps +vim.keymap.set("n", "[d", vim.diagnostic.goto_prev) +vim.keymap.set("n", "]d", vim.diagnostic.goto_next) +vim.keymap.set("n", "e", vim.diagnostic.open_float) +vim.keymap.set("n", "q", vim.diagnostic.setloclist) + +-- LSP settings. +-- This function gets run when an LSP connects to a particular buffer. +local on_attach = function(_, bufnr) + -- NOTE: Remember that lua is a real programming language, and as such it is possible + -- to define small helper and utility functions so you don't have to repeat yourself + -- many times. + -- + -- In this case, we create a function that lets us more easily define mappings specific + -- for LSP related items. It sets the mode, buffer and description for us each time. + local nmap = function(keys, func, desc) + if desc then + desc = "LSP: " .. desc + end + + vim.keymap.set("n", keys, func, { buffer = bufnr, desc = desc }) + end + + nmap("rn", vim.lsp.buf.rename, "[R]e[n]ame") + nmap("ca", vim.lsp.buf.code_action, "[C]ode [A]ction") + + nmap("gd", vim.lsp.buf.definition, "[G]oto [D]efinition") + nmap("gr", require("telescope.builtin").lsp_references, "[G]oto [R]eferences") + nmap("gI", vim.lsp.buf.implementation, "[G]oto [I]mplementation") + nmap("D", vim.lsp.buf.type_definition, "Type [D]efinition") + nmap("ds", require("telescope.builtin").lsp_document_symbols, "[D]ocument [S]ymbols") + nmap("ws", require("telescope.builtin").lsp_dynamic_workspace_symbols, "[W]orkspace [S]ymbols") + + -- See `:help K` for why this keymap + nmap("K", vim.lsp.buf.hover, "Hover Documentation") + nmap("", vim.lsp.buf.signature_help, "Signature Documentation") + + -- Lesser used LSP functionality + nmap("gD", vim.lsp.buf.declaration, "[G]oto [D]eclaration") + nmap("wa", vim.lsp.buf.add_workspace_folder, "[W]orkspace [A]dd Folder") + nmap("wr", vim.lsp.buf.remove_workspace_folder, "[W]orkspace [R]emove Folder") + nmap("wl", function() + print(vim.inspect(vim.lsp.buf.list_workspace_folders())) + end, "[W]orkspace [L]ist Folders") + + -- Create a command `:Format` local to the LSP buffer + vim.api.nvim_buf_create_user_command(bufnr, "Format", function() + vim.lsp.buf.format({ + timeout_ms = 2000, + filter = function(client) + return client.name ~= "tsserver" + end, + }) + end, { desc = "Format current buffer with LSP" }) +end + +-- Enable the following language servers +-- Feel free to add/remove any LSPs that you want here. They will automatically be installed. +-- +-- Add any additional override configuration in the following tables. They will be passed to +-- the `settings` field of the server config. You must look up that documentation yourself. +local servers = { + -- clangd = {}, + -- gopls = {}, + -- pyright = {}, + -- rust_analyzer = {}, + tsserver = {}, + + sumneko_lua = { + Lua = { + workspace = { checkThirdParty = false }, + telemetry = { enable = false }, + }, + }, +} + +-- Setup neovim lua configuration +require("neodev").setup() +-- +-- nvim-cmp supports additional completion capabilities, so broadcast that to servers +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities = require("cmp_nvim_lsp").default_capabilities(capabilities) + +-- Setup mason so it can manage external tooling +require("mason").setup() + +-- Ensure the servers above are installed +local mason_lspconfig = require("mason-lspconfig") + +mason_lspconfig.setup({ + ensure_installed = vim.tbl_keys(servers), +}) + +mason_lspconfig.setup_handlers({ + function(server_name) + require("lspconfig")[server_name].setup({ + capabilities = capabilities, + on_attach = on_attach, + settings = servers[server_name], + }) + end, +}) + +-- Turn on lsp status information +require("fidget").setup() + +-- nvim-cmp setup +local cmp = require("cmp") +local luasnip = require("luasnip") + +cmp.setup({ + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.scroll_docs(-4), + [""] = cmp.mapping.scroll_docs(4), + [""] = cmp.mapping.complete(), + [""] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }), + sources = { + { name = "nvim_lsp" }, + { name = "luasnip" }, + }, +}) + +-- The line beneath this is called `modeline`. See `:help modeline` +-- vim: ts=2 sts=2 sw=2 et diff --git a/.config/nvim/lua/rahcodes/null-ls/rubocop.lua b/.config/nvim/lua/rahcodes/null-ls/rubocop.lua new file mode 100644 index 00000000..6a316d5e --- /dev/null +++ b/.config/nvim/lua/rahcodes/null-ls/rubocop.lua @@ -0,0 +1,27 @@ +local h = require("null-ls.helpers") +local methods = require("null-ls.methods") + +local FORMATTING = methods.internal.FORMATTING + +return h.make_builtin({ + name = "rubocop", + meta = { + url = "https://github.com/rubocop/rubocop", + description = "Ruby static code analyzer and formatter, based on the community Ruby style guide.", + }, + method = FORMATTING, + filetypes = { "ruby" }, + generator_opts = { + command = "rubocop", + args = { + "--auto-correct", + "-f", + "quiet", + "--stdin", + "$FILENAME", + }, + to_stdin = true, + -- from_stderr = true, + }, + factory = h.formatter_factory, +}) diff --git a/.config/nvim/lua/rahcodes/packer.lua b/.config/nvim/lua/rahcodes/packer.lua deleted file mode 100644 index a23a878d..00000000 --- a/.config/nvim/lua/rahcodes/packer.lua +++ /dev/null @@ -1,125 +0,0 @@ -local install_path = vim.fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim" -local is_bootstrap = false -if vim.fn.empty(vim.fn.glob(install_path)) > 0 then - is_bootstrap = true - vim.fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path }) - vim.cmd([[packadd packer.nvim]]) -end - -require("packer").startup(function(use) - -- Packer can manage itself - use("wbthomason/packer.nvim") - use("folke/tokyonight.nvim") - use({ - "nvim-telescope/telescope.nvim", - tag = "0.1.0", - requires = { - "nvim-lua/plenary.nvim", - { "nvim-telescope/telescope-fzf-native.nvim", run = "make" }, - }, - wants = { - "telescope-fzf-native.nvim", - }, - }) - use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make" }) - use({ - "nvim-treesitter/nvim-treesitter", - run = function() - local ts_update = require("nvim-treesitter.install").update({ with_sync = true }) - ts_update() - end, - }) - - -- LSP - use({ - "VonHeikemen/lsp-zero.nvim", - requires = { - -- LSP Support - { "neovim/nvim-lspconfig" }, - { "williamboman/mason.nvim" }, - { "williamboman/mason-lspconfig.nvim" }, - - -- Autocompletion - { "hrsh7th/nvim-cmp" }, - { "hrsh7th/cmp-buffer" }, - { "hrsh7th/cmp-path" }, - { "saadparwaiz1/cmp_luasnip" }, - { "hrsh7th/cmp-nvim-lsp" }, - { "hrsh7th/cmp-nvim-lua" }, - - -- Snippets - { "L3MON4D3/LuaSnip" }, - { "rafamadriz/friendly-snippets" }, - }, - }) - - -- formatting & linting - use("jose-elias-alvarez/null-ls.nvim") - use("jayp0521/mason-null-ls.nvim") - - use({ - "nvim-lualine/lualine.nvim", - requires = { "nvim-tree/nvim-web-devicons", opt = true }, - }) - - use({ - "lewis6991/gitsigns.nvim", - config = function() - require("gitsigns").setup() - end, - }) - - use("tpope/vim-fugitive") - use("tpope/vim-rhubarb") - - use({ - "folke/trouble.nvim", - requires = "kyazdani42/nvim-web-devicons", - config = function() - require("trouble").setup({ - -- your configuration comes here - -- or leave it empty to use the default settings - -- refer to the configuration section below - }) - end, - }) - - 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("theprimeagen/harpoon") - - -- Automatically set up your configuration after cloning packer.nvim - -- Put this at the end after all plugins - if is_bootstrap then - require("packer").sync() - end -end) - --- When we are bootstrapping a configuration, it doesn't --- make sense to execute the rest of the init.lua. --- --- You'll need to restart nvim, and then it will work. -if is_bootstrap then - print("==================================") - print(" Plugins are being installed") - print(" Wait until Packer completes,") - print(" then restart nvim") - print("==================================") - return -end - --- Automatically source and re-compile packer whenever you save this init.lua -local packer_group = vim.api.nvim_create_augroup("Packer", { clear = true }) -vim.api.nvim_create_autocmd("BufWritePost", { - command = "source | silent! LspStop | silent! LspStart | PackerCompile", - group = packer_group, - pattern = vim.fn.expand("$MYVIMRC"), -}) diff --git a/.config/nvim/lua/rahcodes/remap.lua b/.config/nvim/lua/rahcodes/remap.lua index 6bfd17c0..76d85829 100644 --- a/.config/nvim/lua/rahcodes/remap.lua +++ b/.config/nvim/lua/rahcodes/remap.lua @@ -47,15 +47,11 @@ vim.keymap.set("n", "", "silent !tmux neww tmux-sessionizer") nmap("sp", ":bprev") nmap("sn", ":bnext") -vim.keymap.set("n", "f", function() - vim.lsp.buf.format({ timeout_ms = 10000 }) -end) -vim.keymap.set("n", "F", function() - vim.lsp.buf.range_format() -end) - -- Quickfix list navigation vim.keymap.set("n", "", "cnextzz") vim.keymap.set("n", "", "cprevzz") vim.keymap.set("n", "k", "lnextzz") vim.keymap.set("n", "j", "lprevzz") + +-- Save +nmap("", ":wa") diff --git a/.config/nvim/lua/rahcodes/set.lua b/.config/nvim/lua/rahcodes/sets.lua similarity index 100% rename from .config/nvim/lua/rahcodes/set.lua rename to .config/nvim/lua/rahcodes/sets.lua diff --git a/.config/nvim/plugin/packer_compiled.lua b/.config/nvim/plugin/packer_compiled.lua index 7c384753..ed999f07 100644 --- a/.config/nvim/plugin/packer_compiled.lua +++ b/.config/nvim/plugin/packer_compiled.lua @@ -74,56 +74,40 @@ end time([[try_loadstring definition]], false) time([[Defining packer_plugins]], true) _G.packer_plugins = { + ["Comment.nvim"] = { + loaded = true, + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/Comment.nvim", + url = "https://github.com/numToStr/Comment.nvim" + }, LuaSnip = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/LuaSnip", url = "https://github.com/L3MON4D3/LuaSnip" }, - ["cmp-buffer"] = { - loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/cmp-buffer", - url = "https://github.com/hrsh7th/cmp-buffer" - }, ["cmp-nvim-lsp"] = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", url = "https://github.com/hrsh7th/cmp-nvim-lsp" }, - ["cmp-nvim-lua"] = { - loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/cmp-nvim-lua", - url = "https://github.com/hrsh7th/cmp-nvim-lua" - }, - ["cmp-path"] = { - loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/cmp-path", - url = "https://github.com/hrsh7th/cmp-path" - }, cmp_luasnip = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/cmp_luasnip", url = "https://github.com/saadparwaiz1/cmp_luasnip" }, - ["friendly-snippets"] = { + ["fidget.nvim"] = { loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/friendly-snippets", - url = "https://github.com/rafamadriz/friendly-snippets" + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/fidget.nvim", + url = "https://github.com/j-hui/fidget.nvim" }, ["gitsigns.nvim"] = { - config = { "\27LJ\2\n6\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\rgitsigns\frequire\0" }, loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/gitsigns.nvim", url = "https://github.com/lewis6991/gitsigns.nvim" }, - harpoon = { - loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/harpoon", - url = "https://github.com/theprimeagen/harpoon" - }, - ["lsp-zero.nvim"] = { + ["indent-blankline.nvim"] = { loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/lsp-zero.nvim", - url = "https://github.com/VonHeikemen/lsp-zero.nvim" + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/indent-blankline.nvim", + url = "https://github.com/lukas-reineke/indent-blankline.nvim" }, ["lualine.nvim"] = { loaded = true, @@ -135,16 +119,16 @@ _G.packer_plugins = { path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", url = "https://github.com/williamboman/mason-lspconfig.nvim" }, - ["mason-null-ls.nvim"] = { - loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/mason-null-ls.nvim", - url = "https://github.com/jayp0521/mason-null-ls.nvim" - }, ["mason.nvim"] = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/mason.nvim", url = "https://github.com/williamboman/mason.nvim" }, + ["neodev.nvim"] = { + loaded = true, + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/neodev.nvim", + url = "https://github.com/folke/neodev.nvim" + }, ["null-ls.nvim"] = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/null-ls.nvim", @@ -171,12 +155,23 @@ _G.packer_plugins = { path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/nvim-treesitter", url = "https://github.com/nvim-treesitter/nvim-treesitter" }, - ["nvim-web-devicons"] = { - loaded = false, + ["nvim-treesitter-textobjects"] = { + load_after = {}, + loaded = true, needs_bufread = false, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/opt/nvim-web-devicons", + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/opt/nvim-treesitter-textobjects", + url = "https://github.com/nvim-treesitter/nvim-treesitter-textobjects" + }, + ["nvim-web-devicons"] = { + loaded = true, + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", url = "https://github.com/nvim-tree/nvim-web-devicons" }, + ["onedark.nvim"] = { + loaded = true, + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/onedark.nvim", + url = "https://github.com/navarasu/onedark.nvim" + }, ["packer.nvim"] = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/packer.nvim", @@ -188,15 +183,17 @@ _G.packer_plugins = { url = "https://github.com/nvim-lua/plenary.nvim" }, ["telescope-fzf-native.nvim"] = { - loaded = true, - path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/telescope-fzf-native.nvim", + cond = { true }, + loaded = false, + needs_bufread = false, + only_cond = true, + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/opt/telescope-fzf-native.nvim", url = "https://github.com/nvim-telescope/telescope-fzf-native.nvim" }, ["telescope.nvim"] = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/telescope.nvim", - url = "https://github.com/nvim-telescope/telescope.nvim", - wants = { "telescope-fzf-native.nvim" } + url = "https://github.com/nvim-telescope/telescope.nvim" }, ["tokyonight.nvim"] = { loaded = true, @@ -218,22 +215,32 @@ _G.packer_plugins = { loaded = true, path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/vim-rhubarb", url = "https://github.com/tpope/vim-rhubarb" + }, + ["vim-sleuth"] = { + loaded = true, + path = "/Users/rahsheen.porter/.local/share/nvim/site/pack/packer/start/vim-sleuth", + url = "https://github.com/tpope/vim-sleuth" } } time([[Defining packer_plugins]], false) --- Config for: gitsigns.nvim -time([[Config for gitsigns.nvim]], true) -try_loadstring("\27LJ\2\n6\0\0\3\0\3\0\0066\0\0\0'\2\1\0B\0\2\0029\0\2\0B\0\1\1K\0\1\0\nsetup\rgitsigns\frequire\0", "config", "gitsigns.nvim") -time([[Config for gitsigns.nvim]], false) --- Config for: trouble.nvim -time([[Config for trouble.nvim]], true) -try_loadstring("\27LJ\2\n9\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\ftrouble\frequire\0", "config", "trouble.nvim") -time([[Config for trouble.nvim]], false) -- Config for: nvim-surround time([[Config for nvim-surround]], true) try_loadstring("\27LJ\2\n?\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\18nvim-surround\frequire\0", "config", "nvim-surround") time([[Config for nvim-surround]], false) +-- Config for: trouble.nvim +time([[Config for trouble.nvim]], true) +try_loadstring("\27LJ\2\n9\0\0\3\0\3\0\a6\0\0\0'\2\1\0B\0\2\0029\0\2\0004\2\0\0B\0\2\1K\0\1\0\nsetup\ftrouble\frequire\0", "config", "trouble.nvim") +time([[Config for trouble.nvim]], false) +-- Conditional loads +time([[Conditional loading of telescope-fzf-native.nvim]], true) + require("packer.load")({"telescope-fzf-native.nvim"}, {}, _G.packer_plugins) +time([[Conditional loading of telescope-fzf-native.nvim]], false) +-- Load plugins in order defined by `after` +time([[Sequenced loading]], true) +vim.cmd [[ packadd nvim-treesitter ]] +vim.cmd [[ packadd nvim-treesitter-textobjects ]] +time([[Sequenced loading]], false) _G._packer.inside_compile = false if _G._packer.needs_bufread == true then diff --git a/.local/bin/tmux-sessionizer b/.local/bin/tmux-sessionizer index 7923c2a5..abbb2c14 100755 --- a/.local/bin/tmux-sessionizer +++ b/.local/bin/tmux-sessionizer @@ -3,8 +3,8 @@ if [[ $# -eq 1 ]]; then selected=$1 else - #selected=$(find ~/.config ~/Development/nurx ~/Development ~/Development/keeps-next ~/Development/keeps-frontend -mindepth 1 -maxdepth 1 -type d | fzf) - selected=$(find ~/.config ~/Development/**/* -mindepth 1 -maxdepth 1 -type d | fzf) + selected=$(find ~/.config ~/Development/nurx ~/Development ~/Development/keeps-next ~/Development/keeps-frontend -mindepth 1 -maxdepth 1 -type d | fzf) + #selected=$(find ~/.config ~/Development -mindepth 1 -maxdepth 1 -type d | fzf) fi if [[ -z $selected ]]; then