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

54 Commits

Author SHA1 Message Date
jdhao
f95d4c09b4 disable mouse 2024-12-21 00:03:38 +01:00
jdhao
7e706515a8 silently format lua file using stylua
We need to disable the mapping set for LSP, otherwise the mapping set in
lua.vim will be overridden.
2024-12-19 23:45:15 +01:00
jdhao
1d66475cae make option showcmd shown in statusline instead
Related issues:

+ https://groups.google.com/g/vim_dev/c/YwFLUaduXTQ
+ https://github.com/neovim/neovim/pull/21202
+ https://github.com/nvim-lualine/lualine.nvim/issues/949
2024-12-19 23:39:14 +01:00
jdhao
5328c477a8 reformat with stylua 2024-12-19 22:16:23 +01:00
jdhao
917ab82ffb update dict 2024-12-19 22:13:53 +01:00
jdhao
54eb3ca811 install new plugins 2024-12-19 22:08:56 +01:00
jdhao
64b41fbd58 use native lua api instead of vim.cmd 2024-12-19 22:01:04 +01:00
jdhao
d941be482b update lualine config 2024-12-08 21:34:47 +01:00
jdhao
ab75189231 Fix command CopyPath issue
the string.gsub in lua is not flexible and use vim.fn.substitute()
instead.
2024-11-29 23:25:19 +01:00
jdhao
7645751dc1 Update readme 2024-11-27 00:05:38 +01:00
jdhao
8880268140 custom command update
1. Add new command `CopyPath`
2. Revise command `JSONFormat`: implemented using the nvim lua interface
   and fix a few issues. The previous implementation is removed.
2024-11-27 00:05:38 +01:00
jdhao
d86f599483 update the fold level allowed for statuscol.nvim 2024-11-08 22:57:33 +01:00
jdhao
8dfae271d0 use plaintext for pyright hover request
see my comment here for the details: https://www.reddit.com/r/neovim/comments/1gdv1rc/comment/lvt9nlm/
2024-11-07 21:53:32 +01:00
jdhao
1141a18c5f update config for pyright 2024-11-06 23:19:55 +01:00
jdhao
fe3d5e5922 remove plugin committia.vim 2024-11-05 22:16:54 +01:00
jdhao
9769c24633 Switch Python LSP for completion and add ruff
pyright servers type checking, completion, and ruff servers linting and
diagnostics (ruff can also format Python files, but it is slightly
different from black)
2024-11-05 22:09:33 +01:00
jdhao
97f72936ac Enable LSP format also for visual selection 2024-11-05 22:04:49 +01:00
jdhao
94cade03be enable inlayhint for lua_ls server
The client side inlayhint can be enabled by uncommentting the code in
this PR.
2024-11-05 22:01:23 +01:00
jdhao
590bd6c7e6 use stylua to format lua files 2024-11-05 21:56:18 +01:00
jdhao
4171f190f2 Add plugin nvim-lightbulb to hint code actions 2024-11-05 21:47:34 +01:00
jdhao
5426c88a90 update Leaderf setting
Only search file content and not file name when using Leaderf rg
2024-11-05 21:44:34 +01:00
jdhao
d715ce8f31 update supported nvim version to 0.10.2 2024-10-09 18:00:15 +02:00
jdhao
3040fa7969 use a cmp-fork for now
Until cmp is maintained again or switch??
2024-10-09 17:37:21 +02:00
jdhao
b9cf3cc6ed update conf for plugin live-command.nvim 2024-09-20 21:26:28 +02:00
jdhao
154cde3d71 Add plugin live-command.nvim 2024-09-19 22:07:03 +02:00
jdhao
81f64ed32e Use absolute path for viml config
Full path should be used to load viml config, otherwise, when we open
nvim in other directories, we see errors that the viml config can not be
found.
2024-09-02 22:19:52 +02:00
jdhao
db380ca7a7 remove inspect() from lua _G table
Nvim nows provides `vim.inspect()` and `vim.print()`.
2024-09-01 21:47:21 +02:00
jdhao
51f81093da restructure init.lua 2024-08-31 21:25:18 +02:00
jdhao
a9fc298063 update documentation for resuming cursor position 2024-08-30 01:03:13 +02:00
jdhao
9071e045eb Make * and # search case aware
By default, when you press `*` to search word under the cursor, the
option `smartcase` is ignored. This means that if you press `*` when
your cursor is on `The`, the lower case one `the` is also searched.

In this commit, we translate star and # search into normal search so that
'smartcase' option is respected.
2024-08-30 01:01:04 +02:00
jdhao
fa79647a63 Fix type for option relativenumber
"relativenumber" should be window local option, not buffer local option.
2024-08-29 21:45:07 +02:00
jdhao
4b4ff5f549 Add error handling for resuming the cursor
This will close issue #328.
2024-08-29 21:41:13 +02:00
jdhao
12b0ff02b6 Move autocmd in viml to Lua 2024-08-27 23:12:33 +02:00
jdhao
e3930e8aa7 remove unused plugins 2024-08-25 23:36:29 +02:00
jdhao
21522bd194 update config for yanky 2024-08-25 23:34:03 +02:00
jdhao
a3c8b3d5b5 Update configuration for nvim-cmp
1. restrict max width of the completion menu. Here I am using
   lspkind.nvim to achieve this. There are other native ways to do this,
   see also https://github.com/hrsh7th/nvim-cmp/discussions/609 and
   https://github.com/hrsh7th/nvim-cmp/issues/980
2. remove cmp-emoji as it is rarely used and interfere when I write
   Python
