Merge remote
This commit is contained in:
		
						commit
						46e5d9c2e6
					
				
							
								
								
									
										35
									
								
								README.md
								
								
								
								
							
							
						
						
									
										35
									
								
								README.md
								
								
								
								
							|  | @ -27,6 +27,8 @@ If you are experiencing issues, please make sure you have the latest versions. | |||
| External Requirements: | ||||
| - Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`) | ||||
| - [ripgrep](https://github.com/BurntSushi/ripgrep#installation) | ||||
| - A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons | ||||
|   - if you have it set `vim.g.have_nerd_font` in `init.lua` to true | ||||
| - Language Setup: | ||||
|   - If want to write Typescript, you need `npm` | ||||
|   - If want to write Golang, you will need `go` | ||||
|  | @ -87,15 +89,13 @@ 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. | ||||
| [The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o) | ||||
| 
 | ||||
| ### 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. | ||||
| (so that you have your own copy that you can modify) and then install. You | ||||
| can install it on your machine using the methods above. | ||||
| 
 | ||||
| > **NOTE** | ||||
| > Your fork's url will be something like this: `https://github.com/<your_github_username>/kickstart.nvim.git` | ||||
|  | @ -135,13 +135,12 @@ return { | |||
| <details> | ||||
|   <summary>Adding a file tree plugin</summary> | ||||
| 
 | ||||
| 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. | ||||
| This will install the tree plugin and add the command `:Neotree` for you. For more information, see the documentation at [neo-tree.nvim](https://github.com/nvim-neo-tree/neo-tree.nvim). | ||||
| 
 | ||||
| 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 ]]) | ||||
| -- File: lua/custom/plugins/filetree.lua | ||||
| 
 | ||||
