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

33 Commits
v0.6 ... v0.6.1

Author SHA1 Message Date
jdhao
092ea88703 bump minimum supported nvim version to 0.6.1 2022-01-02 11:26:32 +08:00
jdhao
67d59bfc2c docs: add section on custom commands 2021-12-31 12:30:23 +08:00
jdhao
77a5dfacd6 fix: broken link in README 2021-12-31 12:17:51 +08:00
jdhao
1373c418b9 restore reg content after using it 2021-12-30 23:39:42 +08:00
jdhao
e82b450464 split command output to list of string and set the buffer 2021-12-30 23:39:03 +08:00
jdhao
08818dbf01 remove logging 2021-12-30 23:38:49 +08:00
jdhao
0ed8814aef fix: command output captured by a register not formatted properly
Newline is converted to NUL character, which is nasty, see also https://vi.stackexchange.com/q/6697/15292.
2021-12-30 22:33:39 +08:00
jdhao
a86f1d2f31 refactor: capture command output silently 2021-12-30 22:33:06 +08:00
jdhao
c1b27ee818 fix url link in README 2021-12-29 23:34:59 +08:00
jdhao
7eb7b4450f update README 2021-12-29 23:33:07 +08:00
jdhao
5443078805 g:mapleader 2021-12-29 00:42:00 +08:00
jdhao
dcffbf9a71 fix: lsp reference highlight isn't correctly linked
! is need to overwrite possible existing highlight group of the same
name.
2021-12-28 23:49:43 +08:00
jdhao
85de00f374 refactor: resume edit position --> resume cursor position 2021-12-28 00:11:10 +08:00
jdhao
9adc3fdf16 remove double quotes for snippet trigger 2021-12-23 22:41:16 +08:00
jdhao
6cf31e2dcb add colorscheme kanagawa 2021-12-23 22:36:29 +08:00
jdhao
08d3d7ec08 fix bug in go to last edit position
If a go-to-line command is given, do not go to last edit position for
the file.
2021-12-20 22:15:34 +08:00
jdhao
ed52ca5914 add ref for checking IME state 2021-12-19 20:54:13 +08:00
jdhao
1d0609f753 change SPELL location on statusline 2021-12-19 20:53:09 +08:00
jdhao
56a43e4009 show IME on statusline on macOS 2021-12-19 20:52:23 +08:00
jdhao
22c7c6ee05 update plugin.lua 2021-12-19 19:55:00 +08:00
jdhao
3d0f00e7e4 update README 2021-12-16 23:31:13 +08:00
jdhao
bbd642af1a renaming variables 2021-12-15 00:21:34 +08:00
jdhao
5215a601b9 update fold conf for vim script
When setting foldlevel to 0 and load some plugin via InsertEnter event
using packer.nvim, if we press i to go to insert mode, the fold for vim
script file will be automatically closed. It is really annoying.

I have pinpoint the issue to the combination of packer.nvim and setting
foldlevel to 0 in after/ftplugin/vim.vim. What is interesting is that
default value for foldlevel is also 0. However, if we do not set it in
vim.vim, the above issue won't occur, which is strange.
2021-12-14 21:48:58 +08:00
jdhao
9bac7fa4f7 refactor: remove folding for init.vim 2021-12-14 21:47:59 +08:00
jdhao
06910bac87 remove plugin vim-cool
nvim-hlslens can replace it if calm_down option is enabled.
2021-12-12 17:30:11 +08:00
jdhao
85427c6424 remove plugin semshi 2021-12-12 16:47:58 +08:00
jdhao
cf9761e9a3 update plugin load condition 2021-12-11 18:15:24 +08:00
jdhao
7d3647ac61 remove oo and OO normal mode mapping 2021-12-11 15:47:15 +08:00
jdhao
a466339092 update nvim-hlslens settings 2021-12-11 15:46:25 +08:00
jdhao
6fb30f0cf2 use en_US.utf-8 as default 2021-12-10 22:52:03 +08:00
jdhao
9b41825c2c update lualine conf
diagnostic interface change
2021-12-10 22:51:06 +08:00
jdhao
e9319b0460 update README 2021-12-10 00:48:19 +08:00
jdhao
49596fb5ab update README 2021-12-09 21:41:59 +08:00
15 changed files with 155 additions and 56 deletions

View File