3. lower the transparency for popup menu
2024-08-20 01:04:02 +02:00
jdhao
d150f39afc Add new plugins 2024-08-19 23:37:57 +02:00
jdhao
3904cd4ccf Update config for handling large files 2024-08-19 23:34:21 +02:00
jdhao
95d3b2f2d8 remove setting for JSON file 2024-08-19 22:36:58 +02:00
jdhao
c3d8dc3e1d Add mapping to delete other buffers 2024-08-17 17:33:36 +02:00
jdhao
f9780c2dff update config for bufferline.nvim
Do not show buffer number and use a mapping to pick buffer instead.
2024-08-17 17:29:33 +02:00
jdhao
256c37a946 update vim-fugitive mapping 2024-08-17 15:16:08 +02:00
jdhao
eff98d036d update README 2024-08-17 15:10:33 +02:00
jdhao
6e60475f3f Use gx.nvim for browsing in Browser 2024-08-16 00:03:43 +02:00
jdhao
d90273df8e remove lua_ls conf in favor of lazydev.nvim
The removed settings are already set by lazydev.nvim.
2024-08-15 23:44:50 +02:00
jdhao
659f410b9e move version check into function 2024-08-15 23:38:31 +02:00
jdhao
a602d98819 fix git mapping issue
`<cmd> `mapping must end with `<CR>`
2024-08-09 22:23:04 +02:00
jdhao
9ff76931e3 update git related mappings 2024-08-09 22:19:13 +02:00
jdhao
85232b82a8 Update mapping of plugin open-browser.vim 2024-08-09 22:05:54 +02:00
jdhao
cfc0089bb5 add plugin lazydev.nvim 2024-08-07 00:48:21 +08:00
jdhao
f1062a3d8f filter fold level sign for statuscol.nvim
Only show fold signs for fold level below a certain level to avoid
clutter the left side columns with a lot of folding signs
2024-08-07 00:14:19 +08:00
jdhao
fd6df981cd Update nvim-ufo settings 2024-08-06 23:58:54 +08:00
jdhao
8af8ebd72a remove statusline.lua 2024-08-06 17:25:33 +02:00
jdhao
4c697d89f3 change name of lualine config 2024-08-06 23:04:37 +08:00
33 changed files with 688 additions and 420 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.10.1-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/> <img src="https://img.shields.io/badge/Neovim-0.10.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.10.0"> <a href="https://github.com/jdhao/nvim-config/releases/tag/v0.10.1">
<img src="https://img.shields.io/github/commits-since/jdhao/nvim-config/v0.10.0?style=flat-square" /> <img src="https://img.shields.io/github/commits-since/jdhao/nvim-config/v0.10.1?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" />
@@ -84,6 +84,7 @@ and how to set up on different platforms (Linux, macOS, and Windows).
+ Tags navigation via [vista](https://github.com/liuchengxu/vista.vim). + Tags navigation via [vista](https://github.com/liuchengxu/vista.vim).
+ Code formatting via [Neoformat](https://github.com/sbdchd/neoformat). + Code formatting via [Neoformat](https://github.com/sbdchd/neoformat).
+ Undo management via [vim-mundo](https://github.com/simnalamburt/vim-mundo) + Undo management via [vim-mundo](https://github.com/simnalamburt/vim-mundo)
+ Code folding with [nvim-ufo](https://github.com/kevinhwang91/nvim-ufo) and [statuscol.nvim](https://github.com/luukvbaal/statuscol.nvim)
+ ...... + ......
# UI Demo # UI Demo
@@ -140,6 +141,12 @@ Go to a string starting with `se`
<img src="https://user-images.githubusercontent.com/16662357/128589873-aadb8264-1098-4834-9876-fa66a309be05.gif" width="800"> <img src="https://user-images.githubusercontent.com/16662357/128589873-aadb8264-1098-4834-9876-fa66a309be05.gif" width="800">
</p> </p>
## code folding with nvim-ufo and statuscol.nvim
<p align="center">
<img src="https://github.com/user-attachments/assets/a01a56b2-7c91-43de-b305-f2fbaa81dcec" width="800">
</p>
# Shortcuts # Shortcuts
Some of the shortcuts I use frequently are listed here. In the following shortcuts, `<leader>` represents ASCII character `,`. Some of the shortcuts I use frequently are listed here. In the following shortcuts, `<leader>` represents ASCII character `,`.
@@ -165,12 +172,14 @@ Some of the shortcuts I use frequently are listed here. In the following shortcu
| `<space>t` | Normal | Linux/macOS/Win | Toggle tag window (show project tags in the right window) | | `<space>t` | Normal | Linux/macOS/Win | Toggle tag window (show project tags in the right window) |
| `<leader>gs` | Normal | Linux/macOS/Win | Show Git status result | | `<leader>gs` | Normal | Linux/macOS/Win | Show Git status result |
| `<leader>gw` | Normal | Linux/macOS/Win | Run Git add for current file | | `<leader>gw` | Normal | Linux/macOS/Win | Run Git add for current file |
| `<leader>gd` | Normal | Linux/macOS/Win | Run git diff for current file |
| `<leader>gc` | Normal | Linux/macOS/Win | Run git commit | | `<leader>gc` | Normal | Linux/macOS/Win | Run git commit |
| `<leader>gpl` | Normal | Linux/macOS/Win | Run git pull | | `<leader>gpl` | Normal | Linux/macOS/Win | Run git pull |
| `<leader>gpu` | Normal | Linux/macOS/Win | Run git push | | `<leader>gpu` | Normal | Linux/macOS/Win | Run git push |
| `<leader>gbd` | Normal | Linux/macOS/Win | Delete a branch |
| `<leader>gbn` | Normal | Linux/macOS/Win | Create a new branch |
| `<leader>gl` | Normal/Visual | Linux/macOS/Win | Get perm link for current/visually-select lines | | `<leader>gl` | Normal/Visual | Linux/macOS/Win | Get perm link for current/visually-select lines |
| `<leader>gb` | Normal | macOS | Browse current git repo in browser | | `<leader>gbr` | Normal | macOS | Browse current git repo in browser |
| `<leader>gb` | Visual | macOS | Blame current line |
| `<F9>` | Normal | Linux/macOS/Win | Compile&run current source file (for C++, LaTeX, Lua, Python) | | `<F9>` | Normal | Linux/macOS/Win | Compile&run current source file (for C++, LaTeX, Lua, Python) |
| `<F11>` | Normal | Linux/macOS/Win | Toggle spell checking | | `<F11>` | Normal | Linux/macOS/Win | Toggle spell checking |
| `<F12>` | Normal | Linux/macOS/Win | Toggle paste mode | | `<F12>` | Normal | Linux/macOS/Win | Toggle paste mode |
@@ -182,7 +191,6 @@ Some of the shortcuts I use frequently are listed here. In the following shortcu
| `Alt-j` | Normal | Linux/macOS/Win | Move current line or selected lines down | | `Alt-j` | Normal | Linux/macOS/Win | Move current line or selected lines down |
| `Alt-m` | Normal | macOS/Win | Markdown previewing in system browser | | `Alt-m` | Normal | macOS/Win | Markdown previewing in system browser |
| `Alt-Shift-m` | Normal | macOS/Win | Stopping Markdown previewing in system browser | | `Alt-Shift-m` | Normal | macOS/Win | Stopping Markdown previewing in system browser |
| `ob` | Normal/Visual | macOS/Win | Open link under cursor or search visual selection |
| `ctrl-u` | Insert | Linux/macOS/Win | Turn word under cursor to upper case | | `ctrl-u` | Insert | Linux/macOS/Win | Turn word under cursor to upper case |
| `ctrl-t` | Insert | Linux/macOS/Win | Turn word under cursor to title case | | `ctrl-t` | Insert | Linux/macOS/Win | Turn word under cursor to title case |
| `jk` | Insert | Linux/macOS/Win | Return to Normal mode without lagging | | `jk` | Insert | Linux/macOS/Win | Return to Normal mode without lagging |
@@ -191,11 +199,13 @@ Some of the shortcuts I use frequently are listed here. In the following shortcu
In addition to commands provided by various plugins, I have also created some custom commands for personal use. In addition to commands provided by various plugins, I have also created some custom commands for personal use.
| command | description | example | | command | description | example |
|------------|-------------------------------------------------------------------------|--------------------------------| |--------------|-------------------------------------------------------------------------|--------------------------------|
| `Redir` | capture command output to a tabpage for easier inspection. | `Redir hi` | | `Redir` | capture command output to a tabpage for easier inspection. | `Redir hi` |
| `Edit` | edit multiple files at the same time, supports globing | `Edit *.vim` | | `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` | | `Datetime` | print current date and time or convert Unix time stamp to date and time | `Datetime 12345` or `Datetime` |
| `JSONFormat` | format a JSON file | `JSONFormat` |
| `CopyPath` | copy current file path to clipboard | `CopyPath relative` |
# Contributing # Contributing

View File

@@ -1,6 +0,0 @@
" let the initial folding state be that all folds are closed.
set foldlevel=0
" Use nvim-treesitter for folding
set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()

View File

@@ -3,3 +3,5 @@ set formatoptions-=o
set formatoptions-=r set formatoptions-=r
nnoremap <buffer><silent> <F9> :luafile %<CR> nnoremap <buffer><silent> <F9> :luafile %<CR>
nnoremap <buffer><silent> <space>f <cmd>silent !stylua %<CR>

View File

@@ -11,46 +11,23 @@
-- StackOverflow: https://stackoverflow.com/users/6064933/jdhao -- StackOverflow: https://stackoverflow.com/users/6064933/jdhao
vim.loader.enable() vim.loader.enable()
local version = vim.version local utils = require("utils")
-- check if we have the latest stable version of nvim local expected_version = "0.10.2"
local expected_ver_str = "0.10.1" utils.is_compatible_version(expected_version)
local expect_ver = version.parse(expected_ver_str)
local actual_ver = vim.version()
if expect_ver == nil then local config_dir = vim.fn.stdpath("config")
local msg = string.format("Unsupported version string: %s", expected_ver_str) ---@cast config_dir string
vim.api.nvim_err_writeln(msg)
return
end
local result = version.cmp(expect_ver, actual_ver) -- some global settings
require("globals")
if result ~= 0 then -- setting options in nvim
local _ver = string.format("%s.%s.%s", actual_ver.major, actual_ver.minor, actual_ver.patch) vim.cmd("source " .. vim.fs.joinpath(config_dir, "viml_conf/options.vim"))
local msg = string.format("Expect nvim %s, but got %s instead. Use at your own risk!", expected_ver_str, _ver) -- various autocommands
vim.api.nvim_err_writeln(msg) require("custom-autocmd")
end -- all the user-defined mappings
require("mappings")
local core_conf_files = { -- all the plugins installed and their configurations
"globals.lua", -- some global settings vim.cmd("source " .. vim.fs.joinpath(config_dir, "viml_conf/plugins.vim"))
"options.vim", -- setting options in nvim -- colorscheme settings
"autocommands.vim", -- various autocommands require("colorschemes")
"mappings.lua", -- all the user-defined mappings
"plugins.vim", -- all the plugins installed and their configurations
"colorschemes.lua", -- colorscheme settings
}
local viml_conf_dir = vim.fn.stdpath("config") .. "/viml_conf"
-- source all the core config files
for _, file_name in ipairs(core_conf_files) do
if vim.endswith(file_name, 'vim') then
local path = string.format("%s/%s", viml_conf_dir, file_name)
local source_cmd = "source " .. path
vim.cmd(source_cmd)
else
local module_name, _ = string.gsub(file_name, "%.lua", "")
package.loaded[module_name] = nil
require(module_name)
end
end

View File

@@ -50,18 +50,18 @@ M.colorscheme_conf = {
end, end,
onedarkpro = function() onedarkpro = function()
-- set colorscheme after options -- set colorscheme after options
vim.cmd('colorscheme onedark_vivid') vim.cmd("colorscheme onedark_vivid")
end, end,
material = function() material = function()
vim.g.material_style = "oceanic" vim.g.material_style = "oceanic"
vim.cmd('colorscheme material') vim.cmd("colorscheme material")
end, end,
arctic = function () arctic = function()
vim.cmd("colorscheme arctic") vim.cmd("colorscheme arctic")
end, end,
kanagawa = function() kanagawa = function()
vim.cmd("colorscheme kanagawa-wave") vim.cmd("colorscheme kanagawa-wave")
end end,
} }
--- Use a random colorscheme from the pre-defined list of colorschemes. --- Use a random colorscheme from the pre-defined list of colorschemes.

View File

@@ -1,6 +1,6 @@
require("bufferline").setup { require("bufferline").setup {
options = { options = {
numbers = "buffer_id", numbers = "none",
close_command = "bdelete! %d", close_command = "bdelete! %d",
right_mouse_command = nil, right_mouse_command = nil,
left_mouse_command = "buffer %d", left_mouse_command = "buffer %d",
@@ -44,3 +44,7 @@ require("bufferline").setup {
sort_by = "id", sort_by = "id",
}, },
} }
vim.keymap.set("n", "<space>bp", "<cmd>BufferLinePick<CR>", {
desc = "pick a buffer",
})

View File

@@ -59,17 +59,17 @@ conf.center = {
}, },
} }
dashboard.setup({ dashboard.setup {
theme = 'doom', theme = "doom",
shortcut_type = 'number', shortcut_type = "number",
config = conf config = conf,
}) }
api.nvim_create_autocmd("FileType", { api.nvim_create_autocmd("FileType", {
pattern = "dashboard", pattern = "dashboard",
group = api.nvim_create_augroup("dashboard_enter", { clear = true }), group = api.nvim_create_augroup("dashboard_enter", { clear = true }),
callback = function () callback = function()
keymap.set("n", "q", ":qa<CR>", { buffer = true, silent = true }) keymap.set("n", "q", ":qa<CR>", { buffer = true, silent = true })
keymap.set("n", "e", ":enew<CR>", { buffer = true, silent = true }) keymap.set("n", "e", ":enew<CR>", { buffer = true, silent = true })
end end,
}) })

View File

@@ -1,12 +1,27 @@
local keymap = vim.keymap local keymap = vim.keymap
keymap.set("n", "<leader>gs", "<cmd>Git<cr>", { desc = "Git status" }) keymap.set("n", "<leader>gs", "<cmd>Git<cr>", { desc = "Git: show status" })
keymap.set("n", "<leader>gw", "<cmd>Gwrite<cr>", { desc = "Git add" }) keymap.set("n", "<leader>gw", "<cmd>Gwrite<cr>", { desc = "Git: add file" })
keymap.set("n", "<leader>gc", "<cmd>Git commit<cr>", { desc = "Git commit" }) keymap.set("n", "<leader>gc", "<cmd>Git commit<cr>", { desc = "Git: commit changes" })
keymap.set("n", "<leader>gd", "<cmd>Gdiffsplit<cr>", { desc = "Git diff" }) keymap.set("n", "<leader>gpl", "<cmd>Git pull<cr>", { desc = "Git: pull changes" })
keymap.set("n", "<leader>gpl", "<cmd>Git pull<cr>", { desc = "Git pull" }) keymap.set("n", "<leader>gpu", "<cmd>15 split|term git push<cr>", { desc = "Git: push changes" })
keymap.set("n", "<leader>gpu", "<cmd>15 split|term git push<cr>", { desc = "Git push" }) keymap.set("v", "<leader>gb", ":Git blame<cr>", { desc = "Git: blame selected line" })
keymap.set("v", "<leader>gb", ":Git blame<cr>", { desc = "Git blame line" })
-- convert git to Git in command line mode -- convert git to Git in command line mode
vim.fn["utils#Cabbrev"]("git", "Git") vim.fn["utils#Cabbrev"]("git", "Git")
keymap.set("n", "<leader>gbn", function()
vim.ui.input({ prompt = "Enter a new branch name" }, function(user_input)
if user_input == nil or user_input == "" then
return
end
local cmd_str = string.format("G checkout -b %s", user_input)
vim.cmd(cmd_str)
end)
end, {
desc = "Git: create new branch",
})
keymap.set("n", "<leader>gf", ":Git fetch ", { desc = "Git: prune branches" })
keymap.set("n", "<leader>gbd", ":Git branch -D ", { desc = "Git: delete branch" })

View File

@@ -5,16 +5,26 @@ gitlinker.setup {
callbacks = { callbacks = {
["dev.azure.com"] = function(url_data) ["dev.azure.com"] = function(url_data)
vim.print(url_data) vim.print(url_data)
local url = require"gitlinker.hosts".get_base_https_url(url_data) local url = require("gitlinker.hosts").get_base_https_url(url_data)
if url_data.lstart then if url_data.lstart then
if url_data.lend == nil then if url_data.lend == nil then
url_data.lend = url_data.lstart url_data.lend = url_data.lstart
end end
url = url .. "?path=/" .. url_data.file .. "&version=GC" .. url_data.rev .. "&line=" .. url_data.lstart .. "&lineEnd=" .. url_data.lend .. "&lineStartColumn=1" .. "&lineEndColumn=120" url = url
.. "?path=/"
.. url_data.file
.. "&version=GC"
.. url_data.rev
.. "&line="
.. url_data.lstart
.. "&lineEnd="
.. url_data.lend
.. "&lineStartColumn=1"
.. "&lineEndColumn=120"
end end
return url return url
end end,
}, },
mappings = nil, mappings = nil,
} }
@@ -24,14 +34,14 @@ keymap.set({ "n", "v" }, "<leader>gl", function()
gitlinker.get_buf_range_url(mode) gitlinker.get_buf_range_url(mode)
end, { end, {
silent = true, silent = true,
desc = "get git permlink", desc = "Git: get permlink",
}) })
keymap.set("n", "<leader>gb", function() keymap.set("n", "<leader>gbr", function()
gitlinker.get_repo_url({ gitlinker.get_repo_url {
action_callback = gitlinker.actions.open_in_browser action_callback = gitlinker.actions.open_in_browser,
}) }
end, { end, {
silent = true, silent = true,
desc = "browse repo in browser", desc = "Git: browse repo in browser",
}) })