| return { | ||||
|   "nvim-neo-tree/neo-tree.nvim", | ||||
|  | @ -162,10 +161,10 @@ return { | |||
| ### 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. | ||||
|   * You should back it up and then delete all associated files. | ||||
|   * 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: | ||||
|   * 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' | ||||
|     ``` | ||||
|  | @ -174,9 +173,9 @@ return { | |||
|   * 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. | ||||
|     configuration that someone can easily use to `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 | ||||
|     into smaller parts. A fork of kickstart that does this while maintaining the  | ||||
|     same functionality is available here: | ||||
|     * [kickstart-modular.nvim](https://github.com/dam9000/kickstart-modular.nvim) | ||||
|   * Discussions on this topic can be found here: | ||||
|  | @ -185,19 +184,19 @@ return { | |||
| 
 | ||||
| ### Windows Installation | ||||
| 
 | ||||
| Installation may require installing build tools, and updating the run command for `telescope-fzf-native` | ||||
| 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 | ||||
| - 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' } | ||||
| ``` | ||||
| 
 | ||||
| Alternatively one can install gcc and make which don't require changing the config, | ||||
| Alternatively, one can install gcc and make which don't require changing the config, | ||||
| the easiest way is to use choco: | ||||
| 
 | ||||
| 1. install [chocolatey](https://chocolatey.org/install) | ||||
|  | @ -208,11 +207,9 @@ winget install --accept-source-agreements chocolatey.chocolatey | |||
| ``` | ||||
| 
 | ||||
| 2. install all requirements using choco, exit previous cmd and | ||||
| open a new one so that choco path is set, run in cmd as **admin**: | ||||
| open a new one so that choco path is set, and run in cmd as **admin**: | ||||
| ``` | ||||
| choco install -y neovim git ripgrep wget fd unzip gzip mingw make | ||||
| ``` | ||||
| 
 | ||||
| Then continue with the [Install Kickstart](#Install-Kickstart) step. | ||||
| 
 | ||||
| 
 | ||||
| Then, continue with the [Install Kickstart](#Install-Kickstart) step. | ||||
|  |  | |||
							
								
								
									
										123
									
								
								init.lua
								
								
								
								
							
							
						
						
									
										123
									
								
								init.lua
								
								
								
								
							|  | @ -90,6 +90,9 @@ P.S. You can delete this when you're done too. It's your config now! :) | |||
| vim.g.mapleader = ' ' | ||||
| vim.g.maplocalleader = ' ' | ||||
| 
 | ||||
| -- Set to true if you have a Nerd Font installed | ||||
| vim.g.have_nerd_font = false | ||||
| 
 | ||||
| -- [[ Setting options ]] | ||||
| -- See `:help vim.opt` | ||||
| -- NOTE: You can change these options as you wish! | ||||
|  | @ -127,6 +130,9 @@ vim.opt.signcolumn = 'yes' | |||
| 
 | ||||
| -- Decrease update time | ||||
| vim.opt.updatetime = 250 | ||||
| 
 | ||||
| -- Decrease mapped sequence wait time | ||||
| -- Displays which-key popup sooner | ||||
| vim.opt.timeoutlen = 300 | ||||
| 
 | ||||
| -- Configure how new splits should be opened | ||||
|  | @ -218,7 +224,7 @@ vim.opt.rtp:prepend(lazypath) | |||
| --    :Lazy update | ||||
| -- | ||||
| -- NOTE: Here is where you install your plugins. | ||||
| require('lazy').setup { | ||||
| 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 | ||||
| 
 | ||||
|  | @ -373,10 +379,8 @@ require('lazy').setup { | |||
|       }, | ||||
|       { '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' } | ||||
|       -- Useful for getting pretty icons, but requires a Nerd Font. | ||||
|       { 'nvim-tree/nvim-web-devicons', enabled = vim.g.have_nerd_font }, | ||||
|     }, | ||||
|     config = function() | ||||
|       -- Telescope is a fuzzy finder that comes with a lot of different things that | ||||
|  | @ -478,6 +482,10 @@ require('lazy').setup { | |||
|       -- Useful status updates for LSP. | ||||
|       -- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})` | ||||
|       { 'j-hui/fidget.nvim', opts = {} }, | ||||
| 
 | ||||
|       -- `neodev` configures Lua LSP for your Neovim config, runtime and plugins | ||||
|       -- used for completion, annotations and signatures of Neovim apis | ||||
|       { 'folke/neodev.nvim', opts = {} }, | ||||
|     }, | ||||
|     config = function() | ||||
|       -- Brief Aside: **What is LSP?** | ||||
|  | @ -524,7 +532,7 @@ require('lazy').setup { | |||
| 
 | ||||
|           -- 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 <C-T>. | ||||
|           --  To jump back, press <C-t>. | ||||
|           map('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition') | ||||
| 
 | ||||
|           -- Find references for the word under your cursor. | ||||
|  | @ -619,18 +627,6 @@ require('lazy').setup { | |||
|           -- 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', | ||||
|               }, | ||||
|  | @ -676,10 +672,16 @@ require('lazy').setup { | |||
|     'stevearc/conform.nvim', | ||||
|     opts = { | ||||
|       notify_on_error = false, | ||||
|       format_on_save = { | ||||
|       format_on_save = function(bufnr) | ||||
|         -- Disable "format_on_save lsp_fallback" for languages that don't | ||||
|         -- have a well standardized coding style. You can add additional | ||||
|         -- languages here or re-enable it for the disabled ones. | ||||
|         local disable_filetypes = { c = true, cpp = true } | ||||
|         return { | ||||
|           timeout_ms = 500, | ||||
|         lsp_fallback = true, | ||||
|       }, | ||||
|           lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype], | ||||
|         } | ||||
|       end, | ||||
|       formatters_by_ft = { | ||||
|         lua = { 'stylua' }, | ||||
|         -- Conform can also run multiple formatters sequentially | ||||
|  | @ -708,6 +710,17 @@ require('lazy').setup { | |||
|           end | ||||
|           return 'make install_jsregexp' | ||||
|         end)(), | ||||
|         dependencies = { | ||||
|           -- `friendly-snippets` contains a variety of premade snippets. | ||||
|           --    See the README about individual language/framework/plugin snippets: | ||||
|           --    https://github.com/rafamadriz/friendly-snippets | ||||
|           -- { | ||||
|           --   'rafamadriz/friendly-snippets', | ||||
|           --   config = function() | ||||
|           --     require('luasnip.loaders.from_vscode').lazy_load() | ||||
|           --   end, | ||||
|           -- }, | ||||
|         }, | ||||
|       }, | ||||
|       'saadparwaiz1/cmp_luasnip', | ||||
| 
 | ||||
|  | @ -716,12 +729,6 @@ require('lazy').setup { | |||
|       --  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` | ||||
|  | @ -747,6 +754,10 @@ require('lazy').setup { | |||
|           -- Select the [p]revious item | ||||
|           ['<C-p>'] = cmp.mapping.select_prev_item(), | ||||
| 
 | ||||
|           -- scroll the documentation window [b]ack / [f]orward | ||||
|           ['<C-b>'] = cmp.mapping.scroll_docs(-4), | ||||
|           ['<C-f>'] = cmp.mapping.scroll_docs(4), | ||||
| 
 | ||||
|           -- Accept ([y]es) the completion. | ||||
|           --  This will auto-import if your LSP supports it. | ||||
|           --  This will expand snippets if the LSP sent a snippet. | ||||
|  | @ -775,6 +786,9 @@ require('lazy').setup { | |||
|               luasnip.jump(-1) | ||||
|             end | ||||
|           end, { 'i', 's' }), | ||||
| 
 | ||||
|           -- For more advanced luasnip keymaps (e.g. selecting choice nodes, expansion) see: | ||||
|           --    https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps | ||||
|         }, | ||||
|         sources = { | ||||
|           { name = 'nvim_lsp' }, | ||||
|  | @ -791,7 +805,6 @@ require('lazy').setup { | |||
|     -- | ||||
|     -- 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 | ||||
|  | @ -827,14 +840,15 @@ require('lazy').setup { | |||
|       --  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() | ||||
|       -- set use_icons to true if you have a Nerd Font | ||||
|       statusline.setup { use_icons = vim.g.have_nerd_font } | ||||
| 
 | ||||
|       -- 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 | ||||
|       -- default behavior. For example, here we set the section for | ||||
|       -- cursor location to LINE:COLUMN | ||||
|       ---@diagnostic disable-next-line: duplicate-set-field | ||||
|       statusline.section_location = function() | ||||
|         return '' | ||||
|         return '%2l:%-2v' | ||||
|       end | ||||
| 
 | ||||
|       -- ... and there is more! | ||||
|  | @ -845,11 +859,7 @@ require('lazy').setup { | |||
|   { -- 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 { | ||||
|     opts = { | ||||
|       ensure_installed = { | ||||
|         'lua', | ||||
|         'python', | ||||
|  | @ -874,9 +884,20 @@ require('lazy').setup { | |||
|       }, | ||||
|       -- Autoinstall languages that are not installed | ||||
|       auto_install = true, | ||||
|         highlight = { enable = true }, | ||||
|         indent = { enable = true }, | ||||
|       } | ||||
|       highlight = { | ||||
|         enable = true, | ||||
|         -- Some languages depend on vim's regex highlighting system (such as Ruby) for indent rules. | ||||
|         --  If you are experiencing weird indenting issues, add the language to | ||||
|         --  the list of additional_vim_regex_highlighting and disabled languages for indent. | ||||
|         additional_vim_regex_highlighting = { 'ruby' }, | ||||
|       }, | ||||
|       indent = { enable = true, disable = { 'ruby' } }, | ||||
|     }, | ||||
|     config = function(_, opts) | ||||
|       -- [[ Configure Treesitter ]] See `:help nvim-treesitter` | ||||
| 
 | ||||
|       ---@diagnostic disable-next-line: missing-fields | ||||
|       require('nvim-treesitter.configs').setup(opts) | ||||
| 
 | ||||
|       -- 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: | ||||
|  | @ -974,7 +995,27 @@ require('lazy').setup { | |||
|   --  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' }, | ||||
| } | ||||
| }, { | ||||
|   ui = { | ||||
|     -- If you have a Nerd Font, set icons to an empty table which will use the | ||||
|     -- default lazy.nvim defined Nerd Font icons otherwise define a unicode icons table | ||||
|     icons = vim.g.have_nerd_font and {} or { | ||||
|       cmd = '⌘', | ||||
|       config = '🛠', | ||||
|       event = '📅', | ||||
|       ft = '📂', | ||||
|       init = '⚙', | ||||
|       keys = '🗝', | ||||
|       plugin = '🔌', | ||||
|       runtime = '💻', | ||||
|       require = '🌙', | ||||
|       source = '📄', | ||||
|       start = '🚀', | ||||
|       task = '📌', | ||||
|       lazy = '💤 ', | ||||
|     }, | ||||
|   }, | ||||
| }) | ||||
| 
 | ||||
| -- The line beneath this is called `modeline`. See `:help modeline` | ||||
| -- vim: ts=2 sts=2 sw=2 et | ||||
|  |  | |||
|  | @ -6,15 +6,16 @@ | |||
| --]] | ||||
| 
 | ||||
| local check_version = function() | ||||
|   local verstr = string.format('%s.%s.%s', vim.version().major, vim.version().minor, vim.version().patch) | ||||
|   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()))) | ||||
|     vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) | ||||
|     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()))) | ||||
|     vim.health.ok(string.format("Neovim version is: '%s'", verstr)) | ||||
|   else | ||||
|     vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", tostring(vim.version()))) | ||||
|     vim.health.error(string.format("Neovim out of date: '%s'. Upgrade to latest stable or nightly", verstr)) | ||||
|   end | ||||
| end | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue