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

Compare commits

...

10 Commits

Author SHA1 Message Date
WombleWoo7547
4d186b2f06
Merge 994b0d4c84dcf9e780d5887c7527a9ab04ef2d8b into 7e706515a85f9a8931c8bdd14440ac9419405061 2024-12-20 18:18:44 +08: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
WombleWoo7547
994b0d4c84
Update documentation to mention WSL2 2024-10-06 09:21:22 +01:00
19 changed files with 146 additions and 107 deletions

View File

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

View File

@ -10,7 +10,7 @@ For a list of terminals that support true colors, see [here](https://github.com/
For macOS, we can use [kitty](https://sw.kovidgoyal.net/kitty/), [iterm2](https://www.iterm2.com/), [wezterm](https://wezfurlong.org/wezterm/) or [Alacritty](https://github.com/jwilm/alacritty). For macOS, we can use [kitty](https://sw.kovidgoyal.net/kitty/), [iterm2](https://www.iterm2.com/), [wezterm](https://wezfurlong.org/wezterm/) or [Alacritty](https://github.com/jwilm/alacritty).
If you ssh to Linux server on Windows, I recommend [wsltty](https://github.com/mintty/wsltty) and [Cygwin](https://www.cygwin.com/), If you ssh to Linux server on Windows, or use [WSL2 (Windows Subsystem for Linux)](https://learn.microsoft.com/en-us/windows/wsl/about) I recommend [wsltty](https://github.com/mintty/wsltty) and [Cygwin](https://www.cygwin.com/),
both of them use [mintty](https://github.com/mintty/mintty) as the terminal emulator. both of them use [mintty](https://github.com/mintty/mintty) as the terminal emulator.
For the latest version of Windows 10, you can also try [Windows Terminal](https://github.com/microsoft/terminal). For the latest version of Windows 10, you can also try [Windows Terminal](https://github.com/microsoft/terminal).

View File

@ -28,6 +28,6 @@ require("custom-autocmd")
-- all the user-defined mappings -- all the user-defined mappings
require("mappings") require("mappings")
-- all the plugins installed and their configurations -- all the plugins installed and their configurations
vim.cmd("source ".. vim.fs.joinpath(config_dir, "viml_conf/plugins.vim")) vim.cmd("source " .. vim.fs.joinpath(config_dir, "viml_conf/plugins.vim"))
-- colorscheme settings -- colorscheme settings
require("colorschemes") require("colorschemes")

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

@ -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

@ -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,
} }
@ -28,9 +38,9 @@ end, {
}) })
keymap.set("n", "<leader>gbr", 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 = "Git: 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

View File

@ -13,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)
@ -39,7 +39,9 @@ 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" })
@ -48,8 +50,8 @@ local custom_attach = function(client, bufnr)
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", "x"}, "<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, -- Uncomment code below to enable inlay hint from language server, some LSP server supports inlay hint,
@ -72,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
@ -91,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
@ -114,12 +117,12 @@ 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()
-- required by nvim-ufo -- required by nvim-ufo
capabilities.textDocument.foldingRange = { capabilities.textDocument.foldingRange = {
dynamicRegistration = false, dynamicRegistration = false,
lineFoldingOnly = true lineFoldingOnly = true,
} }
-- For what diagnostic is enabled in which type checking mode, check doc: -- For what diagnostic is enabled in which type checking mode, check doc:
@ -127,21 +130,21 @@ capabilities.textDocument.foldingRange = {
-- Currently, the pyright also has some issues displaying hover documentation: -- Currently, the pyright also has some issues displaying hover documentation:
-- https://www.reddit.com/r/neovim/comments/1gdv1rc/what_is_causeing_the_lsp_hover_docs_to_looks_like/ -- https://www.reddit.com/r/neovim/comments/1gdv1rc/what_is_causeing_the_lsp_hover_docs_to_looks_like/
if utils.executable('pyright') then if utils.executable("pyright") then
local new_capability = { local new_capability = {
-- this will remove some of the diagnostics that duplicates those from ruff, idea taken and adapted from -- 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 -- here: https://github.com/astral-sh/ruff-lsp/issues/384#issuecomment-1989619482
textDocument = { textDocument = {
publishDiagnostics = { publishDiagnostics = {
tagSupport = { tagSupport = {
valueSet = { 2 } valueSet = { 2 },
} },
}, },
hover = { hover = {
contentFormat = { "plaintext" }, contentFormat = { "plaintext" },
dynamicRegistration = true, dynamicRegistration = true,
}, },
} },
} }
local merged_capability = vim.tbl_deep_extend("force", capabilities, new_capability) local merged_capability = vim.tbl_deep_extend("force", capabilities, new_capability)
@ -177,25 +180,25 @@ if utils.executable('pyright') then
}, },
} }
else else
vim.notify("pyright 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("ruff") then if utils.executable("ruff") then
require('lspconfig').ruff.setup({ require("lspconfig").ruff.setup {
on_attach = custom_attach, on_attach = custom_attach,
capabilities = capabilities, capabilities = capabilities,
init_options = { init_options = {
-- the settings can be found here: https://docs.astral.sh/ruff/editors/settings/ -- the settings can be found here: https://docs.astral.sh/ruff/editors/settings/
settings = { settings = {
organizeImports = true, organizeImports = true,
} },
} },
}) }
end end
-- Disable ruff hover feature in favor of Pyright -- Disable ruff hover feature in favor of Pyright
vim.api.nvim_create_autocmd("LspAttach", { vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup('lsp_attach_disable_ruff_hover', { clear = true }), group = vim.api.nvim_create_augroup("lsp_attach_disable_ruff_hover", { clear = true }),
callback = function(args) callback = function(args)
local client = vim.lsp.get_client_by_id(args.data.client_id) local client = vim.lsp.get_client_by_id(args.data.client_id)
-- vim.print(client.name, client.server_capabilities) -- vim.print(client.name, client.server_capabilities)
@ -203,11 +206,11 @@ vim.api.nvim_create_autocmd("LspAttach", {
if client == nil then if client == nil then
return return
end end
if client.name == 'ruff' then if client.name == "ruff" then
client.server_capabilities.hoverProvider = false client.server_capabilities.hoverProvider = false
end end
end, end,
desc = 'LSP: Disable hover capability from Ruff', desc = "LSP: Disable hover capability from Ruff",
}) })
if utils.executable("ltex-ls") then if utils.executable("ltex-ls") then
@ -217,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
@ -267,8 +270,8 @@ if utils.executable("lua-language-server") then
version = "LuaJIT", version = "LuaJIT",
}, },
hint = { hint = {
enable = true enable = true,
} },
}, },
}, },
capabilities = capabilities, capabilities = capabilities,
@ -276,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