View File

@@ -45,13 +45,13 @@ gs.setup {
end, end,
} }
vim.api.nvim_create_autocmd('ColorScheme', { vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "*", pattern = "*",
callback = function() callback = function()
vim.cmd [[ vim.cmd([[
hi GitSignsChangeInline gui=reverse hi GitSignsChangeInline gui=reverse
hi GitSignsAddInline gui=reverse hi GitSignsAddInline gui=reverse
hi GitSignsDeleteInline gui=reverse hi GitSignsDeleteInline gui=reverse
]] ]])
end end,
}) })

View File

@@ -14,7 +14,7 @@ local activate_hlslens = function(direction)
-- Deal with the case that there is no such pattern in current buffer. -- Deal with the case that there is no such pattern in current buffer.
if not status then if not status then
local start_idx, _ = string.find(msg, 'E486', 1, true) local start_idx, _ = string.find(msg, "E486", 1, true)
local msg_part = string.sub(msg, start_idx) local msg_part = string.sub(msg, start_idx)
api.nvim_err_writeln(msg_part) api.nvim_err_writeln(msg_part)
return return
@@ -35,33 +35,48 @@ keymap.set("n", "N", "", {
end, end,
}) })
local no_word_under_cursor = function() local check_cursor_word = function()
local cursor_word = vim.fn.expand("<cword>") local cursor_word = vim.fn.expand("<cword>")
local result = cursor_word == "" local result = cursor_word == ""
if result then if result then
local msg = "E348: No string under cursor" local msg = "E348: No string under cursor"
api.nvim_err_writeln(msg) api.nvim_err_writeln(msg)
end end
return result return result, cursor_word
end end
keymap.set("n", "*", "", { keymap.set("n", "*", "", {
callback = function() callback = function()
if no_word_under_cursor() then local cursor_word_empty, cursor_word = check_cursor_word()
if cursor_word_empty then
return return
end end
vim.fn.execute("normal! *N")
local cmd = string.format([[normal! /\v<%s>]], cursor_word)
-- In order to say that we are pressing Enter key, instead of typing literally the character,
-- we need to replace special notation with their internal representation.
local escaped_enter = vim.api.nvim_replace_termcodes("<CR>", true, false, true)
-- character `N` is used to keep the cursor when pressing `*`
local full_cmd = cmd .. escaped_enter .. "N"
vim.fn.execute(full_cmd)
hlslens.start() hlslens.start()
end, end,
}) })
keymap.set("n", "#", "", { keymap.set("n", "#", "", {
callback = function() callback = function()
if no_word_under_cursor() then local cursor_word_empty, cursor_word = check_cursor_word()
if cursor_word_empty then
return return
end end
vim.fn.execute("normal! #N")
local cmd = string.format([[normal! ?\v<%s>]], cursor_word)
local escaped_enter = vim.api.nvim_replace_termcodes("<CR>", true, false, true)
local full_cmd = cmd .. escaped_enter .. "N"
vim.fn.execute(full_cmd)
hlslens.start() hlslens.start()
end, end,
}) })

View File

@@ -0,0 +1,4 @@
require("live-command").setup {
enable_highlighting = true,
inline_highlighting = true,
}

View File

