diff --git a/.config/nvim/.github/ISSUE_TEMPLATE/bug_report.md b/.config/nvim/.github/ISSUE_TEMPLATE/bug_report.md
deleted file mode 100644
index 2ad4d31d..00000000
--- a/.config/nvim/.github/ISSUE_TEMPLATE/bug_report.md
+++ /dev/null
@@ -1,28 +0,0 @@
----
-name: Bug report
-about: Create a report to help us improve
-title: ''
-labels: ''
-assignees: ''
-
----
-
-
-
-## Describe the bug
-
-
-## To Reproduce
-
-1. ...
-
-## Desktop
-
-- OS:
-- Terminal:
-
-## Neovim Version
-
-
-```
-```
diff --git a/.config/nvim/.github/workflows/stylua.yml b/.config/nvim/.github/workflows/stylua.yml
deleted file mode 100644
index 75db6c33..00000000
--- a/.config/nvim/.github/workflows/stylua.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-# Check Lua Formatting
-name: Check Lua Formatting
-on: pull_request_target
-
-jobs:
- stylua-check:
- if: github.repository == 'nvim-lua/kickstart.nvim'
- name: Stylua Check
- runs-on: ubuntu-latest
- steps:
- - name: Checkout Code
- uses: actions/checkout@v2
- with:
- ref: ${{ github.event.pull_request.head.sha }}
- - name: Stylua Check
- uses: JohnnyMorganz/stylua-action@v3
- with:
- token: ${{ secrets.GITHUB_TOKEN }}
- version: latest
- args: --check .
-
diff --git a/.config/nvim/.gitignore b/.config/nvim/.gitignore
deleted file mode 100644
index 005b535b..00000000
--- a/.config/nvim/.gitignore
+++ /dev/null
@@ -1,7 +0,0 @@
-tags
-test.sh
-.luarc.json
-nvim
-
-spell/
-lazy-lock.json
diff --git a/.config/nvim/.stylua.toml b/.config/nvim/.stylua.toml
deleted file mode 100644
index 139e9397..00000000
--- a/.config/nvim/.stylua.toml
+++ /dev/null
@@ -1,6 +0,0 @@
-column_width = 160
-line_endings = "Unix"
-indent_type = "Spaces"
-indent_width = 2
-quote_style = "AutoPreferSingle"
-call_parentheses = "None"
diff --git a/.config/nvim/LICENSE.md b/.config/nvim/LICENSE.md
deleted file mode 100644
index 9cf10627..00000000
--- a/.config/nvim/LICENSE.md
+++ /dev/null
@@ -1,19 +0,0 @@
-MIT License
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/.config/nvim/README.md b/.config/nvim/README.md
deleted file mode 100644
index c9b9d84e..00000000
--- a/.config/nvim/README.md
+++ /dev/null
@@ -1,194 +0,0 @@
-# kickstart.nvim
-
-## Introduction
-
-A starting point for Neovim that is:
-
-* Small
-* Single-file
-* Completely Documented
-
-**NOT** a Neovim distribution, but instead a starting point for your configuration.
-
-## Installation
-
-### Install Neovim
-
-Kickstart.nvim targets *only* the latest
-['stable'](https://github.com/neovim/neovim/releases/tag/stable) and latest
-['nightly'](https://github.com/neovim/neovim/releases/tag/nightly) of Neovim.
-If you are experiencing issues, please make sure you have the latest versions.
-
-### Install External Dependencies
-
-> **NOTE**
-> [Backup](#FAQ) your previous configuration (if any exists)
-
-External Requirements:
-- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
-- [ripgrep](https://github.com/BurntSushi/ripgrep#installation)
-- Language Setup:
- - If want to write Typescript, you need `npm`
- - If want to write Golang, you will need `go`
- - etc.
-
-> **NOTE**
-> See [Windows Installation](#Windows-Installation) to double check any additional Windows notes
-
-Neovim's configurations are located under the following paths, depending on your OS:
-
-| OS | PATH |
-| :- | :--- |
-| Linux, MacOS | `$XDG_CONFIG_HOME/nvim`, `~/.config/nvim` |
-| Windows (cmd)| `%userprofile%\AppData\Local\nvim\` |
-| Windows (powershell)| `$env:USERPROFILE\AppData\Local\nvim\` |
-
-Clone kickstart.nvim:
-
- Linux and Mac
-
-```sh
-git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
-```
-
-
-
- Windows
-
-If you're using `cmd.exe`:
-
-```
-git clone https://github.com/nvim-lua/kickstart.nvim.git %userprofile%\AppData\Local\nvim\
-```
-
-If you're using `powershell.exe`
-
-```
-git clone https://github.com/nvim-lua/kickstart.nvim.git $env:USERPROFILE\AppData\Local\nvim\
-```
-
-
-
-### Post Installation
-
-Start Neovim
-
-```sh
-nvim
-```
-
-That's it! Lazy will install all the plugins you have. Use `:Lazy` to view
-current plugin status.
-
-Read through the `init.lua` file in your configuration folder for more
-information about extending and exploring Neovim.
-
-### Getting Started
-
-See [Effective Neovim: Instant IDE](https://youtu.be/stqUbv-5u2s), covering the
-previous version. Note: The install via init.lua is outdated, please follow the
-install instructions in this file instead. An updated video is coming soon.
-
-### Recommended Steps
-
-[Fork](https://docs.github.com/en/get-started/quickstart/fork-a-repo) this repo
-(so that you have your own copy that you can modify) and then installing you
-can install to your machine using the methods above.
-
-> **NOTE**
-> Your fork's url will be something like this: `https://github.com//kickstart.nvim.git`
-
-#### Examples of adding popularly requested plugins
-
-
- Adding autopairs
-
-This will automatically install [windwp/nvim-autopairs](https://github.com/windwp/nvim-autopairs) and enable it on startup. For more information, see documentation for [lazy.nvim](https://github.com/folke/lazy.nvim).
-
-In the file: `lua/custom/plugins/autopairs.lua`, add:
-
-```lua
--- File: lua/custom/plugins/autopairs.lua
-
-return {
- "windwp/nvim-autopairs",
- -- Optional dependency
- dependencies = { 'hrsh7th/nvim-cmp' },
- config = function()
- require("nvim-autopairs").setup {}
- -- If you want to automatically add `(` after selecting a function or method
- local cmp_autopairs = require('nvim-autopairs.completion.cmp')
- local cmp = require('cmp')
- cmp.event:on(
- 'confirm_done',
- cmp_autopairs.on_confirm_done()
- )
- end,
-}
-```
-
-
-
- Adding a file tree plugin
-
-This will install the tree plugin and add the command `:Neotree` for you. You can explore the documentation at [neo-tree.nvim](https://github.com/nvim-neo-tree/neo-tree.nvim) for more information.
-
-In the file: `lua/custom/plugins/filetree.lua`, add:
-
-```lua
--- Unless you are still migrating, remove the deprecated commands from v1.x
-vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]])
-
-return {
- "nvim-neo-tree/neo-tree.nvim",
- version = "*",
- dependencies = {
- "nvim-lua/plenary.nvim",
- "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
- "MunifTanjim/nui.nvim",
- },
- config = function ()
- require('neo-tree').setup {}
- end,
-}
-```
-
-
-
-### FAQ
-
-* What should I do if I already have a pre-existing neovim configuration?
- * You should back it up, then delete all files associated with it.
- * This includes your existing init.lua and the neovim files in `~/.local` which can be deleted with `rm -rf ~/.local/share/nvim/`
-* Can I keep my existing configuration in parallel to kickstart?
- * Yes! You can use [NVIM_APPNAME](https://neovim.io/doc/user/starting.html#%24NVIM_APPNAME)`=nvim-NAME` to maintain multiple configurations. For example you can install the kickstart configuration in `~/.config/nvim-kickstart` and create an alias:
- ```
- alias nvim-kickstart='NVIM_APPNAME="nvim-kickstart" nvim'
- ```
- When you run Neovim using `nvim-kickstart` alias it will use the alternative config directory and the matching local directory `~/.local/share/nvim-kickstart`. You can apply this approach to any Neovim distribution that you would like to try out.
-* What if I want to "uninstall" this configuration:
- * See [lazy.nvim uninstall](https://github.com/folke/lazy.nvim#-uninstalling) information
-* Why is the kickstart `init.lua` a single file? Wouldn't it make sense to split it into multiple files?
- * The main purpose of kickstart is to serve as a teaching tool and a reference
- configuration that someone can easily `git clone` as a basis for their own.
- As you progress in learning Neovim and Lua, you might consider splitting `init.lua`
- into smaller parts. A fork of kickstart that does this while maintaining the exact
- same functionality is available here:
- * [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim)
- * Discussions on this topic can be found here:
- * [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218)
- * [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473)
-
-### Windows Installation
-
-Installation may require installing build tools, and updating the run command for `telescope-fzf-native`
-
-See `telescope-fzf-native` documentation for [more details](https://github.com/nvim-telescope/telescope-fzf-native.nvim#installation)
-
-This requires:
-
-- Install CMake, and the Microsoft C++ Build Tools on Windows
-
-```lua
-{'nvim-telescope/telescope-fzf-native.nvim', build = 'cmake -S. -Bbuild -DCMAKE_BUILD_TYPE=Release && cmake --build build --config Release && cmake --install build --prefix build' }
-```
diff --git a/.config/nvim/after/plugin/defaults.lua b/.config/nvim/after/plugin/defaults.lua
deleted file mode 100644
index dd0ba5b2..00000000
--- a/.config/nvim/after/plugin/defaults.lua
+++ /dev/null
@@ -1,2 +0,0 @@
-require("rahcodes.remap")
-require("rahcodes.sets")
diff --git a/.config/nvim/after/plugin/fugitive.lua b/.config/nvim/after/plugin/fugitive.lua
deleted file mode 100644
index e448b76e..00000000
--- a/.config/nvim/after/plugin/fugitive.lua
+++ /dev/null
@@ -1,21 +0,0 @@
-vim.keymap.set("n", "gs", ":G")
-vim.keymap.set("n", "gh", ":diffget //3")
-vim.keymap.set("n", "gu", ":diffget //2")
-vim.keymap.set("n", "gc", ":GCheckout")
-vim.keymap.set("n", "ga", ":G add %:p")
-vim.keymap.set("n", "gc", ":G commit -v -q")
-vim.keymap.set("n", "gt", ":G commit -v -q %:p")
-vim.keymap.set("n", "gff", ":G ff")
-vim.keymap.set("n", "gfo", ":G fetch origin")
-vim.keymap.set("n", "gd", ":Gdiff")
-vim.keymap.set("n", "ge", ":Gedit")
-vim.keymap.set("n", "gr", ":Gread")
-vim.keymap.set("n", "grb", ":G rebase -i")
-vim.keymap.set("n", "gw", ":Gwrite")
-vim.keymap.set("n", "gl", ":silent! Glog:bot copen")
-vim.keymap.set("n", "gp", ":Ggrep")
-vim.keymap.set("n", "gm", ":Gmove")
-vim.keymap.set("n", "gbl", ":G blame")
-vim.keymap.set("n", "go", ":G checkout")
-vim.keymap.set("n", "gps", ":Dispatch! git push")
-vim.keymap.set("n", "gpl", ":Dispatch! git pull")
diff --git a/.config/nvim/after/plugin/git-worktree.lua b/.config/nvim/after/plugin/git-worktree.lua
deleted file mode 100644
index 9e70aa36..00000000
--- a/.config/nvim/after/plugin/git-worktree.lua
+++ /dev/null
@@ -1,22 +0,0 @@
-local Worktree = require("git-worktree")
-
--- op = Operations.Switch, Operations.Create, Operations.Delete
--- metadata = table of useful values (structure dependent on op)
--- Switch
--- path = path you switched to
--- prev_path = previous worktree path
--- Create
--- path = path where worktree created
--- branch = branch name
--- upstream = upstream remote name
--- Delete
--- path = path where worktree deleted
-
-Worktree.on_tree_change(function(op, metadata)
- if op == Worktree.Operations.Switch then
- print("Switched from " .. metadata.prev_path .. " to " .. metadata.path)
- end
-end)
-
-vim.keymap.set("n", "bw", require("telescope").extensions.git_worktree.git_worktrees, { desc = "[B]rowse Git Worktrees" })
-vim.keymap.set("n", "cw", require("telescope").extensions.git_worktree.create_git_worktree, { desc = "[C]reate Git [W]orktree" })
diff --git a/.config/nvim/after/plugin/null-ls.lua b/.config/nvim/after/plugin/null-ls.lua
deleted file mode 100644
index 12d5b500..00000000
--- a/.config/nvim/after/plugin/null-ls.lua
+++ /dev/null
@@ -1,75 +0,0 @@
-local setup, null_ls = pcall(require, "null-ls")
-if not setup then
- return
-end
-
-local formatting = null_ls.builtins.formatting
-local diagnostics = null_ls.builtins.diagnostics
-local conditional = function(fn)
- local utils = require("null-ls.utils").make_conditional_utils()
- 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 = false,
- sources = {
- formatting.prettier,
- -- formatting.stylua,
- null_ls.builtins.code_actions.gitsigns,
- -- setting eslint_d only if we have a ".eslintrc.js" file in the project
- diagnostics.eslint_d.with({
- condition = function(utils)
- return utils.root_has_file({ '.eslintrc.js' })
- end
- }),
-
- -- 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 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),
- })
- or null_ls.builtins.diagnostics.rubocop
- end),
- },
- -- format on save
- on_attach = function(client, bufnr)
- if client.supports_method("textDocument/formatting") then
- vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr })
- vim.api.nvim_create_autocmd("BufWritePre", {
- group = augroup,
- buffer = bufnr,
- callback = function()
- lsp_formatting(bufnr)
- end,
- })
- end
- end,
-})
diff --git a/.config/nvim/after/plugin/telescope.lua b/.config/nvim/after/plugin/telescope.lua
deleted file mode 100644
index e6613cf4..00000000
--- a/.config/nvim/after/plugin/telescope.lua
+++ /dev/null
@@ -1,2 +0,0 @@
-pcall(require("telescope").load_extension, "ui-select")
-pcall(require("telescope").load_extension, "live_grep_args")
diff --git a/.config/nvim/doc/kickstart.txt b/.config/nvim/doc/kickstart.txt
deleted file mode 100644
index cb87ac3f..00000000
--- a/.config/nvim/doc/kickstart.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-================================================================================
-INTRODUCTION *kickstart.nvim*
-
-Kickstart.nvim is a project to help you get started on your neovim journey.
-
- *kickstart-is-not*
-It is not:
-- Complete framework for every plugin under the sun
-- Place to add every plugin that could ever be useful
-
- *kickstart-is*
-It is:
-- Somewhere that has a good start for the most common "IDE" type features:
- - autocompletion
- - goto-definition
- - find references
- - fuzzy finding
- - and hinting at what more can be done :)
-- A place to _kickstart_ your journey.
- - You should fork this project and use/modify it so that it matches your
- style and preferences. If you don't want to do that, there are probably
- other projects that would fit much better for you (and that's great!)!
-
- vim:tw=78:ts=8:ft=help:norl:
diff --git a/.config/nvim/doc/tags b/.config/nvim/doc/tags
deleted file mode 100644
index 687ae772..00000000
--- a/.config/nvim/doc/tags
+++ /dev/null
@@ -1,3 +0,0 @@
-kickstart-is kickstart.txt /*kickstart-is*
-kickstart-is-not kickstart.txt /*kickstart-is-not*
-kickstart.nvim kickstart.txt /*kickstart.nvim*
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
deleted file mode 100644
index 24500e4d..00000000
--- a/.config/nvim/init.lua
+++ /dev/null
@@ -1,821 +0,0 @@
---[[
-
-=====================================================================
-==================== READ THIS BEFORE CONTINUING ====================
-=====================================================================
-======== .-----. ========
-======== .----------------------. | === | ========
-======== |.-""""""""""""""""""-.| |-----| ========
-======== || || | === | ========
-======== || KICKSTART.NVIM || |-----| ========
-======== || || | === | ========
-======== || || |-----| ========
-======== ||:Tutor || |:::::| ========
-======== |'-..................-'| |____o| ========
-======== `"")----------------(""` ___________ ========
-======== /::::::::::| |::::::::::\ \ no mouse \ ========
-======== /:::========| |==hjkl==:::\ \ required \ ========
-======== '""""""""""""' '""""""""""""' '""""""""""' ========
-======== ========
-=====================================================================
-=====================================================================
-
-What is Kickstart?
-
- Kickstart.nvim is *not* a distribution.
-
- Kickstart.nvim is a starting point for your own configuration.
- The goal is that you can read every line of code, top-to-bottom, understand
- what your configuration is doing, and modify it to suit your needs.
-
- Once you've done that, you can start exploring, configuring and tinkering to
- make Neovim your own! That might mean leaving kickstart just the way it is for a while
- or immediately breaking it into modular pieces. It's up to you!
-
- If you don't know anything about Lua, I recommend taking some time to read through
- a guide. One possible example which will only take 10-15 minutes:
- - https://learnxinyminutes.com/docs/lua/
-
- After understanding a bit more about Lua, you can use `:help lua-guide` as a
- reference for how Neovim integrates Lua.
- - :help lua-guide
- - (or HTML version): https://neovim.io/doc/user/lua-guide.html
-
-Kickstart Guide:
-
- TODO: The very first thing you should do is to run the command `:Tutor` in Neovim.
-
- If you don't know what this means, type the following:
- -
- - :
- - Tutor
- -
-
- (If you already know how the Neovim basics, you can skip this step)
-
- Once you've completed that, you can continue working through **AND READING** the rest
- of the kickstart init.lua
-
- Next, run AND READ `:help`.
- This will open up a help window with some basic information
- about reading, navigating and searching the builtin help documentation.
-
- This should be the first place you go to look when you're stuck or confused
- with something. It's one of my favorite neovim features.
-
- MOST IMPORTANTLY, we provide a keymap "sh" to [s]earch the [h]elp documentation,
- which is very useful when you're not sure exactly what you're looking for.
-
- I have left several `:help X` comments throughout the init.lua
- These are hints about where to find more information about the relevant settings,
- plugins or neovim features used in kickstart.
-
- NOTE: Look for lines like this
-
- Throughout the file. These are for you, the reader, to help understand what is happening.
- Feel free to delete them once you know what you're doing, but they should serve as a guide
- for when you are first encountering a few different constructs in your nvim config.
-
-If you experience any errors while trying to install kickstart, run `:checkhealth` for more info
-
-I hope you enjoy your Neovim journey,
-- TJ
-
-P.S. You can delete this when you're done too. It's your config now! :)
---]]
-
--- Set as the leader key
--- See `:help mapleader`
--- NOTE: Must happen before plugins are loaded (otherwise wrong leader will be used)
-vim.g.mapleader = ' '
-vim.g.maplocalleader = ' '
-
--- [[ Setting options ]]
--- See `:help vim.opt`
--- NOTE: You can change these options as you wish!
--- For more options, you can see `:help option-list`
-
--- Make line numbers default
-vim.opt.number = true
--- You can also add relative line numbers, for help with jumping.
--- Experiment for yourself to see if you like it!
--- vim.opt.relativenumber = true
-
--- Enable mouse mode, can be useful for resizing splits for example!
-vim.opt.mouse = 'a'
-
--- Don't show the mode, since it's already in status line
-vim.opt.showmode = false
-
--- Sync clipboard between OS and Neovim.
--- Remove this option if you want your OS clipboard to remain independent.
--- See `:help 'clipboard'`
-vim.opt.clipboard = 'unnamedplus'
-
--- Enable break indent
-vim.opt.breakindent = true
-
--- Save undo history
-vim.opt.undofile = true
-
--- Case-insensitive searching UNLESS \C or capital in search
-vim.opt.ignorecase = true
-vim.opt.smartcase = true
-
--- Keep signcolumn on by default
-vim.opt.signcolumn = 'yes'
-
--- Decrease update time
-vim.opt.updatetime = 250
-vim.opt.timeoutlen = 300
-
--- Configure how new splits should be opened
-vim.opt.splitright = true
-vim.opt.splitbelow = true
-
--- Sets how neovim will display certain whitespace in the editor.
--- See `:help 'list'`
--- and `:help 'listchars'`
-vim.opt.list = true
-vim.opt.listchars = { tab = '» ', trail = '·', nbsp = '␣' }
-
--- Preview substitutions live, as you type!
-vim.opt.inccommand = 'split'
-
--- Show which line your cursor is on
-vim.opt.cursorline = true
-
--- Minimal number of screen lines to keep above and below the cursor.
-vim.opt.scrolloff = 10
-
--- [[ Basic Keymaps ]]
--- See `:help vim.keymap.set()`
-
--- Set highlight on search, but clear on pressing in normal mode
-vim.opt.hlsearch = true
-vim.keymap.set('n', '', 'nohlsearch')
-
--- Diagnostic keymaps
-vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous [D]iagnostic message' })
-vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next [D]iagnostic message' })
-vim.keymap.set('n', 'e', vim.diagnostic.open_float, { desc = 'Show diagnostic [E]rror messages' })
-vim.keymap.set('n', 'q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
-
--- Exit terminal mode in the builtin terminal with a shortcut that is a bit easier
--- for people to discover. Otherwise, you normally need to press , which
--- is not what someone will guess without a bit more experience.
---
--- NOTE: This won't work in all terminal emulators/tmux/etc. Try your own mapping
--- or just use to exit terminal mode
-vim.keymap.set('t', '', '', { desc = 'Exit terminal mode' })
-
--- TIP: Disable arrow keys in normal mode
-vim.keymap.set('n', '', 'echo "Use h to move!!"')
-vim.keymap.set('n', '', 'echo "Use l to move!!"')
-vim.keymap.set('n', '', 'echo "Use k to move!!"')
-vim.keymap.set('n', '', 'echo "Use j to move!!"')
-
--- Keybinds to make split navigation easier.
--- Use CTRL+ to switch between windows
---
--- See `:help wincmd` for a list of all window commands
-vim.keymap.set('n', '', '', { desc = 'Move focus to the left window' })
-vim.keymap.set('n', '', '', { desc = 'Move focus to the right window' })
-vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' })
-vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' })
-
--- [[ Basic Autocommands ]]
--- See `:help lua-guide-autocommands`
-
--- Highlight when yanking (copying) text
--- Try it with `yap` in normal mode
--- See `:help vim.highlight.on_yank()`
-vim.api.nvim_create_autocmd('TextYankPost', {
- desc = 'Highlight when yanking (copying) text',
- group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
- callback = function()
- vim.highlight.on_yank()
- end,
-})
-
--- [[ Install `lazy.nvim` plugin manager ]]
--- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
-local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
-if not vim.loop.fs_stat(lazypath) then
- local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
- vim.fn.system { 'git', 'clone', '--filter=blob:none', '--branch=stable', lazyrepo, lazypath }
-end ---@diagnostic disable-next-line: undefined-field
-vim.opt.rtp:prepend(lazypath)
-
--- [[ Configure and install plugins ]]
---
--- To check the current status of your plugins, run
--- :Lazy
---
--- You can press `?` in this menu for help. Use `:q` to close the window
---
--- To update plugins, you can run
--- :Lazy update
---
--- NOTE: Here is where you install your plugins.
-require('lazy').setup {
- -- NOTE: Plugins can be added with a link (or for a github repo: 'owner/repo' link).
- 'tpope/vim-sleuth', -- Detect tabstop and shiftwidth automatically
-
- -- NOTE: Plugins can also be added by using a table,
- -- with the first argument being the link and the following
- -- keys can be used to configure plugin behavior/loading/etc.
- --
- -- Use `opts = {}` to force a plugin to be loaded.
- --
- -- This is equivalent to:
- -- require('Comment').setup({})
-
- -- "gc" to comment visual regions/lines
- { 'numToStr/Comment.nvim', opts = {} },
-
- -- Here is a more advanced example where we pass configuration
- -- options to `gitsigns.nvim`. This is equivalent to the following lua:
- -- require('gitsigns').setup({ ... })
- --
- -- See `:help gitsigns` to understand what the configuration keys do
- { -- Adds git related signs to the gutter, as well as utilities for managing changes
- 'lewis6991/gitsigns.nvim',
- opts = {
- signs = {
- add = { text = '+' },
- change = { text = '~' },
- delete = { text = '_' },
- topdelete = { text = '‾' },
- changedelete = { text = '~' },
- },
- },
- },
-
- -- NOTE: Plugins can also be configured to run lua code when they are loaded.
- --
- -- This is often very useful to both group configuration, as well as handle
- -- lazy loading plugins that don't need to be loaded immediately at startup.
- --
- -- For example, in the following configuration, we use:
- -- event = 'VeryLazy'
- --
- -- which loads which-key after all the UI elements are loaded. Events can be
- -- normal autocommands events (`:help autocmd-events`).
- --
- -- Then, because we use the `config` key, the configuration only runs
- -- after the plugin has been loaded:
- -- config = function() ... end
-
- { -- Useful plugin to show you pending keybinds.
- 'folke/which-key.nvim',
- event = 'VeryLazy', -- Sets the loading event to 'VeryLazy'
- config = function() -- This is the function that runs, AFTER loading
- require('which-key').setup()
-
- -- Document existing key chains
- require('which-key').register {
- ['c'] = { name = '[C]ode', _ = 'which_key_ignore' },
- ['d'] = { name = '[D]ocument', _ = 'which_key_ignore' },
- ['r'] = { name = '[R]ename', _ = 'which_key_ignore' },
- ['s'] = { name = '[S]earch', _ = 'which_key_ignore' },
- ['w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
- }
- end,
- },
-
- -- NOTE: Plugins can specify dependencies.
- --
- -- The dependencies are proper plugin specifications as well - anything
- -- you do for a plugin at the top level, you can do for a dependency.
- --
- -- Use the `dependencies` key to specify the dependencies of a particular plugin
-
- { -- Fuzzy Finder (files, lsp, etc)
- 'nvim-telescope/telescope.nvim',
- event = 'VeryLazy',
- branch = '0.1.x',
- dependencies = {
- 'nvim-lua/plenary.nvim',
- { -- If encountering errors, see telescope-fzf-native README for install instructions
- 'nvim-telescope/telescope-fzf-native.nvim',
-
- -- `build` is used to run some command when the plugin is installed/updated.
- -- This is only run then, not every time Neovim starts up.
- build = 'make',
-
- -- `cond` is a condition used to determine whether this plugin should be
- -- installed and loaded.
- cond = function()
- return vim.fn.executable 'make' == 1
- end,
- },
- { 'nvim-telescope/telescope-ui-select.nvim' },
-
- -- Useful for getting pretty icons, but requires special font.
- -- If you already have a Nerd Font, or terminal set up with fallback fonts
- -- you can enable this
- { 'nvim-tree/nvim-web-devicons' },
- },
- config = function()
- -- Telescope is a fuzzy finder that comes with a lot of different things that
- -- it can fuzzy find! It's more than just a "file finder", it can search
- -- many different aspects of Neovim, your workspace, LSP, and more!
- --
- -- The easiest way to use telescope, is to start by doing something like:
- -- :Telescope help_tags
- --
- -- After running this command, a window will open up and you're able to
- -- type in the prompt window. You'll see a list of help_tags options and
- -- a corresponding preview of the help.
- --
- -- Two important keymaps to use while in telescope are:
- -- - Insert mode:
- -- - Normal mode: ?
- --
- -- This opens a window that shows you all of the keymaps for the current
- -- telescope picker. This is really useful to discover what Telescope can
- -- do as well as how to actually do it!
-
- -- [[ Configure Telescope ]]
- -- See `:help telescope` and `:help telescope.setup()`
- require('telescope').setup {
- -- You can put your default mappings / updates / etc. in here
- -- All the info you're looking for is in `:help telescope.setup()`
- --
- -- defaults = {
- -- mappings = {
- -- i = { [''] = 'to_fuzzy_refine' },
- -- },
- -- },
- -- pickers = {}
- extensions = {
- ['ui-select'] = {
- require('telescope.themes').get_dropdown(),
- },
- },
- }
-
- -- Enable telescope extensions, if they are installed
- pcall(require('telescope').load_extension, 'fzf')
- pcall(require('telescope').load_extension, 'ui-select')
-
- -- See `:help telescope.builtin`
- local builtin = require 'telescope.builtin'
- vim.keymap.set('n', 'sh', builtin.help_tags, { desc = '[S]earch [H]elp' })
- vim.keymap.set('n', 'sk', builtin.keymaps, { desc = '[S]earch [K]eymaps' })
- vim.keymap.set('n', 'sf', builtin.find_files, { desc = '[S]earch [F]iles' })
- vim.keymap.set('n', 'ss', builtin.builtin, { desc = '[S]earch [S]elect Telescope' })
- vim.keymap.set('n', 'sw', builtin.grep_string, { desc = '[S]earch current [W]ord' })
- vim.keymap.set('n', 'sg', builtin.live_grep, { desc = '[S]earch by [G]rep' })
- vim.keymap.set('n', 'sd', builtin.diagnostics, { desc = '[S]earch [D]iagnostics' })
- vim.keymap.set('n', 'sr', builtin.resume, { desc = '[S]earch [R]esume' })
- vim.keymap.set('n', 's.', builtin.oldfiles, { desc = '[S]earch Recent Files ("." for repeat)' })
- vim.keymap.set('n', '', builtin.buffers, { desc = '[ ] Find existing buffers' })
-
- -- Slightly advanced example of overriding default behavior and theme
- vim.keymap.set('n', '/', function()
- -- You can pass additional configuration to telescope to change theme, layout, etc.
- builtin.current_buffer_fuzzy_find(require('telescope.themes').get_dropdown {
- winblend = 10,
- previewer = false,
- })
- end, { desc = '[/] Fuzzily search in current buffer' })
-
- -- Also possible to pass additional configuration options.
- -- See `:help telescope.builtin.live_grep()` for information about particular keys
- vim.keymap.set('n', 's/', function()
- builtin.live_grep {
- grep_open_files = true,
- prompt_title = 'Live Grep in Open Files',
- }
- end, { desc = '[S]earch [/] in Open Files' })
-
- -- Shortcut for searching your neovim configuration files
- vim.keymap.set('n', 'sn', function()
- builtin.find_files { cwd = vim.fn.stdpath 'config' }
- end, { desc = '[S]earch [N]eovim files' })
- end,
- },
-
- { -- LSP Configuration & Plugins
- 'neovim/nvim-lspconfig',
- dependencies = {
- -- Automatically install LSPs and related tools to stdpath for neovim
- 'williamboman/mason.nvim',
- 'williamboman/mason-lspconfig.nvim',
- 'WhoIsSethDaniel/mason-tool-installer.nvim',
-
- -- Useful status updates for LSP.
- -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
- { 'j-hui/fidget.nvim', opts = {} },
- },
- config = function()
- -- Brief Aside: **What is LSP?**
- --
- -- LSP is an acronym you've probably heard, but might not understand what it is.
- --
- -- LSP stands for Language Server Protocol. It's a protocol that helps editors
- -- and language tooling communicate in a standardized fashion.
- --
- -- In general, you have a "server" which is some tool built to understand a particular
- -- language (such as `gopls`, `lua_ls`, `rust_analyzer`, etc). These Language Servers
- -- (sometimes called LSP servers, but that's kind of like ATM Machine) are standalone
- -- processes that communicate with some "client" - in this case, Neovim!
- --
- -- LSP provides Neovim with features like:
- -- - Go to definition
- -- - Find references
- -- - Autocompletion
- -- - Symbol Search
- -- - and more!
- --
- -- Thus, Language Servers are external tools that must be installed separately from
- -- Neovim. This is where `mason` and related plugins come into play.
- --
- -- If you're wondering about lsp vs treesitter, you can check out the wonderfully
- -- and elegantly composed help section, `:help lsp-vs-treesitter`
-
- -- This function gets run when an LSP attaches to a particular buffer.
- -- That is to say, every time a new file is opened that is associated with
- -- an lsp (for example, opening `main.rs` is associated with `rust_analyzer`) this
- -- function will be executed to configure the current buffer
- vim.api.nvim_create_autocmd('LspAttach', {
- group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
- callback = function(event)
- -- 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 map = function(keys, func, desc)
- vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
- end
-
- -- Jump to the definition of the word under your cursor.
- -- This is where a variable was first declared, or where a function is defined, etc.
- -- To jump back, press .
- map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
-
- -- Find references for the word under your cursor.
- map('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
-
- -- Jump to the implementation of the word under your cursor.
- -- Useful when your language has ways of declaring types without an actual implementation.
- map('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
-
- -- Jump to the type of the word under your cursor.
- -- Useful when you're not sure what type a variable is and you want to see
- -- the definition of its *type*, not where it was *defined*.
- map('D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
-
- -- Fuzzy find all the symbols in your current document.
- -- Symbols are things like variables, functions, types, etc.
- map('ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
-
- -- Fuzzy find all the symbols in your current workspace
- -- Similar to document symbols, except searches over your whole project.
- map('ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
-
- -- Rename the variable under your cursor
- -- Most Language Servers support renaming across files, etc.
- map('rn', vim.lsp.buf.rename, '[R]e[n]ame')
-
- -- Execute a code action, usually your cursor needs to be on top of an error
- -- or a suggestion from your LSP for this to activate.
- map('ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
-
- -- Opens a popup that displays documentation about the word under your cursor
- -- See `:help K` for why this keymap
- map('K', vim.lsp.buf.hover, 'Hover Documentation')
-
- -- WARN: This is not Goto Definition, this is Goto Declaration.
- -- For example, in C this would take you to the header
- map('gD', vim.lsp.buf.declaration, '[G]oto [D]eclaration')
-
- -- The following two autocommands are used to highlight references of the
- -- word under your cursor when your cursor rests there for a little while.
- -- See `:help CursorHold` for information about when this is executed
- --
- -- When you move your cursor, the highlights will be cleared (the second autocommand).
- local client = vim.lsp.get_client_by_id(event.data.client_id)
- if client and client.server_capabilities.documentHighlightProvider then
- vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
- buffer = event.buf,
- callback = vim.lsp.buf.document_highlight,
- })
-
- vim.api.nvim_create_autocmd({ 'CursorMoved', 'CursorMovedI' }, {
- buffer = event.buf,
- callback = vim.lsp.buf.clear_references,
- })
- end
- end,
- })
-
- -- LSP servers and clients are able to communicate to each other what features they support.
- -- By default, Neovim doesn't support everything that is in the LSP Specification.
- -- When you add nvim-cmp, luasnip, etc. Neovim now has *more* capabilities.
- -- So, we create new capabilities with nvim cmp, and then broadcast that to the servers.
- local capabilities = vim.lsp.protocol.make_client_capabilities()
- capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
-
- -- 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. Available keys are:
- -- - cmd (table): Override the default command used to start the server
- -- - filetypes (table): Override the default list of associated filetypes for the server
- -- - capabilities (table): Override fields in capabilities. Can be used to disable certain LSP features.
- -- - settings (table): Override the default settings passed when initializing the server.
- -- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
- local servers = {
- -- clangd = {},
- -- gopls = {},
- -- pyright = {},
- rust_analyzer = {},
- -- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
- --
- -- Some languages (like typescript) have entire language plugins that can be useful:
- -- https://github.com/pmizio/typescript-tools.nvim
- --
- -- But for many setups, the LSP (`tsserver`) will work just fine
- tsserver = {},
- --
-
- lua_ls = {
- -- cmd = {...},
- -- filetypes { ...},
- -- capabilities = {},
- settings = {
- Lua = {
- runtime = { version = 'LuaJIT' },
- workspace = {
- checkThirdParty = false,
- -- Tells lua_ls where to find all the Lua files that you have loaded
- -- for your neovim configuration.
- library = {
- '${3rd}/luv/library',
- unpack(vim.api.nvim_get_runtime_file('', true)),
- },
- -- If lua_ls is really slow on your computer, you can try this instead:
- -- library = { vim.env.VIMRUNTIME },
- },
- completion = {
- callSnippet = 'Replace',
- },
- -- You can toggle below to ignore Lua_LS's noisy `missing-fields` warnings
- -- diagnostics = { disable = { 'missing-fields' } },
- },
- },
- },
- }
-
- -- Ensure the servers and tools above are installed
- -- To check the current status of installed tools and/or manually install
- -- other tools, you can run
- -- :Mason
- --
- -- You can press `g?` for help in this menu
- require('mason').setup()
-
- -- You can add other tools here that you want Mason to install
- -- for you, so that they are available from within Neovim.
- local ensure_installed = vim.tbl_keys(servers or {})
- vim.list_extend(ensure_installed, {
- 'stylua', -- Used to format lua code
- })
- require('mason-tool-installer').setup { ensure_installed = ensure_installed }
-
- require('mason-lspconfig').setup {
- handlers = {
- function(server_name)
- local server = servers[server_name] or {}
- -- This handles overriding only values explicitly passed
- -- by the server configuration above. Useful when disabling
- -- certain features of an LSP (for example, turning off formatting for tsserver)
- server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
- require('lspconfig')[server_name].setup(server)
- end,
- },
- }
- end,
- },
-
- { -- Autoformat
- 'stevearc/conform.nvim',
- opts = {
- notify_on_error = false,
- format_on_save = {
- timeout_ms = 500,
- lsp_fallback = true,
- },
- formatters_by_ft = {
- lua = { 'stylua' },
- -- Conform can also run multiple formatters sequentially
- -- python = { "isort", "black" },
- --
- -- You can use a sub-list to tell conform to run *until* a formatter
- -- is found.
- -- javascript = { { "prettierd", "prettier" } },
- },
- },
- },
-
- { -- Autocompletion
- 'hrsh7th/nvim-cmp',
- event = 'InsertEnter',
- dependencies = {
- -- Snippet Engine & its associated nvim-cmp source
- {
- 'L3MON4D3/LuaSnip',
- build = (function()
- -- Build Step is needed for regex support in snippets
- -- This step is not supported in many windows environments
- -- Remove the below condition to re-enable on windows
- if vim.fn.has 'win32' == 1 or vim.fn.executable 'make' == 0 then
- return
- end
- return 'make install_jsregexp'
- end)(),
- },
- 'saadparwaiz1/cmp_luasnip',
-
- -- Adds other completion capabilities.
- -- nvim-cmp does not ship with all sources by default. They are split
- -- into multiple repos for maintenance purposes.
- 'hrsh7th/cmp-nvim-lsp',
- 'hrsh7th/cmp-path',
-
- -- If you want to add a bunch of pre-configured snippets,
- -- you can use this plugin to help you. It even has snippets
- -- for various frameworks/libraries/etc. but you will have to
- -- set up the ones that are useful for you.
- 'rafamadriz/friendly-snippets',
- },
- config = function()
- -- See `:help cmp`
- local cmp = require 'cmp'
- local luasnip = require 'luasnip'
- luasnip.config.setup {}
-
- cmp.setup {
- snippet = {
- expand = function(args)
- luasnip.lsp_expand(args.body)
- end,
- },
- completion = { completeopt = 'menu,menuone,noinsert' },
-
- -- For an understanding of why these mappings were
- -- chosen, you will need to read `:help ins-completion`
- --
- -- No, but seriously. Please read `:help ins-completion`, it is really good!
- mapping = cmp.mapping.preset.insert {
- -- Select the [n]ext item
- [''] = cmp.mapping.select_next_item(),
- -- Select the [p]revious item
- [''] = cmp.mapping.select_prev_item(),
-
- -- Accept ([y]es) the completion.
- -- This will auto-import if your LSP supports it.
- -- This will expand snippets if the LSP sent a snippet.
- [''] = cmp.mapping.confirm { select = true },
-
- -- Manually trigger a completion from nvim-cmp.
- -- Generally you don't need this, because nvim-cmp will display
- -- completions whenever it has completion options available.
- [''] = cmp.mapping.complete {},
-
- -- Think of as moving to the right of your snippet expansion.
- -- So if you have a snippet that's like:
- -- function $name($args)
- -- $body
- -- end
- --
- -- will move you to the right of each of the expansion locations.
- -- is similar, except moving you backwards.
- [''] = cmp.mapping(function()
- if luasnip.expand_or_locally_jumpable() then
- luasnip.expand_or_jump()
- end
- end, { 'i', 's' }),
- [''] = cmp.mapping(function()
- if luasnip.locally_jumpable(-1) then
- luasnip.jump(-1)
- end
- end, { 'i', 's' }),
- },
- sources = {
- { name = 'nvim_lsp' },
- { name = 'luasnip' },
- { name = 'path' },
- },
- }
- end,
- },
-
- { -- You can easily change to a different colorscheme.
- -- Change the name of the colorscheme plugin below, and then
- -- change the command in the config to whatever the name of that colorscheme is
- --
- -- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`
- 'folke/tokyonight.nvim',
- lazy = false, -- make sure we load this during startup if it is your main colorscheme
- priority = 1000, -- make sure to load this before all the other start plugins
- config = function()
- -- Load the colorscheme here
- vim.cmd.colorscheme 'tokyonight-night'
-
- -- You can configure highlights by doing something like
- vim.cmd.hi 'Comment gui=none'
- end,
- },
-
- -- Highlight todo, notes, etc in comments
- { 'folke/todo-comments.nvim', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } },
-
- { -- Collection of various small independent plugins/modules
- 'echasnovski/mini.nvim',
- config = function()
- -- Better Around/Inside textobjects
- --
- -- Examples:
- -- - va) - [V]isually select [A]round [)]paren
- -- - yinq - [Y]ank [I]nside [N]ext [']quote
- -- - ci' - [C]hange [I]nside [']quote
- require('mini.ai').setup { n_lines = 500 }
-
- -- Add/delete/replace surroundings (brackets, quotes, etc.)
- --
- -- - saiw) - [S]urround [A]dd [I]nner [W]ord [)]Paren
- -- - sd' - [S]urround [D]elete [']quotes
- -- - sr)' - [S]urround [R]eplace [)] [']
- require('mini.surround').setup()
-
- -- Simple and easy statusline.
- -- You could remove this setup call if you don't like it,
- -- and try some other statusline plugin
- local statusline = require 'mini.statusline'
- statusline.setup()
-
- -- You can configure sections in the statusline by overriding their
- -- default behavior. For example, here we disable the section for
- -- cursor information because line numbers are already enabled
- ---@diagnostic disable-next-line: duplicate-set-field
- statusline.section_location = function()
- return ''
- end
-
- -- ... and there is more!
- -- Check out: https://github.com/echasnovski/mini.nvim
- end,
- },
-
- { -- Highlight, edit, and navigate code
- 'nvim-treesitter/nvim-treesitter',
- build = ':TSUpdate',
- config = function()
- -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
-
- ---@diagnostic disable-next-line: missing-fields
- require('nvim-treesitter.configs').setup {
- ensure_installed = { 'bash', 'c', 'html', 'lua', 'markdown', 'vim', 'vimdoc' },
- -- Autoinstall languages that are not installed
- auto_install = true,
- highlight = { enable = true },
- indent = { enable = true },
- }
-
- -- There are additional nvim-treesitter modules that you can use to interact
- -- with nvim-treesitter. You should go explore a few and see what interests you:
- --
- -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
- -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
- -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
- end,
- },
-
- -- The following two comments only work if you have downloaded the kickstart repo, not just copy pasted the
- -- init.lua. If you want these files, they are in the repository, so you can just download them and
- -- put them in the right spots if you want.
-
- -- NOTE: Next step on your Neovim journey: Add/Configure additional plugins for kickstart
- --
- -- Here are some example plugins that I've included in the kickstart repository.
- -- Uncomment any of the lines below to enable them (you will need to restart nvim).
- --
- require 'kickstart.plugins.debug',
- -- require 'kickstart.plugins.indent_line',
-
- -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
- -- This is the easiest way to modularize your config.
- --
- -- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
- -- For additional information, see: `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
- { import = 'custom.plugins' },
-}
-
--- The line beneath this is called `modeline`. See `:help modeline`
--- vim: ts=2 sts=2 sw=2 et
diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json
deleted file mode 100644
index 75fc9612..00000000
--- a/.config/nvim/lazy-lock.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
- "Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
- "LuaSnip": { "branch": "master", "commit": "f3b3d3446bcbfa62d638b1903ff00a78b2b730a1" },
- "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
- "cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
- "cmp_luasnip": { "branch": "master", "commit": "05a9ab28b53f71d1aece421ef32fee2cb857a843" },
- "conform.nvim": { "branch": "master", "commit": "2a769b950526acf62a71de89b876d14862988ee5" },
- "fidget.nvim": { "branch": "main", "commit": "60404ba67044c6ab01894dd5bf77bd64ea5e09aa" },
- "friendly-snippets": { "branch": "main", "commit": "dcd4a586439a1c81357d5b9d26319ae218cc9479" },
- "git-worktree.nvim": { "branch": "master", "commit": "f247308e68dab9f1133759b05d944569ad054546" },
- "gitsigns.nvim": { "branch": "main", "commit": "2c2463dbd82eddd7dbab881c3a62cfbfbe3c67ae" },
- "lazy.nvim": { "branch": "main", "commit": "aedcd79811d491b60d0a6577a9c1701063c2a609" },
- "mason-lspconfig.nvim": { "branch": "main", "commit": "21d33d69a81f6351e5a5f49078b2e4f0075c8e73" },
- "mason-nvim-dap.nvim": { "branch": "main", "commit": "3614a39aae98ccd34124b072939d6283853b3dd2" },
- "mason-tool-installer.nvim": { "branch": "main", "commit": "1212fb6082b7177dde17ea65e429e027835aeb40" },
- "mason.nvim": { "branch": "main", "commit": "3b5068f0fc565f337d67a2d315d935f574848ee7" },
- "mini.nvim": { "branch": "main", "commit": "7827793105685d8158812bbdab027d11aac19c24" },
- "null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
- "nvim-cmp": { "branch": "main", "commit": "04e0ca376d6abdbfc8b52180f8ea236cbfddf782" },
- "nvim-dap": { "branch": "master", "commit": "fc880e82059eb21c0fa896be60146e5f17680648" },
- "nvim-dap-go": { "branch": "main", "commit": "64f73400761e2d19459e664a52ea478f3a4420e7" },
- "nvim-dap-ui": { "branch": "master", "commit": "9720eb5fa2f41988e8770f973cd11b76dd568a5d" },
- "nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" },
- "nvim-lspconfig": { "branch": "master", "commit": "ec7d51a619049c7c597f469f81ea199db6794651" },
- "nvim-surround": { "branch": "main", "commit": "703ec63aa798e5e07d309b35e42def34bebe0174" },
- "nvim-treesitter": { "branch": "master", "commit": "6e2b56cbe75ddf18e6efecee44bc3936d70b0b3e" },
- "nvim-web-devicons": { "branch": "master", "commit": "0bb67ef952ea3eb7b1bac9c011281471d99a27bc" },
- "plenary.nvim": { "branch": "master", "commit": "4f71c0c4a196ceb656c824a70792f3df3ce6bb6d" },
- "refactoring.nvim": { "branch": "master", "commit": "1b593e7203b31c7bde3fa638e6869144698df3b6" },
- "telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
- "telescope-live-grep-args.nvim": { "branch": "master", "commit": "20656efd7a0dbb4483290649c9671af14b0cfb0d" },
- "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },
- "telescope.nvim": { "branch": "0.1.x", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
- "todo-comments.nvim": { "branch": "main", "commit": "833d8dd8b07eeda37a09e99460f72a02616935cb" },
- "tokyonight.nvim": { "branch": "main", "commit": "610179f7f12db3d08540b6cc61434db2eaecbcff" },
- "trouble.nvim": { "branch": "main", "commit": "f1168feada93c0154ede4d1fe9183bf69bac54ea" },
- "vim-sleuth": { "branch": "master", "commit": "1cc4557420f215d02c4d2645a748a816c220e99b" },
- "which-key.nvim": { "branch": "main", "commit": "4433e5ec9a507e5097571ed55c02ea9658fb268a" }
-}
\ No newline at end of file
diff --git a/.config/nvim/lua/custom/plugins/init.lua b/.config/nvim/lua/custom/plugins/init.lua
deleted file mode 100644
index 4990fa4d..00000000
--- a/.config/nvim/lua/custom/plugins/init.lua
+++ /dev/null
@@ -1,71 +0,0 @@
-return {
- {
- 'ThePrimeagen/refactoring.nvim',
- requires = {
- { 'nvim-lua/plenary.nvim' },
- { 'nvim-treesitter/nvim-treesitter' },
- },
- config = function()
- require('refactoring').setup {}
- end,
- },
- {
- 'ThePrimeagen/git-worktree.nvim',
- },
- {
- 'folke/tokyonight.nvim',
- lazy = false, -- make sure we load this during startup if it is your main colorscheme
- priority = 1000, -- make sure to load this before all the other start plugins
- config = function()
- -- load the colorscheme here
- vim.cmd [[colorscheme tokyonight]]
- end,
- },
- -- formatting & linting
- 'jose-elias-alvarez/null-ls.nvim',
- -- use("jayp0521/mason-null-ls.nvim")
- {
- 'kylechui/nvim-surround',
- version = '*', -- 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,
- },
- {
- '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,
- },
- {
- 'rafamadriz/friendly-snippets',
- config = function()
- require('luasnip.loaders.from_vscode').lazy_load()
- end,
- },
- {
- 'nvim-telescope/telescope.nvim',
- dependencies = {
- {
- 'nvim-telescope/telescope-live-grep-args.nvim',
- -- This will not install any breaking changes.
- -- For major updates, this must be adjusted manually.
- version = '^1.0.0',
- },
- },
- config = function()
- require('telescope').load_extension 'live_grep_args'
- end,
- },
- -- Git related plugins
- 'tpope/vim-fugitive',
- 'tpope/vim-rhubarb',
-}
diff --git a/.config/nvim/lua/kickstart/health.lua b/.config/nvim/lua/kickstart/health.lua
deleted file mode 100644
index 957204e8..00000000
--- a/.config/nvim/lua/kickstart/health.lua
+++ /dev/null
@@ -1,51 +0,0 @@
---[[
---
--- This file is not required for your own configuration,
--- but helps people determine if their system is setup correctly.
---
---]]
-
-local check_version = function()
- if not vim.version.cmp then
- vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", tostring(vim.version())))
- return
- end
-
- if vim.version.cmp(vim.version(), { 0, 9, 4 }) >= 0 then
- vim.health.ok(string.format("Neovim version is: '%s'", tostring(vim.version())))
- else
- vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", tostring(vim.version())))
- end
-end
-
-local check_external_reqs = function()
- -- Basic utils: `git`, `make`, `unzip`
- for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
- local is_executable = vim.fn.executable(exe) == 1
- if is_executable then
- vim.health.ok(string.format("Found executable: '%s'", exe))
- else
- vim.health.warn(string.format("Could not find executable: '%s'", exe))
- end
- end
-
- return true
-end
-
-return {
- check = function()
- vim.health.start 'kickstart.nvim'
-
- vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth`
-
- Fix only warnings for plugins and languages you intend to use.
- Mason will give warnings for languages that are not installed.
- You do not need to install, unless you want to use those languages!]]
-
- local uv = vim.uv or vim.loop
- vim.health.info('System Information: ' .. vim.inspect(uv.os_uname()))
-
- check_version()
- check_external_reqs()
- end,
-}
diff --git a/.config/nvim/lua/kickstart/plugins/debug.lua b/.config/nvim/lua/kickstart/plugins/debug.lua
deleted file mode 100644
index 1db75f08..00000000
--- a/.config/nvim/lua/kickstart/plugins/debug.lua
+++ /dev/null
@@ -1,129 +0,0 @@
--- debug.lua
---
--- Shows how to use the DAP plugin to debug your code.
---
--- Primarily focused on configuring the debugger for Go, but can
--- be extended to other languages as well. That's why it's called
--- kickstart.nvim and not kitchen-sink.nvim ;)
-
-return {
- -- NOTE: Yes, you can install new plugins here!
- 'mfussenegger/nvim-dap',
- -- NOTE: And you can specify dependencies as well
- dependencies = {
- -- Creates a beautiful debugger UI
- 'rcarriga/nvim-dap-ui',
-
- -- Installs the debug adapters for you
- 'williamboman/mason.nvim',
- 'jay-babu/mason-nvim-dap.nvim',
-
- -- Add your own debuggers here
- 'leoluz/nvim-dap-go',
- 'mxsdev/nvim-dap-vscode-js'
- },
- config = function()
- local dap = require 'dap'
- local dapui = require 'dapui'
-
- require('mason-nvim-dap').setup {
- -- Makes a best effort to setup the various debuggers with
- -- reasonable debug configurations
- automatic_setup = true,
-
- -- You can provide additional configuration to the handlers,
- -- see mason-nvim-dap README for more information
- handlers = {},
-
- -- You'll need to check that you have the required things installed
- -- online, please don't ask me how to install them :)
- ensure_installed = {
- -- Update this to ensure that you have the debuggers for the langs you want
- 'delve',
- 'typescript',
- 'typescriptreact',
- },
- }
-
- -- Basic debugging keymaps, feel free to change to your liking!
- vim.keymap.set('n', '', dap.continue, { desc = 'Debug: Start/Continue' })
- vim.keymap.set('n', '', dap.step_into, { desc = 'Debug: Step Into' })
- vim.keymap.set('n', '', dap.step_over, { desc = 'Debug: Step Over' })
- vim.keymap.set('n', '', dap.step_out, { desc = 'Debug: Step Out' })
- vim.keymap.set('n', 'b', dap.toggle_breakpoint, { desc = 'Debug: Toggle Breakpoint' })
- vim.keymap.set('n', 'B', function()
- dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ')
- end, { desc = 'Debug: Set Breakpoint' })
-
- -- Dap UI setup
- -- For more information, see |:help nvim-dap-ui|
- dapui.setup {
- -- Set icons to characters that are more likely to work in every terminal.
- -- Feel free to remove or use ones that you like more! :)
- -- Don't feel like these are good choices.
- icons = { expanded = '▾', collapsed = '▸', current_frame = '*' },
- controls = {
- icons = {
- pause = '⏸',
- play = '▶',
- step_into = '⏎',
- step_over = '⏭',
- step_out = '⏮',
- step_back = 'b',
- run_last = '▶▶',
- terminate = '⏹',
- disconnect = '⏏',
- },
- },
- }
-
- -- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
- vim.keymap.set('n', '', dapui.toggle, { desc = 'Debug: See last session result.' })
-
- dap.listeners.after.event_initialized['dapui_config'] = dapui.open
- dap.listeners.before.event_terminated['dapui_config'] = dapui.close
- dap.listeners.before.event_exited['dapui_config'] = dapui.close
-
- -- Install golang specific config
- require('dap-go').setup()
-
- require("dap-vscode-js").setup({
- -- node_path = "node", -- Path of node executable. Defaults to $NODE_PATH, and then "node"
- debugger_path = vim.fn.stdpath('data') .. "/lazy/vscode-js-debug", -- Path to vscode-js-debug installation.
- -- debugger_cmd = { "extension" }, -- Command to use to launch the debug server. Takes precedence over `node_path` and `debugger_path`.
- adapters = { 'chrome', 'pwa-node', 'pwa-chrome', 'pwa-msedge', 'node-terminal', 'pwa-extensionHost', 'node', 'chrome' }, -- which adapters to register in nvim-dap
- -- log_file_path = "(stdpath cache)/dap_vscode_js.log" -- Path for file logging
- -- log_file_level = false -- Logging level for output to file. Set to false to disable file logging.
- -- log_console_level = vim.log.levels.ERROR -- Logging level for output to console. Set to false to disable console output.
- })
-
- local js_based_languages = { "typescript", "javascript", "typescriptreact" }
-
- for _, language in ipairs(js_based_languages) do
- require("dap").configurations[language] = {
- {
- type = "pwa-node",
- request = "launch",
- name = "Launch file",
- program = "${file}",
- cwd = "${workspaceFolder}",
- },
- {
- type = "pwa-node",
- request = "attach",
- name = "Attach",
- processId = require 'dap.utils'.pick_process,
- cwd = "${workspaceFolder}",
- },
- {
- type = "pwa-chrome",
- request = "launch",
- name = "Start Chrome with \"localhost\"",
- url = "http://localhost:3000",
- webRoot = "${workspaceFolder}",
- userDataDir = "${workspaceFolder}/.vscode/vscode-chrome-debug-userdatadir"
- }
- }
- end
- end,
-}
diff --git a/.config/nvim/lua/kickstart/plugins/indent_line.lua b/.config/nvim/lua/kickstart/plugins/indent_line.lua
deleted file mode 100644
index ed7f2693..00000000
--- a/.config/nvim/lua/kickstart/plugins/indent_line.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-return {
- { -- Add indentation guides even on blank lines
- 'lukas-reineke/indent-blankline.nvim',
- -- Enable `lukas-reineke/indent-blankline.nvim`
- -- See `:help ibl`
- main = 'ibl',
- opts = {},
- },
-}
diff --git a/.config/nvim/lua/rahcodes/keymap.lua b/.config/nvim/lua/rahcodes/keymap.lua
deleted file mode 100644
index 463c1881..00000000
--- a/.config/nvim/lua/rahcodes/keymap.lua
+++ /dev/null
@@ -1,20 +0,0 @@
-local M = {}
-
-local function bind(op, outer_opts)
- outer_opts = outer_opts or {noremap = true}
- return function(lhs, rhs, opts)
- opts = vim.tbl_extend("force",
- outer_opts,
- opts or {}
- )
- vim.keymap.set(op, lhs,rhs, opts)
- end
-end
-
-M.nmap = bind("n", {noremap = false})
-M.nnoremap = bind("n")
-M.vnoremap = bind("v")
-M.xnoremap = bind("x")
-M.inoremap = bind("i")
-
-return M
diff --git a/.config/nvim/lua/rahcodes/remap.lua b/.config/nvim/lua/rahcodes/remap.lua
deleted file mode 100644
index e315af27..00000000
--- a/.config/nvim/lua/rahcodes/remap.lua
+++ /dev/null
@@ -1,69 +0,0 @@
-local Remap = require("rahcodes.keymap")
-local nmap = Remap.nmap
-
-vim.keymap.set("n", "pv", vim.cmd.Ex)
-
-vim.keymap.set("v", "J", ":m '>+1gv=gv")
-vim.keymap.set("v", "K", ":m '<-2gv=gv")
-
-vim.keymap.set("n", "", "zz")
-vim.keymap.set("n", "", "zz")
-
-vim.keymap.set("n", "n", "nzzzv")
-vim.keymap.set("n", "N", "Nzzzv")
-
--- don't bork paste buffer when pasting
-vim.keymap.set("x", "p", '"_dP')
-
-vim.keymap.set("i", "", "")
-
--- vim.keymap.set("n", "/", "/\v")
--- vim.keymap.set("v", "/", "/\v")
-vim.keymap.set("n", "`", ":noh")
-
--- No Cheating
-vim.keymap.set("n", "", "")
-vim.keymap.set("n", "", "")
-vim.keymap.set("n", "", "")
-vim.keymap.set("n", "", "")
-vim.keymap.set("i", "", "")
-vim.keymap.set("i", "", "")
-vim.keymap.set("i", "", "")
-vim.keymap.set("i", "", "")
-
--- No weird line jumps
-vim.keymap.set("n", "j", "gj")
-vim.keymap.set("n", "k", "gk")
-
--- Copy to system clipboard
-vim.keymap.set("n", "y", '"*y')
-vim.keymap.set("v", "y", '"*y')
-vim.keymap.set("n", "yy", '"+y')
-vim.keymap.set("v", "yy", '"+y')
-
-vim.keymap.set("n", "", "silent !tmux neww tmux-sessionizer")
-
--- Move buffers
-nmap("sp", ":bprev")
-nmap("sn", ":bnext")
-
--- 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")
-
--- 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").find_files, { desc = "[S]earch [F]iles" })
-
--- Trouble bindings
-vim.keymap.set("n", "xx", function() require("trouble").open() end)
-vim.keymap.set("n", "xw", function() require("trouble").open("workspace_diagnostics") end)
-vim.keymap.set("n", "xd", function() require("trouble").open("document_diagnostics") end)
-vim.keymap.set("n", "xq", function() require("trouble").open("quickfix") end)
-vim.keymap.set("n", "xl", function() require("trouble").open("loclist") end)
-vim.keymap.set("n", "gR", function() require("trouble").open("lsp_references") end)
diff --git a/.config/nvim/lua/rahcodes/sets.lua b/.config/nvim/lua/rahcodes/sets.lua
deleted file mode 100644
index 2cf4c156..00000000
--- a/.config/nvim/lua/rahcodes/sets.lua
+++ /dev/null
@@ -1,26 +0,0 @@
-vim.opt.guicursor = ""
-
-vim.opt.nu = true
-vim.opt.relativenumber = true
-
-vim.opt.tabstop = 4
-vim.opt.softtabstop = 4
-vim.opt.shiftwidth = 4
-vim.opt.expandtab = true
-
-vim.opt.smartindent = true
-
-vim.opt.wrap = false
-
-vim.opt.swapfile = false
-vim.opt.backup = false
-vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
-
-vim.opt.incsearch = true
-
-vim.opt.scrolloff = 8
-vim.opt.isfname:append("@-@")
-
-vim.opt.colorcolumn = "80"
-
-vim.opt.mouse = "v"
diff --git a/.config/nvim/lua/rahcodes/solargraph.lua b/.config/nvim/lua/rahcodes/solargraph.lua
deleted file mode 100644
index 5dd7eb7c..00000000
--- a/.config/nvim/lua/rahcodes/solargraph.lua
+++ /dev/null
@@ -1,22 +0,0 @@
-local lsp = require 'lspconfig'
-lsp.solargraph.setup {
- cmd = { os.getenv("HOME") .. "/.asdf/shims/solargraph", '--stdio' },
- filetypes = { "ruby", "rakefile" },
- settings = {
- solargraph = {
- -- root_dir = nvim_lsp.util.root_pattern("Gemfile", ".git", "."),
- -- root_dir = root_pattern("Gemfile", ".git"),
- settings = {
- solargraph = {
- autoformat = true,
- completion = true,
- diagnostic = true,
- folding = true,
- references = true,
- rename = true,
- symbols = true
- }
- }
- },
- }
-}