chore: update project
This commit is contained in:
parent
409f61ca36
commit
d6b231329f
243
README.md
243
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/<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
|
||||
```bash
|
||||
git clone git@github.com:graned/isenguard.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/isenguard
|
||||
```
|
||||
|
||||
</details>
|
||||
This will install the project in the `.config/` folder under folder `isenguard`
|
||||
|
||||
<details><summary> Windows </summary>
|
||||
|
||||
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"
|
||||
```
|
||||
|
||||
</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>
|
||||
|
||||
|
|
|
|||
69
init.lua
69
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.
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
{ '<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' },
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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',
|
||||
|
|
|
|||
Loading…
Reference in New Issue