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

Compare commits

..

12 Commits

Author SHA1 Message Date
WombleWoo7547
22246a44b0
Merge 994b0d4c84dcf9e780d5887c7527a9ab04ef2d8b into 2383eb70755ce72e0375169051309c01dd33c480 2025-03-04 11:24:22 +02:00
jdhao
2383eb7075
switch back to nvim-cmp (#381) 2025-02-16 21:03:17 +01:00
jdhao
ab059bbb6d
use treesitter-textobjects instead (#380)
Note that we should keep the branch of nvim-treesitter and nvim-treesitter-textobjects the same. `main` is targeted at nightly neovim and `master` is for stable neovim. See also https://github.com/nvim-treesitter/nvim-treesitter/issues/4767
2025-02-16 20:15:41 +01:00
jdhao
93166c65a5
update colorscheme config (#379) 2025-02-16 19:52:34 +01:00
jdhao
4b8c490abd
fix gitsign word_diff flickering issue (#378)
I guess it is due to the reason that we are doing constant git fetch,
and somehow gitsigns word diff is affected.

Changing the gitsigns debounce or changing lualine refresh rate do not
seem to help. So gitsigns word diff is disabled.
2025-02-16 19:20:21 +01:00
jdhao
2242961925
Remove obsolete func (#377)
- remove function: SynGroup, HasColorscheme and
  GetGitBranch
- rewrite Inside_git_repo in lua instead
2025-02-16 19:13:24 +01:00
jdhao
ac421715d3
Lualine async git info (#376)
make everything async and non-blocking and also remove the branch name fetching. It is not needed if we use the @{upstream} notation.
2025-02-16 01:15:07 +01:00
jdhao
28bda349e8
Update lualine config (#375)
- components are re-ordered
- add new component to show git ahead/behind info
- remove some unused component
2025-02-15 18:58:15 +01:00
jdhao
ee4bce4671 enable mouse in normal mode 2025-02-15 14:36:24 +01:00
jdhao
7f53743255 remove automcd to go to last place
This conflicts with the fuzzy finder, if you grep for a word using fuzzy
finder and then press enter to go to the place, it does not work
anymore, it will go the line where you are last time.
2025-02-14 22:12:33 +01:00
jdhao
94497c0a73 snack config update 2025-02-13 00:41:35 +01:00
jdhao
70e9943aac update supported nvim version to latest stable
Update a few plugins
2025-02-12 23:32:21 +01:00
14 changed files with 209 additions and 143 deletions

View File

@ -10,7 +10,7 @@
<img alt="Windows" src="https://img.shields.io/badge/Windows-%23.svg?style=flat-square&logo=windows&color=0078D6&logoColor=white" /> <img alt="Windows" src="https://img.shields.io/badge/Windows-%23.svg?style=flat-square&logo=windows&color=0078D6&logoColor=white" />
</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.3-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/> <img src="https://img.shields.io/badge/Neovim-0.10.4-blueviolet.svg?style=flat-square&logo=Neovim&logoColor=green" alt="Neovim minimum version"/>
</a> </a>
<a href="https://github.com/jdhao/nvim-config/releases/latest"> <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" /> <img alt="Latest release" src="https://img.shields.io/github/v/release/jdhao/nvim-config" />
@ -21,9 +21,6 @@
<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.2">
<img src="https://img.shields.io/github/commits-since/jdhao/nvim-config/v0.10.2?style=flat-square" />
</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" />
</a> </a>

View File

@ -10,23 +10,6 @@ function! s:Single_quote(str) abort
return "'" . substitute(copy(a:str), "'", "''", 'g') . "'" return "'" . substitute(copy(a:str), "'", "''", 'g') . "'"
endfunction endfunction
" Check the syntax group in the current cursor position, see
" https://stackoverflow.com/q/9464844/6064933 and
" https://jordanelver.co.uk/blog/2015/05/27/working-with-vim-colorschemes/
function! utils#SynGroup() abort
if !exists('*synstack')
return
endif
echo map(synstack(line('.'), col('.')), 'synIDattr(v:val, "name")')
endfunction
" Check if a colorscheme exists in runtimepath.
" The following two functions are inspired by https://stackoverflow.com/a/5703164/6064933.
function! utils#HasColorscheme(name) abort
let l:pat = printf('colors/%s.vim', a:name)
return !empty(globpath(&runtimepath, l:pat))
endfunction
" Custom fold expr, adapted from https://vi.stackexchange.com/a/9094/15292 " Custom fold expr, adapted from https://vi.stackexchange.com/a/9094/15292
function! utils#VimFolds(lnum) abort function! utils#VimFolds(lnum) abort
" get content of current line and the line below " get content of current line and the line below
@ -146,27 +129,6 @@ function! utils#iso_time(timestamp) abort
endfunction endfunction
" Check if we are inside a Git repo.
function! utils#Inside_git_repo() abort
let res = system('git rev-parse --is-inside-work-tree')
if match(res, 'true') == -1
return v:false
else
" Manually trigger a special user autocmd InGitRepo (used lazyloading.
doautocmd User InGitRepo
return v:true
endif
endfunction
function! utils#GetGitBranch()
let l:res = systemlist('git rev-parse --abbrev-ref HEAD')[0]
if match(l:res, 'fatal') != -1
return ''
else
return l:res
endif
endfunction
" Redirect command output to a register for later processing. " Redirect command output to a register for later processing.
" Ref: https://stackoverflow.com/q/2573021/6064933 and https://unix.stackexchange.com/q/8101/221410 . " Ref: https://stackoverflow.com/q/2573021/6064933 and https://unix.stackexchange.com/q/8101/221410 .
function! utils#CaptureCommandOutput(command) abort function! utils#CaptureCommandOutput(command) abort

View File

@ -13,7 +13,7 @@ vim.loader.enable()
local utils = require("utils") local utils = require("utils")
local expected_version = "0.10.3" local expected_version = "0.10.4"
utils.is_compatible_version(expected_version) utils.is_compatible_version(expected_version)
local config_dir = vim.fn.stdpath("config") local config_dir = vim.fn.stdpath("config")

View File

@ -1,5 +1,4 @@
--- This module will load a random colorscheme on nvim startup process. --- This module will load a random colorscheme on nvim startup process.
local utils = require("utils") local utils = require("utils")
local M = {} local M = {}
@ -8,9 +7,14 @@ local M = {}
-- the same as the colorscheme name itself. -- the same as the colorscheme name itself.
M.colorscheme_conf = { M.colorscheme_conf = {
onedark = function() onedark = function()
vim.cmd([[colorscheme onedark]]) -- Lua
require("onedark").setup {
style = "darker",
}
require("onedark").load()
end, end,
edge = function() edge = function()
vim.g.edge_style = "default"
vim.g.edge_enable_italic = 1 vim.g.edge_enable_italic = 1
vim.g.edge_better_performance = 1 vim.g.edge_better_performance = 1
@ -26,13 +30,14 @@ M.colorscheme_conf = {
-- foreground option can be material, mix, or original -- foreground option can be material, mix, or original
vim.g.gruvbox_material_foreground = "original" vim.g.gruvbox_material_foreground = "original"
--background option can be hard, medium, soft --background option can be hard, medium, soft
vim.g.gruvbox_material_background = "medium" vim.g.gruvbox_material_background = "hard"
vim.g.gruvbox_material_enable_italic = 1 vim.g.gruvbox_material_enable_italic = 1
vim.g.gruvbox_material_better_performance = 1 vim.g.gruvbox_material_better_performance = 1
vim.cmd([[colorscheme gruvbox-material]]) vim.cmd([[colorscheme gruvbox-material]])
end, end,
everforest = function() everforest = function()
vim.g.everforest_background = "hard"
vim.g.everforest_enable_italic = 1 vim.g.everforest_enable_italic = 1
vim.g.everforest_better_performance = 1 vim.g.everforest_better_performance = 1
@ -50,10 +55,11 @@ M.colorscheme_conf = {
end, end,
onedarkpro = function() onedarkpro = function()
-- set colorscheme after options -- set colorscheme after options
vim.cmd("colorscheme onedark_vivid") -- onedark_vivid does not enough contrast
vim.cmd("colorscheme onedark_dark")
end, end,
material = function() material = function()
vim.g.material_style = "oceanic" vim.g.material_style = "darker"
vim.cmd("colorscheme material") vim.cmd("colorscheme material")
end, end,
arctic = function() arctic = function()
@ -67,6 +73,7 @@ M.colorscheme_conf = {
--- Use a random colorscheme from the pre-defined list of colorschemes. --- Use a random colorscheme from the pre-defined list of colorschemes.
M.rand_colorscheme = function() M.rand_colorscheme = function()
local colorscheme = utils.rand_element(vim.tbl_keys(M.colorscheme_conf)) local colorscheme = utils.rand_element(vim.tbl_keys(M.colorscheme_conf))
colorscheme = "gruvbox_material"
if not vim.tbl_contains(vim.tbl_keys(M.colorscheme_conf), colorscheme) then if not vim.tbl_contains(vim.tbl_keys(M.colorscheme_conf), colorscheme) then
local msg = "Invalid colorscheme: " .. colorscheme local msg = "Invalid colorscheme: " .. colorscheme

View File

@ -8,7 +8,7 @@ gs.setup {
topdelete = { text = "" }, topdelete = { text = "" },
changedelete = { text = "" }, changedelete = { text = "" },
}, },
word_diff = true, word_diff = false,
on_attach = function(bufnr) on_attach = function(bufnr)
local function map(mode, l, r, opts) local function map(mode, l, r, opts)
opts = opts or {} opts = opts or {}
@ -38,10 +38,10 @@ gs.setup {
end, { expr = true, desc = "previous hunk" }) end, { expr = true, desc = "previous hunk" })
-- Actions -- Actions
map("n", "<leader>hp", gs.preview_hunk) map("n", "<leader>hp", gs.preview_hunk, { desc = "preview hunk" })
map("n", "<leader>hb", function() map("n", "<leader>hb", function()
gs.blame_line { full = true } gs.blame_line { full = true }
end) end, { desc = "blame hunk" })
end, end,
} }

View File

@ -117,7 +117,7 @@ local custom_attach = function(client, bufnr)
end end
end end
local capabilities = require("cmp_nvim_lsp").default_capabilities() local capabilities = vim.lsp.protocol.make_client_capabilities()
-- required by nvim-ufo -- required by nvim-ufo
capabilities.textDocument.foldingRange = { capabilities.textDocument.foldingRange = {

View File

@ -1,5 +1,70 @@
local fn = vim.fn local fn = vim.fn
local git_status_cache = {}
local on_exit_fetch = function(result)
if result.code == 0 then
git_status_cache.fetch_success = true
end
end
local function handle_numeric_result(cache_key)
return function(result)
if result.code == 0 then
git_status_cache[cache_key] = tonumber(result.stdout:match("(%d+)")) or 0
end
end
end
local async_cmd = function(cmd_str, on_exit)
local cmd = vim.tbl_filter(function(element)
return element ~= ""
end, vim.split(cmd_str, " "))
vim.system(cmd, { text = true }, on_exit)
end
local async_git_status_update = function()
-- Fetch the latest changes from the remote repository (replace 'origin' if needed)
async_cmd("git fetch origin", on_exit_fetch)
if not git_status_cache.fetch_success then
return
end
-- Get the number of commits behind
-- the @{upstream} notation is inspired by post: https://www.reddit.com/r/neovim/comments/t48x5i/git_branch_aheadbehind_info_status_line_component/
-- note that here we should use double dots instead of triple dots
local behind_cmd_str = "git rev-list --count HEAD..@{upstream}"
async_cmd(behind_cmd_str, handle_numeric_result("behind_count"))
-- Get the number of commits ahead
local ahead_cmd_str = "git rev-list --count @{upstream}..HEAD"
async_cmd(ahead_cmd_str, handle_numeric_result("ahead_count"))
end
local function get_git_ahead_behind_info()
async_git_status_update()
local status = git_status_cache
if not status then
return ""
end
local msg = ""
if type(status.ahead_count) == "number" and status.ahead_count > 0 then
local ahead_str = string.format("↑[%d] ", status.ahead_count)
msg = msg .. ahead_str
end
if type(status.behind_count) == "number" and status.behind_count > 0 then
local behind_str = string.format("↓[%d] ", status.behind_count)
msg = msg .. behind_str
end
return msg
end
local function spell() local function spell()
if vim.o.spell then if vim.o.spell then
return string.format("[SPELL]") return string.format("[SPELL]")
@ -119,7 +184,7 @@ local virtual_env = function()
end end
local get_active_lsp = function() local get_active_lsp = function()
local msg = "No Active Lsp" local msg = "🚫"
local buf_ft = vim.api.nvim_get_option_value("filetype", {}) local buf_ft = vim.api.nvim_get_option_value("filetype", {})
local clients = vim.lsp.get_clients { bufnr = 0 } local clients = vim.lsp.get_clients { bufnr = 0 }
if next(clients) == nil then if next(clients) == nil then
@ -144,10 +209,18 @@ require("lualine").setup {
section_separators = "", section_separators = "",
disabled_filetypes = {}, disabled_filetypes = {},
always_divide_middle = true, always_divide_middle = true,
refresh = {
statusline = 500,
},
}, },
sections = { sections = {
lualine_a = { lualine_a = {
"mode", {
"filename",
symbols = {
readonly = "[🔒]",
},
},
}, },
lualine_b = { lualine_b = {
{ {
@ -159,21 +232,19 @@ require("lualine").setup {
color = { gui = "italic,bold" }, color = { gui = "italic,bold" },
}, },
{ {
virtual_env, get_git_ahead_behind_info,
color = { fg = "black", bg = "#F1CA81" }, color = { fg = "#E0C479" },
},
},
lualine_c = {
{
"filename",
symbols = {
readonly = "[🔒]",
},
}, },
{ {
"diff", "diff",
source = diff, source = diff,
}, },
{
virtual_env,
color = { fg = "black", bg = "#F1CA81" },
},
},
lualine_c = {
{ {
"%S", "%S",
color = { gui = "bold", fg = "cyan" }, color = { gui = "bold", fg = "cyan" },
@ -184,22 +255,29 @@ require("lualine").setup {
}, },
}, },
lualine_x = { lualine_x = {
{
ime_state,
color = { fg = "black", bg = "#f46868" },
},
{ {
get_active_lsp, get_active_lsp,
icon = " LSP:", icon = "📡",
}, },
{ {
"diagnostics", "diagnostics",
sources = { "nvim_diagnostic" }, sources = { "nvim_diagnostic" },
symbols = { error = "🆇 ", warn = "⚠️ ", info = " ", hint = "" }, symbols = { error = "🆇 ", warn = "⚠️ ", info = " ", hint = "" },
}, },
{
trailing_space,
color = "WarningMsg",
},
{
mixed_indent,
color = "WarningMsg",
},
}, },
lualine_y = { lualine_y = {
{ "encoding", fmt = string.upper }, {
"encoding",
fmt = string.upper,
},
{ {
"fileformat", "fileformat",
symbols = { symbols = {
@ -209,16 +287,12 @@ require("lualine").setup {
}, },
}, },
"filetype", "filetype",
{
ime_state,
color = { fg = "black", bg = "#f46868" },
},
}, },
lualine_z = { lualine_z = {
{
trailing_space,
color = "WarningMsg",
},
{
mixed_indent,
color = "WarningMsg",
},
"location", "location",
"progress", "progress",
}, },

View File

@ -0,0 +1,44 @@
require("nvim-treesitter.configs").setup {
textobjects = {
select = {
enable = true,
-- Automatically jump forward to textobj, similar to targets.vim
lookahead = true,
keymaps = {
-- You can use the capture groups defined in textobjects.scm
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
-- You can optionally set descriptions to the mappings (used in the desc parameter of
-- nvim_buf_set_keymap) which plugins like which-key display
["ic"] = { query = "@class.inner", desc = "Select inner part of a class region" },
},
-- You can choose the select mode (default is charwise 'v')
--
-- Can also be a function which gets passed a table with the keys
-- * query_string: eg '@function.inner'
-- * method: eg 'v' or 'o'
-- and should return the mode ('v', 'V', or '<c-v>') or a table
-- mapping query_strings to modes.
selection_modes = {
["@function.inner"] = "V", -- linewise
["@function.outer"] = "V", -- linewise
["@class.outer"] = "V", -- linewise
["@class.inner"] = "V", -- linewise
["@parameter.outer"] = "v", -- charwise
},
-- If you set this to `true` (default is `false`) then any textobject is
-- extended to include preceding or succeeding whitespace. Succeeding
-- whitespace has priority in order to act similarly to eg the built-in
-- `ap`.
--
-- Can also be a function which gets passed a table with the keys
-- * query_string: eg '@function.inner'
-- * selection_mode: eg 'v'
-- and should return true or false
include_surrounding_whitespace = false,
},
},
}

View File

@ -135,49 +135,6 @@ api.nvim_create_autocmd("TermOpen", {
end, 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 }) local number_toggle_group = api.nvim_create_augroup("numbertoggle", { clear = true })
api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "WinEnter" }, { api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "WinEnter" }, {
pattern = "*", pattern = "*",
@ -249,14 +206,16 @@ api.nvim_create_autocmd({ "VimEnter", "DirChanged" }, {
group = api.nvim_create_augroup("git_repo_check", { clear = true }), group = api.nvim_create_augroup("git_repo_check", { clear = true }),
pattern = "*", pattern = "*",
desc = "check if we are inside Git repo", desc = "check if we are inside Git repo",
command = "call utils#Inside_git_repo()", callback = function()
utils.inside_git_repo()
end,
}) })
-- ref: https://vi.stackexchange.com/a/169/15292 -- ref: https://vi.stackexchange.com/a/169/15292
api.nvim_create_autocmd("BufReadPre", { api.nvim_create_autocmd("BufReadPre", {
group = api.nvim_create_augroup("large_file", { clear = true }), group = api.nvim_create_augroup("large_file", { clear = true }),
pattern = "*", pattern = "*",
desc = "check if we are inside Git repo", desc = "optimize for large file",
callback = function(ev) callback = function(ev)
local file_size_limit = 524288 -- 0.5MB local file_size_limit = 524288 -- 0.5MB
local f = ev.file local f = ev.file

View File

@ -143,9 +143,6 @@ keymap.set("x", "c", '"_c')
-- Remove trailing whitespace characters -- Remove trailing whitespace characters
keymap.set("n", "<leader><space>", "<cmd>StripTrailingWhitespace<cr>", { desc = "remove trailing space" }) keymap.set("n", "<leader><space>", "<cmd>StripTrailingWhitespace<cr>", { desc = "remove trailing space" })
-- check the syntax group of current cursor position
keymap.set("n", "<leader>st", "<cmd>call utils#SynGroup()<cr>", { desc = "check syntax group" })
-- Copy entire buffer. -- Copy entire buffer.
keymap.set("n", "<leader>y", "<cmd>%yank<cr>", { desc = "yank entire buffer" }) keymap.set("n", "<leader>y", "<cmd>%yank<cr>", { desc = "yank entire buffer" })

View File

@ -23,7 +23,7 @@ end
local plugin_specs = { local plugin_specs = {
-- auto-completion engine -- auto-completion engine
{ {
"iguanacucumber/magazine.nvim", "hrsh7th/nvim-cmp",
name = "nvim-cmp", name = "nvim-cmp",
-- event = 'InsertEnter', -- event = 'InsertEnter',
event = "VeryLazy", event = "VeryLazy",
@ -39,6 +39,7 @@ local plugin_specs = {
require("config.nvim-cmp") require("config.nvim-cmp")
end, end,
}, },
{ {
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
event = { "BufRead", "BufNewFile" }, event = { "BufRead", "BufNewFile" },
@ -61,10 +62,14 @@ local plugin_specs = {
require("config.treesitter") require("config.treesitter")
end, end,
}, },
{
-- Python-related text object "nvim-treesitter/nvim-treesitter-textobjects",
{ "jeetsukumaran/vim-pythonsense", ft = { "python" } }, event = "VeryLazy",
branch = "master",
config = function()
require("config.treesitter-textobjects")
end,
},
{ "machakann/vim-swap", event = "VeryLazy" }, { "machakann/vim-swap", event = "VeryLazy" },
-- IDE for Lisp -- IDE for Lisp
@ -278,15 +283,9 @@ local plugin_specs = {
-- Multiple cursor plugin like Sublime Text? -- Multiple cursor plugin like Sublime Text?
-- 'mg979/vim-visual-multi' -- 'mg979/vim-visual-multi'
-- Autosave files on certain events
{ "907th/vim-auto-save", event = "InsertEnter" },
-- Show undo history visually -- Show undo history visually
{ "simnalamburt/vim-mundo", cmd = { "MundoToggle", "MundoShow" } }, { "simnalamburt/vim-mundo", cmd = { "MundoToggle", "MundoShow" } },
-- better UI for some nvim actions
{ "stevearc/dressing.nvim" },
-- Manage your yank history -- Manage your yank history
{ {
"gbprod/yanky.nvim", "gbprod/yanky.nvim",
@ -387,7 +386,7 @@ local plugin_specs = {
end end
return false return false
end, end,
build = "cd app && npm install", build = "cd app && npm install && git restore .",
ft = { "markdown" }, ft = { "markdown" },
}, },
@ -513,7 +512,23 @@ local plugin_specs = {
require("config.which-key") require("config.which-key")
end, end,
}, },
{
"folke/snacks.nvim",
priority = 1000,
lazy = false,
opts = {
-- more beautiful vim.ui.input
input = {
enabled = true,
win = {
relative = "cursor",
backdrop = true,
},
},
-- more beautiful vim.ui.select
picker = { enabled = true },
},
},
-- show and trim trailing whitespaces -- show and trim trailing whitespaces
{ "jdhao/whitespace.nvim", event = "VeryLazy" }, { "jdhao/whitespace.nvim", event = "VeryLazy" },

View File

@ -79,4 +79,18 @@ function M.is_compatible_version(expected_version)
return true return true
end end
--- check if we are inside a git repo
--- @return boolean
function M.inside_git_repo()
local result = vim.system({ "git", "rev-parse", "--is-inside-work-tree" }, { text = true }):wait()
if result.code ~= 0 then
return false
end
-- Manually trigger a special user autocmd InGitRepo (used lazyloading.
vim.cmd([[doautocmd User InGitRepo]])
return true
end
return M return M

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= set mouse=n
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

View File

@ -384,6 +384,3 @@ function! s:wilder_init() abort
echohl Error |echomsg "Wilder.nvim missing"| echohl None echohl Error |echomsg "Wilder.nvim missing"| echohl None
endtry endtry
endfunction endfunction
""""""""""""""""""""""""""""""vim-auto-save settings""""""""""""""""""""""""""""""
let g:auto_save = 1 " enable AutoSave on Vim startup