@@ -6,6 +6,26 @@
██ ████ ████ ██ ██ ██ ██████ ██████ ██ ████ ██ ██ ██████
```
<div align="center"><p>
<a href="https://github.com/jdhao/nvim-config/releases/latest">
<img alt="Latest release" src="https://img.shields.io/github/v/release/jdhao/nvim-config" />
</a>
<a href="https://github.com/jdhao/nvim-config/commits">
<img src="https://badgen.net/github/commits/jdhao/nvim-config" alt="Commit number" />
</a>
<a href="https://github.com/jdhao/nvim-config">
<img src="https://img.shields.io/github/repo-size/jdhao/nvim-config?style=flat-square&label=Repo" alt="Repo size">
</a>
<a href="https://github.com/neovim/neovim/releases/tag/v0.6.1">
<img src="https://img.shields.io/badge/Neovim-0.6.1-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/>
</a>
<img src="https://img.shields.io/github/languages/top/jdhao/nvim-config" />
<a href="https://github.com/jdhao/nvim-config/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/jdhao/nvim-config?style=flat-square&logo=GNU&label=License" alt="License"/>
</a>
</p>
</div>
# Introduction
This repo hosts my Nvim configuration for all the platforms I am using (Linux,
@@ -22,8 +42,8 @@ add it to your own Nvim config.
See [doc here](docs/README.md) on how to install Nvim's dependencies, Nvim
itself, and how to set up on different platforms (Linux, macOS and Windows).
**This config is tested against [Nvim 0.6.0 release](https://github.com/neovim/neovim/releases/tag/v0.6.0). No backward compatibility
is guaranteed.**
**This config is tested against [Nvim v0.6.1 release](https://github.com/neovim/neovim/releases/tag/v0.6.0).
No backward compatibility is guaranteed.**
# Features #
@@ -71,7 +91,7 @@ For more UI demos, see [here](https://github.com/jdhao/nvim-config/issues/15).
<img src="https://user-images.githubusercontent.com/16662357/139462025-7bce98c5-d2d5-413f-9659-20545865cdca.gif" width="800">
</p>
## Autocompletion
## Code autocompletion with nvim-cmp
<p align="center">
<img src="https://user-images.githubusercontent.com/16662357/128590006-0fc1451f-fac1-49b2-bb95-8aba21bfa44e.gif" width="800">
@@ -83,6 +103,12 @@ For more UI demos, see [here](https://github.com/jdhao/nvim-config/issues/15).
<img src="https://user-images.githubusercontent.com/16662357/128590833-aaa05d53-19ef-441d-a5a9-ba1bbd3936c1.gif" width="800">
</p>
## Command-line autocompletion with wilder.nvim
<p align="center">
<img src="https://user-images.githubusercontent.com/16662357/147677787-8e5d229a-a16a-420e-98f5-88f2a1be84a2.gif" width="800">
</p>
## Tags
<p align="center">
@@ -97,7 +123,7 @@ Go to a string starting with `se`
<img src="https://user-images.githubusercontent.com/16662357/139459219-8a7e6ac4-1d24-4008-a370-b56773d7cb85.gif" width="800">
</p>
## GUI-style notification
## GUI-style notification with nvim-notify
<p align="center">
<img src="https://user-images.githubusercontent.com/16662357/128589873-aadb8264-1098-4834-9876-fa66a309be05.gif" width="800">
@@ -146,6 +172,17 @@ represents ASCII character `,`.
| `ctrl-t` | Insert | Linux/macOS/Win | Turn word under cursor to title case |
| `jk` | Insert | Linux/macOS/Win | Return to Normal mode without lagging |
# Custom commands
In addition to commands provided by various plugins, I have also created
several custom commands for personal use.
| command | description | example |
|------------|-------------------------------------------------------------------------|--------------------------------|
| `Redir` | capture command output to a tabpage for easier inspection. | `Redir hi` |
| `Edit` | edit multiple files at the same time, supports globing | `Edit *.vim` |
| `Datetime` | print current date and time or convert Unix time stamp to date and time | `Datetime 12345` or `Datetime` |
# Trouble shooting
If you come across an issue, you can first use `:checkhealth` command provided
@@ -156,7 +193,7 @@ If you still have an issue, [open a new issue](https://github.com/jdhao/nvim-con
# Further readings
Some of the resources that I find helpful in mastering Vim is documented [here](docs/vim_resources.md).
Some of the resources that I find helpful in mastering Vim is documented [here](docs/nvim_resources.md).
You may also be interested in my post in configuring Vim on different platforms:
+ [Config nvim on Linux for Python development](https://jdhao.github.io/2018/12/24/centos_nvim_install_use_guide_en/)

View File

@@ -6,8 +6,7 @@ set formatoptions-=r
" modeline is annoying in that the modeline get executed each time the window
" focus is lost (see
" https://github.com/tmux-plugins/vim-tmux-focus-events/issues/14)
set foldmethod=expr foldlevel=0 foldlevelstart=-1
\ foldexpr=utils#VimFolds(v:lnum) foldtext=utils#MyFoldText()
set foldmethod=expr foldexpr=utils#VimFolds(v:lnum) foldtext=utils#MyFoldText()
" Use :help command for keyword when pressing `K` in vim file,
" see `:h K` and https://stackoverflow.com/q/15867323/6064933

View File

@@ -174,13 +174,18 @@ endfunction
" Redirect command output to a register for later processing.
" Ref: https://stackoverflow.com/q/2573021/6064933 and https://unix.stackexchange.com/q/8101/221410 .
function! utils#CaptureCommandOutput(command) abort
let l:tmp = @m
redir @m
execute a:command
silent! execute a:command
redir END
call v:lua.vim.notify("command output captured to register m", "info", {'title': 'nvim-config'})
"create a scratch buffer for dumping the text, ref: https://vi.stackexchange.com/a/11311/15292.
tabnew | setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile
call nvim_buf_set_lines(0, 0, 0, 0, [@m])
let l:lines = split(@m, '\n')
call nvim_buf_set_lines(0, 0, 0, 0, l:lines)
let @m = l:tmp
endfunction
" Edit all files matching the given patterns.
@@ -193,12 +198,12 @@ function! utils#MultiEdit(patterns) abort
endfunction
function! utils#add_pack(name) abort
let l:success = v:true
let l:status = v:true
try
execute printf("packadd! %s", a:name)
catch /^Vim\%((\a\+)\)\=:E919/
let l:success = v:false
let l:status = v:false
endtry
return l:success
return l:status
endfunction

View File

@@ -19,13 +19,28 @@ augroup accurate_syn_highlight
autocmd BufEnter * :syntax sync fromstart
augroup END
" Return to last edit position when opening a file
augroup resume_edit_position
" Return to last cursor position when opening a file
augroup resume_cursor_position
autocmd!
autocmd BufReadPost *
\ if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit' | execute "normal! g`\"zvzz" | endif
autocmd BufReadPost * call s:resume_cursor_position()
augroup END
" Only resume last cursor position when there is no go-to-line command (something like '+23').
function s:resume_cursor_position() abort
if line("'\"") > 1 && line("'\"") <= line("$") && &ft !~# 'commit'
let l:args = v:argv " command line arguments
for l:cur_arg in l:args
" Check if a go-to-line command is given.
let idx = match(l:cur_arg, '\v^\+(\d){1,}$')
if idx != -1
return
endif
endfor
execute "normal! g`\"zvzz"
endif
endfunction
" Display a message when the current file is not in utf-8 format.
" Note that we need to use `unsilent` command here because of this issue:
" https://github.com/vim/vim/issues/4379