@ -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

@ -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

@ -165,8 +165,9 @@ api.nvim_create_autocmd("FileType", {
vim.schedule(function() vim.schedule(function()
local status, result = pcall(api.nvim_win_set_cursor, 0, mark_pos) local status, result = pcall(api.nvim_win_set_cursor, 0, mark_pos)
if not status then if not status then
api.nvim_err_writeln(string.format("Failed to resume cursor position. Context %s, error: %s", api.nvim_err_writeln(
vim.inspect(ev), result)) string.format("Failed to resume cursor position. Context %s, error: %s", vim.inspect(ev), result)
)
end end
end) end)
-- the following two ways also seem to work, -- the following two ways also seem to work,
@ -204,20 +205,18 @@ api.nvim_create_autocmd("ColorScheme", {
pattern = "*", pattern = "*",
desc = "Define or overrride some highlight groups", desc = "Define or overrride some highlight groups",
callback = function() callback = function()
vim.cmd([[ -- For yank highlight
" For yank highlight vim.api.nvim_set_hl(0, "YankColor", { fg = "#34495E", bg = "#2ECC71", ctermfg = 59, ctermbg = 41 })
highlight YankColor ctermfg=59 ctermbg=41 guifg=#34495E guibg=#2ECC71
" For cursor colors -- For cursor colors
highlight Cursor cterm=bold gui=bold guibg=#00c918 guifg=black vim.api.nvim_set_hl(0, "Cursor", { fg = "black", bg = "#00c918", bold = true })
highlight Cursor2 guifg=red guibg=red vim.api.nvim_set_hl(0, "Cursor2", { fg = "red", bg = "red" })
" For floating windows border highlight -- For floating windows border highlight
highlight FloatBorder guifg=LightGreen guibg=NONE vim.api.nvim_set_hl(0, "FloatBorder", { fg = "LightGreen" })
" highlight for matching parentheses -- highlight for matching parentheses
highlight MatchParen cterm=bold,underline gui=bold,underline vim.api.nvim_set_hl(0, "MatchParen", { bold = true, underline = true })
]])
end, end,
}) })
@ -226,14 +225,14 @@ api.nvim_create_autocmd("BufEnter", {
group = api.nvim_create_augroup("auto_close_win", { clear = true }), 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", desc = "Quit Nvim if we have only one window, and its filetype match our pattern",
callback = function(ev) callback = function(ev)
local quit_filetypes = {'qf', 'vista', 'NvimTree'} local quit_filetypes = { "qf", "vista", "NvimTree" }
local should_quit = true local should_quit = true
local tabwins = api.nvim_tabpage_list_wins(0) local tabwins = api.nvim_tabpage_list_wins(0)
for _, win in pairs(tabwins) do for _, win in pairs(tabwins) do
local buf = api.nvim_win_get_buf(win) local buf = api.nvim_win_get_buf(win)
local bf = fn.getbufvar(buf, '&filetype') local bf = fn.getbufvar(buf, "&filetype")
if fn.index(quit_filetypes, bf) == -1 then if fn.index(quit_filetypes, bf) == -1 then
should_quit = false should_quit = false
@ -243,14 +242,14 @@ api.nvim_create_autocmd("BufEnter", {
if should_quit then if should_quit then
vim.cmd("qall") vim.cmd("qall")
end end
end end,
}) })
api.nvim_create_autocmd({"VimEnter", "DirChanged"}, { 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()" command = "call utils#Inside_git_repo()",
}) })
-- ref: https://vi.stackexchange.com/a/169/15292 -- ref: https://vi.stackexchange.com/a/169/15292
@ -258,8 +257,8 @@ 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 = "check if we are inside Git repo",
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
if fn.getfsize(f) > file_size_limit or fn.getfsize(f) == -2 then if fn.getfsize(f) > file_size_limit or fn.getfsize(f) == -2 then
@ -271,5 +270,5 @@ api.nvim_create_autocmd("BufReadPre", {
vim.bo.bufhidden = "unload" vim.bo.bufhidden = "unload"
vim.bo.undolevels = -1 vim.bo.undolevels = -1
end end
end end,
}) })

