1
0
mirror of https://github.com/jdhao/nvim-config.git synced 2025-06-08 14:14:33 +02:00

15 Commits

Author SHA1 Message Date
jdhao
6df27d1c22 upgrade to neovim 0.9.2 2023-09-16 14:26:38 +02:00
jdhao
7f6627cfa1 update plugin conf for Lazy.nvim 2023-09-10 22:16:16 +02:00
jdhao
7ff11a9760 update plugin lazy loading events 2023-09-05 00:22:02 +02:00
jdhao
cc4688d089 Loosen the version check condition
Other version of nvim can still run this config, but should use with
care.
2023-09-01 21:39:08 +02:00
jdhao
8a1b3193a4 fix bufferline loading issue 2023-09-01 21:27:13 +02:00
jdhao
e92362041c fix hlslens issue when no pattern is found
The captured error message is not correct before.
2023-09-01 21:22:22 +02:00
jdhao
63ff776758 fix loading order of nvim-cmp and nvim-lsp 2023-09-01 20:52:46 +02:00
jdhao
41c8c81f21 update spell 2023-09-01 01:08:41 +02:00
jdhao
997c6286df Optimize plugin loading speed 2023-09-01 01:07:16 +02:00
jdhao
359621b126 fix multi visual line delete issue
For TextYankPost event, it includes both yank and delete, we should only
restore cursor position for yank, not for delete. Otherwise, it messes
up with text deletion when you visually select multiple lines and delete
them. See also issue reported here: https://github.com/jdhao/nvim-config/pull/222#issuecomment-1698634645
2023-09-01 00:26:08 +02:00
jdhao
4dc2d9575b disable horizontal scroll by mouse 2023-08-29 23:44:07 +02:00
jdhao
fc1c447319 fix multi-line yank issue, close #220
The previous way of keep the cursor while yanking is not perfect.
It will break multi-line yank (`{count}yy`).
2023-08-28 21:11:32 +02:00
jdhao
1391ca7ff1 feat: switch from packer.nvim to lazy.nvim 2023-08-27 23:14:31 +02:00
jdhao
6a6f8ff597 Update condition for installing vim-xkbswitch 2023-08-23 00:48:21 +02:00
jdhao
946e65662b fix nvimtree conf, close #215 2023-08-14 23:55:17 +02:00
16 changed files with 629 additions and 461 deletions

View File

@@ -13,7 +13,7 @@
<img alt="Latest release" src="https://img.shields.io/github/v/release/jdhao/nvim-config" /> <img alt="Latest release" src="https://img.shields.io/github/v/release/jdhao/nvim-config" />
</a> </a>
<a href="https://github.com/neovim/neovim/releases/tag/stable"> <a href="https://github.com/neovim/neovim/releases/tag/stable">
<img src="https://img.shields.io/badge/Neovim-0.9.1-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/> <img src="https://img.shields.io/badge/Neovim-0.9.2-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/>
</a> </a>
<a href="https://github.com/jdhao/nvim-config/search?l=vim-script"> <a href="https://github.com/jdhao/nvim-config/search?l=vim-script">
<img src="https://img.shields.io/github/languages/top/jdhao/nvim-config" alt="Top languages"/> <img src="https://img.shields.io/github/languages/top/jdhao/nvim-config" alt="Top languages"/>
@@ -21,8 +21,8 @@
<a href="https://github.com/jdhao/nvim-config/graphs/commit-activity"> <a href="https://github.com/jdhao/nvim-config/graphs/commit-activity">
<img src="https://img.shields.io/github/commit-activity/m/jdhao/nvim-config?style=flat-square" /> <img src="https://img.shields.io/github/commit-activity/m/jdhao/nvim-config?style=flat-square" />
</a> </a>
<a href="https://github.com/jdhao/nvim-config/releases/tag/v0.9.1"> <a href="https://github.com/jdhao/nvim-config/releases/tag/v0.9.2">
<img src="https://img.shields.io/github/commits-since/jdhao/nvim-config/v0.9.1?style=flat-square" /> <img src="https://img.shields.io/github/commits-since/jdhao/nvim-config/v0.9.2?style=flat-square" />
</a> </a>
<a href="https://github.com/jdhao/nvim-config/graphs/contributors"> <a href="https://github.com/jdhao/nvim-config/graphs/contributors">
<img src="https://img.shields.io/github/contributors/jdhao/nvim-config?style=flat-square" /> <img src="https://img.shields.io/github/contributors/jdhao/nvim-config?style=flat-square" />
@@ -57,7 +57,7 @@ and how to set up on different platforms (Linux, macOS, and Windows).
# Features # # Features #
+ Plugin management via [Packer.nvim](https://github.com/wbthomason/packer.nvim). + Plugin management via [Lazy.nvim](https://github.com/folke/lazy.nvim).
+ Code, snippet, word auto-completion via [nvim-cmp](https://github.com/hrsh7th/nvim-cmp). + Code, snippet, word auto-completion via [nvim-cmp](https://github.com/hrsh7th/nvim-cmp).
+ Language server protocol (LSP) support via [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig). + Language server protocol (LSP) support via [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig).
+ Git integration via [vim-fugitive](https://github.com/tpope/vim-fugitive). + Git integration via [vim-fugitive](https://github.com/tpope/vim-fugitive).

View File

@@ -141,9 +141,7 @@ function! utils#Inside_git_repo() abort
if match(res, 'true') == -1 if match(res, 'true') == -1
return v:false return v:false
else else
" Manually trigger a special user autocmd InGitRepo (to use it for " Manually trigger a special user autocmd InGitRepo (used lazyloading.
" lazyloading of fugitive by packer.nvim).
" See also https://github.com/wbthomason/packer.nvim/discussions/534.
doautocmd User InGitRepo doautocmd User InGitRepo
return v:true return v:true
endif endif

View File

@@ -71,7 +71,7 @@ set scrolloff=3
" Use mouse to select and resize windows, etc. " Use mouse to select and resize windows, etc.
set mouse=nic " Enable mouse in several mode set mouse=nic " Enable mouse in several mode
set mousemodel=popup " Set the behaviour of mouse set mousemodel=popup " Set the behaviour of mouse
set mousescroll=ver:1,hor:6 set mousescroll=ver:1,hor:0
" Disable showing current mode on command line since statusline plugins can show it. " Disable showing current mode on command line since statusline plugins can show it.
set noshowmode set noshowmode

View File

@@ -7,10 +7,10 @@ lua require('plugins')
" To use these shortcuts: first activate command line with `:`, then input the " To use these shortcuts: first activate command line with `:`, then input the
" short alias, e.g., `pi`, then press <space>, the alias will be expanded to " short alias, e.g., `pi`, then press <space>, the alias will be expanded to
" the full command automatically. " the full command automatically.
call utils#Cabbrev('pi', 'PackerInstall') call utils#Cabbrev('pi', 'Lazy install')
call utils#Cabbrev('pud', 'PackerUpdate') call utils#Cabbrev('pud', 'Lazy update')
call utils#Cabbrev('pc', 'PackerClean') call utils#Cabbrev('pc', 'Lazy clean')
call utils#Cabbrev('ps', 'PackerSync') call utils#Cabbrev('ps', 'Lazy sync')
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" configurations for vim script plugin " " configurations for vim script plugin "
@@ -401,7 +401,7 @@ function! s:wilder_init() abort
\ 'apply_incsearch_fix': 0, \ 'apply_incsearch_fix': 0,
\ })) \ }))
catch /^Vim\%((\a\+)\)\=:E117/ catch /^Vim\%((\a\+)\)\=:E117/
echohl Error |echomsg "Wilder.nvim missing: run :PackerSync to fix."|echohl None echohl Error |echomsg "Wilder.nvim missing"| echohl None
endtry endtry
endfunction endfunction