@@ -3,6 +3,7 @@ local api = vim.api
local keymap = vim.keymap local keymap = vim.keymap
local lsp = vim.lsp local lsp = vim.lsp
local diagnostic = vim.diagnostic local diagnostic = vim.diagnostic
local lspconfig = require("lspconfig")
local utils = require("utils") local utils = require("utils")
@@ -12,10 +13,10 @@ local set_qflist = function(buf_num, severity)
diagnostics = diagnostic.get(buf_num, { severity = severity }) diagnostics = diagnostic.get(buf_num, { severity = severity })
local qf_items = diagnostic.toqflist(diagnostics) local qf_items = diagnostic.toqflist(diagnostics)
vim.fn.setqflist({}, ' ', { title = 'Diagnostics', items = qf_items }) vim.fn.setqflist({}, " ", { title = "Diagnostics", items = qf_items })
-- open quickfix by default -- open quickfix by default
vim.cmd[[copen]] vim.cmd([[copen]])
end end
local custom_attach = function(client, bufnr) local custom_attach = function(client, bufnr)
@@ -38,19 +39,25 @@ local custom_attach = function(client, bufnr)
-- this puts diagnostics from opened files to quickfix -- this puts diagnostics from opened files to quickfix
map("n", "<space>qw", diagnostic.setqflist, { desc = "put window diagnostics to qf" }) map("n", "<space>qw", diagnostic.setqflist, { desc = "put window diagnostics to qf" })
-- this puts diagnostics from current buffer to quickfix -- this puts diagnostics from current buffer to quickfix
map("n", "<space>qb", function() set_qflist(bufnr) end, { desc = "put buffer diagnostics to qf" }) map("n", "<space>qb", function()
set_qflist(bufnr)
end, { desc = "put buffer diagnostics to qf" })
map("n", "<space>ca", vim.lsp.buf.code_action, { desc = "LSP code action" }) map("n", "<space>ca", vim.lsp.buf.code_action, { desc = "LSP code action" })
map("n", "<space>wa", vim.lsp.buf.add_workspace_folder, { desc = "add workspace folder" }) map("n", "<space>wa", vim.lsp.buf.add_workspace_folder, { desc = "add workspace folder" })
map("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, { desc = "remove workspace folder" }) map("n", "<space>wr", vim.lsp.buf.remove_workspace_folder, { desc = "remove workspace folder" })
map("n", "<space>wl", function() map("n", "<space>wl", function()
inspect(vim.lsp.buf.list_workspace_folders()) vim.print(vim.lsp.buf.list_workspace_folders())
end, { desc = "list workspace folder" }) end, { desc = "list workspace folder" })
-- Set some key bindings conditional on server capabilities -- Set some key bindings conditional on server capabilities
if client.server_capabilities.documentFormattingProvider then if client.server_capabilities.documentFormattingProvider and client.name ~= "lua_ls" then
map("n", "<space>f", vim.lsp.buf.format, { desc = "format code" }) map({ "n", "x" }, "<space>f", vim.lsp.buf.format, { desc = "format code" })
end end
-- Uncomment code below to enable inlay hint from language server, some LSP server supports inlay hint,
-- but disable this feature by default, so you may need to enable inlay hint in the LSP server config.
-- vim.lsp.inlay_hint.enable(true, {buffer=bufnr})
api.nvim_create_autocmd("CursorHold", { api.nvim_create_autocmd("CursorHold", {
buffer = bufnr, buffer = bufnr,
callback = function() callback = function()
@@ -67,8 +74,9 @@ local custom_attach = function(client, bufnr)
end end
local cursor_pos = api.nvim_win_get_cursor(0) local cursor_pos = api.nvim_win_get_cursor(0)
if (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2]) if
and #diagnostic.get() > 0 (cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2])
and #diagnostic.get() > 0
then then
diagnostic.open_float(nil, float_opts) diagnostic.open_float(nil, float_opts)
end end
@@ -86,20 +94,20 @@ local custom_attach = function(client, bufnr)
]]) ]])
local gid = api.nvim_create_augroup("lsp_document_highlight", { clear = true }) local gid = api.nvim_create_augroup("lsp_document_highlight", { clear = true })
api.nvim_create_autocmd("CursorHold" , { api.nvim_create_autocmd("CursorHold", {
group = gid, group = gid,
buffer = bufnr, buffer = bufnr,
callback = function () callback = function()
lsp.buf.document_highlight() lsp.buf.document_highlight()
end end,
}) })
api.nvim_create_autocmd("CursorMoved" , { api.nvim_create_autocmd("CursorMoved", {
group = gid, group = gid,
buffer = bufnr, buffer = bufnr,
callback = function () callback = function()
lsp.buf.clear_references() lsp.buf.clear_references()
end end,
}) })
end end
@@ -109,65 +117,101 @@ local custom_attach = function(client, bufnr)
end end
end end
local capabilities = require('cmp_nvim_lsp').default_capabilities() local capabilities = require("cmp_nvim_lsp").default_capabilities()
local lspconfig = require("lspconfig") -- required by nvim-ufo
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true,
}
if utils.executable("pylsp") then -- For what diagnostic is enabled in which type checking mode, check doc:
local venv_path = os.getenv('VIRTUAL_ENV') -- https://github.com/microsoft/pyright/blob/main/docs/configuration.md#diagnostic-settings-defaults
local py_path = nil -- Currently, the pyright also has some issues displaying hover documentation:
-- decide which python executable to use for mypy -- https://www.reddit.com/r/neovim/comments/1gdv1rc/what_is_causeing_the_lsp_hover_docs_to_looks_like/
if venv_path ~= nil then
py_path = venv_path .. "/bin/python3"
else
py_path = vim.g.python3_host_prog
end
lspconfig.pylsp.setup { if utils.executable("pyright") then
local new_capability = {
-- this will remove some of the diagnostics that duplicates those from ruff, idea taken and adapted from
-- here: https://github.com/astral-sh/ruff-lsp/issues/384#issuecomment-1989619482
textDocument = {
publishDiagnostics = {
tagSupport = {
valueSet = { 2 },
},
},
hover = {
contentFormat = { "plaintext" },
dynamicRegistration = true,
},
},
}
local merged_capability = vim.tbl_deep_extend("force", capabilities, new_capability)
lspconfig.pyright.setup {
cmd = { "delance-langserver", "--stdio" },
on_attach = custom_attach, on_attach = custom_attach,
capabilities = merged_capability,
settings = { settings = {
pylsp = { pyright = {
plugins = { -- disable import sorting and use Ruff for this
-- formatter options disableOrganizeImports = true,
black = { enabled = true }, disableTaggedHints = false,
autopep8 = { enabled = false }, },
yapf = { enabled = false }, python = {
-- linter options analysis = {
pylint = { enabled = true, executable = "pylint" }, autoSearchPaths = true,
ruff = { enabled = false }, diagnosticMode = "workspace",
pyflakes = { enabled = false }, typeCheckingMode = "standard",
pycodestyle = { enabled = false }, useLibraryCodeForTypes = true,
-- type checker -- we can this setting below to redefine some diagnostics
pylsp_mypy = { diagnosticSeverityOverrides = {
enabled = true, deprecateTypingAliases = false,
overrides = { "--python-executable", py_path, true }, },
report_progress = true, -- inlay hint settings are provided by pylance?
live_mode = false inlayHints = {
callArgumentNames = "partial",
functionReturnTypes = true,
pytestParameters = true,
variableTypes = true,
}, },
-- auto-completion options
jedi_completion = { fuzzy = true },
-- import sorting
isort = { enabled = true },
}, },
}, },
}, },
flags = {
debounce_text_changes = 200,
},
capabilities = capabilities,
} }
else else
vim.notify("pylsp not found!", vim.log.levels.WARN, { title = "Nvim-config" }) vim.notify("pyright not found!", vim.log.levels.WARN, { title = "Nvim-config" })
end end
-- if utils.executable('pyright') then if utils.executable("ruff") then
-- lspconfig.pyright.setup{ require("lspconfig").ruff.setup {
-- on_attach = custom_attach, on_attach = custom_attach,
-- capabilities = capabilities capabilities = capabilities,
-- } init_options = {
-- else -- the settings can be found here: https://docs.astral.sh/ruff/editors/settings/
-- vim.notify("pyright not found!", vim.log.levels.WARN, {title = 'Nvim-config'}) settings = {
-- end organizeImports = true,
},
},
}
end
-- Disable ruff hover feature in favor of Pyright
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("lsp_attach_disable_ruff_hover", { clear = true }),
callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id)
-- vim.print(client.name, client.server_capabilities)
if client == nil then
return
end
if client.name == "ruff" then
client.server_capabilities.hoverProvider = false
end
end,
desc = "LSP: Disable hover capability from Ruff",
})
if utils.executable("ltex-ls") then if utils.executable("ltex-ls") then
lspconfig.ltex.setup { lspconfig.ltex.setup {
@@ -176,11 +220,11 @@ if utils.executable("ltex-ls") then
filetypes = { "text", "plaintex", "tex", "markdown" }, filetypes = { "text", "plaintex", "tex", "markdown" },
settings = { settings = {
ltex = { ltex = {
language = "en" language = "en",
}, },
}, },
flags = { debounce_text_changes = 300 }, flags = { debounce_text_changes = 300 },
} }
end end
if utils.executable("clangd") then if utils.executable("clangd") then
@@ -215,8 +259,8 @@ if utils.executable("bash-language-server") then
} }
end end
-- settings for lua-language-server can be found on https://luals.github.io/wiki/settings/
if utils.executable("lua-language-server") then if utils.executable("lua-language-server") then
-- settings for lua-language-server can be found on https://github.com/LuaLS/lua-language-server/wiki/Settings .
lspconfig.lua_ls.setup { lspconfig.lua_ls.setup {
on_attach = custom_attach, on_attach = custom_attach,
settings = { settings = {
@@ -225,21 +269,8 @@ if utils.executable("lua-language-server") then
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = "LuaJIT", version = "LuaJIT",
}, },
diagnostics = { hint = {
-- Get the language server to recognize the `vim` global enable = true,
globals = { "vim" },
},
workspace = {
-- Make the server aware of Neovim runtime files,
-- see also https://luals.github.io/wiki/settings/#workspacelibrary
library = {
vim.env.VIMRUNTIME,
fn.stdpath("config"),
-- make lua_ls aware of functions under vim.uv
"${3rd}/luv/library"
},
maxPreload = 2000,
preloadFileSize = 50000,
}, },
}, },
}, },
@@ -248,10 +279,10 @@ if utils.executable("lua-language-server") then
end end
-- Change diagnostic signs. -- Change diagnostic signs.
fn.sign_define("DiagnosticSignError", { text = '🆇', texthl = "DiagnosticSignError" }) fn.sign_define("DiagnosticSignError", { text = "🆇", texthl = "DiagnosticSignError" })
fn.sign_define("DiagnosticSignWarn", { text = '⚠️', texthl = "DiagnosticSignWarn" }) fn.sign_define("DiagnosticSignWarn", { text = "⚠️", texthl = "DiagnosticSignWarn" })
fn.sign_define("DiagnosticSignInfo", { text = '', texthl = "DiagnosticSignInfo" }) fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
fn.sign_define("DiagnosticSignHint", { text = '', texthl = "DiagnosticSignHint" }) fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
-- global config for diagnostic -- global config for diagnostic
diagnostic.config { diagnostic.config {

View File

@@ -140,13 +140,15 @@ require("lualine").setup {
options = { options = {
icons_enabled = true, icons_enabled = true,
theme = "auto", theme = "auto",
component_separators = { left = "", right = "" },
section_separators = "", section_separators = "",
component_separators = "",
disabled_filetypes = {}, disabled_filetypes = {},
always_divide_middle = true, always_divide_middle = true,
}, },
sections = { sections = {
lualine_a = { "mode" }, lualine_a = {
"mode",
},
lualine_b = { lualine_b = {
{ {
"branch", "branch",
@@ -154,6 +156,7 @@ require("lualine").setup {
-- truncate branch name in case the name is too long -- truncate branch name in case the name is too long
return string.sub(name, 1, 20) return string.sub(name, 1, 20)
end, end,
color = { gui = "italic,bold" },
}, },
{ {
virtual_env, virtual_env,
@@ -172,8 +175,8 @@ require("lualine").setup {
source = diff, source = diff,
}, },
{ {
ime_state, "%S",
color = { fg = "black", bg = "#f46868" }, color = { gui = "bold", fg = "cyan" },
}, },
{ {
spell, spell,
@@ -181,6 +184,10 @@ require("lualine").setup {
}, },
}, },
lualine_x = { lualine_x = {
{
ime_state,
color = { fg = "black", bg = "#f46868" },
},
{ {
get_active_lsp, get_active_lsp,
icon = " LSP:", icon = " LSP:",
@@ -192,7 +199,7 @@ require("lualine").setup {
}, },
}, },
lualine_y = { lualine_y = {
"encoding", { "encoding", fmt = string.upper },
{ {
"fileformat", "fileformat",
symbols = { symbols = {
@@ -212,7 +219,8 @@ require("lualine").setup {
mixed_indent, mixed_indent,
color = "WarningMsg", color = "WarningMsg",
}, },
"progress" "location",
"progress",
}, },
}, },
inactive_sections = { inactive_sections = {

View File

@@ -35,7 +35,6 @@ cmp.setup {
{ name = "ultisnips" }, -- For ultisnips user. { name = "ultisnips" }, -- For ultisnips user.
{ name = "path" }, -- for path completion { name = "path" }, -- for path completion
{ name = "buffer", keyword_length = 2 }, -- for buffer word completion { name = "buffer", keyword_length = 2 }, -- for buffer word completion
{ name = "emoji", insert = true }, -- emoji completion
}, },
completion = { completion = {
keyword_length = 1, keyword_length = 1,
@@ -50,12 +49,14 @@ cmp.setup {
menu = { menu = {
nvim_lsp = "[LSP]", nvim_lsp = "[LSP]",
ultisnips = "[US]", ultisnips = "[US]",
nvim_lua = "[Lua]",
path = "[Path]", path = "[Path]",
buffer = "[Buffer]", buffer = "[Buffer]",
emoji = "[Emoji]", emoji = "[Emoji]",
omni = "[Omni]", omni = "[Omni]",
}, },
show_labelDetails = true,
maxwidth = 40,
ellipsis_char = "...",
}, },
}, },
} }

View File

@@ -0,0 +1,23 @@
local builtin = require("statuscol.builtin")
local ffi = require("statuscol.ffidef")
local C = ffi.C
-- only show fold level up to this level
local fold_level_limit = 3
local function foldfunc(args)
local foldinfo = C.fold_info(args.wp, args.lnum)
if foldinfo.level > fold_level_limit then
return " "
end
return builtin.foldfunc(args)
end
require("statuscol").setup {
relculright = false,
segments = {
{ text = { "%s" }, click = "v:lua.ScSa" },
{ text = { builtin.lnumfunc, " " }, click = "v:lua.ScLa" },
{ text = { foldfunc, " " }, condition = { true, builtin.not_empty }, click = "v:lua.ScFa" },
},
}

View File

@@ -4,7 +4,7 @@ hop.setup {
case_insensitive = true, case_insensitive = true,
char2_fallback_key = "<CR>", char2_fallback_key = "<CR>",
quit_key = "<Esc>", quit_key = "<Esc>",
match_mappings = { "zh_sc" } match_mappings = { "zh_sc" },
} }
keymap.set({ "n", "v", "o" }, "f", "", { keymap.set({ "n", "v", "o" }, "f", "", {
@@ -24,5 +24,5 @@ vim.api.nvim_create_autocmd("ColorScheme", {
hi HopNextKey1 cterm=bold ctermfg=176 gui=bold guibg=#ff00ff guifg=#ffffff hi HopNextKey1 cterm=bold ctermfg=176 gui=bold guibg=#ff00ff guifg=#ffffff
hi HopNextKey2 cterm=bold ctermfg=176 gui=bold guibg=#ff00ff guifg=#ffffff hi HopNextKey2 cterm=bold ctermfg=176 gui=bold guibg=#ff00ff guifg=#ffffff
]]) ]])
end end,
}) })

View File

@@ -30,10 +30,9 @@ local handler = function(virtText, lnum, endLnum, width, truncate)
return newVirtText return newVirtText
end end
local opts = {} require("ufo").setup {
opts["fold_virt_text_handler"] = handler fold_virt_text_handler = handler,
}
require("ufo").setup(opts)
vim.keymap.set("n", "zR", require("ufo").openAllFolds) vim.keymap.set("n", "zR", require("ufo").openAllFolds)
vim.keymap.set("n", "zM", require("ufo").closeAllFolds) vim.keymap.set("n", "zM", require("ufo").closeAllFolds)

View File

@@ -3,6 +3,6 @@ require("nvim-treesitter.configs").setup {
ignore_install = {}, -- List of parsers to ignore installing ignore_install = {}, -- List of parsers to ignore installing
highlight = { highlight = {
enable = true, -- false will disable the whole extension enable = true, -- false will disable the whole extension
disable = { 'help' }, -- list of language that will be disabled disable = { "help" }, -- list of language that will be disabled
}, },
} }

View File

@@ -1,6 +1,6 @@
require("which-key").setup { require("which-key").setup {
preset = "modern", preset = "modern",
icons = { icons = {
mappings = false mappings = false,
} },
} }

View File

@@ -1,13 +1,17 @@
require("yanky").setup({ require("yanky").setup {
ring = {
history_length = 50,
storage = "memory",
},
preserve_cursor_position = { preserve_cursor_position = {
enabled = false, enabled = false,
}, },
}) highlight = {
on_put = true,
on_yank = false,
timer = 300,
},
}
vim.keymap.set({ "n", "x" }, "p", "<Plug>(YankyPutAfter)")
vim.keymap.set({ "n", "x" }, "P", "<Plug>(YankyPutBefore)")
-- cycle through the yank history, only work after paste -- cycle through the yank history, only work after paste
vim.keymap.set("n", "[y", "<Plug>(YankyCycleForward)") vim.keymap.set("n", "[y", "<Plug>(YankyPreviousEntry)")
vim.keymap.set("n", "]y", "<Plug>(YankyCycleBackward)") vim.keymap.set("n", "]y", "<Plug>(YankyNextEntry)")

View File

@@ -1,15 +0,0 @@
require("zen-mode").setup {
window = {
backdrop = 0.8, -- shade the backdrop of the Zen window. Set to 1 to keep the same as Normal
width = 120,
options = {
-- signcolumn = "no", -- disable signcolumn
-- number = false, -- disable number column
-- relativenumber = false, -- disable relative numbers
cursorline = false, -- disable cursorline
cursorcolumn = false, -- disable cursor column
foldcolumn = "0", -- disable fold column
list = false, -- disable whitespace characters
},
},
}

View File

@@ -38,8 +38,8 @@ api.nvim_create_autocmd("TextYankPost", {
pattern = "*", pattern = "*",
group = yank_group, group = yank_group,
callback = function(ev) callback = function(ev)
if vim.v.event.operator == 'y' then if vim.v.event.operator == "y" then
vim.fn.setpos('.', vim.g.current_cursor_pos) vim.fn.setpos(".", vim.g.current_cursor_pos)
end end
end, end,
}) })
@@ -102,4 +102,173 @@ local function open_nvim_tree(data)
require("nvim-tree.api").tree.open() require("nvim-tree.api").tree.open()
end end
vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree })
-- Do not use smart case in command line mode, extracted from https://vi.stackexchange.com/a/16511/15292.
api.nvim_create_augroup("dynamic_smartcase", { clear = true })
api.nvim_create_autocmd("CmdLineEnter", {
group = "dynamic_smartcase",
pattern = ":",
callback = function()
vim.o.smartcase = false
end,
})
api.nvim_create_autocmd("CmdLineLeave", {
group = "dynamic_smartcase",
pattern = ":",
callback = function()
vim.o.smartcase = true
end,
})
api.nvim_create_autocmd("TermOpen", {
group = api.nvim_create_augroup("term_start", { clear = true }),
pattern = "*",
callback = function()
-- Do not use number and relative number for terminal inside nvim
vim.wo.relativenumber = false
vim.wo.number = false
-- Go to insert mode by default to start typing command
vim.cmd("startinsert")
end,
})
-- Return to last cursor position when opening a file, note that here we cannot use BufReadPost
-- as event. It seems that when BufReadPost is triggered, FileType event is still not run.
-- So the filetype for this buffer is empty string.
api.nvim_create_autocmd("FileType", {
group = api.nvim_create_augroup("resume_cursor_position", { clear = true }),
pattern = "*",
callback = function(ev)
local mark_pos = api.nvim_buf_get_mark(ev.buf, '"')
local last_cursor_line = mark_pos[1]
local max_line = vim.fn.line("$")
local buf_filetype = api.nvim_get_option_value("filetype", { buf = ev.buf })
local buftype = api.nvim_get_option_value("buftype", { buf = ev.buf })
-- only handle normal files
if buf_filetype == "" or buftype ~= "" then
return
end
-- Only resume last cursor position when there is no go-to-line command (something like '+23').
if vim.fn.match(vim.v.argv, [[\v^\+(\d){1,}$]]) ~= -1 then
return
end
if last_cursor_line > 1 and last_cursor_line <= max_line then
-- vim.print(string.format("mark_pos: %s", vim.inspect(mark_pos)))
-- it seems that without vim.schedule, the cursor position can not be set correctly
vim.schedule(function()
local status, result = pcall(api.nvim_win_set_cursor, 0, mark_pos)
if not status then
api.nvim_err_writeln(
string.format("Failed to resume cursor position. Context %s, error: %s", vim.inspect(ev), result)
)
end
end)
-- the following two ways also seem to work,
-- ref: https://www.reddit.com/r/neovim/comments/104lc26/how_can_i_press_escape_key_using_lua/
-- vim.api.nvim_feedkeys("g`\"", "n", true)
-- vim.fn.execute("normal! g`\"")
end
end,
})
local number_toggle_group = api.nvim_create_augroup("numbertoggle", { clear = true })
api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "WinEnter" }, {
pattern = "*",
group = number_toggle_group,
desc = "togger line number",
callback = function()
if vim.wo.number then
vim.wo.relativenumber = true
end
end,
})
api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "WinLeave" }, {
group = number_toggle_group,
desc = "togger line number",
callback = function()
if vim.wo.number then
vim.wo.relativenumber = false
end
end,
})
api.nvim_create_autocmd("ColorScheme", {
group = api.nvim_create_augroup("custom_highlight", { clear = true }),
pattern = "*",
desc = "Define or overrride some highlight groups",
callback = function()
-- For yank highlight
vim.api.nvim_set_hl(0, "YankColor", { fg = "#34495E", bg = "#2ECC71", ctermfg = 59, ctermbg = 41 })
-- For cursor colors
vim.api.nvim_set_hl(0, "Cursor", { fg = "black", bg = "#00c918", bold = true })
vim.api.nvim_set_hl(0, "Cursor2", { fg = "red", bg = "red" })
-- For floating windows border highlight
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "LightGreen" })
-- highlight for matching parentheses
vim.api.nvim_set_hl(0, "MatchParen", { bold = true, underline = true })
end,
})
api.nvim_create_autocmd("BufEnter", {
pattern = "*",
group = api.nvim_create_augroup("auto_close_win", { clear = true }),
desc = "Quit Nvim if we have only one window, and its filetype match our pattern",
callback = function(ev)
local quit_filetypes = { "qf", "vista", "NvimTree" }
local should_quit = true
local tabwins = api.nvim_tabpage_list_wins(0)
for _, win in pairs(tabwins) do
local buf = api.nvim_win_get_buf(win)
local bf = fn.getbufvar(buf, "&filetype")
if fn.index(quit_filetypes, bf) == -1 then
should_quit = false
end
end
if should_quit then
vim.cmd("qall")
end
end,
})
api.nvim_create_autocmd({ "VimEnter", "DirChanged" }, {
group = api.nvim_create_augroup("git_repo_check", { clear = true }),
pattern = "*",
desc = "check if we are inside Git repo",
command = "call utils#Inside_git_repo()",
})
-- ref: https://vi.stackexchange.com/a/169/15292
api.nvim_create_autocmd("BufReadPre", {
group = api.nvim_create_augroup("large_file", { clear = true }),
pattern = "*",
desc = "check if we are inside Git repo",
callback = function(ev)
local file_size_limit = 524288 -- 0.5MB
local f = ev.file
if fn.getfsize(f) > file_size_limit or fn.getfsize(f) == -2 then
vim.o.eventignore = "all"
-- turning off relative number helps a lot
vim.wo.relativenumber = false
vim.bo.swapfile = false
vim.bo.bufhidden = "unload"
vim.bo.undolevels = -1
end
end,
})

