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

23 Commits

Author SHA1 Message Date
jdhao
e6f95cedb1 Update installation doc 2024-08-06 06:51:39 +08:00
jdhao
262ad6aa38 Add new colorscheme kanagawa 2024-08-06 06:16:07 +08:00
jdhao
b30cc9ed78 update user dictionary 2024-08-06 06:05:20 +08:00
jdhao
b3a26e4226 update load condtion for nvim-tree 2024-08-06 06:02:02 +08:00
jdhao
794b098090 Add git blame mapping 2024-08-06 05:59:14 +08:00
jdhao
b728b39784 update type hint for functions 2024-08-06 05:35:19 +08:00
jdhao
acc3ed7829 show error message only when no word is under cursor 2024-08-06 05:33:24 +08:00
jdhao
44e9e5a1ce Fix lua_ls diagnostic warnings 2024-08-06 05:24:16 +08:00
jdhao
5502d29f40 update config related to folding
1. For python and lua, rely on LSP for folding
2. show fold signs on the right of the number column
2024-08-06 05:17:51 +08:00
jdhao
fe95658319 Add colorscheme arctic.nvim 2024-08-05 06:25:28 +08:00
jdhao
e165276763 fix error when there is no cursor word 2024-08-05 06:23:18 +08:00
jdhao
933b887281 update config for nvim-ufo 2024-08-05 05:50:45 +08:00
jdhao
69643e143a use plugin nvim-ufo for better folding
The settings are copied from https://github.com/kevinhwang91/nvim-ufo/issues/4#issuecomment-1514537245,
with some modification.
2024-08-05 05:27:49 +08:00
jdhao
7f4772fd31 update setting for colorscheme gruvbox-material 2024-08-05 05:04:35 +08:00
jdhao
bf49e90947 change value for option 'splitkeep' 2024-08-05 05:03:02 +08:00
jdhao
784b435f0e update LeaderF settings 2024-08-02 23:41:36 +08:00
jdhao
beec97c086 Fix firenvim and LeaderF build issues
In lazy.nvim, the `build` parameter accept value in different format.
If the value is
1. a string and starts with `:`, it will be treated as vim command
2. a string and starts without `:`, it will be treated as shell command
3. a function. Lazy.nvim will run this function

I compared closely between case 1 and case 3. In case 1, when lazy.nvim
runs the viml command, the runtimepath is already populated with the
current plugin we are trying to build.
However in case 3, the runtimepath is not populated with the plugin
path, which means that any command you run by this plugin is not
available.

So I did it in a hacky way to add the plugin path to runtimepath
manually, and source it manually using `:runtime` command. The `:
runtime` command is needed because in the init process, adding the
plugin path to runtimepath does not ensure that the script under this
plugin is sourced immediately. So if we want to use the command/function
immediately, we need to source it manually, see also https://github.com/neovim/neovim/issues/29957.
2024-08-02 23:38:16 +08:00
jdhao
bbb8545403 update lualine config
- rearrange a few components
- add and remove a few components
2024-08-02 06:23:21 +08:00
jdhao
9efadac8fb update lazy.nvim config 2024-08-01 04:14:34 +08:00
jdhao
6e137fe9a3 make firenvim work again
1. fix build issue
2. fix PATH env issue
2024-07-31 07:09:50 +08:00
jdhao
719fbfc1ab update lua_ls settings 2024-07-31 05:42:33 +08:00
jdhao
e815de294f update plugin for markdown preview 2024-07-27 03:25:36 +08:00
jdhao
ca7430056c update to neovim version 0.10.1 2024-07-26 03:32:54 +08:00
17 changed files with 239 additions and 122 deletions

View File