View File

@@ -34,10 +34,13 @@ else
endif
" Custom mapping <leader> (see `:h mapleader` for more info)
let mapleader = ','
let g:mapleader = ','
" Enable highlighting for lua HERE doc inside vim script
let g:vimsyn_embed = 'l'
" Use English as main language
language en_US.utf-8
"}}
"{{ Disable loading certain plugins

View File

@@ -45,8 +45,6 @@ nnoremap <silent> \d :<C-U>bprevious <bar> bdelete #<CR>
" Insert a blank line below or above current line (do not move the cursor),
" see https://stackoverflow.com/a/16136133/6064933
nnoremap oo :echo 'Please use <lt>space>o instead'<CR>
nnoremap OO :echo 'Please use <lt>space>O instead'<CR>
nnoremap <expr> <Space>o printf('m`%so<ESC>``', v:count1)
nnoremap <expr> <Space>O printf('m`%sO<ESC>``', v:count1)

View File

@@ -37,15 +37,6 @@ let g:semshi#error_sign=v:false
"""""""""""""""""""""""""" vlime settings """"""""""""""""""""""""""""""""
command! -nargs=0 StartVlime call jobstart(printf("sbcl --load %s/vlime/lisp/start-vlime.lisp", g:package_home))
""""""""""""""""""""""""""""" settings for nvim-hlslens"""""""""""""""
noremap <silent> n <Cmd>execute('normal! ' . v:count1 . 'nzzzv')<CR>
\<Cmd>lua require('hlslens').start()<CR>
noremap <silent> N <Cmd>execute('normal! ' . v:count1 . 'Nzzzv')<CR>
\<Cmd>lua require('hlslens').start()<CR>
map * <Plug>(asterisk-z*)<Cmd>lua require('hlslens').start()<CR>
map # <Plug>(asterisk-z#)<Cmd>lua require('hlslens').start()<CR>
"""""""""""""""""""""""""""""LeaderF settings"""""""""""""""""""""
" Do not use cache file
let g:Lf_UseCache = 0

