diff --git a/README.md b/README.md index 41139505..1a59d1f1 100644 --- a/README.md +++ b/README.md @@ -1,241 +1,24 @@ -# kickstart.nvim +# Isenguard NVM -## Introduction +This is a simplistic nvm distro based on Kickstart NVM. -A starting point for Neovim that is: +## Requirements -* Small -* Single-file -* Completely Documented +- [Nerd fonts](https://www.nerdfonts.com/) install using your OS package manager +- Make your terminal use the nerdfonts -**NOT** a Neovim distribution, but instead a starting point for your configuration. +## How to install -## Installation +- Install Isenguard NVM with git -### 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 - -External Requirements: -- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`) -- [ripgrep](https://github.com/BurntSushi/ripgrep#installation), - [fd-find](https://github.com/sharkdp/fd#installation) -- Clipboard tool (xclip/xsel/win32yank or other depending on the platform) -- 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 -- Emoji fonts (Ubuntu only, and only if you want emoji!) `sudo apt install fonts-noto-color-emoji` -- Language Setup: - - If you want to write Typescript, you need `npm` - - If you want to write Golang, you will need `go` - - etc. - -> [!NOTE] -> See [Install Recipes](#Install-Recipes) for additional Windows and Linux specific notes -> and quick install snippets - -### Install Kickstart - -> [!NOTE] -> [Backup](#FAQ) your previous configuration (if any exists) - -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)| `%localappdata%\nvim\` | -| Windows (powershell)| `$env:LOCALAPPDATA\nvim\` | - -#### Recommended Step - -[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, then install by cloning the -fork to your machine using one of the commands below, depending on your OS. - -> [!NOTE] -> Your fork's URL will be something like this: -> `https://github.com//kickstart.nvim.git` - -You likely want to remove `lazy-lock.json` from your fork's `.gitignore` file -too - it's ignored in the kickstart repo to make maintenance easier, but it's -[recommended to track it in version control](https://lazy.folke.io/usage/lockfile). - -#### Clone kickstart.nvim - -> [!NOTE] -> If following the recommended step above (i.e., forking the repo), replace -> `nvim-lua` with `` in the commands below - -
Linux and Mac - -```sh -git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim +```bash +git clone git@github.com:graned/isenguard.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/isenguard ``` -
+This will install the project in the `.config/` folder under folder `isenguard` -
Windows - -If you're using `cmd.exe`: +- Add alias in your zsh (Optional) +```bash +alias isenguard='NVIM_APPNAME="isn" nvm' ``` -git clone https://github.com/nvim-lua/kickstart.nvim.git "%localappdata%\nvim" -``` - -If you're using `powershell.exe` - -``` -git clone https://github.com/nvim-lua/kickstart.nvim.git "${env:LOCALAPPDATA}\nvim" -``` - -
- -### Post Installation - -Start Neovim - -```sh -nvim -``` - -That's it! Lazy will install all the plugins you have. Use `:Lazy` to view -the current plugin status. Hit `q` to close the window. - -#### Read The Friendly Documentation - -Read through the `init.lua` file in your configuration folder for more -information about extending and exploring Neovim. That also includes -examples of adding popularly requested plugins. - -> [!NOTE] -> For more information about a particular plugin check its repository's documentation. - - -### Getting Started - -[The Only Video You Need to Get Started with Neovim](https://youtu.be/m8C0Cq9Uv9o) - -### FAQ - -* What should I do if I already have a pre-existing Neovim configuration? - * 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: - ``` - 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://lazy.folke.io/usage#-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 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 - 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) - -### Install Recipes - -Below you can find OS specific install instructions for Neovim and dependencies. - -After installing all the dependencies continue with the [Install Kickstart](#Install-Kickstart) step. - -#### Windows Installation - -
Windows with Microsoft C++ Build Tools and CMake -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' } -``` -
-
Windows with gcc/make using chocolatey -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) -either follow the instructions on the page or use winget, -run in cmd as **admin**: -``` -winget install --accept-source-agreements chocolatey.chocolatey -``` - -2. install all requirements using choco, exit the previous cmd and -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 -``` -
-
WSL (Windows Subsystem for Linux) - -``` -wsl --install -wsl -sudo add-apt-repository ppa:neovim-ppa/unstable -y -sudo apt update -sudo apt install make gcc ripgrep unzip git xclip neovim -``` -
- -#### Linux Install -
Ubuntu Install Steps - -``` -sudo add-apt-repository ppa:neovim-ppa/unstable -y -sudo apt update -sudo apt install make gcc ripgrep unzip git xclip neovim -``` -
-
Debian Install Steps - -``` -sudo apt update -sudo apt install make gcc ripgrep unzip git xclip curl - -# Now we install nvim -curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz -sudo rm -rf /opt/nvim-linux-x86_64 -sudo mkdir -p /opt/nvim-linux-x86_64 -sudo chmod a+rX /opt/nvim-linux-x86_64 -sudo tar -C /opt -xzf nvim-linux-x86_64.tar.gz - -# make it available in /usr/local/bin, distro installs to /usr/bin -sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/ -``` -
-
Fedora Install Steps - -``` -sudo dnf install -y gcc make git ripgrep fd-find unzip neovim -``` -
- -
Arch Install Steps - -``` -sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim -``` -
- diff --git a/init.lua b/init.lua index 44116732..d3e4886c 100644 --- a/init.lua +++ b/init.lua @@ -91,7 +91,7 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' -- Set to true if you have a Nerd Font installed and selected in the terminal -vim.g.have_nerd_font = false +vim.g.have_nerd_font = true -- [[ Setting options ]] -- See `:help vim.o` @@ -114,9 +114,9 @@ vim.o.showmode = false -- Schedule the setting after `UiEnter` because it can increase startup-time. -- Remove this option if you want your OS clipboard to remain independent. -- See `:help 'clipboard'` -vim.schedule(function() - vim.o.clipboard = 'unnamedplus' -end) +--vim.schedule(function() +-- vim.o.clipboard = 'unnamedplus' +-- end) -- Enable break indent vim.o.breakindent = true @@ -661,6 +661,7 @@ require('lazy').setup({ -- So, we create new capabilities with blink.cmp, and then broadcast that to the servers. local capabilities = require('blink.cmp').get_lsp_capabilities() + -- helper to attach any LSP config to a filetype -- Enable the following language servers -- Feel free to add/remove any LSPs that you want here. They will automatically be installed. -- @@ -683,7 +684,40 @@ require('lazy').setup({ -- But for many setups, the LSP (`ts_ls`) will work just fine -- ts_ls = {}, -- + -- TypeScript / JavaScript (vtsls instead of tsserver) + vtsls = { + settings = { + complete_function_calls = true, + tsserver_file_preferences = { + includeInlayParameterNameHints = 'all', + includeCompletionsForModuleExports = true, + }, + }, + }, + -- Python + basedpyright = {}, -- type checking + ruff_lsp = { -- linting + quickfixes + on_attach = function(client) + -- Let basedpyright handle hovers; ruff for diagnostics/code actions + client.server_capabilities.hoverProvider = false + end, + }, + + -- Rust (use this only if you are NOT using rustaceanvim) + -- If you DO use rustaceanvim, delete this rust_analyzer entry to avoid double attach. + -- rust_analyzer = { + -- settings = { + -- ["rust-analyzer"] = { + -- cargo = { allFeatures = true }, + -- checkOnSave = true, + -- check = { command = "clippy" }, + -- }, + -- }, + -- }, + + -- (optional) TOML LSP for Cargo.toml + taplo = {}, lua_ls = { -- cmd = { ... }, -- filetypes = { ... }, @@ -876,28 +910,6 @@ require('lazy').setup({ }, }, - { -- 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', - priority = 1000, -- Make sure to load this before all the other start plugins. - config = function() - ---@diagnostic disable-next-line: missing-fields - require('tokyonight').setup { - styles = { - comments = { italic = false }, -- Disable italics in comments - }, - } - - -- Load the colorscheme here. - -- Like many other themes, this one has different styles, and you could load - -- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'. - vim.cmd.colorscheme 'tokyonight-night' - end, - }, - -- Highlight todo, notes, etc in comments { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, @@ -952,7 +964,7 @@ require('lazy').setup({ -- 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' }, + -- additional_vim_regex_highlighting = { 'ruby' }, }, indent = { enable = true, disable = { 'ruby' } }, }, @@ -979,7 +991,8 @@ require('lazy').setup({ require 'kickstart.plugins.autopairs', require 'kickstart.plugins.neo-tree', require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps --- require 'kickstart.plugins.devstack', + require 'kickstart.plugins.devstack', + require 'kickstart.plugins.theme', -- 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. diff --git a/lua/kickstart/plugins/devstack.lua b/lua/kickstart/plugins/devstack.lua index 5c738694..b78cd399 100644 --- a/lua/kickstart/plugins/devstack.lua +++ b/lua/kickstart/plugins/devstack.lua @@ -9,8 +9,8 @@ return { ensure_installed = { -- LSP servers 'basedpyright', -- Python - 'ruff_lsp', -- Python linter LSP - 'tsserver', -- TypeScript/JavaScript + 'ruff', -- Python linter LSP + 'vtsls', -- TypeScript/JavaScript 'rust_analyzer', -- Rust }, automatic_installation = true, @@ -25,14 +25,17 @@ return { -- Python 'basedpyright', 'ruff', - 'ruff-lsp', 'black', -- TypeScript/JS - 'typescript-language-server', + 'vtsls', 'prettierd', -- Rust 'rust-analyzer', 'codelldb', + -- git + 'lazygit', + --markdown + 'markdownlint', }, auto_update = true, run_on_start = true, @@ -41,35 +44,6 @@ return { }, }, - -- LSP configs - { - 'neovim/nvim-lspconfig', - config = function() - local lsp = require 'lspconfig' - local capabilities = vim.lsp.protocol.make_client_capabilities() - local ok_cmp, cmp = pcall(require, 'cmp_nvim_lsp') - if ok_cmp then - capabilities = cmp.default_capabilities(capabilities) - end - - -- Python: basedpyright + ruff_lsp - lsp.basedpyright.setup { capabilities = capabilities } - lsp.ruff_lsp.setup { - capabilities = capabilities, - on_attach = function(client) - -- Let Ruff format/fix; disable hover if you prefer Pyright’s hover - client.server_capabilities.hoverProvider = false - end, - } - - -- TypeScript / JavaScript - lsp.tsserver.setup { capabilities = capabilities } - - -- Rust (use rustaceanvim below; comment that out if you prefer plain lsp) - lsp.rust_analyzer.setup { capabilities = capabilities } - end, - }, - -- Rust UX (recommended) { 'mrcjkb/rustaceanvim', @@ -80,7 +54,8 @@ return { settings = { ['rust-analyzer'] = { cargo = { allFeatures = true }, - checkOnSave = { command = 'clippy' }, + checkOnSave = true, + check = { command = 'clippy' }, }, }, }, @@ -115,37 +90,60 @@ return { end, }, - -- Codeium (AI pair programming) + -- NeoGit { - 'Exafunction/codeium.nvim', + 'NeogitOrg/neogit', dependencies = { 'nvim-lua/plenary.nvim', - 'hrsh7th/nvim-cmp', -- if you’re using cmp (kickstart does) + 'sindrets/diffview.nvim', -- optional but great for diffs + 'nvim-telescope/telescope.nvim', -- optional pickers }, - config = function() - require('codeium').setup {} - -- After first start, run :Codeium Auth in Neovim to link your account. - -- If you want Codeium suggestions inline + cmp source, ensure the cmp source is added (see below). - end, - }, - - -- Add Codeium to nvim-cmp sources (if your repo has a cmp config file already) - { - 'hrsh7th/nvim-cmp', - opts = function(_, opts) - opts.sources = opts.sources or {} - -- Prepend Codeium to increase its priority (optional) - table.insert(opts.sources, 1, { name = 'codeium' }) - return opts - end, - }, - - -- LazyGit integration - { - 'kdheepak/lazygit.nvim', - dependencies = { 'nvim-lua/plenary.nvim' }, + cmd = { 'Neogit' }, keys = { - { 'gg', 'LazyGit', desc = 'LazyGit' }, + { + 'gg', + function() + require('neogit').open() + end, + desc = 'Neogit', + }, + { + 'gc', + function() + require('neogit').open { 'commit' } + end, + desc = 'Neogit Commit', + }, + { + 'gpr', + function() + require('neogit').open { 'pull' } + end, + desc = 'Neogit Pull', + }, + { + 'gp', + function() + require('neogit').open { 'push' } + end, + desc = 'Neogit Push', + }, + }, + opts = { + disable_signs = false, + disable_commit_confirmation = true, + integrations = { + diffview = true, -- use Diffview for diffs/log + telescope = true, -- Telescope pickers + }, + kind = 'tab', -- "tab" | "replace" | "floating" + commit_editor = { + kind = 'auto', -- smartly choose where to open commit buffer + }, + mappings = { + commit_editor = { ['q'] = 'Close' }, + rebase_editor = { ['q'] = 'Close' }, + }, }, }, } diff --git a/lua/kickstart/plugins/neo-tree.lua b/lua/kickstart/plugins/neo-tree.lua index c7067891..4fe9d9ec 100644 --- a/lua/kickstart/plugins/neo-tree.lua +++ b/lua/kickstart/plugins/neo-tree.lua @@ -3,7 +3,7 @@ return { 'nvim-neo-tree/neo-tree.nvim', - version = '*', + branch = 'v3.x', dependencies = { 'nvim-lua/plenary.nvim', 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended @@ -15,6 +15,11 @@ return { }, opts = { filesystem = { + filtered_items = { + visible = true, + hide_dotfiles = false, + hide_gitignored = false, + }, window = { mappings = { ['\\'] = 'close_window',