chore: update project

This commit is contained in:
graned 2025-10-05 10:01:26 +02:00
parent 409f61ca36
commit d6b231329f
4 changed files with 118 additions and 319 deletions

243
README.md
View File

@ -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 - [Nerd fonts](https://www.nerdfonts.com/) install using your OS package manager
* Single-file - Make your terminal use the nerdfonts
* Completely Documented
**NOT** a Neovim distribution, but instead a starting point for your configuration. ## How to install
## Installation - Install Isenguard NVM with git
### Install Neovim ```bash
git clone git@github.com:graned/isenguard.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/isenguard
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/<your_github_username>/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 `<your_github_username>` in the commands below
<details><summary> Linux and Mac </summary>
```sh
git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
``` ```
</details> This will install the project in the `.config/` folder under folder `isenguard`
<details><summary> Windows </summary> - Add alias in your zsh (Optional)
If you're using `cmd.exe`:
```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"
```
</details>
### 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
<details><summary>Windows with Microsoft C++ Build Tools and CMake</summary>
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' }
```
</details>
<details><summary>Windows with gcc/make using chocolatey</summary>
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
```
</details>
<details><summary>WSL (Windows Subsystem for Linux)</summary>
```
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
```
</details>
#### Linux Install
<details><summary>Ubuntu Install Steps</summary>
```
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
sudo apt install make gcc ripgrep unzip git xclip neovim
```
</details>
<details><summary>Debian Install Steps</summary>
```
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/
```
</details>
<details><summary>Fedora Install Steps</summary>
```
sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
```
</details>
<details><summary>Arch Install Steps</summary>
```
sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
```
</details>

View File

@ -91,7 +91,7 @@ vim.g.mapleader = ' '
vim.g.maplocalleader = ' ' vim.g.maplocalleader = ' '
-- Set to true if you have a Nerd Font installed and selected in the terminal -- 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 ]] -- [[ Setting options ]]
-- See `:help vim.o` -- See `:help vim.o`
@ -114,9 +114,9 @@ vim.o.showmode = false
-- Schedule the setting after `UiEnter` because it can increase startup-time. -- Schedule the setting after `UiEnter` because it can increase startup-time.
-- Remove this option if you want your OS clipboard to remain independent. -- Remove this option if you want your OS clipboard to remain independent.
-- See `:help 'clipboard'` -- See `:help 'clipboard'`
vim.schedule(function() --vim.schedule(function()
vim.o.clipboard = 'unnamedplus' -- vim.o.clipboard = 'unnamedplus'
end) -- end)
-- Enable break indent -- Enable break indent
vim.o.breakindent = true 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. -- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
local capabilities = require('blink.cmp').get_lsp_capabilities() local capabilities = require('blink.cmp').get_lsp_capabilities()
-- helper to attach any LSP config to a filetype
-- Enable the following language servers -- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed. -- 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 -- But for many setups, the LSP (`ts_ls`) will work just fine
-- ts_ls = {}, -- 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 = { lua_ls = {
-- cmd = { ... }, -- cmd = { ... },
-- filetypes = { ... }, -- 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 -- Highlight todo, notes, etc in comments
{ 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, { '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. -- 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 -- If you are experiencing weird indenting issues, add the language to
-- the list of additional_vim_regex_highlighting and disabled languages for indent. -- 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' } }, indent = { enable = true, disable = { 'ruby' } },
}, },
@ -979,7 +991,8 @@ require('lazy').setup({
require 'kickstart.plugins.autopairs', require 'kickstart.plugins.autopairs',
require 'kickstart.plugins.neo-tree', require 'kickstart.plugins.neo-tree',
require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps 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` -- 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. -- This is the easiest way to modularize your config.

View File

@ -9,8 +9,8 @@ return {
ensure_installed = { ensure_installed = {
-- LSP servers -- LSP servers
'basedpyright', -- Python 'basedpyright', -- Python
'ruff_lsp', -- Python linter LSP 'ruff', -- Python linter LSP
'tsserver', -- TypeScript/JavaScript 'vtsls', -- TypeScript/JavaScript
'rust_analyzer', -- Rust 'rust_analyzer', -- Rust
}, },
automatic_installation = true, automatic_installation = true,
@ -25,14 +25,17 @@ return {
-- Python -- Python
'basedpyright', 'basedpyright',
'ruff', 'ruff',
'ruff-lsp',
'black', 'black',
-- TypeScript/JS -- TypeScript/JS
'typescript-language-server', 'vtsls',
'prettierd', 'prettierd',
-- Rust -- Rust
'rust-analyzer', 'rust-analyzer',
'codelldb', 'codelldb',
-- git
'lazygit',
--markdown
'markdownlint',
}, },
auto_update = true, auto_update = true,
run_on_start = 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 Pyrights 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) -- Rust UX (recommended)
{ {
'mrcjkb/rustaceanvim', 'mrcjkb/rustaceanvim',
@ -80,7 +54,8 @@ return {
settings = { settings = {
['rust-analyzer'] = { ['rust-analyzer'] = {
cargo = { allFeatures = true }, cargo = { allFeatures = true },
checkOnSave = { command = 'clippy' }, checkOnSave = true,
check = { command = 'clippy' },
}, },
}, },
}, },
@ -115,37 +90,60 @@ return {
end, end,
}, },
-- Codeium (AI pair programming) -- NeoGit
{ {
'Exafunction/codeium.nvim', 'NeogitOrg/neogit',
dependencies = { dependencies = {
'nvim-lua/plenary.nvim', 'nvim-lua/plenary.nvim',
'hrsh7th/nvim-cmp', -- if youre using cmp (kickstart does) 'sindrets/diffview.nvim', -- optional but great for diffs
'nvim-telescope/telescope.nvim', -- optional pickers
}, },
config = function() cmd = { 'Neogit' },
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' },
keys = { keys = {
{ '<leader>gg', '<cmd>LazyGit<cr>', desc = 'LazyGit' }, {
'<leader>gg',
function()
require('neogit').open()
end,
desc = 'Neogit',
},
{
'<leader>gc',
function()
require('neogit').open { 'commit' }
end,
desc = 'Neogit Commit',
},
{
'<leader>gpr',
function()
require('neogit').open { 'pull' }
end,
desc = 'Neogit Pull',
},
{
'<leader>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' },
},
}, },
}, },
} }

View File

@ -3,7 +3,7 @@
return { return {
'nvim-neo-tree/neo-tree.nvim', 'nvim-neo-tree/neo-tree.nvim',
version = '*', branch = 'v3.x',
dependencies = { dependencies = {
'nvim-lua/plenary.nvim', 'nvim-lua/plenary.nvim',
'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended 'nvim-tree/nvim-web-devicons', -- not strictly required, but recommended
@ -15,6 +15,11 @@ return {
}, },
opts = { opts = {
filesystem = { filesystem = {
filtered_items = {
visible = true,
hide_dotfiles = false,
hide_gitignored = false,
},
window = { window = {
mappings = { mappings = {
['\\'] = 'close_window', ['\\'] = 'close_window',