@@ -13,7 +13,7 @@
<img alt="Latest release" src="https://img.shields.io/github/v/release/jdhao/nvim-config" />
</a>
<a href="https://github.com/neovim/neovim/releases/tag/stable">
<img src="https://img.shields.io/badge/Neovim-0.9.5-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/>
<img src="https://img.shields.io/badge/Neovim-0.10.1-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/>
</a>
<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"/>
@@ -21,8 +21,8 @@
<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" />
</a>
<a href="https://github.com/jdhao/nvim-config/releases/tag/v0.9.5">
<img src="https://img.shields.io/github/commits-since/jdhao/nvim-config/v0.9.5?style=flat-square" />
<a href="https://github.com/jdhao/nvim-config/releases/tag/v0.10.0">
<img src="https://img.shields.io/github/commits-since/jdhao/nvim-config/v0.10.0?style=flat-square" />
</a>
<a href="https://github.com/jdhao/nvim-config/graphs/contributors">
<img src="https://img.shields.io/github/contributors/jdhao/nvim-config?style=flat-square" />
@@ -169,8 +169,8 @@ Some of the shortcuts I use frequently are listed here. In the following shortcu
| `<leader>gc` | Normal | Linux/macOS/Win | Run git commit |
| `<leader>gpl` | Normal | Linux/macOS/Win | Run git pull |
| `<leader>gpu` | Normal | Linux/macOS/Win | Run git push |
| `<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>gl` | Normal/Visual | Linux/macOS/Win | Get perm link for current/visually-select lines |
| `<leader>gb` | Normal | macOS | Browse current git repo in browser |
| `<F9>` | Normal | Linux/macOS/Win | Compile&run current source file (for C++, LaTeX, Lua, Python) |
| `<F11>` | Normal | Linux/macOS/Win | Toggle spell checking |
| `<F12>` | Normal | Linux/macOS/Win | Toggle paste mode |

View File

@@ -3,7 +3,3 @@ set formatoptions-=o
set formatoptions-=r
nnoremap <buffer><silent> <F9> :luafile %<CR>
" Use nvim-treesitter for folding
set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()

View File

@@ -12,7 +12,3 @@ set tabstop=4 " number of visual spaces per TAB
set softtabstop=4 " number of spaces in tab when editing
set shiftwidth=4 " number of spaces to use for autoindent
set expandtab " expand tab to spaces so that tabs are spaces
" Use nvim-treesitter for folding
set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()

View File

