feat: support java
fix: nvim tree filter .gitignore support: rust language
This commit is contained in:
@@ -15,9 +15,29 @@ require("nvim-tree").setup({
|
||||
enable = true,
|
||||
update_root = true,
|
||||
},
|
||||
filters = { custom = { ".git" } },
|
||||
filters = {
|
||||
custom = {},
|
||||
dotfiles = true,
|
||||
exclude = { ".golangci*", ".protolint*", ".gitignore" },
|
||||
},
|
||||
filesystem_watchers = {
|
||||
enable = true,
|
||||
debounce_delay = 10,
|
||||
},
|
||||
git = {
|
||||
enable = true,
|
||||
ignore = true,
|
||||
show_on_dirs = true,
|
||||
show_on_open_dirs = true,
|
||||
timeout = 400,
|
||||
},
|
||||
modified = {
|
||||
enable = false,
|
||||
show_on_dirs = true,
|
||||
show_on_open_dirs = true,
|
||||
},
|
||||
view = {
|
||||
width = 30,
|
||||
width = 40,
|
||||
mappings = {
|
||||
list = {
|
||||
{ key = "u", action = "dir_up" },
|
||||
@@ -25,7 +45,52 @@ require("nvim-tree").setup({
|
||||
},
|
||||
},
|
||||
renderer = {
|
||||
full_name = true,
|
||||
group_empty = true,
|
||||
indent_markers = {
|
||||
enable = true,
|
||||
},
|
||||
icons = {
|
||||
git_placement = "signcolumn",
|
||||
show = {
|
||||
file = true,
|
||||
folder = true,
|
||||
folder_arrow = true,
|
||||
git = true,
|
||||
},
|
||||
},
|
||||
},
|
||||
diagnostics = {
|
||||
enable = true,
|
||||
show_on_dirs = true,
|
||||
},
|
||||
actions = {
|
||||
change_dir = {
|
||||
enable = false,
|
||||
restrict_above_cwd = true,
|
||||
},
|
||||
open_file = {
|
||||
resize_window = true,
|
||||
window_picker = {
|
||||
chars = "aoeui",
|
||||
},
|
||||
},
|
||||
remove_file = {
|
||||
close_window = false,
|
||||
},
|
||||
},
|
||||
log = {
|
||||
enable = false,
|
||||
truncate = true,
|
||||
types = {
|
||||
all = false,
|
||||
config = false,
|
||||
copy_paste = false,
|
||||
diagnostics = false,
|
||||
git = false,
|
||||
profile = false,
|
||||
watcher = false,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
@@ -1,92 +1,92 @@
|
||||
require("gitsigns").setup({
|
||||
signs = {
|
||||
add = { text = "│" },
|
||||
change = { text = "│" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
untracked = { text = "┆" },
|
||||
},
|
||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||
watch_gitdir = {
|
||||
interval = 1000,
|
||||
follow_files = true,
|
||||
},
|
||||
attach_to_untracked = true,
|
||||
current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||
current_line_blame_opts = {
|
||||
virt_text = true,
|
||||
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
|
||||
delay = 1000,
|
||||
ignore_whitespace = false,
|
||||
},
|
||||
current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>",
|
||||
sign_priority = 6,
|
||||
update_debounce = 100,
|
||||
status_formatter = nil, -- Use default
|
||||
max_file_length = 40000, -- Disable if file is longer than this (in lines)
|
||||
preview_config = {
|
||||
-- Options passed to nvim_open_win
|
||||
border = "single",
|
||||
style = "minimal",
|
||||
relative = "cursor",
|
||||
row = 0,
|
||||
col = 1,
|
||||
},
|
||||
yadm = {
|
||||
enable = false,
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local gs = package.loaded.gitsigns
|
||||
signs = {
|
||||
add = { text = "│" },
|
||||
change = { text = "│" },
|
||||
delete = { text = "_" },
|
||||
topdelete = { text = "‾" },
|
||||
changedelete = { text = "~" },
|
||||
untracked = { text = "┆" },
|
||||
},
|
||||
signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
|
||||
numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
|
||||
linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
|
||||
word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
|
||||
watch_gitdir = {
|
||||
interval = 1000,
|
||||
follow_files = true,
|
||||
},
|
||||
attach_to_untracked = true,
|
||||
current_line_blame = true, -- Toggle with `:Gitsigns toggle_current_line_blame`
|
||||
current_line_blame_opts = {
|
||||
virt_text = true,
|
||||
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
|
||||
delay = 1000,
|
||||
ignore_whitespace = false,
|
||||
},
|
||||
current_line_blame_formatter = "<author>, <author_time:%Y-%m-%d> - <summary>",
|
||||
sign_priority = 6,
|
||||
update_debounce = 100,
|
||||
status_formatter = nil, -- Use default
|
||||
max_file_length = 40000, -- Disable if file is longer than this (in lines)
|
||||
preview_config = {
|
||||
-- Options passed to nvim_open_win
|
||||
border = "single",
|
||||
style = "minimal",
|
||||
relative = "cursor",
|
||||
row = 0,
|
||||
col = 1,
|
||||
},
|
||||
yadm = {
|
||||
enable = false,
|
||||
},
|
||||
on_attach = function(bufnr)
|
||||
local gs = package.loaded.gitsigns
|
||||
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
local function map(mode, l, r, opts)
|
||||
opts = opts or {}
|
||||
opts.buffer = bufnr
|
||||
vim.keymap.set(mode, l, r, opts)
|
||||
end
|
||||
|
||||
-- Navigation
|
||||
map("n", "]c", function()
|
||||
if vim.wo.diff then
|
||||
return "]c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.next_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { expr = true })
|
||||
-- Navigation
|
||||
map("n", "]c", function()
|
||||
if vim.wo.diff then
|
||||
return "]c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.next_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { expr = true })
|
||||
|
||||
map("n", "[c", function()
|
||||
if vim.wo.diff then
|
||||
return "[c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.prev_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { expr = true })
|
||||
map("n", "[c", function()
|
||||
if vim.wo.diff then
|
||||
return "[c"
|
||||
end
|
||||
vim.schedule(function()
|
||||
gs.prev_hunk()
|
||||
end)
|
||||
return "<Ignore>"
|
||||
end, { expr = true })
|
||||
|
||||
-- Actions
|
||||
map({ "n", "v" }, "<leader>hs", ":Gitsigns stage_hunk<CR>")
|
||||
map({ "n", "v" }, "<leader>hr", ":Gitsigns reset_hunk<CR>")
|
||||
map("n", "<leader>hS", gs.stage_buffer)
|
||||
map("n", "<leader>hu", gs.undo_stage_hunk)
|
||||
map("n", "<leader>hR", gs.reset_buffer)
|
||||
map("n", "<leader>hp", gs.preview_hunk)
|
||||
map("n", "<leader>hb", function()
|
||||
gs.blame_line({ full = true })
|
||||
end)
|
||||
map("n", "<leader>tb", gs.toggle_current_line_blame)
|
||||
map("n", "<leader>hd", gs.diffthis)
|
||||
map("n", "<leader>hD", function()
|
||||
gs.diffthis("~")
|
||||
end)
|
||||
map("n", "<leader>td", gs.toggle_deleted)
|
||||
-- Actions
|
||||
map({ "n", "v" }, "<leader>hs", ":Gitsigns stage_hunk<CR>")
|
||||
map({ "n", "v" }, "<leader>hr", ":Gitsigns reset_hunk<CR>")
|
||||
map("n", "<leader>hS", gs.stage_buffer)
|
||||
map("n", "<leader>hu", gs.undo_stage_hunk)
|
||||
map("n", "<leader>hR", gs.reset_buffer)
|
||||
map("n", "<leader>hp", gs.preview_hunk)
|
||||
map("n", "<leader>hb", function()
|
||||
gs.blame_line({ full = true })
|
||||
end)
|
||||
map("n", "<leader>tb", gs.toggle_current_line_blame)
|
||||
map("n", "<leader>hd", gs.diffthis)
|
||||
map("n", "<leader>hD", function()
|
||||
gs.diffthis("~")
|
||||
end)
|
||||
map("n", "<leader>td", gs.toggle_deleted)
|
||||
|
||||
-- Text object
|
||||
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>")
|
||||
end,
|
||||
-- Text object
|
||||
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>")
|
||||
end,
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
require("go").setup()
|
||||
local format_sync_grp = vim.api.nvim_create_augroup("GoImport", {})
|
||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
||||
vim.api.nvim_create_autocmd("InsertLeavePre", {
|
||||
pattern = "*.go",
|
||||
callback = function()
|
||||
require("go.format").goimport()
|
||||
|
||||
51
lua/plugins/java.lua
Normal file
51
lua/plugins/java.lua
Normal file
@@ -0,0 +1,51 @@
|
||||
function IsFileExist(filename)
|
||||
local f = io.open(filename)
|
||||
if f ~= nil then
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function IsDirectoryExist(dirname)
|
||||
return os.rename(dirname, dirname) and true or false
|
||||
end
|
||||
|
||||
local jdtlspath = os.getenv("HOME") .. "/.jdtls"
|
||||
if vim.loop.os_uname().sysname == "Windows" then
|
||||
jdtlspath = os.getenv("HOME") .. "\\.jdtls"
|
||||
end
|
||||
|
||||
-- 创建目录
|
||||
if not IsFileExist(jdtlspath) then
|
||||
os.execute("mkdir " .. jdtlspath)
|
||||
end
|
||||
|
||||
-- 检测文件存在否
|
||||
if not IsDirectoryExist(jdtlspath .. "/bin/jdtls") then
|
||||
print("download jdtls binary")
|
||||
local download_ret = os.execute(
|
||||
"wget https://download.eclipse.org/jdtls/milestones/1.23.0/jdt-language-server-1.23.0-202304271346.tar.gz -P /tmp"
|
||||
)
|
||||
if download_ret ~= 0 then
|
||||
vim.notify("download jdtls binary failed")
|
||||
return
|
||||
end
|
||||
vim.notify("download jdtls success")
|
||||
local tar_ret = os.execute("tar xvzf /tmp/jdt-language-server-1.23.0-202304271346.tar.gz -C " .. jdtlspath)
|
||||
if tar_ret ~= 0 then
|
||||
vim.notify("extract jdtls file failed")
|
||||
return
|
||||
end
|
||||
end
|
||||
|
||||
local lombok_path = jdtlspath .. "/bin/lombok.jar"
|
||||
-- 下载lombok
|
||||
if not IsFileExist(jdtlspath .. "/bin/lombok.jar") then
|
||||
vim.notify("download lombok.jar")
|
||||
local download_ret = os.execute("wget https://projectlombok.org/downloads/lombok.jar -P " .. jdtlspath .. "/bin")
|
||||
if download_ret ~= 0 then
|
||||
vim.notify("download lombok failed")
|
||||
end
|
||||
end
|
||||
@@ -3,6 +3,19 @@ require("lspsaga").setup({
|
||||
colors = require("catppuccin.groups.integrations.lsp_saga").custom_colors(),
|
||||
kind = require("catppuccin.groups.integrations.lsp_saga").custom_kind(),
|
||||
},
|
||||
diagnostic = {
|
||||
show_code_action = true,
|
||||
},
|
||||
code_action = {
|
||||
num_shortcut = true,
|
||||
show_server_name = false,
|
||||
extend_gitsigns = true,
|
||||
keys = {
|
||||
-- string | table type
|
||||
quit = "q",
|
||||
exec = "<CR>",
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
require("lsp-colors").setup({
|
||||
|
||||
@@ -9,28 +9,64 @@ require("mason").setup({
|
||||
})
|
||||
|
||||
require("mason-lspconfig").setup({
|
||||
ensure_installed = {
|
||||
"clangd",
|
||||
"emmet_ls",
|
||||
"cmake",
|
||||
"gradle_ls",
|
||||
"kotlin_language_server",
|
||||
"lua_ls",
|
||||
"rust_analyzer",
|
||||
"gopls",
|
||||
"golangci_lint_ls",
|
||||
"tsserver",
|
||||
"volar",
|
||||
"taplo",
|
||||
"yamlls",
|
||||
"jsonls",
|
||||
"jdtls",
|
||||
"bashls",
|
||||
"cssls",
|
||||
"dockerls",
|
||||
"docker_compose_language_service",
|
||||
"eslint",
|
||||
"html",
|
||||
},
|
||||
ensure_installed = {},
|
||||
automatic_installation = true,
|
||||
})
|
||||
|
||||
require("mason-tool-installer").setup({
|
||||
-- a list of all tools you want to ensure are installed upon
|
||||
-- start; they should be the names Mason uses for each tool
|
||||
ensure_installed = {
|
||||
"bash-language-server",
|
||||
"clangd",
|
||||
"cmake-language-server",
|
||||
"css-lsp",
|
||||
"docker-compose-language-service",
|
||||
"dockerfile-language-server",
|
||||
"emmet-ls",
|
||||
"eslint-lsp",
|
||||
"goimports",
|
||||
"goimports-reviser",
|
||||
"golangci-lint",
|
||||
"golangci-lint-langserver",
|
||||
"golines",
|
||||
"gopls",
|
||||
"gradle-language-server",
|
||||
"html-lsp",
|
||||
"jdtls",
|
||||
"json-lsp",
|
||||
"kotlin-language-server",
|
||||
"lua-language-server",
|
||||
"rust-analyzer",
|
||||
"rustfmt",
|
||||
"stylua",
|
||||
"taplo",
|
||||
"typescript-language-server",
|
||||
"vue-language-server",
|
||||
"yaml-language-server",
|
||||
"yamlfmt",
|
||||
"yamllint",
|
||||
},
|
||||
-- if set to true this will check each tool for updates. If updates
|
||||
-- are available the tool will be updated. This setting does not
|
||||
-- affect :MasonToolsUpdate or :MasonToolsInstall.
|
||||
-- Default: false
|
||||
auto_update = true,
|
||||
-- automatically install / update on startup. If set to false nothing
|
||||
-- will happen on startup. You can use :MasonToolsInstall or
|
||||
-- :MasonToolsUpdate to install tools and check for updates.
|
||||
-- Default: true
|
||||
run_on_start = true,
|
||||
-- set a delay (in ms) before the installation starts. This is only
|
||||
-- effective if run_on_start is set to true.
|
||||
-- e.g.: 5000 = 5 second delay, 10000 = 10 second delay, etc...
|
||||
-- Default: 0
|
||||
start_delay = 15000, -- 3 second delay
|
||||
-- Only attempt to install if 'debounce_hours' number of hours has
|
||||
-- elapsed since the last time Neovim was started. This stores a
|
||||
-- timestamp in a file named stdpath('data')/mason-tool-installer-debounce.
|
||||
-- This is only relevant when you are using 'run_on_start'. It has no
|
||||
-- effect when running manually via ':MasonToolsInstall' etc....
|
||||
-- Default: nil
|
||||
debounce_hours = 24, -- at least 5 hours between attempts to install/update
|
||||
})
|
||||
|
||||
@@ -1 +1,5 @@
|
||||
require("notify").setup({
|
||||
background_colour = "#000000",
|
||||
})
|
||||
|
||||
vim.notify = require("notify")
|
||||
|
||||
@@ -1,10 +1,12 @@
|
||||
local null_ls = require("null-ls")
|
||||
|
||||
null_ls.setup({
|
||||
debounce = 500,
|
||||
sources = {
|
||||
null_ls.builtins.formatting.stylua,
|
||||
null_ls.builtins.formatting.gofmt,
|
||||
null_ls.builtins.formatting.eslint_d,
|
||||
null_ls.builtins.formatting.yamlfmt,
|
||||
null_ls.builtins.formatting.protolint,
|
||||
-- 诊断
|
||||
null_ls.builtins.diagnostics.eslint_d,
|
||||
|
||||
12
lua/plugins/rust.lua
Normal file
12
lua/plugins/rust.lua
Normal file
@@ -0,0 +1,12 @@
|
||||
local rt = require("rust-tools")
|
||||
|
||||
rt.setup({
|
||||
server = {
|
||||
on_attach = function(_, bufnr)
|
||||
-- Hover actions
|
||||
vim.keymap.set("n", "<C-space>", rt.hover_actions.hover_actions, { buffer = bufnr })
|
||||
-- Code action groups
|
||||
vim.keymap.set("n", "<Leader>a", rt.code_action_group.code_action_group, { buffer = bufnr })
|
||||
end,
|
||||
},
|
||||
})
|
||||
Reference in New Issue
Block a user