diff options
-rw-r--r-- | README.md | 191 | ||||
-rw-r--r-- | doc/kickstart.txt | 24 | ||||
-rw-r--r-- | doc/tags | 3 | ||||
-rw-r--r-- | init.lua | 67 | ||||
-rw-r--r-- | lua/config/keymap.lua | 12 | ||||
-rw-r--r-- | lua/config/set.lua | 43 | ||||
-rw-r--r-- | lua/kickstart/plugins/debug.lua | 34 |
7 files changed, 103 insertions, 271 deletions
@@ -1,147 +1,44 @@ -# kickstart.nvim - -### Introduction - -A starting point for Neovim that is: - -* Small -* Single-file (with examples of moving to multi-file) -* Documented -* Modular - -This repo is meant to be used as by **YOU** to begin your Neovim journey; remove the things you don't use and add what you miss. - -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. - -Distribution Alternatives: -- [LazyVim](https://www.lazyvim.org/): A delightful distribution maintained by @folke (the author of lazy.nvim, the package manager used here) - -### Installation - -* Backup your previous configuration (if any exists) - -### Archive Installation -* On the home/landing page for the project find the blue "<> CODE" button click it and select Local > Download ZIP. -* Extract the archive to: - `~/.config/nvim` (Linux) - `~/.config/nvim` (MacOS) - `%userprofile%\AppData\Local\nvim\` (Windows) -* Ensure your extraction method did not extract with a parent folder. For example in ~/.config/nvim you should have init.lua not another folder called kickstart.nvim. - -### Git Clone Installation -* From a terminal cd/dir to: - `~/.config/nvim` (Linux) - `~/.config/nvim` (MacOS) - `%userprofile%\AppData\Local\nvim\` (Windows) - -* run: `git clone https://github.com/nvim-lua/kickstart.nvim.git ~/.config/nvim` OR: `gh repo clone nvim-lua/kickstart.nvim` -* Run Neovim (from terminal or shortcut) and allow lazy.nvim to download files and set up the basics. -* Once the setup is complete, restart Neovim. -* **You're ready to go!** - -* (Recommended/Optional) Fork this repo (so that you have your own copy that you can modify). -* Clone the kickstart repo into `$HOME/.config/nvim/` (Linux/Mac) or `%userprofile%\AppData\Local\nvim\` (Windows) - * If you don't want to include it as a git repo, you can just clone it and then move the files to this location - -Additional system requirements: -- Make sure to review the readmes of the plugins if you are experiencing errors. In particular: - - [ripgrep](https://github.com/BurntSushi/ripgrep#installation) is required for multiple [telescope](https://github.com/nvim-telescope/telescope.nvim#suggested-dependencies) pickers. -- See [Windows Installation](#Windows-Installation) if you have trouble with `telescope-fzf-native` - -### Configuration And Extension - -* Inside of your copy, feel free to modify any file you like! It's your copy! -* Feel free to change any of the default options in `init.lua` to better suit your needs. -* For adding plugins, there are 3 primary options: - * Add new configuration in `lua/custom/plugins/*` files, which will be auto sourced using `lazy.nvim` - * Modify `init.lua` with additional plugins. - * Include the `lua/kickstart/plugins/*` files in your configuration. - -You can also merge updates/changes from the repo back into your fork, to keep up-to-date with any changes for the default configuration. - -#### Example: Adding an autopairs plugin - -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, -} -``` - - -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). - -#### Example: Adding a file tree plugin - -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, -} -``` - -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. - -### Contribution - -Pull-requests are welcome. The goal of this repo is not to create a Neovim configuration framework, but to offer a starting template that shows, by example, available features in Neovim. Some things that will not be included: - -* Custom language server configuration (null-ls templates) -* Theming beyond a default colorscheme necessary for LSP highlight groups - -Each PR, especially those which increase the line count, should have a description as to why the PR is necessary. - -### 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/` - * You may also want to look at the [migration guide for lazy.nvim](https://github.com/folke/lazy.nvim#-migration-guide) -* What if I want to "uninstall" this configuration: - * See [lazy.nvim uninstall](https://github.com/folke/lazy.nvim#-uninstalling) information -* Are there any cool videos about this plugin? - * Current iteration of kickstart (coming soon) - * Here is one about the previous iteration of kickstart: [video introduction to Kickstart.nvim](https://youtu.be/stqUbv-5u2s). Note the install via init.lua no longer works as specified. Please follow the install instructions in this file instead as they're up to date. - -### 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' } -``` - +# nvim + +Personal [`neovim`](https://github.com/neovim/neovim) configuration using [`lazy.nvim`](https://github.com/folke/lazy.nvim) as plugin manager. With a headstarted configuration from [`kickstart.nvim`](https://github.com/nvim-lua/kickstart.nvim). + +## Plugins + +List of plugins installed and configured to the best of my knowledge, including dependencies. Note that the dependencies might repeat along some plugins. + +- [aplha.lua](/lua/plugins/alpha.lua) (Disabled) [goolord/alpha-nvim](https://github.com/goolord/alpha-nvim) + - [nvim-tree/nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) +- [autocompletion.lua](/lua/plugins/autocompletion.lua) [hrsh7th/nvim-cmp](https://github.com/hrsh7th/nvim-cmp) + - [L3MON4D3/LuaSnip](https://github.com/L3MON4D3/LuaSnip) + - [saadparwaiz1/cmp_luasnip](https://github.com/saadparwaiz1/cmp_luasnip) + - [hrsh7th/cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) + - [rafamadriz/friendly-snippets](https://github.com/rafamadriz/friendly-snippets) +- [dracula.lua](/lua/plugins/dracula.lua) (Colorscheme) [Mofiqul/dracula.nvim](https://github.com/Mofiqul/dracula.nvim) +- [gitsigns.lua](/lua/plugins/gitsigns.lua) [lewis6991/gitsigns.nvim](https://github.com/lewis6991/gitsigns.nvim) +- [indent-blankline.lua](/lua/plugins/indent-blankline.lua) [lukas-reineke/indent-blankline.nvim](https://github.com/lukas-reineke/indent-blankline.nvim) +- [lsp.lua](/lua/plugins/lsp.lua) [neovim/nvim-lspconfig](https://github.com/neovim/nvim-lspconfig) + - [hrsh7th/cmp-nvim-lsp](https://github.com/hrsh7th/cmp-nvim-lsp) + - [nvim-telescope/telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) + - [williamboman/mason.nvim](https://github.com/williamboman/mason.nvim) + - [williamboman/mason-lspconfig.nvim](https://github.com/williamboman/mason-lspconfig.nvim) + - [j-hui/fidget.nvim](https://github.com/j-hui/fidget.nvim) + - [folke/neodev.nvim](https://github.com/folke/neodev.nvim) +- [lualine.lua](/lua/plugins/lualine.lua) [nvim-lualine/lualine.nvim](https://github.com/nvim-lualine/lualine.nvim) +- [neo-tree.lua](/lua/plugins/neo-tree.lua) [nvim-neo-tree/neo-tree.nvim](https://github.com/nvim-neo-tree/neo-tree.nvim) + - [nvim-lua/plenary.nvim](https://github.com/nvim-lua/plenary.nvim) + - [MunifTanjim/nui.nvim](https://github.com/MunifTanjim/nui.nvim) + - [nvim-tree/nvim-web-devicons](https://github.com/nvim-tree/nvim-web-devicons) +- [telescope.lua](/lua/plugins/telescope.lua) [nvim-telescope/telescope.nvim](https://github.com/nvim-telescope/telescope.nvim) + - [nvim-lua/plenary.nvim](https://github.com/nvim-lua/plenary.nvim) + - [nvim-telescope/telescope-fzf-native.nvim](https://github.com/nvim-telescope/telescope-fzf-native.nvim) +- [treesitter.lua](/lua/plugins/treesitter.lua) [nvim-treesitter/nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) + - [nvim-treesitter/nvim-treesitter-textobjects](https://github.com/nvim-treesitter/nvim-treesitter-textobjects) +- [undotree.lua](/lua/plugins/undotree.lua) [mbbill/undotree](https://github.com/mbbill/undotree) + +Non configured plugins residing in [init.lua](/lua/plugins/init.lua): + +- [tpope/vim-fugitive](https://github.com/tpope/vim-fugitive) +- [tpope/vim-rhubarb](https://github.com/tpope/vim-rhubarb) +- [tpope/vim-sleuth](https://github.com/tpope/vim-sleuth) +- [folke/which-key.nvim](https://github.com/folke/which-key.nvim) +- [numToStr/Comment.nvim](https://github.com/numToStr/Comment.nvim) diff --git a/doc/kickstart.txt b/doc/kickstart.txt deleted file mode 100644 index cb87ac3..0000000 --- a/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/doc/tags b/doc/tags deleted file mode 100644 index 687ae77..0000000 --- a/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* @@ -1,6 +1,5 @@ --- NOTE: Must happen before plugins are required (otherwise wrong leader will be used) -vim.g.mapleader = ' ' -vim.g.maplocalleader = ' ' +-- Load first, contains leader setting +require('config.set') -- Install https://github.com/folke/lazy.nvim local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim' @@ -19,64 +18,4 @@ vim.opt.rtp:prepend(lazypath) -- Start plugin manager lazy.nvim, super important require('lazy').setup('plugins', {}) --- Set highlight on search -vim.o.hlsearch = false - --- Make line numbers default -vim.wo.number = true -vim.wo.relativenumber = true - --- Enable mouse mode -vim.o.mouse = 'a' - --- Sync clipboard between OS and Neovim. -vim.o.clipboard = 'unnamedplus' - --- 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 - --- Keep signcolumn on by default -vim.wo.signcolumn = 'yes' - --- Decrease update time -vim.o.updatetime = 250 -vim.o.timeout = true -vim.o.timeoutlen = 300 - --- Set completeopt to have a better completion experience -vim.o.completeopt = 'menuone,noselect' - --- NOTE: You should make sure your terminal supports this -vim.o.termguicolors = true - --- [[ Basic Keymaps ]] - --- Keymaps for better default experience -vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { 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 ]] -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 = '*', -}) - --- Diagnostic keymaps -vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) -vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) -vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) -vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) +require('config.keymap') diff --git a/lua/config/keymap.lua b/lua/config/keymap.lua new file mode 100644 index 0000000..2280d15 --- /dev/null +++ b/lua/config/keymap.lua @@ -0,0 +1,12 @@ +-- Better default experience +vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true }) + +-- 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 }) + +-- Diagnostic +vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' }) +vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' }) +vim.keymap.set('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' }) +vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' }) diff --git a/lua/config/set.lua b/lua/config/set.lua new file mode 100644 index 0000000..866eba4 --- /dev/null +++ b/lua/config/set.lua @@ -0,0 +1,43 @@ +-- :h vim.<dict> (dict: g, w, b, t, v, etc) for global variable help +-- and :h (vim.<dict>.)<something> for the option help (without the "()" part) +vim.g.mapleader = ' ' +vim.g.maplocalleader = ' ' + +vim.o.hlsearch = true + +vim.wo.number = true +vim.wo.relativenumber = true + +vim.o.mouse = 'a' +vim.o.clipboard = 'unnamedplus' + +vim.o.breakindent = true + +-- Basically a persistent undo file, useful for undotree plugin +vim.o.undofile = true + +-- Case insensitive searching UNLESS /C or capital in search +vim.o.ignorecase = true +vim.o.smartcase = true + +vim.wo.signcolumn = 'yes' + +-- vim.o.updatetime = 250 +vim.o.timeout = true +vim.o.timeoutlen = 300 + +-- Not sure if these affect some plugins, or if the plugins set their own options +-- Set completeopt to have a better completion experience +vim.o.completeopt = 'menuone,noselect' + +vim.o.termguicolors = true + +-- 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 = '*', +}) diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua index deeda56..0150db8 100644 --- a/lua/kickstart/plugins/debug.lua +++ b/lua/kickstart/plugins/debug.lua @@ -1,23 +1,9 @@ --- 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', }, @@ -26,23 +12,12 @@ return { 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', }, } - - -- Basic debugging keymaps, feel free to change to your liking! vim.keymap.set('n', '<F5>', dap.continue) vim.keymap.set('n', '<F1>', dap.step_into) vim.keymap.set('n', '<F2>', dap.step_over) @@ -52,12 +27,7 @@ return { dap.set_breakpoint(vim.fn.input 'Breakpoint condition: ') end) - -- 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 = { @@ -73,14 +43,12 @@ return { }, }, } - -- toggle to see last session result. Without this ,you can't see session output in case of unhandled exception. vim.keymap.set("n", "<F7>", dapui.toggle) - + 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() end, } |