View File

@@ -1,33 +1,28 @@
local fn = vim.fn local fn = vim.fn
local api = vim.api local api = vim.api
local utils = require('utils') local utils = require("utils")
-- Inspect something
function _G.inspect(item)
vim.print(item)
end
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- custom variables -- -- custom variables --
------------------------------------------------------------------------ ------------------------------------------------------------------------
vim.g.is_win = (utils.has("win32") or utils.has("win64")) and true or false vim.g.is_win = (utils.has("win32") or utils.has("win64")) and true or false
vim.g.is_linux = (utils.has("unix") and (not utils.has("macunix"))) and true or false vim.g.is_linux = (utils.has("unix") and (not utils.has("macunix"))) and true or false
vim.g.is_mac = utils.has("macunix") and true or false vim.g.is_mac = utils.has("macunix") and true or false
vim.g.logging_level = "info" vim.g.logging_level = "info"
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- builtin variables -- -- builtin variables --
------------------------------------------------------------------------ ------------------------------------------------------------------------
vim.g.loaded_perl_provider = 0 -- Disable perl provider vim.g.loaded_perl_provider = 0 -- Disable perl provider
vim.g.loaded_ruby_provider = 0 -- Disable ruby provider vim.g.loaded_ruby_provider = 0 -- Disable ruby provider
vim.g.loaded_node_provider = 0 -- Disable node provider vim.g.loaded_node_provider = 0 -- Disable node provider
vim.g.did_install_default_menus = 1 -- do not load menu vim.g.did_install_default_menus = 1 -- do not load menu
if utils.executable('python3') then if utils.executable("python3") then
if vim.g.is_win then if vim.g.is_win then
vim.g.python3_host_prog = fn.substitute(fn.exepath("python3"), ".exe$", '', 'g') vim.g.python3_host_prog = fn.substitute(fn.exepath("python3"), ".exe$", "", "g")
else else
vim.g.python3_host_prog = fn.exepath("python3") vim.g.python3_host_prog = fn.exepath("python3")
end end
@@ -37,18 +32,18 @@ else
end end
-- Custom mapping <leader> (see `:h mapleader` for more info) -- Custom mapping <leader> (see `:h mapleader` for more info)
vim.g.mapleader = ',' vim.g.mapleader = ","
-- Enable highlighting for lua HERE doc inside vim script -- Enable highlighting for lua HERE doc inside vim script
vim.g.vimsyn_embed = 'l' vim.g.vimsyn_embed = "l"
-- Use English as main language -- Use English as main language
vim.cmd [[language en_US.UTF-8]] vim.cmd([[language en_US.UTF-8]])
-- Disable loading certain plugins -- Disable loading certain plugins
-- Whether to load netrw by default, see https://github.com/bling/dotvim/issues/4 -- Whether to load netrw by default, see https://github.com/bling/dotvim/issues/4
vim.g.loaded_netrw = 1 vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1 vim.g.loaded_netrwPlugin = 1
vim.g.netrw_liststyle = 3 vim.g.netrw_liststyle = 3
if vim.g.is_win then if vim.g.is_win then

