summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md191
-rw-r--r--doc/kickstart.txt24
-rw-r--r--doc/tags3
-rw-r--r--init.lua67
-rw-r--r--lua/config/keymap.lua12
-rw-r--r--lua/config/set.lua43
-rw-r--r--lua/kickstart/plugins/debug.lua34
7 files changed, 103 insertions, 271 deletions
diff --git a/README.md b/README.md
index 64f386c..6353b60 100644
--- a/README.md
+++ b/README.md
@@ -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*
diff --git a/init.lua b/init.lua
index d04ff6d..290e481 100644
--- a/init.lua
+++ b/init.lua
@@ -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,
}