View File

@ -1,28 +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")
------------------------------------------------------------------------ ------------------------------------------------------------------------
-- 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
@ -32,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

@ -542,7 +542,6 @@ local plugin_specs = {
}, },
{ {
"CopilotC-Nvim/CopilotChat.nvim", "CopilotC-Nvim/CopilotChat.nvim",
branch = "canary",
dependencies = { dependencies = {
{ "zbirenbaum/copilot.lua" }, -- or github/copilot.vim { "zbirenbaum/copilot.lua" }, -- or github/copilot.vim
{ "nvim-lua/plenary.nvim" }, -- for curl, log wrapper { "nvim-lua/plenary.nvim" }, -- for curl, log wrapper
@ -578,6 +577,17 @@ local plugin_specs = {
require("nvim-lightbulb").setup { autocmd = { enabled = true } } require("nvim-lightbulb").setup { autocmd = { enabled = true } }
end, 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 {
@ -589,5 +599,6 @@ require("lazy").setup {
}, },
rocks = { rocks = {
enabled = false, enabled = false,
hererocks = false,
}, },
} }

View File

@ -16,7 +16,7 @@ vim.api.nvim_create_user_command("CopyPath", function(context)
return return
end end
file_path = string.gsub(full_path, project_root, "<project-root>") file_path = vim.fn.substitute(full_path, project_root, "<project-root>", "g")
end end
if context["args"] == "absolute" then if context["args"] == "absolute" then

View File

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

View File

@ -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