View File

@@ -45,7 +45,21 @@ keymap.set("n", [[\x]], "<cmd>windo lclose <bar> cclose <cr>", {
-- Delete a buffer, without closing the window, see https://stackoverflow.com/q/4465095/6064933 -- Delete a buffer, without closing the window, see https://stackoverflow.com/q/4465095/6064933
keymap.set("n", [[\d]], "<cmd>bprevious <bar> bdelete #<cr>", { keymap.set("n", [[\d]], "<cmd>bprevious <bar> bdelete #<cr>", {
silent = true, silent = true,
desc = "delete buffer", desc = "delete current buffer",
})
keymap.set("n", [[\D]], function()
local buf_ids = vim.api.nvim_list_bufs()
local cur_buf = vim.api.nvim_win_get_buf(0)
for _, buf_id in pairs(buf_ids) do
-- do not Delete unlisted buffers, which may lead to unexpected errors
if vim.api.nvim_get_option_value("buflisted", { buf = buf_id }) and buf_id ~= cur_buf then
vim.api.nvim_buf_delete(buf_id, { force = true })
end
end
end, {
desc = "delete other buffers",
}) })
-- Insert a blank line below or above current line (do not move the cursor), -- Insert a blank line below or above current line (do not move the cursor),
@@ -218,18 +232,20 @@ keymap.set("n", "<leader>cb", function()
return return
end end
timer:start(0, 100, vim.schedule_wrap(function() timer:start(
vim.cmd [[ 0,
100,
vim.schedule_wrap(function()
vim.cmd([[
set cursorcolumn! set cursorcolumn!
set cursorline! set cursorline!
]] ]])
if cnt == blink_times then if cnt == blink_times then
timer:close() timer:close()
end end
cnt = cnt + 1 cnt = cnt + 1
end) end)
) )
end, end, { desc = "show cursor" })
{ desc = "show cursor" })

View File

@@ -23,7 +23,8 @@ end
local plugin_specs = { local plugin_specs = {
-- auto-completion engine -- auto-completion engine
{ {
"hrsh7th/nvim-cmp", "iguanacucumber/magazine.nvim",
name = "nvim-cmp",
-- event = 'InsertEnter', -- event = 'InsertEnter',
event = "VeryLazy", event = "VeryLazy",
dependencies = { dependencies = {
@@ -32,14 +33,12 @@ local plugin_specs = {
"hrsh7th/cmp-path", "hrsh7th/cmp-path",
"hrsh7th/cmp-buffer", "hrsh7th/cmp-buffer",
"hrsh7th/cmp-omni", "hrsh7th/cmp-omni",
"hrsh7th/cmp-emoji",
"quangnguyen30192/cmp-nvim-ultisnips", "quangnguyen30192/cmp-nvim-ultisnips",
}, },
config = function() config = function()
require("config.nvim-cmp") require("config.nvim-cmp")
end, end,
}, },
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
event = { "BufRead", "BufNewFile" }, event = { "BufRead", "BufNewFile" },
@@ -63,9 +62,6 @@ local plugin_specs = {
end, end,
}, },
-- Python indent (follows the PEP8 style)
{ "Vimjas/vim-python-pep8-indent", ft = { "python" } },
-- Python-related text object -- Python-related text object
{ "jeetsukumaran/vim-pythonsense", ft = { "python" } }, { "jeetsukumaran/vim-pythonsense", ft = { "python" } },
@@ -126,6 +122,15 @@ local plugin_specs = {
"nvim-telescope/telescope-symbols.nvim", "nvim-telescope/telescope-symbols.nvim",
}, },
}, },
{
"ibhagwan/fzf-lua",
-- optional for icon support
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
-- calling `setup` is optional for customization
require("fzf-lua").setup {}
end,
},
{ {
"MeanderingProgrammer/markdown.nvim", "MeanderingProgrammer/markdown.nvim",
main = "render-markdown", main = "render-markdown",
@@ -156,7 +161,7 @@ local plugin_specs = {
event = "VeryLazy", event = "VeryLazy",
cond = firenvim_not_active, cond = firenvim_not_active,
config = function() config = function()
require("config.statusline") require("config.lualine")
end, end,
}, },
@@ -190,15 +195,7 @@ local plugin_specs = {
"luukvbaal/statuscol.nvim", "luukvbaal/statuscol.nvim",
opts = {}, opts = {},
config = function() config = function()
local builtin = require("statuscol.builtin") require("config.nvim-statuscol")
require("statuscol").setup {
relculright = true,
segments = {
{ text = { "%s" }, click = "v:lua.ScSa" },
{ text = { builtin.lnumfunc, " " }, click = "v:lua.ScLa" },
{ text = { builtin.foldfunc, " " }, condition = {true, builtin.not_empty}, click = "v:lua.ScFa" },
},
}
end, end,
}, },
{ {
@@ -231,7 +228,12 @@ local plugin_specs = {
-- For Windows and Mac, we can open an URL in the browser. For Linux, it may -- 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. -- not be possible since we maybe in a server which disables GUI.
{ {
"tyru/open-browser.vim", "chrishrb/gx.nvim",
keys = { { "gx", "<cmd>Browse<cr>", mode = { "n", "x" } } },
cmd = { "Browse" },
init = function()
vim.g.netrw_nogx = 1 -- disable netrw gx
end,
enabled = function() enabled = function()
if vim.g.is_win or vim.g.is_mac then if vim.g.is_win or vim.g.is_mac then
return true return true
@@ -239,7 +241,9 @@ local plugin_specs = {
return false return false
end end
end, end,
event = "VeryLazy", dependencies = { "nvim-lua/plenary.nvim" },
config = true, -- default settings
submodules = false, -- not needed, submodules are required only for tests
}, },
-- Only install these plugins if ctags are installed on the system -- Only install these plugins if ctags are installed on the system
@@ -286,10 +290,10 @@ local plugin_specs = {
-- Manage your yank history -- Manage your yank history
{ {
"gbprod/yanky.nvim", "gbprod/yanky.nvim",
cmd = { "YankyRingHistory" },
config = function() config = function()
require("config.yanky") require("config.yanky")
end, end,
event = "VeryLazy",
}, },
-- Handy unix command inside Vim (Rename, Move etc.) -- Handy unix command inside Vim (Rename, Move etc.)
@@ -353,9 +357,6 @@ local plugin_specs = {
end, end,
}, },
-- Better git commit experience
{ "rhysd/committia.vim", lazy = true },
{ {
"sindrets/diffview.nvim", "sindrets/diffview.nvim",
}, },
@@ -390,14 +391,6 @@ local plugin_specs = {
ft = { "markdown" }, ft = { "markdown" },
}, },
{
"folke/zen-mode.nvim",
cmd = "ZenMode",
config = function()
require("config.zen-mode")
end,
},
{ {
"rhysd/vim-grammarous", "rhysd/vim-grammarous",
enabled = function() enabled = function()
@@ -449,7 +442,7 @@ local plugin_specs = {
-- Modern matchit implementation -- Modern matchit implementation
{ "andymass/vim-matchup", event = "BufRead" }, { "andymass/vim-matchup", event = "BufRead" },
{ "tpope/vim-scriptease", cmd = { "Scriptnames", "Message", "Verbose" } }, { "tpope/vim-scriptease", cmd = { "Scriptnames", "Messages", "Verbose" } },
-- Asynchronous command execution -- Asynchronous command execution
{ "skywind3000/asyncrun.vim", lazy = true, cmd = { "AsyncRun" } }, { "skywind3000/asyncrun.vim", lazy = true, cmd = { "AsyncRun" } },
@@ -542,6 +535,59 @@ local plugin_specs = {
require("config.fidget-nvim") require("config.fidget-nvim")
end, end,
}, },
{
"folke/lazydev.nvim",
ft = "lua", -- only load on lua files
opts = {},
},
{
"CopilotC-Nvim/CopilotChat.nvim",
dependencies = {
{ "zbirenbaum/copilot.lua" }, -- or github/copilot.vim
{ "nvim-lua/plenary.nvim" }, -- for curl, log wrapper
},
opts = {
debug = true, -- Enable debugging
-- See Configuration section for rest
},
-- See Commands section for default commands if you want to lazy load on them
},
{
"zbirenbaum/copilot.lua",
cmd = "Copilot",
config = function()
require("copilot").setup {}
end,
},
{
"smjonas/live-command.nvim",
-- live-command supports semantic versioning via Git tags
-- tag = "2.*",
cmd = "Preview",
config = function()
require("config.live-command")
end,
event = "VeryLazy",
},
{
-- show hint for code actions, the user can also implement code actions themselves,
-- see discussion here: https://github.com/neovim/neovim/issues/14869
"kosayoda/nvim-lightbulb",
config = function()
require("nvim-lightbulb").setup { autocmd = { enabled = true } }
end,
},
{
"Bekaboo/dropbar.nvim",
},
{
"vhyrro/luarocks.nvim",
priority = 1000, -- Very high priority is required, luarocks.nvim should run as the first plugin in your config.
opts = {
rocks = { "lua-toml" }, -- specifies a list of rocks to install
-- luarocks_build_args = { "--with-lua=/my/path" }, -- extra options to pass to luarocks's configuration script
},
},
} }
require("lazy").setup { require("lazy").setup {
@@ -553,5 +599,6 @@ require("lazy").setup {
}, },
rocks = { rocks = {
enabled = false, enabled = false,
hererocks = false,
}, },
} }

View File

@@ -1,4 +1,5 @@
local fn = vim.fn local fn = vim.fn
local version = vim.version
local M = {} local M = {}
@@ -50,4 +51,32 @@ function M.rand_element(seq)
return seq[idx] return seq[idx]
end end
--- check if the current nvim version is compatible with the allowed version
--- @param expected_version string
--- @return boolean
function M.is_compatible_version(expected_version)
-- check if we have the latest stable version of nvim
local expect_ver = version.parse(expected_version)
local actual_ver = vim.version()
if expect_ver == nil then
local msg = string.format("Unsupported version string: %s", expected_version)
vim.api.nvim_err_writeln(msg)
return false
end
local result = version.cmp(expect_ver, actual_ver)
if result ~= 0 then
local _ver = string.format("%s.%s.%s", actual_ver.major, actual_ver.minor, actual_ver.patch)
local msg = string.format(
"Expect nvim version %s, but your current nvim version is %s. Use at your own risk!",
expected_version,
_ver
)
vim.api.nvim_err_writeln(msg)
end
return true
end
return M return M

58
plugin/command.lua Normal file
View File

@@ -0,0 +1,58 @@
-- Copy file path to clipboard
vim.api.nvim_create_user_command("CopyPath", function(context)
local full_path = vim.fn.glob("%:p")
local file_path = nil
if context["args"] == "nameonly" then
file_path = vim.fn.fnamemodify(full_path, ":t")
end
-- get the file path relative to project root
if context["args"] == "relative" then
local project_marker = { ".git", "pyproject.toml" }
local project_root = vim.fs.root(0, project_marker)
if project_root == nil then
vim.print("can not find project root")
return
end
file_path = vim.fn.substitute(full_path, project_root, "<project-root>", "g")
end
if context["args"] == "absolute" then
file_path = full_path
end
vim.fn.setreg("+", file_path)
vim.print("Filepath copied to clipboard!")
end, {
bang = false,
nargs = 1,
force = true,
desc = "Copy current file path to clipboard",
complete = function()
return { "nameonly", "relative", "absolute" }
end,
})
-- JSON format part of or the whole file
vim.api.nvim_create_user_command("JSONFormat", function(context)
local range = context["range"]
local line1 = context["line1"]
local line2 = context["line2"]
if range == 0 then
-- the command is invoked without range, then we assume whole buffer
local cmd_str = string.format("%s,%s!python -m json.tool", line1, line2)
vim.fn.execute(cmd_str)
elseif range == 2 then
-- the command is invoked with some range
local cmd_str = string.format("%s,%s!python -m json.tool", line1, line2)
vim.fn.execute(cmd_str)
else
vim.api.nvim_err_write(string.format("unsupported range: %s", range))
end
end, {
desc = "Format JSON string",
range = "%",
})

View File

@@ -45,6 +45,3 @@ function! s:md_to_pdf() abort
echoerr "Error running command" echoerr "Error running command"
endif endif
endfunction endfunction
" json format
command! -range JSONFormat <line1>,<line2>!python -m json.tool

View File

@@ -470,3 +470,9 @@ qpdf
Elasticsearch Elasticsearch
kibana kibana
submodule submodule
unix
GCP
Kubernetes
pubsub
Luarocks
luarocks

View File

@@ -1,123 +0,0 @@
" Do not use smart case in command line mode, extracted from https://vi.stackexchange.com/a/16511/15292.
augroup dynamic_smartcase
autocmd!
autocmd CmdLineEnter : set nosmartcase
autocmd CmdLineLeave : set smartcase
augroup END
augroup term_settings
autocmd!
" Do not use number and relative number for terminal inside nvim
autocmd TermOpen * setlocal norelativenumber nonumber
" Go to insert mode by default to start typing command
autocmd TermOpen * startinsert
augroup END
" More accurate syntax highlighting? (see `:h syn-sync`)
augroup accurate_syn_highlight
autocmd!
autocmd BufEnter * :syntax sync fromstart
augroup END
" Return to last cursor position when opening a file
augroup resume_cursor_position
autocmd!
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
augroup numbertoggle
autocmd!
autocmd BufEnter,FocusGained,InsertLeave,WinEnter * if &nu | set rnu | endif
autocmd BufLeave,FocusLost,InsertEnter,WinLeave * if &nu | set nornu | endif
augroup END
" Define or override some highlight groups
augroup custom_highlight
autocmd!
autocmd ColorScheme * call s:custom_highlight()
augroup END
function! s:custom_highlight() abort
" For yank highlight
highlight YankColor ctermfg=59 ctermbg=41 guifg=#34495E guibg=#2ECC71
" For cursor colors
highlight Cursor cterm=bold gui=bold guibg=#00c918 guifg=black
highlight Cursor2 guifg=red guibg=red
" For floating windows border highlight
highlight FloatBorder guifg=LightGreen guibg=NONE
" highlight for matching parentheses
highlight MatchParen cterm=bold,underline gui=bold,underline
endfunction
augroup auto_close_win
autocmd!
autocmd BufEnter * call s:quit_current_win()
augroup END
" Quit Nvim if we have only one window, and its filetype match our pattern.
function! s:quit_current_win() abort
let l:quit_filetypes = ['qf', 'vista', 'NvimTree']
let l:should_quit = v:true
let l:tabwins = nvim_tabpage_list_wins(0)
for w in l:tabwins
let l:buf = nvim_win_get_buf(w)
let l:bf = getbufvar(l:buf, '&filetype')
if index(l:quit_filetypes, l:bf) == -1
let l:should_quit = v:false
endif
endfor
if l:should_quit
qall
endif
endfunction
augroup git_repo_check
autocmd!
autocmd VimEnter,DirChanged * call utils#Inside_git_repo()
augroup END
" ref: https://vi.stackexchange.com/a/169/15292
function! s:handle_large_file() abort
let g:large_file = 10485760 " 10MB
let f = expand("<afile>")
if getfsize(f) > g:large_file || getfsize(f) == -2
set eventignore+=all
" turning off relative number helps a lot
set norelativenumber
setlocal noswapfile bufhidden=unload buftype=nowrite undolevels=-1
else
set eventignore-=all relativenumber
endif
endfunction
augroup LargeFile
autocmd!
autocmd BufReadPre * call s:handle_large_file()
augroup END
" Load auto-command defined in Lua
lua require("custom-autocmd")

View File

@@ -72,7 +72,7 @@ set wildmode=list:longest
set scrolloff=3 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=
set mousemodel=popup " Set the behaviour of mouse set mousemodel=popup " Set the behaviour of mouse
set mousescroll=ver:1,hor:0 set mousescroll=ver:1,hor:0
@@ -121,7 +121,7 @@ set completeopt+=menuone " Show menu even if there is only one item
set completeopt-=preview " Disable the preview window set completeopt-=preview " Disable the preview window
set pumheight=10 " Maximum number of items to show in popup menu set pumheight=10 " Maximum number of items to show in popup menu
set pumblend=10 " pseudo transparency for completion menu set pumblend=5 " pseudo transparency for completion menu
set winblend=0 " pseudo transparency for floating window set winblend=0 " pseudo transparency for floating window
@@ -179,3 +179,5 @@ set diffopt+=linematch:60
set nowrap " do no wrap set nowrap " do no wrap
set noruler set noruler
set showcmdloc=statusline

View File

@@ -79,7 +79,7 @@ let g:Lf_WorkingDirectoryMode = 'a'
nnoremap <silent> <leader>ff :<C-U>Leaderf file --popup<CR> nnoremap <silent> <leader>ff :<C-U>Leaderf file --popup<CR>
" Grep project files in popup window " Grep project files in popup window
nnoremap <silent> <leader>fg :<C-U>Leaderf rg --no-messages --popup<CR> nnoremap <silent> <leader>fg :<C-U>Leaderf rg --no-messages --popup --nameOnly<CR>
" Search vim help files " Search vim help files
nnoremap <silent> <leader>fh :<C-U>Leaderf help --popup<CR> nnoremap <silent> <leader>fh :<C-U>Leaderf help --popup<CR>
@@ -113,16 +113,6 @@ let g:Lf_PreviewResult = {
\ 'Gtags': 0 \ 'Gtags': 0
\} \}
""""""""""""""""""""""""""""open-browser.vim settings"""""""""""""""""""
if g:is_win || g:is_mac
" Disable netrw's gx mapping.
let g:netrw_nogx = 1
" Use another mapping for the open URL method
nmap ob <Plug>(openbrowser-smart-search)
xmap ob <Plug>(openbrowser-smart-search)
endif
""""""""""""""""""""""""""" vista settings """""""""""""""""""""""""""""""""" """"""""""""""""""""""""""" vista settings """"""""""""""""""""""""""""""""""
let g:vista#renderer#icons = { let g:vista#renderer#icons = {
\ 'member': '', \ 'member': '',