View File

@@ -50,6 +50,10 @@ function! s:theme_setup_dict.nightfox() dict abort
colorscheme nordfox
endfunction
function! s:theme_setup_dict.kanagawa() dict abort
colorscheme kanagawa
endfunction
" Theme to directory name mapping, because theme repo name is not necessarily
" the same as the theme name itself.
let s:theme2dir = {
@@ -61,7 +65,8 @@ let s:theme2dir = {
\ 'nord': 'nord.nvim',
\ 'doom_one': 'doom-one.nvim',
\ 'everforest' :'everforest',
\ 'nightfox': 'nightfox.nvim'
\ 'nightfox': 'nightfox.nvim',
\ 'kanagawa': 'kanagawa.nvim',
\ }
let s:theme = utils#RandElement(keys(s:theme2dir))
@@ -73,8 +78,8 @@ if !has_key(s:theme_setup_dict, s:theme)
finish
endif
let s:res = utils#add_pack(s:theme2dir[s:theme])
if !s:res
let s:status = utils#add_pack(s:theme2dir[s:theme])
if !s:status
echomsg printf("Theme %s not installed. Run PackerSync to install.", s:theme)
finish
endif

View File

@@ -1,4 +1,3 @@
"{ Header info
" Description: This is my personal Nvim configuration supporting Mac, Linux
" and Windows, with various plugins configured. This configuration evolves as
" I learn more about Nvim and becomes more proficient in using Nvim. Since it
@@ -8,9 +7,7 @@
" built over time with a lot of polish.
" Author: Jie-dong Hao
" Email: jdhao@hotmail.com
"}
"{ Main configurations
let g:config_files = [
\ 'globals.vim',
\ 'options.vim',
@@ -23,4 +20,3 @@ let g:config_files = [
for s:fname in g:config_files
execute printf('source %s/core/%s', stdpath('config'), s:fname)
endfor
"}

21
lua/config/hlslens.lua Normal file
View File

@@ -0,0 +1,21 @@
require('hlslens').setup({
calm_down = true,
nearest_only = true,
})
vim.api.nvim_set_keymap(
"n",
"n",
"<Cmd>execute('normal! ' . v:count1 . 'nzzzv')<CR><Cmd>lua require('hlslens').start()<CR>",
{ noremap = true, silent = true }
)
vim.api.nvim_set_keymap(
"n",
"N",
"<Cmd>execute('normal! ' . v:count1 . 'Nzzzv')<CR><Cmd>lua require('hlslens').start()<CR>",
{ noremap = true, silent = true }
)
vim.api.nvim_set_keymap("n", "*", "<Plug>(asterisk-z*)<Cmd>lua require('hlslens').start()<CR>", { silent = true })
vim.api.nvim_set_keymap("n", "#", "<Plug>(asterisk-z#)<Cmd>lua require('hlslens').start()<CR>", { silent = true })

View File

@@ -50,9 +50,9 @@ local custom_attach = function(client, bufnr)
-- The blow command will highlight the current variable and its usages in the buffer.
if client.resolved_capabilities.document_highlight then
vim.cmd([[
hi link LspReferenceRead Visual
hi link LspReferenceText Visual
hi link LspReferenceWrite Visual
hi! link LspReferenceRead Visual
hi! link LspReferenceText Visual
hi! link LspReferenceWrite Visual
augroup lsp_document_highlight
autocmd! * <buffer>
autocmd CursorHold <buffer> lua vim.lsp.buf.document_highlight()

View File

@@ -6,6 +6,18 @@ local function spell()
return ""
end
local function ime_state()
if vim.g.is_mac then
-- ref: https://github.com/vim-airline/vim-airline/blob/master/autoload/airline/extensions/xkblayout.vim#L11
local layout = vim.fn.libcall(vim.g.XkbSwitchLib, 'Xkb_Switch_getXkbLayout', '')
if layout == '0' then
return '[CN]'
end
end
return ""
end
local function trailing_space()
-- Get the positions of trailing whitespaces from plugin 'jdhao/whitespace.nvim'.
local trailing_space_pos = vim.b.trailing_whitespace_pos
@@ -59,11 +71,15 @@ require("lualine").setup({
lualine_a = { "mode" },
lualine_b = { "branch", "diff" },
lualine_c = {
"filename",
{
ime_state,
color = {fg = 'black', bg = '#f46868'}
},
{
spell,
color = {fg = 'black', bg = '#a7c080'}
},
"filename"
},
lualine_x = {
"encoding",
@@ -82,7 +98,7 @@ require("lualine").setup({
"location",
{
"diagnostics",
sources = { "nvim_lsp" }
sources = { "nvim_diagnostic" }
},
{
trailing_space,

View File

@@ -37,10 +37,6 @@ require("packer").startup({
-- nvim-cmp completion sources
use {"hrsh7th/cmp-nvim-lsp", after = "nvim-cmp"}
-- 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')]] })
use {"hrsh7th/cmp-nvim-lua", after = "nvim-cmp"}
use {"hrsh7th/cmp-path", after = "nvim-cmp"}
use {"hrsh7th/cmp-buffer", after = "nvim-cmp"}
@@ -50,15 +46,13 @@ require("packer").startup({
use {"hrsh7th/cmp-emoji", after = '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
use({ "nvim-treesitter/nvim-treesitter", event = 'BufEnter', run = ":TSUpdate", config = [[require('config.treesitter')]] })
end
-- Python syntax highlighting and more
if vim.g.is_win then
use({ "numirias/semshi", ft = "python", config = "vim.cmd [[UpdateRemotePlugins]]" })
end
-- Python indent (follows the PEP8 style)
use({ "Vimjas/vim-python-pep8-indent", ft = { "python" } })
@@ -83,10 +77,15 @@ require("packer").startup({
}
-- Clear highlight search automatically for you
use({"romainl/vim-cool", event = "VimEnter"})
-- use({"romainl/vim-cool", event = "VimEnter"})
-- Show match number for search
use {'kevinhwang91/nvim-hlslens', branch = 'main', event = "VimEnter"}
-- Show match number and index for searching
use {
'kevinhwang91/nvim-hlslens',
branch = 'main',
keys = {{'n', '*'}, {'n', '#'}, {'n', 'n'}, {'n', 'N'}},
config = [[require('config.hlslens')]]
}
-- Stay after pressing * and search selected text
use({"haya14busa/vim-asterisk", event = 'VimEnter'})
@@ -124,15 +123,18 @@ require("packer").startup({
use({"NTBBloodbath/doom-one.nvim", opt = true})
use({"sainnhe/everforest", opt = true})
use({"EdenEast/nightfox.nvim", opt = true})
use({"rebelot/kanagawa.nvim", opt = true})
-- Show git change (change, delete, add) signs in vim sign column
use({"mhinz/vim-signify", event = 'BufEnter'})
-- Another similar plugin
-- use 'airblade/vim-gitgutter'
use {'kyazdani42/nvim-web-devicons', event = 'VimEnter'}
use {
'nvim-lualine/lualine.nvim', event = 'VimEnter',
requires = {'kyazdani42/nvim-web-devicons', opt = true},
'nvim-lualine/lualine.nvim',
event = 'VimEnter',
config = [[require('config.statusline')]]
}
@@ -143,6 +145,7 @@ require("packer").startup({
use({
"lukas-reineke/indent-blankline.nvim",
event = 'VimEnter',
config = [[require('config.indent-blankline')]]
})

View File

@@ -23,7 +23,7 @@ snippet k3 "Three key strokes shortcut"
<kbd>${1:KEY}</kbd> + <kbd>${2:KEY}</kbd> + <kbd>${3:KEY}</kbd>
endsnippet
snippet "meta" "Markdown front matter (YAML format)" b
snippet meta "Markdown front matter (YAML format)" b
---
title: "$1"
date: `!p from datetime import datetime

View File

@@ -345,3 +345,13 @@ teardown
github
fastgit
EOL
PyCharm
deduplication
STL
delimitMate
lspconfig
lualine
Keymap
iCloud
keyframe
maskRCNN