@@ -118,16 +118,16 @@ The version of Git on the Linux system may be too old so that plugins may break.
Check [here](https://jdhao.github.io/2021/03/27/upgrade_git_on_linux/) on how to install and set up the latest version of Git.
For Windows, install [Git for Windows](https://git-scm.com/download/win) and make sure you can run `git` from command line.
### ctags
### universal-ctags
In order to use tags related plugins such as [vista.vim](https://github.com/liuchengxu/vista.vim), we need to install a ctags distribution.
Universal-ctags is preferred.
To install it on Linux, we need to build it from source. See [here](https://askubuntu.com/a/836521/768311) for the details.
To install ctags on macOS, use [Homebrew](https://github.com/universal-ctags/homebrew-universal-ctags):
To install ctags on macOS, use [Homebrew](https://formulae.brew.sh/formula/universal-ctags):
```bash
brew install ctags
brew install universal-ctags
```
To install it Windows, use [chocolatey](https://chocolatey.org/) or [scoop](https://scoop.sh/)
@@ -166,35 +166,9 @@ Set their PATH properly and make sure you can run `pylint`, `flake8` and `vint`
There are various ways to install Nvim depending on your system.
This config is only maintained for [the latest nvim stable release](https://github.com/neovim/neovim/releases/tag/stable).
### Linux
Please check the official doc on how to install Neovim on different systems: https://github.com/neovim/neovim/blob/master/INSTALL.md
You can directly download the binary release from [here](https://github.com/neovim/neovim/releases/download/stable/nvim-linux64.tar.gz).
You can also use the system package manager to install nvim,
but that is not reliable since the latest version may not be available.
### Windows
You may download from [nvim release](https://github.com/neovim/neovim/releases/download/stable/nvim-win64.zip) from GitHub and manually extract it.
Another way to install Nvim on Windows is via chocolatey or scoop:
```
choco install neovim
# via scoop
# scoop bucket add versions
# scoop install neovim
```
### macOS
It is recommended to install neovim via [Homebrew](https://brew.sh/) on macOS. Simply run the following command:
```bash
brew install neovim
```
After installing Nvim, we need to set the path to nvim correctly.
After installing Nvim, we need to set the PATH to nvim correctly.
**Make sure that you can run `nvim` from the command line after all these setups**.
## Setting up Nvim

View File

@@ -14,15 +14,21 @@ vim.loader.enable()
local version = vim.version
-- check if we have the latest stable version of nvim
local expected_ver = "0.10.0"
local ev = version.parse(expected_ver)
local actual_ver = version()
local expected_ver_str = "0.10.1"
local expect_ver = version.parse(expected_ver_str)
local actual_ver = vim.version()
local result = version.cmp(ev, {actual_ver.major, actual_ver.minor, actual_ver.patch})
if expect_ver == nil then
local msg = string.format("Unsupported version string: %s", expected_ver_str)
vim.api.nvim_err_writeln(msg)
return
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 %s, but got %s instead. Use at your own risk!", expected_ver, _ver)
local msg = string.format("Expect nvim %s, but got %s instead. Use at your own risk!", expected_ver_str, _ver)
vim.api.nvim_err_writeln(msg)
end

View File

@@ -24,9 +24,9 @@ M.colorscheme_conf = {
end,
gruvbox_material = function()
-- foreground option can be material, mix, or original
vim.g.gruvbox_material_foreground = "material"
vim.g.gruvbox_material_foreground = "original"
--background option can be hard, medium, soft
vim.g.gruvbox_material_background = "soft"
vim.g.gruvbox_material_background = "medium"
vim.g.gruvbox_material_enable_italic = 1
vim.g.gruvbox_material_better_performance = 1
@@ -56,6 +56,12 @@ M.colorscheme_conf = {
vim.g.material_style = "oceanic"
vim.cmd('colorscheme material')
end,
arctic = function ()
vim.cmd("colorscheme arctic")
end,
kanagawa = function()
vim.cmd("colorscheme kanagawa-wave")
end
}
--- Use a random colorscheme from the pre-defined list of colorschemes.

View File

@@ -6,6 +6,7 @@ keymap.set("n", "<leader>gc", "<cmd>Git commit<cr>", { desc = "Git commit" })
keymap.set("n", "<leader>gd", "<cmd>Gdiffsplit<cr>", { desc = "Git diff" })
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" })
keymap.set("v", "<leader>gb", ":Git blame<cr>", { desc = "Git blame line" })
-- convert git to Git in command line mode
vim.fn['utils#Cabbrev']('git', 'Git')
vim.fn["utils#Cabbrev"]("git", "Git")

View File

@@ -35,14 +35,32 @@ keymap.set("n", "N", "", {
end,
})
local no_word_under_cursor = function()
local cursor_word = vim.fn.expand("<cword>")
local result = cursor_word == ""
if result then
local msg = "E348: No string under cursor"
api.nvim_err_writeln(msg)
end
return result
end
keymap.set("n", "*", "", {
callback = function()
if no_word_under_cursor() then
return
end
vim.fn.execute("normal! *N")
hlslens.start()
end,
})
keymap.set("n", "#", "", {
callback = function()
if no_word_under_cursor() then
return
end
vim.fn.execute("normal! #N")
hlslens.start()
end,

View File

@@ -231,11 +231,12 @@ if utils.executable("lua-language-server") then
},
workspace = {
-- Make the server aware of Neovim runtime files,
-- 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 .
-- 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,

45
lua/config/nvim_ufo.lua Normal file
View File

@@ -0,0 +1,45 @@
local handler = function(virtText, lnum, endLnum, width, truncate)
local newVirtText = {}
local foldedLines = endLnum - lnum
local suffix = (" 󰁂 %d"):format(foldedLines)
local sufWidth = vim.fn.strdisplaywidth(suffix)
local targetWidth = width - sufWidth
local curWidth = 0
for _, chunk in ipairs(virtText) do
local chunkText = chunk[1]
local chunkWidth = vim.fn.strdisplaywidth(chunkText)
if targetWidth > curWidth + chunkWidth then
table.insert(newVirtText, chunk)
else
chunkText = truncate(chunkText, targetWidth - curWidth)
local hlGroup = chunk[2]
table.insert(newVirtText, { chunkText, hlGroup })
chunkWidth = vim.fn.strdisplaywidth(chunkText)
-- str width returned from truncate() may less than 2nd argument, need padding
if curWidth + chunkWidth < targetWidth then
suffix = suffix .. (" "):rep(targetWidth - curWidth - chunkWidth)
end
break
end
curWidth = curWidth + chunkWidth
end
local rAlignAppndx = math.max(math.min(vim.opt.textwidth["_value"], width - 1) - curWidth - sufWidth, 0)
suffix = (" "):rep(rAlignAppndx) .. suffix
table.insert(newVirtText, { suffix, "MoreMsg" })
return newVirtText
end
local opts = {}
opts["fold_virt_text_handler"] = handler
require("ufo").setup(opts)
vim.keymap.set("n", "zR", require("ufo").openAllFolds)
vim.keymap.set("n", "zM", require("ufo").closeAllFolds)
vim.keymap.set("n", "zr", require("ufo").openFoldsExceptKinds)
vim.keymap.set("n", "<leader>K", function()
local _ = require("ufo").peekFoldedLinesUnderCursor()
end, {
desc = "Preview folded maps",
})

View File

@@ -99,12 +99,12 @@ end
local virtual_env = function()
-- only show virtual env for Python
if vim.bo.filetype ~= 'python' then
if vim.bo.filetype ~= "python" then
return ""
end
local conda_env = os.getenv('CONDA_DEFAULT_ENV')
local venv_path = os.getenv('VIRTUAL_ENV')
local conda_env = os.getenv("CONDA_DEFAULT_ENV")
local venv_path = os.getenv("VIRTUAL_ENV")
if venv_path == nil then
if conda_env == nil then
@@ -113,17 +113,33 @@ local virtual_env = function()
return string.format(" %s (conda)", conda_env)
end
else
local venv_name = vim.fn.fnamemodify(venv_path, ':t')
local venv_name = vim.fn.fnamemodify(venv_path, ":t")
return string.format(" %s (venv)", venv_name)
end
end
local get_active_lsp = function()
local msg = "No Active Lsp"
local buf_ft = vim.api.nvim_get_option_value("filetype", {})
local clients = vim.lsp.get_clients { bufnr = 0 }
if next(clients) == nil then
return msg
end
for _, client in ipairs(clients) do
---@diagnostic disable-next-line: undefined-field
local filetypes = client.config.filetypes
if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then
return client.name
end
end
return msg
end
require("lualine").setup {
options = {
icons_enabled = true,
theme = "auto",
-- component_separators = { left = "", right = "" },
-- section_separators = { left = "", right = "" },
section_separators = "",
component_separators = "",
disabled_filetypes = {},
@@ -132,18 +148,29 @@ require("lualine").setup {
sections = {
lualine_a = { "mode" },
lualine_b = {
"branch",
{
"branch",
fmt = function(name, _)
-- truncate branch name in case the name is too long
return string.sub(name, 1, 20)
end,
},
{
virtual_env,
color = { fg = "black", bg = "#F1CA81" },
},
},
lualine_c = {
{
"filename",
symbols = {
readonly = "[🔒]",
},
},
{
"diff",
source = diff,
},
{
virtual_env,
color = { fg = 'black', bg = "#F1CA81" }
}
},
lualine_c = {
"filename",
{
ime_state,
color = { fg = "black", bg = "#f46868" },
@@ -152,13 +179,19 @@ require("lualine").setup {
spell,
color = { fg = "black", bg = "#a7c080" },
},
},
lualine_x = {
{
get_active_lsp,
icon = " LSP:",
},
{
"diagnostics",
sources = { "nvim_diagnostic" },
symbols = {error = '🆇 ', warn = '⚠️ ', info = ' ', hint = ''},
symbols = { error = "🆇 ", warn = "⚠️ ", info = " ", hint = "" },
},
},
lualine_x = {
lualine_y = {
"encoding",
{
"fileformat",
@@ -170,9 +203,6 @@ require("lualine").setup {
},
"filetype",
},
lualine_y = {
"location",
},
lualine_z = {
{
trailing_space,
@@ -182,6 +212,7 @@ require("lualine").setup {
mixed_indent,
color = "WarningMsg",
},
"progress"
},
},
inactive_sections = {

View File

@@ -1,5 +1,4 @@
local keymap = vim.keymap
local api = vim.api
local uv = vim.uv
-- Save key strokes (now we do not need to press shift to enter command mode).
@@ -215,6 +214,9 @@ keymap.set("n", "<leader>cb", function()
local cnt = 0
local blink_times = 7
local timer = uv.new_timer()
if timer == nil then
return
end
timer:start(0, 100, vim.schedule_wrap(function()
vim.cmd [[

View File

@@ -1,6 +1,7 @@
local utils = require("utils")
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
local plugin_dir = vim.fn.stdpath("data") .. "/lazy"
local lazypath = plugin_dir .. "/lazy.nvim"
if not vim.uv.fs_stat(lazypath) then
vim.fn.system {
@@ -108,8 +109,12 @@ local plugin_specs = {
"Yggdroot/LeaderF",
cmd = "Leaderf",
build = function()
local leaderf_path = plugin_dir .. "/LeaderF"
vim.opt.runtimepath:append(leaderf_path)
vim.cmd("runtime! plugin/leaderf.vim")
if not vim.g.is_win then
vim.cmd(":LeaderfInstallCExtension")
vim.cmd("LeaderfInstallCExtension")
end
end,
},
@@ -122,9 +127,10 @@ local plugin_specs = {
},
},
{
"lukas-reineke/headlines.nvim",
dependencies = "nvim-treesitter/nvim-treesitter",
config = true, -- or `opts = {}`
"MeanderingProgrammer/markdown.nvim",
main = "render-markdown",
opts = {},
dependencies = { "nvim-treesitter/nvim-treesitter", "nvim-tree/nvim-web-devicons" },
},
-- A list of colorscheme plugin you may want to try. Find what suits you.
{ "navarasu/onedark.nvim", lazy = true },
@@ -136,7 +142,13 @@ local plugin_specs = {
{ "catppuccin/nvim", name = "catppuccin", lazy = true },
{ "olimorris/onedarkpro.nvim", lazy = true },
{ "marko-cerovac/material.nvim", lazy = true },
{
"rockyzhang24/arctic.nvim",
dependencies = { "rktjmp/lush.nvim" },
name = "arctic",
branch = "v2",
},
{ "rebelot/kanagawa.nvim", lazy = true },
{ "nvim-tree/nvim-web-devicons", event = "VeryLazy" },
{
@@ -169,12 +181,41 @@ local plugin_specs = {
{
"lukas-reineke/indent-blankline.nvim",
event = "VeryLazy",
main = 'ibl',
main = "ibl",
config = function()
require("config.indent-blankline")
end,
},
{
"luukvbaal/statuscol.nvim",
opts = {},
config = function()
local builtin = require("statuscol.builtin")
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,
},
{
"kevinhwang91/nvim-ufo",
dependencies = "kevinhwang91/promise-async",
event = "VeryLazy",
opts = {},
init = function()
vim.o.foldcolumn = "1" -- '0' is not bad
vim.o.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value
vim.o.foldlevelstart = 99
vim.o.foldenable = true
end,
config = function()
require("config.nvim_ufo")
end,
},
-- Highlight URLs inside vim
{ "itchyny/vim-highlighturl", event = "VeryLazy" },
@@ -222,9 +263,9 @@ local plugin_specs = {
-- Automatic insertion and deletion of a pair of characters
{
'windwp/nvim-autopairs',
event = "InsertEnter",
config = true
"windwp/nvim-autopairs",
event = "InsertEnter",
config = true,
},
-- Comment plugin
@@ -316,7 +357,7 @@ local plugin_specs = {
{ "rhysd/committia.vim", lazy = true },
{
"sindrets/diffview.nvim"
"sindrets/diffview.nvim",
},
{
@@ -418,17 +459,26 @@ local plugin_specs = {
{
"glacambre/firenvim",
enabled = function()
if vim.g.is_win or vim.g.is_mac then
return true
end
return false
local result = vim.g.is_win or vim.g.is_mac
return result
end,
-- it seems that we can only call the firenvim function directly.
-- Using vim.fn or vim.cmd to call this function will fail.
build = function()
vim.fn["firenvim#install"](0)
end,
lazy = true,
},
local firenvim_path = plugin_dir .. "/firenvim"
vim.opt.runtimepath:append(firenvim_path)
vim.cmd("runtime! firenvim.vim")
-- macOS will reset the PATH when firenvim starts a nvim process, causing the PATH variable to change unexpectedly.
-- Here we are trying to get the correct PATH and use it for firenvim.
-- See also https://github.com/glacambre/firenvim/blob/master/TROUBLESHOOTING.md#make-sure-firenvims-path-is-the-same-as-neovims
local path_env = vim.env.PATH
local prologue = string.format('export PATH="%s"', path_env)
-- local prologue = "echo"
local cmd_str = string.format(":call firenvim#install(0, '%s')", prologue)
vim.cmd(cmd_str)
end,
},
-- Debugger plugin
{
"sakhnik/nvim-gdb",
@@ -477,7 +527,7 @@ local plugin_specs = {
-- file explorer
{
"nvim-tree/nvim-tree.lua",
keys = { "<space>s" },
event = "VeryLazy",
dependencies = { "nvim-tree/nvim-web-devicons" },
config = function()
require("config.nvim-tree")
@@ -494,13 +544,14 @@ local plugin_specs = {
},
}
-- configuration for lazy itself.
local lazy_opts = {
require("lazy").setup {
spec = plugin_specs,
ui = {
border = "rounded",
title = "Plugin Manager",
title_pos = "center",
},
rocks = {
enabled = false,
},
}
require("lazy").setup(plugin_specs, lazy_opts)

View File

@@ -11,9 +11,8 @@ function M.executable(name)
end
--- check whether a feature exists in Nvim
--- @feat: string
--- the feature name, like `nvim-0.7` or `unix`.
--- return: bool
--- @param feat string the feature name, like `nvim-0.7` or `unix`.
--- @return boolean
M.has = function(feat)
if fn.has(feat) == 1 then
return true
@@ -33,8 +32,9 @@ end
--- Generate random integers in the range [Low, High], inclusive,
--- adapted from https://stackoverflow.com/a/12739441/6064933
--- @low: the lower value for this range
--- @high: the upper value for this range
--- @param low integer the lower value for this range
--- @param high integer the upper value for this range
--- @return integer
function M.rand_int(low, high)
-- Use lua to generate random int, see also: https://stackoverflow.com/a/20157671/6064933
math.randomseed(os.time())
@@ -43,17 +43,11 @@ function M.rand_int(low, high)
end
--- Select a random element from a sequence/list.
--- @seq: the sequence to choose an element
--- @param seq any[] the sequence to choose an element
function M.rand_element(seq)
local idx = M.rand_int(1, #seq)
return seq[idx]
end
function M.add_pack(name)
local status, error = pcall(vim.cmd, "packadd " .. name)
return status
end
return M

View File

@@ -467,3 +467,6 @@ pylintrc
PYTHONPATH
Uvicorn
qpdf
Elasticsearch
kibana
submodule

View File

@@ -1,11 +1,14 @@
scriptencoding utf-8
" change fillchars for folding, vertical split, end of buffer, and message separator
set fillchars=fold:\ ,vert:\│,eob:\ ,msgsep:‾,diff:
set fillchars=fold:\ ,foldsep:\ ,foldopen:,foldclose:,vert:\│,eob:\ ,msgsep:‾,diff:
" Split window below/right when creating horizontal/vertical windows
set splitbelow splitright
" avoid the flickering when splitting window horizontal
set splitkeep=screen
" Time in milliseconds to wait for a mapped sequence to complete,
" see https://unix.stackexchange.com/q/36882/221410 for more info
set timeoutlen=500

View File

@@ -58,16 +58,6 @@ endif
" Only fuzzy-search files names
let g:Lf_DefaultMode = 'FullPath'
" Popup window settings
let w = float2nr(&columns * 0.8)
if w > 140
let g:Lf_PopupWidth = 140
else
let g:Lf_PopupWidth = w
endif
let g:Lf_PopupPosition = [0, float2nr((&columns - g:Lf_PopupWidth)/2)]
" Do not use version control tool to list files under a directory since
" submodules are not searched by default.
let g:Lf_UseVersionControlTool = 0