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

Compare commits

..

6 Commits

Author SHA1 Message Date
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
17 changed files with 137 additions and 102 deletions

View File

@ -4,4 +4,4 @@ set formatoptions-=r
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

@ -28,6 +28,6 @@ require("custom-autocmd")
-- all the user-defined mappings
require("mappings")
-- 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
require("colorschemes")

View File

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

View File

@ -59,17 +59,17 @@ conf.center = {
},
}
dashboard.setup({
theme = 'doom',
shortcut_type = 'number',
config = conf
})
dashboard.setup {
theme = "doom",
shortcut_type = "number",
config = conf,
}
api.nvim_create_autocmd("FileType", {
pattern = "dashboard",
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", "e", ":enew<CR>", { buffer = true, silent = true })
end
end,
})

View File

@ -5,16 +5,26 @@ gitlinker.setup {
callbacks = {
["dev.azure.com"] = function(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.lend == nil then
url_data.lend = url_data.lstart
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
return url
end
end,
},
mappings = nil,
}
@ -28,9 +38,9 @@ end, {
})
keymap.set("n", "<leader>gbr", function()
gitlinker.get_repo_url({
action_callback = gitlinker.actions.open_in_browser
})
gitlinker.get_repo_url {
action_callback = gitlinker.actions.open_in_browser,
}
end, {
silent = true,
desc = "Git: browse repo in browser",

View File

@ -45,13 +45,13 @@ gs.setup {
end,
}
vim.api.nvim_create_autocmd('ColorScheme', {
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "*",
callback = function()
vim.cmd [[
vim.cmd([[
hi GitSignsChangeInline gui=reverse
hi GitSignsAddInline 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.
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)
api.nvim_err_writeln(msg_part)
return

View File

@ -13,10 +13,10 @@ local set_qflist = function(buf_num, severity)
diagnostics = diagnostic.get(buf_num, { severity = severity })
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
vim.cmd[[copen]]
vim.cmd([[copen]])
end
local custom_attach = function(client, bufnr)
@ -39,7 +39,9 @@ local custom_attach = function(client, bufnr)
-- this puts diagnostics from opened files to quickfix
map("n", "<space>qw", diagnostic.setqflist, { desc = "put window diagnostics to qf" })
-- 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>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" })
@ -48,8 +50,8 @@ local custom_attach = function(client, bufnr)
end, { desc = "list workspace folder" })
-- Set some key bindings conditional on server capabilities
if client.server_capabilities.documentFormattingProvider then
map({"n", "x"}, "<space>f", vim.lsp.buf.format, { desc = "format code" })
if client.server_capabilities.documentFormattingProvider and client.name ~= "lua_ls" then
map({ "n", "x" }, "<space>f", vim.lsp.buf.format, { desc = "format code" })
end
-- 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
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])
and #diagnostic.get() > 0
if
(cursor_pos[1] ~= vim.b.diagnostics_pos[1] or cursor_pos[2] ~= vim.b.diagnostics_pos[2])
and #diagnostic.get() > 0
then
diagnostic.open_float(nil, float_opts)
end
@ -91,20 +94,20 @@ local custom_attach = function(client, bufnr)
]])
local gid = api.nvim_create_augroup("lsp_document_highlight", { clear = true })
api.nvim_create_autocmd("CursorHold" , {
api.nvim_create_autocmd("CursorHold", {
group = gid,
buffer = bufnr,
callback = function ()
callback = function()
lsp.buf.document_highlight()
end
end,
})
api.nvim_create_autocmd("CursorMoved" , {
api.nvim_create_autocmd("CursorMoved", {
group = gid,
buffer = bufnr,
callback = function ()
callback = function()
lsp.buf.clear_references()
end
end,
})
end
@ -114,12 +117,12 @@ local custom_attach = function(client, bufnr)
end
end
local capabilities = require('cmp_nvim_lsp').default_capabilities()
local capabilities = require("cmp_nvim_lsp").default_capabilities()
-- required by nvim-ufo
capabilities.textDocument.foldingRange = {
dynamicRegistration = false,
lineFoldingOnly = true
dynamicRegistration = false,
lineFoldingOnly = true,
}
-- 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:
-- 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 = {
-- 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 }
}
valueSet = { 2 },
},
},
hover = {
contentFormat = { "plaintext" },
dynamicRegistration = true,
},
}
},
}
local merged_capability = vim.tbl_deep_extend("force", capabilities, new_capability)
@ -177,25 +180,25 @@ if utils.executable('pyright') then
},
}
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
if utils.executable("ruff") then
require('lspconfig').ruff.setup({
require("lspconfig").ruff.setup {
on_attach = custom_attach,
capabilities = capabilities,
init_options = {
-- the settings can be found here: https://docs.astral.sh/ruff/editors/settings/
settings = {
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 }),
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)
@ -203,11 +206,11 @@ vim.api.nvim_create_autocmd("LspAttach", {
if client == nil then
return
end
if client.name == 'ruff' then
if client.name == "ruff" then
client.server_capabilities.hoverProvider = false
end
end,
desc = 'LSP: Disable hover capability from Ruff',
desc = "LSP: Disable hover capability from Ruff",
})
if utils.executable("ltex-ls") then
@ -217,11 +220,11 @@ if utils.executable("ltex-ls") then
filetypes = { "text", "plaintex", "tex", "markdown" },
settings = {
ltex = {
language = "en"
language = "en",
},
},
flags = { debounce_text_changes = 300 },
}
}
end
if utils.executable("clangd") then
@ -267,8 +270,8 @@ if utils.executable("lua-language-server") then
version = "LuaJIT",
},
hint = {
enable = true
}
enable = true,
},
},
},
capabilities = capabilities,
@ -276,10 +279,10 @@ if utils.executable("lua-language-server") then
end
-- Change diagnostic signs.
fn.sign_define("DiagnosticSignError", { text = '🆇', texthl = "DiagnosticSignError" })
fn.sign_define("DiagnosticSignWarn", { text = '⚠️', texthl = "DiagnosticSignWarn" })
fn.sign_define("DiagnosticSignInfo", { text = '', texthl = "DiagnosticSignInfo" })
fn.sign_define("DiagnosticSignHint", { text = '', texthl = "DiagnosticSignHint" })
fn.sign_define("DiagnosticSignError", { text = "🆇", texthl = "DiagnosticSignError" })
fn.sign_define("DiagnosticSignWarn", { text = "⚠️", texthl = "DiagnosticSignWarn" })
fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
-- global config for diagnostic
diagnostic.config {

View File

@ -140,7 +140,7 @@ require("lualine").setup {
options = {
icons_enabled = true,
theme = "auto",
component_separators = { left = '', right = '' },
component_separators = { left = "", right = "" },
section_separators = "",
disabled_filetypes = {},
always_divide_middle = true,
@ -175,8 +175,8 @@ require("lualine").setup {
source = diff,
},
{
ime_state,
color = { fg = "black", bg = "#f46868" },
"%S",
color = { gui = "bold", fg = "cyan" },
},
{
spell,
@ -184,6 +184,10 @@ require("lualine").setup {
},
},
lualine_x = {
{
ime_state,
color = { fg = "black", bg = "#f46868" },
},
{
get_active_lsp,
icon = " LSP:",

View File

@ -4,7 +4,7 @@ hop.setup {
case_insensitive = true,
char2_fallback_key = "<CR>",
quit_key = "<Esc>",
match_mappings = { "zh_sc" }
match_mappings = { "zh_sc" },
}
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 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
highlight = {
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 {
preset = "modern",
icons = {
mappings = false
}
mappings = false,
},
}

View File

@ -165,8 +165,9 @@ api.nvim_create_autocmd("FileType", {
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))
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,
@ -204,20 +205,18 @@ api.nvim_create_autocmd("ColorScheme", {
pattern = "*",
desc = "Define or overrride some highlight groups",
callback = function()
vim.cmd([[
" For yank highlight
highlight YankColor ctermfg=59 ctermbg=41 guifg=#34495E guibg=#2ECC71
-- For yank highlight
vim.api.nvim_set_hl(0, "YankColor", { fg = "#34495E", bg = "#2ECC71", ctermfg = 59, ctermbg = 41 })
" For cursor colors
highlight Cursor cterm=bold gui=bold guibg=#00c918 guifg=black
highlight Cursor2 guifg=red guibg=red
-- 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
highlight FloatBorder guifg=LightGreen guibg=NONE
-- For floating windows border highlight
vim.api.nvim_set_hl(0, "FloatBorder", { fg = "LightGreen" })
" highlight for matching parentheses
highlight MatchParen cterm=bold,underline gui=bold,underline
]])
-- highlight for matching parentheses
vim.api.nvim_set_hl(0, "MatchParen", { bold = true, underline = true })
end,
})
@ -226,14 +225,14 @@ api.nvim_create_autocmd("BufEnter", {
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 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')
local bf = fn.getbufvar(buf, "&filetype")
if fn.index(quit_filetypes, bf) == -1 then
should_quit = false
@ -243,14 +242,14 @@ api.nvim_create_autocmd("BufEnter", {
if should_quit then
vim.cmd("qall")
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 }),
pattern = "*",
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
@ -258,8 +257,8 @@ 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
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
@ -271,5 +270,5 @@ api.nvim_create_autocmd("BufReadPre", {
vim.bo.bufhidden = "unload"
vim.bo.undolevels = -1
end
end
end,
})

View File

@ -1,28 +1,28 @@
local fn = vim.fn
local api = vim.api
local utils = require('utils')
local utils = require("utils")
------------------------------------------------------------------------
-- custom variables --
------------------------------------------------------------------------
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_mac = utils.has("macunix") and true or false
vim.g.is_mac = utils.has("macunix") and true or false
vim.g.logging_level = "info"
------------------------------------------------------------------------
-- builtin variables --
------------------------------------------------------------------------
vim.g.loaded_perl_provider = 0 -- Disable perl provider
vim.g.loaded_ruby_provider = 0 -- Disable ruby provider
vim.g.loaded_node_provider = 0 -- Disable node provider
vim.g.did_install_default_menus = 1 -- do not load menu
vim.g.loaded_perl_provider = 0 -- Disable perl provider
vim.g.loaded_ruby_provider = 0 -- Disable ruby provider
vim.g.loaded_node_provider = 0 -- Disable node provider
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
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
vim.g.python3_host_prog = fn.exepath("python3")
end
@ -32,18 +32,18 @@ else
end
-- Custom mapping <leader> (see `:h mapleader` for more info)
vim.g.mapleader = ','
vim.g.mapleader = ","
-- Enable highlighting for lua HERE doc inside vim script
vim.g.vimsyn_embed = 'l'
vim.g.vimsyn_embed = "l"
-- Use English as main language
vim.cmd [[language en_US.UTF-8]]
vim.cmd([[language en_US.UTF-8]])
-- Disable loading certain plugins
-- 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.netrw_liststyle = 3
if vim.g.is_win then

View File

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

View File

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

View File

@ -179,3 +179,5 @@ set diffopt+=linematch:60
set nowrap " do no wrap
set noruler
set showcmdloc=statusline