View File

@@ -111,7 +111,7 @@ vim-language-server is installed in the same directory as the node executable.
### Git ### Git
Git is required by plugin manager [packer.nvim](https://github.com/wbthomason/packer.nvim) and other git-related plugins. Git is required by plugin manager [lazy.nvim](https://github.com/folke/lazy.nvim) and other git-related plugins.
For Linux and macOS, Git is usually pre-installed. For Linux and macOS, Git is usually pre-installed.
The version of Git on the Linux system may be too old so that plugins may break. The version of Git on the Linux system may be too old so that plugins may break.
@@ -201,22 +201,6 @@ After installing Nvim, we need to set the path to nvim correctly.
After installing nvim and all the dependencies, we will install plugin managers and set up this config. After installing nvim and all the dependencies, we will install plugin managers and set up this config.
### Install plugin manager packer.nvim
I use packer.nvim to manage my plugins. We need to install packer.nvim on our system first.
For Windows, if curl is installed, run the following command (on PowerShell):
```
git clone --depth=1 https://github.com/wbthomason/packer.nvim "$env:LOCALAPPDATA\nvim-data\site\pack\packer\opt\packer.nvim"
```
For macOS and Linux, run the following command:
```bash
git clone --depth=1 https://github.com/wbthomason/packer.nvim ~/.local/share/nvim/site/pack/packer/opt/packer.nvim
```
### How to install this configuration ### How to install this configuration
On Linux and macOS, the directory is `~/.config/nvim`. On Linux and macOS, the directory is `~/.config/nvim`.
@@ -228,7 +212,7 @@ then go to this directory, and run the following command:
git clone --depth=1 https://github.com/jdhao/nvim-config.git . git clone --depth=1 https://github.com/jdhao/nvim-config.git .
``` ```
After that, when we first open nvim, run command `:PackerSync` to install all the plugins. After that, when we first open nvim, all the plugins will be installed automatically.
Since I use quite a lot of plugins (more than 60), it may take some time to install all of them. Since I use quite a lot of plugins (more than 60), it may take some time to install all of them.
[^1]: Use `echo %userprofile%` to see where your `$HOME` is. [^1]: Use `echo %userprofile%` to see where your `$HOME` is.

View File

@@ -252,13 +252,7 @@ fi
git clone --depth=1 https://github.com/jdhao/nvim-config.git "$NVIM_CONFIG_DIR" git clone --depth=1 https://github.com/jdhao/nvim-config.git "$NVIM_CONFIG_DIR"
echo "Installing packer.nvim"
if [[ ! -d ~/.local/share/nvim/site/pack/packer/opt/packer.nvim ]]; then
git clone --depth=1 https://github.com/wbthomason/packer.nvim \
~/.local/share/nvim/site/pack/packer/opt/packer.nvim
fi
echo "Installing nvim plugins, please wait" echo "Installing nvim plugins, please wait"
"$NVIM_DIR/bin/nvim" -c "autocmd User PackerComplete quitall" -c "PackerSync" "$NVIM_DIR/bin/nvim" -c "autocmd User LazyInstall quitall" -c "lua require('lazy').install()"
echo "Finished installing Nvim and its dependencies!" echo "Finished installing Nvim and its dependencies!"

View File

@@ -11,19 +11,17 @@
-- StackOverflow: https://stackoverflow.com/users/6064933/jdhao -- StackOverflow: https://stackoverflow.com/users/6064933/jdhao
vim.loader.enable() vim.loader.enable()
local api = vim.api
local version = vim.version local version = vim.version
-- check if we have the latest stable version of nvim -- check if we have the latest stable version of nvim
local expected_ver = "0.9.1" local expected_ver = "0.9.2"
local ev = version.parse(expected_ver) local ev = version.parse(expected_ver)
local actual_ver = version() local actual_ver = version()
if version.cmp(ev, actual_ver) ~= 0 then if version.cmp(ev, actual_ver) ~= 0 then
local _ver = string.format("%s.%s.%s", actual_ver.major, actual_ver.minor, actual_ver.patch) local _ver = string.format("%s.%s.%s", actual_ver.major, actual_ver.minor, actual_ver.patch)
local msg = string.format("Unsupported nvim version: expect %s, but got %s instead!", expected_ver, _ver) local msg = string.format("Expect nvim %s, but got %s instead. Use at your own risk!", expected_ver, _ver)
api.nvim_err_writeln(msg) vim.api.nvim_err_writeln(msg)
return
end end
local core_conf_files = { local core_conf_files = {

88
lazy-lock.json Normal file
View File

@@ -0,0 +1,88 @@
{
"LeaderF": { "branch": "master", "commit": "9c4451d2c1a6ea1f32e39fe52d58f6f5655b231d" },
"asyncrun.vim": { "branch": "master", "commit": "42385d54b8546c163b946fd50eed2103ef7993c9" },
"better-escape.vim": { "branch": "master", "commit": "6b16a45a839727977277f6ab11bded63e9ed86bb" },
"bufferline.nvim": { "branch": "main", "commit": "9961d87bb3ec008213c46ba14b3f384a5f520eb5" },
"catppuccin": { "branch": "main", "commit": "85e93601e0f0b48aa2c6bbfae4d0e9d7a1898280" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-emoji": { "branch": "main", "commit": "19075c36d5820253d32e2478b6aaf3734aeaafa0" },
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"cmp-nvim-ultisnips": { "branch": "main", "commit": "24bca5c3e137b28cd87442d4fc51a2b312dd99cc" },
"cmp-omni": { "branch": "main", "commit": "9436e6cdd7c5dfa24a99a60d9280b24dbdea3649" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"committia.vim": { "branch": "master", "commit": "0b4df1a7f48ffbc23b009bd14d58ee1be541917c" },
"dashboard-nvim": { "branch": "master", "commit": "bbe0234168501b8ba46f24b4fb3cb7c5b88c0784" },
"delimitMate": { "branch": "master", "commit": "537a1da0fa5eeb88640425c37e545af933c56e1b" },
"dressing.nvim": { "branch": "master", "commit": "c1e1d5fa44fe08811b6ef4aadac2b50e602f9504" },
"edge": { "branch": "master", "commit": "a4fd4f458331d42677d992f428235c491b2016aa" },
"emmylua-nvim": { "branch": "master", "commit": "38720eb5f1dac8e87254fd944dbe0959b2e67d94" },
"everforest": { "branch": "master", "commit": "83b666410d7ae0eccf96dbbe3b4b6ac5b8172d38" },
"fidget.nvim": { "branch": "main", "commit": "0ba1e16d07627532b6cae915cc992ecac249fb97" },
"firenvim": { "branch": "master", "commit": "138424db463e6c0e862a05166a4ccc781cd7c19d" },
"gitlinker.nvim": { "branch": "master", "commit": "cc59f732f3d043b626c8702cb725c82e54d35c25" },
"gitsigns.nvim": { "branch": "main", "commit": "907ae8636016aab2f283576fc60d46ca3427e579" },
"gruvbox-material": { "branch": "master", "commit": "b5f8c6a6c1cda630c53b061b765068a0898d47a3" },
"hop.nvim": { "branch": "master", "commit": "1a1eceafe54b5081eae4cb91c723abd1d450f34b" },
"indent-blankline.nvim": { "branch": "master", "commit": "9637670896b68805430e2f72cf5d16be5b97a22a" },
"kanagawa.nvim": { "branch": "master", "commit": "a4e99f089110c6d00bc33f5497709200e914e763" },
"lazy.nvim": { "branch": "main", "commit": "2a9354c7d2368d78cbd5575a51a2af5bd8a6ad01" },
"lspkind-nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" },
"lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
"markdown-preview.nvim": { "branch": "master", "commit": "02cc3874738bc0f86e4b91f09b8a0ac88aef8e96" },
"material.nvim": { "branch": "main", "commit": "1ecaa2d065a1ea308bd7702a77c2bf35ede8f536" },
"monokai.nvim": { "branch": "master", "commit": "b8bd44d5796503173627d7a1fc51f77ec3a08a63" },
"neoformat": { "branch": "master", "commit": "0c285d7a7c06a6ee88db70871a274797693fce42" },
"nightfox.nvim": { "branch": "main", "commit": "e886e39e592e89f316536a6f070365a9d88901c9" },
"nord.nvim": { "branch": "master", "commit": "15fbfc38a83980b93e169b32a1bf64757f1e2bf4" },
"nvim-bqf": { "branch": "main", "commit": "a906a9dfc1bd7b3ac51ac954e32e157ffad9a7cd" },
"nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
"nvim-hlslens": { "branch": "main", "commit": "f0281591a59e95400babf61a96e59ba20e5c9533" },
"nvim-lspconfig": { "branch": "master", "commit": "cc388d3f6b9c7c943ae2b2dcd46ad470fd257f91" },
"nvim-notify": { "branch": "master", "commit": "94859430020f5cf32a1b97ddd9e596fed9db7981" },
"nvim-tree.lua": { "branch": "master", "commit": "94c7c810af205c0f00c8f105dcf490c8eb17658a" },
"nvim-treesitter": { "branch": "master", "commit": "bf8b089eecef9e9e8c1765f81613a2fd5e49175c" },
"nvim-web-devicons": { "branch": "master", "commit": "973ab742f143a796a779af4d786ec409116a0d87" },
"onedark.nvim": { "branch": "master", "commit": "dac8c39812dae025255c9069a260e1f69d967927" },
"onedarkpro.nvim": { "branch": "main", "commit": "fa861b992471d55f653751f1fea8769ca536a554" },
"open-browser.vim": { "branch": "master", "commit": "7d4c1d8198e889d513a030b5a83faa07606bac27" },
"plenary.nvim": { "branch": "master", "commit": "9ce85b0f7dcfe5358c0be937ad23e456907d410b" },
"rose-pine": { "branch": "main", "commit": "e29002cbee4854a9c8c4b148d8a52fae3176070f" },
"sonokai": { "branch": "master", "commit": "17308ee6d9c764bfc1e0fa97213e7a99701b4144" },
"tabular": { "branch": "master", "commit": "339091ac4dd1f17e225fe7d57b48aff55f99b23a" },
"targets.vim": { "branch": "master", "commit": "642d3a4ce306264b05ea3219920b13ea80931767" },
"telescope-symbols.nvim": { "branch": "master", "commit": "f2060117d965df4a626f068a4ebbd8ee051aa076" },
"telescope.nvim": { "branch": "master", "commit": "59812c26d826e8c717e29406267ea1260f71e103" },
"ultisnips": { "branch": "master", "commit": "24a3ebb36687b6d59a19d63173713575b486d739" },
"unicode.vim": { "branch": "master", "commit": "c8aa12b1e2e1b6254885b12bdb239ce6c885fdb1" },
"vim-auto-save": { "branch": "master", "commit": "2e3e54ea4c0fc946c21b0a4ee4c1c295ba736ee8" },
"vim-commentary": { "branch": "master", "commit": "e87cd90dc09c2a203e13af9704bd0ef79303d755" },
"vim-conflicted": { "branch": "master", "commit": "068c320796f807ac4961618e3e62316773803996" },
"vim-eunuch": { "branch": "master", "commit": "67f3dd32b4dcd1c427085f42ff5f29c7adc645c6" },
"vim-flog": { "branch": "master", "commit": "58c1d39ec42f92d23a1204b1869e5d1dece8b86c" },
"vim-fugitive": { "branch": "master", "commit": "6fcb0ad03982de646e3fecb6915e585651b9a9fb" },
"vim-grammarous": { "branch": "master", "commit": "db46357465ce587d5325e816235b5e92415f8c05" },
"vim-highlighturl": { "branch": "master", "commit": "012fee983e03913db6ba6393307eac434999b896" },
"vim-indent-object": { "branch": "master", "commit": "5c5b24c959478929b54a9e831a8e2e651a465965" },
"vim-markdown": { "branch": "master", "commit": "cc82d88e2a791f54d2b6e2b26e41f743351ac947" },
"vim-markdownfootnotes": { "branch": "master", "commit": "2b288149f48cfaf7465d25bb094ed62898f5e5b0" },
"vim-matchup": { "branch": "master", "commit": "6dbe108230c7dbbf00555b7d4d9f6a891837ef07" },
"vim-mundo": { "branch": "master", "commit": "b53d35fb5ca9923302b9ef29e618ab2db4cc675e" },
"vim-obsession": { "branch": "master", "commit": "fe9d3e1a9a50171e7d316a52e1e56d868e4c1fe5" },
"vim-python-pep8-indent": { "branch": "master", "commit": "60ba5e11a61618c0344e2db190210145083c91f8" },
"vim-pythonsense": { "branch": "master", "commit": "9200a57629c904ed2ab8c9b2e8c5649d311794ba" },
"vim-repeat": { "branch": "master", "commit": "24afe922e6a05891756ecf331f39a1f6743d3d5a" },
"vim-sandwich": { "branch": "master", "commit": "c5a2cc438ce6ea2005c556dc833732aa53cae21a" },
"vim-scriptease": { "branch": "master", "commit": "18511d389675d773994215ddb572ccdc2b72f52b" },
"vim-snippets": { "branch": "master", "commit": "ccc2fa1529d372f7ac16d5eb07a385a72b50e05d" },
"vim-swap": { "branch": "master", "commit": "9358bfdc5e377aa13e7c2c2dd8699ba32b0dcf83" },
"vim-tmux": { "branch": "master", "commit": "cfe76281efc29890548cf9eedd42ad51c7a1faf0" },
"vim-toml": { "branch": "main", "commit": "d36caa6b1cf508a4df1c691f915572fc02143258" },
"vim-xkbswitch": { "branch": "master", "commit": "42b55bfec8f6dbd715135ce582a6f769831face1" },
"vimtex": { "branch": "master", "commit": "2b8a5f16a5768b3ae1780c266b73022dbb658af1" },
"vista.vim": { "branch": "master", "commit": "40daf5e97be70a90465182fbbdfba92442bfd8e1" },
"which-key.nvim": { "branch": "main", "commit": "7ccf476ebe0445a741b64e36c78a682c1c6118b7" },
"whitespace.nvim": { "branch": "master", "commit": "f0fc9e9c4ce3f7d2166e9e5a069b64b9ca4a3f15" },
"wilder.nvim": { "branch": "master", "commit": "679f348dc90d80ff9ba0e7c470c40a4d038dcecf" },
"yanky.nvim": { "branch": "main", "commit": "4c85d8d6808d9859e72f8bd6c25302199e6a5eac" },
"zen-mode.nvim": { "branch": "main", "commit": "68f554702de63f4b7b6b6d4bcb10178f41a0acc7" }
}

View File

@@ -129,16 +129,6 @@ M.rand_colorscheme = function()
return return
end end
-- Load the colorscheme, because all the colorschemes are declared as opt plugins, so the colorscheme isn't loaded yet.
local status = utils.add_pack(M.colorscheme2dir[colorscheme])
if not status then
local msg = string.format("Colorscheme %s is not installed. Run PackerSync to install.", colorscheme)
vim.notify(msg, vim.log.levels.ERROR, { title = "nvim-config" })
return
end
-- Load the colorscheme and its settings -- Load the colorscheme and its settings
M[colorscheme]() M[colorscheme]()

View File

@@ -12,10 +12,11 @@ local activate_hlslens = function(direction)
local cmd = string.format("normal! %s%szzzv", vim.v.count1, direction) local cmd = string.format("normal! %s%szzzv", vim.v.count1, direction)
local status, msg = pcall(vim.cmd, cmd) local status, msg = pcall(vim.cmd, cmd)
-- Deal with the case that there is no such pattern in current buffer.
if not status then if not status then
-- 13 is the index where real error message starts local start_idx, _ = string.find(msg, 'E486', 1, true)
msg = msg:sub(13) local msg_part = string.sub(msg, start_idx)
api.nvim_err_writeln(msg) api.nvim_err_writeln(msg_part)
return return
end end

View File

@@ -234,7 +234,7 @@ if utils.executable("lua-language-server") then
-- see also https://github.com/LuaLS/lua-language-server/wiki/Libraries#link-to-workspace . -- see also https://github.com/LuaLS/lua-language-server/wiki/Libraries#link-to-workspace .
-- Lua-dev.nvim also has similar settings for lua ls, https://github.com/folke/neodev.nvim/blob/main/lua/neodev/luals.lua . -- Lua-dev.nvim also has similar settings for lua ls, https://github.com/folke/neodev.nvim/blob/main/lua/neodev/luals.lua .
library = { library = {
fn.stdpath("data") .. "/site/pack/packer/opt/emmylua-nvim", fn.stdpath("data") .. "/lazy/emmylua-nvim",
fn.stdpath("config"), fn.stdpath("config"),
}, },
maxPreload = 2000, maxPreload = 2000,

View File

@@ -18,12 +18,6 @@ nvim_tree.setup {
number = false, number = false,
relativenumber = false, relativenumber = false,
signcolumn = "yes", signcolumn = "yes",
mappings = {
custom_only = false,
list = {
-- user mappings go here
},
},
}, },
renderer = { renderer = {
indent_markers = { indent_markers = {
@@ -85,7 +79,7 @@ nvim_tree.setup {
enable = true, enable = true,
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890", chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
exclude = { exclude = {
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" }, filetype = { "notify", "qf", "diff", "fugitive", "fugitiveblame" },
buftype = { "nofile", "terminal", "help" }, buftype = { "nofile", "terminal", "help" },
}, },
}, },

View File

@@ -17,14 +17,33 @@ api.nvim_create_autocmd({ "BufRead" }, {
}) })
-- highlight yanked region, see `:h lua-highlight` -- highlight yanked region, see `:h lua-highlight`
local yank_group = api.nvim_create_augroup("highlight_yank", { clear = true })
api.nvim_create_autocmd({ "TextYankPost" }, { api.nvim_create_autocmd({ "TextYankPost" }, {
pattern = "*", pattern = "*",
group = api.nvim_create_augroup("highlight_yank", { clear = true }), group = yank_group,
callback = function() callback = function()
vim.highlight.on_yank { higroup = "YankColor", timeout = 300 } vim.highlight.on_yank { higroup = "YankColor", timeout = 300 }
end, end,
}) })
api.nvim_create_autocmd({ "CursorMoved" }, {
pattern = "*",
group = yank_group,
callback = function()
vim.g.current_cursor_pos = vim.fn.getcurpos()
end,
})
api.nvim_create_autocmd("TextYankPost", {
pattern = "*",
group = yank_group,
callback = function(ev)
if vim.v.event.operator == 'y' then
vim.fn.setpos('.', vim.g.current_cursor_pos)
end
end,
})
-- Auto-create dir when saving a file, in case some intermediate directory does not exist -- Auto-create dir when saving a file, in case some intermediate directory does not exist
api.nvim_create_autocmd({ "BufWritePre" }, { api.nvim_create_autocmd({ "BufWritePre" }, {
pattern = "*", pattern = "*",

View File

@@ -201,20 +201,6 @@ end
-- insert semicolon in the end -- insert semicolon in the end
keymap.set("i", "<A-;>", "<Esc>miA;<Esc>`ii") keymap.set("i", "<A-;>", "<Esc>miA;<Esc>`ii")
-- Keep cursor position after yanking
keymap.set("n", "y", "myy")
api.nvim_create_autocmd("TextYankPost", {
pattern = "*",
group = api.nvim_create_augroup("restore_after_yank", { clear = true }),
callback = function()
vim.cmd([[
silent! normal! `y
silent! delmarks y
]])
end,
})
-- Go to the beginning and end of current line in insert mode quickly -- Go to the beginning and end of current line in insert mode quickly
keymap.set("i", "<C-A>", "<HOME>") keymap.set("i", "<C-A>", "<HOME>")
keymap.set("i", "<C-E>", "<END>") keymap.set("i", "<C-E>", "<END>")

View File

@@ -1,396 +1,503 @@
local api = vim.api
local fn = vim.fn
local utils = require("utils") local utils = require("utils")
-- The root dir to install all plugins. Plugins are under opt/ or start/ sub-directory. local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
vim.g.plugin_home = fn.stdpath("data") .. "/site/pack/packer"
--- Install packer if it has not been installed. if not vim.loop.fs_stat(lazypath) then
--- Return: vim.fn.system {
--- true: if this is a fresh install of packer "git",
--- false: if packer has been installed "clone",
local function packer_ensure_install() "--filter=blob:none",
-- Where to install packer.nvim -- the package manager (we make it opt) "https://github.com/folke/lazy.nvim.git",
local packer_dir = vim.g.plugin_home .. "/opt/packer.nvim" "--branch=stable", -- latest stable release
lazypath,
if fn.glob(packer_dir) ~= "" then }
return false
end
-- Auto-install packer in case it hasn't been installed.
vim.api.nvim_echo({ { "Installing packer.nvim", "Type" } }, true, {})
local packer_repo = "https://github.com/wbthomason/packer.nvim"
local install_cmd = string.format("!git clone --depth=1 %s %s", packer_repo, packer_dir)
vim.cmd(install_cmd)
return true
end end
vim.opt.rtp:prepend(lazypath)
local fresh_install = packer_ensure_install()
-- Load packer.nvim
vim.cmd("packadd packer.nvim")
local packer = require("packer")
local packer_util = require("packer.util")
-- check if firenvim is active -- check if firenvim is active
local firenvim_not_active = function() local firenvim_not_active = function()
return not vim.g.started_by_firenvim return not vim.g.started_by_firenvim
end end
packer.startup { local plugin_specs = {
function(use) -- auto-completion engine
use { "wbthomason/packer.nvim", opt = true } {
"hrsh7th/nvim-cmp",
use { "onsails/lspkind-nvim", event = "VimEnter" } -- event = 'InsertEnter',
-- auto-completion engine event = "VeryLazy",
use { "hrsh7th/nvim-cmp", after = "lspkind-nvim", config = [[require('config.nvim-cmp')]] } dependencies = {
"hrsh7th/cmp-nvim-lsp",
-- nvim-cmp completion sources "onsails/lspkind-nvim",
use { "hrsh7th/cmp-nvim-lsp", after = "nvim-cmp" } "hrsh7th/cmp-path",
use { "hrsh7th/cmp-path", after = "nvim-cmp" } "hrsh7th/cmp-buffer",
use { "hrsh7th/cmp-buffer", after = "nvim-cmp" } "hrsh7th/cmp-omni",
use { "hrsh7th/cmp-omni", after = "nvim-cmp" } "hrsh7th/cmp-emoji",
use { "quangnguyen30192/cmp-nvim-ultisnips", after = { "nvim-cmp", "ultisnips" } } "quangnguyen30192/cmp-nvim-ultisnips",
if vim.g.is_mac then },
use { "hrsh7th/cmp-emoji", after = "nvim-cmp" } config = function()
end require("config.nvim-cmp")
end,
-- nvim-lsp configuration (it relies on cmp-nvim-lsp, so it should be loaded after cmp-nvim-lsp). },
use { "neovim/nvim-lspconfig", after = "cmp-nvim-lsp", config = [[require('config.lsp')]] }
{
if vim.g.is_mac then "neovim/nvim-lspconfig",
use { event = { "BufRead", "BufNewFile" },
"nvim-treesitter/nvim-treesitter", config = function()
event = "BufEnter", require("config.lsp")
run = ":TSUpdate", end,
config = [[require('config.treesitter')]], },
}
end {
"nvim-treesitter/nvim-treesitter",
-- Python indent (follows the PEP8 style) enabled = function()
use { "Vimjas/vim-python-pep8-indent", ft = { "python" } } if vim.g.is_mac then
return true
-- Python-related text object end
use { "jeetsukumaran/vim-pythonsense", ft = { "python" } } return false
end,
use { "machakann/vim-swap", event = "VimEnter" } event = "VeryLazy",
build = ":TSUpdate",
-- IDE for Lisp config = function()
if utils.executable("sbcl") then require("config.treesitter")
-- use 'kovisoft/slimv' end,
use { "vlime/vlime", rtp = "vim/", ft = { "lisp" } } },
end
-- Python indent (follows the PEP8 style)
-- Super fast buffer jump { "Vimjas/vim-python-pep8-indent", ft = { "python" } },
use {
"phaazon/hop.nvim", -- Python-related text object
event = "VimEnter", { "jeetsukumaran/vim-pythonsense", ft = { "python" } },
config = function()
vim.defer_fn(function() { "machakann/vim-swap", event = "VeryLazy" },
require("config.nvim_hop")
end, 2000) -- IDE for Lisp
end, -- 'kovisoft/slimv'
} {
"vlime/vlime",
-- Show match number and index for searching enabled = function()
use { if utils.executable("sbcl") then
"kevinhwang91/nvim-hlslens", return true
branch = "main", end
keys = { { "n", "*" }, { "n", "#" }, { "n", "n" }, { "n", "N" } }, return false
config = [[require('config.hlslens')]], end,
} config = function(plugin)
vim.opt.rtp:append(plugin.dir .. "/vim")
-- File search, tag search and more end,
if vim.g.is_win then ft = { "lisp" },
use { "Yggdroot/LeaderF", cmd = "Leaderf" } },
else
use { "Yggdroot/LeaderF", cmd = "Leaderf", run = ":LeaderfInstallCExtension" } -- Super fast buffer jump
end {
"phaazon/hop.nvim",
use { event = "VeryLazy",
"nvim-telescope/telescope.nvim", config = function()
cmd = "Telescope", vim.defer_fn(function()
requires = { { "nvim-lua/plenary.nvim" } }, require("config.nvim_hop")
} end, 2000)
-- search emoji and other symbols end,
use { "nvim-telescope/telescope-symbols.nvim", after = "telescope.nvim" } },
-- A list of colorscheme plugin you may want to try. Find what suits you. -- Show match number and index for searching
use { "navarasu/onedark.nvim", opt = true } {
use { "sainnhe/edge", opt = true } "kevinhwang91/nvim-hlslens",
use { "sainnhe/sonokai", opt = true } branch = "main",
use { "sainnhe/gruvbox-material", opt = true } keys = { "*", "#", "n", "N" },
use { "shaunsingh/nord.nvim", opt = true } config = function()
use { "sainnhe/everforest", opt = true } require("config.hlslens")
use { "EdenEast/nightfox.nvim", opt = true } end,
use { "rebelot/kanagawa.nvim", opt = true } },
use { "catppuccin/nvim", as = "catppuccin", opt = true } {
use({ "rose-pine/neovim", as = 'rose-pine', opt = true }) "Yggdroot/LeaderF",
use { "olimorris/onedarkpro.nvim", opt = true } cmd = "Leaderf",
use { "tanvirtin/monokai.nvim", opt = true } build = function()
use { "marko-cerovac/material.nvim", opt = true } if not vim.g.is_win then
vim.cmd(":LeaderfInstallCExtension")
use { "nvim-tree/nvim-web-devicons", event = "VimEnter" } end
end,
use { },
"nvim-lualine/lualine.nvim", "nvim-lua/plenary.nvim",
event = "VimEnter", {
cond = firenvim_not_active, "nvim-telescope/telescope.nvim",
config = [[require('config.statusline')]], cmd = "Telescope",
} dependencies = {
"nvim-telescope/telescope-symbols.nvim",
use { "akinsho/bufferline.nvim", event = "VimEnter", },
cond = firenvim_not_active, },
config = [[require('config.bufferline')]] }
-- A list of colorscheme plugin you may want to try. Find what suits you.
-- fancy start screen { "navarasu/onedark.nvim", lazy = true },
use { "nvimdev/dashboard-nvim", event = "VimEnter", { "sainnhe/edge", lazy = true },
cond = firenvim_not_active, { "sainnhe/sonokai", lazy = true },
config = [[require('config.dashboard-nvim')]] { "sainnhe/gruvbox-material", lazy = true },
} { "shaunsingh/nord.nvim", lazy = true },
{ "sainnhe/everforest", lazy = true },
use { { "EdenEast/nightfox.nvim", lazy = true },
"lukas-reineke/indent-blankline.nvim", { "rebelot/kanagawa.nvim", lazy = true },
event = "VimEnter", { "catppuccin/nvim", name = "catppuccin", lazy = true },
config = [[require('config.indent-blankline')]], { "rose-pine/neovim", name = "rose-pine", lazy = true },
} { "olimorris/onedarkpro.nvim", lazy = true },
{ "tanvirtin/monokai.nvim", lazy = true },
-- Highlight URLs inside vim { "marko-cerovac/material.nvim", lazy = true },
use { "itchyny/vim-highlighturl", event = "VimEnter" }
{ "nvim-tree/nvim-web-devicons", event = "VeryLazy" },
-- notification plugin
use { {
"rcarriga/nvim-notify", "nvim-lualine/lualine.nvim",
event = "BufEnter", event = "VeryLazy",
config = function() cond = firenvim_not_active,
vim.defer_fn(function() config = function()
require("config.nvim-notify") require("config.statusline")
end, 2000) end,
end, },
}
{
-- For Windows and Mac, we can open an URL in the browser. For Linux, it may "akinsho/bufferline.nvim",
-- not be possible since we maybe in a server which disables GUI. event = { "BufEnter" },
if vim.g.is_win or vim.g.is_mac then cond = firenvim_not_active,
-- open URL in browser config = function()
use { "tyru/open-browser.vim", event = "VimEnter" } require("config.bufferline")
end end,
},
-- Only install these plugins if ctags are installed on the system
if utils.executable("ctags") then -- fancy start screen
-- show file tags in vim window {
use { "liuchengxu/vista.vim", cmd = "Vista" } "nvimdev/dashboard-nvim",
end cond = firenvim_not_active,
config = function()
-- Snippet engine and snippet template require("config.dashboard-nvim")
use { "SirVer/ultisnips", event = "InsertEnter" } end,
use { "honza/vim-snippets", after = "ultisnips" } },
-- Automatic insertion and deletion of a pair of characters {
use { "Raimondi/delimitMate", event = "InsertEnter" } "lukas-reineke/indent-blankline.nvim",
event = "VeryLazy",
-- Comment plugin config = function()
use { "tpope/vim-commentary", event = "VimEnter" } require("config.indent-blankline")
end,
-- Multiple cursor plugin like Sublime Text? },
-- use 'mg979/vim-visual-multi'
-- Highlight URLs inside vim
-- Autosave files on certain events { "itchyny/vim-highlighturl", event = "VeryLazy" },
use { "907th/vim-auto-save", event = "InsertEnter" }
-- notification plugin
-- Show undo history visually {
use { "simnalamburt/vim-mundo", cmd = { "MundoToggle", "MundoShow" } } "rcarriga/nvim-notify",
event = "VeryLazy",
-- better UI for some nvim actions config = function()
use {'stevearc/dressing.nvim'} vim.defer_fn(function()
require("config.nvim-notify")
-- Manage your yank history end, 2000)
use({ end,
"gbprod/yanky.nvim", },
config = [[require('config.yanky')]]
}) -- For Windows and Mac, we can open an URL in the browser. For Linux, it may
-- not be possible since we maybe in a server which disables GUI.
-- Handy unix command inside Vim (Rename, Move etc.) {
use { "tpope/vim-eunuch", cmd = { "Rename", "Delete" } } "tyru/open-browser.vim",
enabled = function()
-- Repeat vim motions if vim.g.is_win or vim.g.is_mac then
use { "tpope/vim-repeat", event = "VimEnter" } return true
else
use { "nvim-zh/better-escape.vim", event = { "InsertEnter" } } return false
end
if vim.g.is_mac then end,
use { "lyokha/vim-xkbswitch", event = { "InsertEnter" } } event = "VeryLazy",
elseif vim.g.is_win then },
use { "Neur1n/neuims", event = { "InsertEnter" } }
end -- Only install these plugins if ctags are installed on the system
-- show file tags in vim window
-- Auto format tools {
use { "sbdchd/neoformat", cmd = { "Neoformat" } } "liuchengxu/vista.vim",
enabled = function()
-- Git command inside vim if utils.executable("ctags") then
use { "tpope/vim-fugitive", event = "User InGitRepo", config = [[require('config.fugitive')]] } return true
else
-- Better git log display return false
use { "rbong/vim-flog", requires = "tpope/vim-fugitive", cmd = { "Flog" } } end
end,
use { "christoomey/vim-conflicted", requires = "tpope/vim-fugitive", cmd = { "Conflicted" } } cmd = "Vista",
},
use {
"ruifm/gitlinker.nvim", -- Snippet engine and snippet template
requires = "nvim-lua/plenary.nvim", { "SirVer/ultisnips", dependencies = {
event = "User InGitRepo", "honza/vim-snippets",
config = [[require('config.git-linker')]], }, event = "InsertEnter" },
}
-- Automatic insertion and deletion of a pair of characters
-- Show git change (change, delete, add) signs in vim sign column { "Raimondi/delimitMate", event = "InsertEnter" },
use { "lewis6991/gitsigns.nvim", config = [[require('config.gitsigns')]] }
-- Comment plugin
-- Better git commit experience { "tpope/vim-commentary", event = "VeryLazy" },
use { "rhysd/committia.vim", opt = true, setup = [[vim.cmd('packadd committia.vim')]] }
-- Multiple cursor plugin like Sublime Text?
use { "kevinhwang91/nvim-bqf", ft = "qf", config = [[require('config.bqf')]] } -- 'mg979/vim-visual-multi'
-- Another markdown plugin -- Autosave files on certain events
use { "preservim/vim-markdown", ft = { "markdown" } } { "907th/vim-auto-save", event = "InsertEnter" },
-- Faster footnote generation -- Show undo history visually
use { "vim-pandoc/vim-markdownfootnotes", ft = { "markdown" } } { "simnalamburt/vim-mundo", cmd = { "MundoToggle", "MundoShow" } },
-- Vim tabular plugin for manipulate tabular, required by markdown plugins -- better UI for some nvim actions
use { "godlygeek/tabular", cmd = { "Tabularize" } } { "stevearc/dressing.nvim" },
-- Markdown previewing (only for Mac and Windows) -- Manage your yank history
if vim.g.is_win or vim.g.is_mac then {
use { "gbprod/yanky.nvim",
"iamcco/markdown-preview.nvim", cmd = { "YankyRingHistory" },
run = "cd app && npm install", config = function()
ft = { "markdown" }, require("config.yanky")
} end,
end },
use { "folke/zen-mode.nvim", cmd = "ZenMode", config = [[require('config.zen-mode')]] } -- Handy unix command inside Vim (Rename, Move etc.)
{ "tpope/vim-eunuch", cmd = { "Rename", "Delete" } },
if vim.g.is_mac then
use { "rhysd/vim-grammarous", ft = { "markdown" } } -- Repeat vim motions
end { "tpope/vim-repeat", event = "VeryLazy" },
use { "chrisbra/unicode.vim", event = "VimEnter" } { "nvim-zh/better-escape.vim", event = { "InsertEnter" } },
-- Additional powerful text object for vim, this plugin should be studied {
-- carefully to use its full power "lyokha/vim-xkbswitch",
use { "wellle/targets.vim", event = "VimEnter" } enabled = function()
if vim.g.is_mac and utils.executable("xkbswitch") then
-- Plugin to manipulate character pairs quickly return true
use { "machakann/vim-sandwich", event = "VimEnter" } end
return false
-- Add indent object for vim (useful for languages like Python) end,
use { "michaeljsmith/vim-indent-object", event = "VimEnter" } event = { "InsertEnter" },
},
-- Only use these plugin on Windows and Mac and when LaTeX is installed
if utils.executable("latex") then {
use { "lervag/vimtex", ft = { "tex" } } "Neur1n/neuims",
end enabled = function()
if vim.g.is_win then
-- Since tmux is only available on Linux and Mac, we only enable these plugins return true
-- for Linux and Mac end
if utils.executable("tmux") then return false
-- .tmux.conf syntax highlighting and setting check end,
use { "tmux-plugins/vim-tmux", ft = { "tmux" } } event = { "InsertEnter" },
end },
-- Modern matchit implementation -- Auto format tools
use { "andymass/vim-matchup", event = "VimEnter" } { "sbdchd/neoformat", cmd = { "Neoformat" } },
use { "tpope/vim-scriptease", cmd = { "Scriptnames", "Message", "Verbose" } } -- Git command inside vim
{
-- Asynchronous command execution "tpope/vim-fugitive",
use { "skywind3000/asyncrun.vim", opt = true, cmd = { "AsyncRun" } } event = "User InGitRepo",
config = function()
use { "cespare/vim-toml", ft = { "toml" }, branch = "main" } require("config.fugitive")
end,
-- Edit text area in browser using nvim },
if vim.g.is_win or vim.g.is_mac then
use { -- Better git log display
"glacambre/firenvim", { "rbong/vim-flog", cmd = { "Flog" } },
run = function() { "christoomey/vim-conflicted", cmd = { "Conflicted" } },
fn["firenvim#install"](0) {
end, "ruifm/gitlinker.nvim",
opt = true, event = "User InGitRepo",
setup = [[vim.cmd('packadd firenvim')]], config = function()
} require("config.git-linker")
end end,
},
-- Debugger plugin
if vim.g.is_win or vim.g.is_linux then -- Show git change (change, delete, add) signs in vim sign column
use { "sakhnik/nvim-gdb", run = { "bash install.sh" }, opt = true, setup = [[vim.cmd('packadd nvim-gdb')]] } {
end "lewis6991/gitsigns.nvim",
config = function()
-- Session management plugin require("config.gitsigns")
use { "tpope/vim-obsession", cmd = "Obsession" } end,
},
if vim.g.is_linux then
use { "ojroques/vim-oscyank", cmd = { "OSCYank", "OSCYankReg" } } -- Better git commit experience
end { "rhysd/committia.vim", lazy = true },
{
-- The missing auto-completion for cmdline! "kevinhwang91/nvim-bqf",
use { "gelguy/wilder.nvim", opt = true, setup = [[vim.cmd('packadd wilder.nvim')]] } ft = "qf",
config = function()
-- showing keybindings require("config.bqf")
use { end,
"folke/which-key.nvim", },
event = "VimEnter",
config = function() -- Another markdown plugin
vim.defer_fn(function() { "preservim/vim-markdown", ft = { "markdown" } },
require("config.which-key")
end, 2000) -- Faster footnote generation
end, { "vim-pandoc/vim-markdownfootnotes", ft = { "markdown" } },
}
-- Vim tabular plugin for manipulate tabular, required by markdown plugins
-- show and trim trailing whitespaces { "godlygeek/tabular", cmd = { "Tabularize" } },
use { "jdhao/whitespace.nvim", event = "VimEnter" }
-- Markdown previewing (only for Mac and Windows)
-- file explorer {
use { "iamcco/markdown-preview.nvim",
"nvim-tree/nvim-tree.lua", enabled = function()
requires = { "nvim-tree/nvim-web-devicons" }, if vim.g.is_win or vim.g.is_mac then
config = [[require('config.nvim-tree')]], return true
} end
return false
use { "ii14/emmylua-nvim", ft = "lua" } end,
build = "cd app && npm install",
use { "j-hui/fidget.nvim", after = "nvim-lspconfig", tag = "legacy", config = [[require('config.fidget-nvim')]] } ft = { "markdown" },
end, },
config = {
max_jobs = 16, {
compile_path = packer_util.join_paths(fn.stdpath("data"), "site", "lua", "packer_compiled.lua"), "folke/zen-mode.nvim",
cmd = "ZenMode",
config = function()
require("config.zen-mode")
end,
},
{
"rhysd/vim-grammarous",
enabled = function()
if vim.g.is_mac then
return true
end
return false
end,
ft = { "markdown" },
},
{ "chrisbra/unicode.vim", event = "VeryLazy" },
-- Additional powerful text object for vim, this plugin should be studied
-- carefully to use its full power
{ "wellle/targets.vim", event = "VeryLazy" },
-- Plugin to manipulate character pairs quickly
{ "machakann/vim-sandwich", event = "VeryLazy" },
-- Add indent object for vim (useful for languages like Python)
{ "michaeljsmith/vim-indent-object", event = "VeryLazy" },
-- Only use these plugin on Windows and Mac and when LaTeX is installed
{
"lervag/vimtex",
enabled = function()
if utils.executable("latex") then
return true
end
return false
end,
ft = { "tex" },
},
-- Since tmux is only available on Linux and Mac, we only enable these plugins
-- for Linux and Mac
-- .tmux.conf syntax highlighting and setting check
{
"tmux-plugins/vim-tmux",
enabled = function()
if utils.executable("tmux") then
return true
end
return false
end,
ft = { "tmux" },
},
-- Modern matchit implementation
{ "andymass/vim-matchup", event = "BufRead" },
{ "tpope/vim-scriptease", cmd = { "Scriptnames", "Message", "Verbose" } },
-- Asynchronous command execution
{ "skywind3000/asyncrun.vim", lazy = true, cmd = { "AsyncRun" } },
{ "cespare/vim-toml", ft = { "toml" }, branch = "main" },
-- Edit text area in browser using nvim
{
"glacambre/firenvim",
enabled = function()
if vim.g.is_win or vim.g.is_mac then
return true
end
return false
end,
build = function()
vim.fn["firenvim#install"](0)
end,
lazy = true,
},
-- Debugger plugin
{
"sakhnik/nvim-gdb",
enabled = function()
if vim.g.is_win or vim.g.is_linux then
return true
end
return false
end,
build = { "bash install.sh" },
lazy = true,
},
-- Session management plugin
{ "tpope/vim-obsession", cmd = "Obsession" },
{
"ojroques/vim-oscyank",
enabled = function()
if vim.g.is_linux then
return true
end
return false
end,
cmd = { "OSCYank", "OSCYankReg" },
},
-- The missing auto-completion for cmdline!
{
"gelguy/wilder.nvim",
build = ":UpdateRemotePlugins",
},
-- showing keybindings
{
"folke/which-key.nvim",
event = "VeryLazy",
config = function()
vim.defer_fn(function()
require("config.which-key")
end, 2000)
end,
},
-- show and trim trailing whitespaces
{ "jdhao/whitespace.nvim", event = "VeryLazy" },
-- file explorer
{
"nvim-tree/nvim-tree.lua",
keys = { "<space>s" },
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("config.nvim-tree")
end,
},
{ "ii14/emmylua-nvim", ft = "lua" },
{
"j-hui/fidget.nvim",
event = "VeryLazy",
tag = "legacy",
config = function()
require("config.fidget-nvim")
end,
}, },
} }
-- For fresh install, we need to install plugins. Otherwise, we just need to require `packer_compiled.lua`. -- configuration for lazy itself.
if fresh_install then local lazy_opts = {
-- We run packer.sync() here, because only after packer.startup, can we know which plugins to install. ui = {
-- So plugin installation should be done after the startup process. border = "rounded",
packer.sync() title = "Plugin Manager",
else title_pos = "center",
local status, _ = pcall(require, "packer_compiled") },
if not status then }
local msg = "File packer_compiled.lua not found: run PackerSync to fix!"
vim.notify(msg, vim.log.levels.ERROR, { title = "nvim-config" })
end
end
-- Auto-generate packer_compiled.lua file require("lazy").setup(plugin_specs, lazy_opts)
api.nvim_create_autocmd({ "BufWritePost" }, {
pattern = "*/nvim/lua/plugins.lua",
group = api.nvim_create_augroup("packer_auto_compile", { clear = true }),
callback = function(ctx)
local cmd = "source " .. ctx.file
vim.cmd(cmd)
vim.cmd("PackerCompile")
vim.notify("PackerCompile done!", vim.log.levels.INFO, { title = "Nvim-config" })
end,
})

View File

@@ -458,3 +458,12 @@ pyright
stubgen stubgen
pylance pylance
variadic variadic
Vimium
Databricks
Jira
databricks
FastAPI
pylintrc
PYTHONPATH
Uvicorn
qpdf