neovim: rewrite config
This commit is contained in:
@@ -1 +0,0 @@
|
|||||||
vim.wo.colorcolumn = ""
|
|
||||||
@@ -1,2 +0,0 @@
|
|||||||
vim.wo.colorcolumn = "50"
|
|
||||||
vim.cmd("setlocal spell")
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
vim.bo.tabstop = 4
|
|
||||||
vim.bo.shiftwidth = 4
|
|
||||||
vim.bo.expandtab = false
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
vim.bo.tabstop = 2
|
|
||||||
vim.bo.shiftwidth = 2
|
|
||||||
vim.bo.expandtab = false
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
vim.cmd("setlocal spell")
|
|
||||||
@@ -1,3 +0,0 @@
|
|||||||
vim.bo.tabstop = 2
|
|
||||||
vim.bo.shiftwidth = 2
|
|
||||||
vim.bo.expandtab = false
|
|
||||||
@@ -7,11 +7,3 @@ vim.api.nvim_create_autocmd("TextYankPost", {
|
|||||||
vim.highlight.on_yank({ timeout = 200 })
|
vim.highlight.on_yank({ timeout = 200 })
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd("BufEnter", {
|
|
||||||
pattern = "*",
|
|
||||||
group = group,
|
|
||||||
callback = function()
|
|
||||||
vim.cmd(":checktime")
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
local git = require("daniil.git")
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("GitShowCommit", function()
|
|
||||||
local commit = git.get_commit_hash_for_current_line()
|
|
||||||
|
|
||||||
vim.cmd(":Git show " .. commit)
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("OpenUnsavedBuffers", function()
|
|
||||||
require("daniil.utils").open_unsaved_buffers()
|
|
||||||
end, {})
|
|
||||||
|
|
||||||
vim.api.nvim_create_user_command("ClearQuickfixList", function()
|
|
||||||
vim.fn.setqflist({})
|
|
||||||
end, {})
|
|
||||||
3
neovim/.config/nvim/after/plugin/commands.lua
Normal file
3
neovim/.config/nvim/after/plugin/commands.lua
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
vim.api.nvim_create_user_command("ClearQuickfixList", function()
|
||||||
|
vim.fn.setqflist({})
|
||||||
|
end, {})
|
||||||
@@ -1,100 +0,0 @@
|
|||||||
local function on_attach(bufnr)
|
|
||||||
local api = require("nvim-tree.api")
|
|
||||||
|
|
||||||
local function opts(desc)
|
|
||||||
return {
|
|
||||||
desc = "nvim-tree: " .. desc,
|
|
||||||
buffer = bufnr,
|
|
||||||
noremap = true,
|
|
||||||
silent = true,
|
|
||||||
nowait = true,
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.keymap.set("n", "tn", api.node.open.tab, opts("tabnew"))
|
|
||||||
vim.keymap.set("n", "l", api.node.open.edit, opts("edit"))
|
|
||||||
vim.keymap.set("n", "<CR>", api.node.open.edit, opts("edit ENTER"))
|
|
||||||
vim.keymap.set("n", "@", api.tree.change_root_to_node, opts("change root"))
|
|
||||||
vim.keymap.set("n", "<C-v>", api.node.open.vertical, opts("vertical split"))
|
|
||||||
vim.keymap.set("n", "<C-h>", api.node.open.horizontal, opts("horizontal split"))
|
|
||||||
vim.keymap.set("n", "a", api.fs.create, opts("create file"))
|
|
||||||
vim.keymap.set("n", "d", api.fs.remove, opts("remove file"))
|
|
||||||
vim.keymap.set("n", "r", api.fs.rename, opts("rename file"))
|
|
||||||
vim.keymap.set("n", "R", api.tree.reload, opts("reload"))
|
|
||||||
vim.keymap.set("n", "x", api.fs.cut, opts("cut"))
|
|
||||||
vim.keymap.set("n", "y", api.fs.copy.filename, opts("copy filename"))
|
|
||||||
vim.keymap.set("n", "Y", api.fs.copy.relative_path, opts("copy relative path file"))
|
|
||||||
vim.keymap.set("n", "W", api.tree.collapse_all, opts("collapse all"))
|
|
||||||
vim.keymap.set("n", "I", api.tree.toggle_gitignore_filter, opts("toggle git ignored files"))
|
|
||||||
vim.keymap.set("n", "H", api.tree.toggle_hidden_filter, opts("toggle hidden files"))
|
|
||||||
vim.keymap.set("n", "<TAB>", api.node.open.preview, opts("preview node"))
|
|
||||||
vim.keymap.set("n", "F", api.live_filter.clear, opts("clear filter"))
|
|
||||||
vim.keymap.set("n", "f", api.live_filter.start, opts("filter"))
|
|
||||||
vim.keymap.set("n", "q", api.tree.close, opts("quit"))
|
|
||||||
vim.keymap.set("n", "p", api.fs.paste, opts("paste"))
|
|
||||||
end
|
|
||||||
|
|
||||||
require("nvim-tree").setup({
|
|
||||||
disable_netrw = true,
|
|
||||||
hijack_netrw = true,
|
|
||||||
hijack_cursor = true,
|
|
||||||
open_on_tab = false,
|
|
||||||
update_cwd = true,
|
|
||||||
auto_reload_on_write = true,
|
|
||||||
reload_on_bufenter = true,
|
|
||||||
update_focused_file = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
view = {
|
|
||||||
width = 30,
|
|
||||||
adaptive_size = false,
|
|
||||||
side = "left",
|
|
||||||
preserve_window_proportions = true,
|
|
||||||
centralize_selection = true,
|
|
||||||
},
|
|
||||||
renderer = {
|
|
||||||
add_trailing = true,
|
|
||||||
group_empty = false,
|
|
||||||
highlight_git = true,
|
|
||||||
indent_markers = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
icons = {
|
|
||||||
show = {
|
|
||||||
git = true,
|
|
||||||
file = true,
|
|
||||||
folder = true,
|
|
||||||
},
|
|
||||||
glyphs = {
|
|
||||||
default = "",
|
|
||||||
symlink = "",
|
|
||||||
git = {
|
|
||||||
unstaged = "U",
|
|
||||||
staged = "S",
|
|
||||||
unmerged = "M",
|
|
||||||
renamed = "R",
|
|
||||||
untracked = "N",
|
|
||||||
deleted = "D",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
filters = {
|
|
||||||
custom = { "^.git$" },
|
|
||||||
},
|
|
||||||
actions = {
|
|
||||||
open_file = {
|
|
||||||
resize_window = true,
|
|
||||||
quit_on_open = true,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
git = {
|
|
||||||
ignore = true,
|
|
||||||
},
|
|
||||||
diagnostics = {
|
|
||||||
enable = true,
|
|
||||||
show_on_dirs = true,
|
|
||||||
icons = { hint = "", info = "", warning = "", error = "" },
|
|
||||||
},
|
|
||||||
on_attach = on_attach,
|
|
||||||
})
|
|
||||||
22
neovim/.config/nvim/after/plugin/git.lua
Normal file
22
neovim/.config/nvim/after/plugin/git.lua
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
local actions = require("gitsigns.actions")
|
||||||
|
|
||||||
|
require("gitsigns").setup({
|
||||||
|
signcolumn = true,
|
||||||
|
attach_to_untracked = false,
|
||||||
|
current_line_blame = true,
|
||||||
|
current_line_blame_opts = {
|
||||||
|
delay = 1000,
|
||||||
|
},
|
||||||
|
current_line_blame_formatter_opts = {
|
||||||
|
relative_time = true,
|
||||||
|
},
|
||||||
|
on_attach = function(bufnr)
|
||||||
|
vim.keymap.set("n", "gn", actions.next_hunk)
|
||||||
|
vim.keymap.set("n", "gN", actions.prev_hunk)
|
||||||
|
vim.keymap.set("n", "gr", actions.reset_hunk)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>gg", ":Git<CR>")
|
||||||
|
vim.keymap.set("n", "gh", ":diffget //2<CR>")
|
||||||
|
vim.keymap.set("n", "gl", ":diffget //3<CR>")
|
||||||
@@ -2,32 +2,12 @@ local mason = require("mason")
|
|||||||
local lsp_installer = require("mason-lspconfig")
|
local lsp_installer = require("mason-lspconfig")
|
||||||
local lspconfig = require("lspconfig")
|
local lspconfig = require("lspconfig")
|
||||||
local null_ls = require("null-ls")
|
local null_ls = require("null-ls")
|
||||||
local util = require("lspconfig").util
|
local util = lspconfig.util
|
||||||
local u = require("daniil.utils")
|
|
||||||
|
|
||||||
local formatting = null_ls.builtins.formatting
|
local formatting = null_ls.builtins.formatting
|
||||||
local diagnostics = null_ls.builtins.diagnostics
|
|
||||||
|
|
||||||
mason.setup()
|
mason.setup()
|
||||||
|
lsp_installer.setup()
|
||||||
lsp_installer.setup({
|
|
||||||
ensure_installed = {
|
|
||||||
"bashls",
|
|
||||||
"cssmodules_ls",
|
|
||||||
"dockerls",
|
|
||||||
"tailwindcss",
|
|
||||||
"tsserver",
|
|
||||||
"vimls",
|
|
||||||
"cssls",
|
|
||||||
"html",
|
|
||||||
"jsonls",
|
|
||||||
"svelte",
|
|
||||||
"emmet_ls",
|
|
||||||
"eslint",
|
|
||||||
"gopls",
|
|
||||||
},
|
|
||||||
automatic_installation = true,
|
|
||||||
})
|
|
||||||
|
|
||||||
null_ls.setup({
|
null_ls.setup({
|
||||||
sources = {
|
sources = {
|
||||||
@@ -43,41 +23,38 @@ null_ls.setup({
|
|||||||
pattern = "*",
|
pattern = "*",
|
||||||
group = group,
|
group = group,
|
||||||
callback = function()
|
callback = function()
|
||||||
u.lsp_format()
|
vim.lsp.buf.format()
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Other formats that work weird with null_ls
|
local function on_attach(client, bufnr)
|
||||||
local group = vim.api.nvim_create_augroup("OtherLspFormatting", { clear = true })
|
local opts = { buffer = bufnr, remap = false }
|
||||||
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
||||||
pattern = { "*.svelte" },
|
vim.keymap.set("n", "gd", ts.lsp_definitions, opts)
|
||||||
group = group,
|
vim.keymap.set("n", "gr", ts.lsp_references, opts)
|
||||||
callback = function()
|
vim.keymap.set("n", "K", vim.lsp.buf.hover, opts)
|
||||||
vim.lsp.buf.format()
|
vim.keymap.set("n", "<F2>", vim.lsp.buf.rename, opts)
|
||||||
end,
|
vim.keymap.set("n", "<leader>.", vim.lsp.buf.code_action, opts)
|
||||||
})
|
vim.keymap.set("v", "<leader>.", vim.lsp.buf.range_code_action, opts)
|
||||||
|
vim.keymap.set({ "i", "n" }, "<C-u>", vim.lsp.buf.signature_help, opts)
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>ee", function()
|
||||||
|
vim.diagnostic.open_float(nil, { focus = false, scope = "line" })
|
||||||
|
end, opts)
|
||||||
|
vim.keymap.set("n", "<leader>en", function()
|
||||||
|
vim.diagnostic.goto_next({ float = false })
|
||||||
|
end)
|
||||||
|
vim.keymap.set("n", "<leader>eN", function()
|
||||||
|
vim.diagnostic.goto_prev({ float = false })
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
local capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities())
|
||||||
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
capabilities.textDocument.completion.completionItem.snippetSupport = true
|
||||||
|
|
||||||
local lsps_with_disabled_formatting = { "tsserver", "gopls", "jsonls", "html", "sumneko_lua" }
|
|
||||||
|
|
||||||
local on_attach = function(client, bufnr)
|
|
||||||
if vim.tbl_contains(lsps_with_disabled_formatting, client.name) then
|
|
||||||
client.server_capabilities.document_formatting = false
|
|
||||||
client.server_capabilities.document_range_formatting = false
|
|
||||||
client.server_capabilities.documentFormattingProvider = false
|
|
||||||
end
|
|
||||||
|
|
||||||
if client.name == "tailwindcss" then
|
|
||||||
require("tailwindcss-colors").buf_attach(bufnr)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local servers = lsp_installer.get_installed_servers()
|
local servers = lsp_installer.get_installed_servers()
|
||||||
|
|
||||||
for _, server in ipairs(servers) do
|
for _, server in ipairs(servers) do
|
||||||
local opts = {
|
local opts = {
|
||||||
capabilities = capabilities,
|
capabilities = capabilities,
|
||||||
@@ -89,41 +66,6 @@ for _, server in ipairs(servers) do
|
|||||||
opts.filetypes = { "html", "css", "scss", "javascripreact", "typescriptreact", "astro" }
|
opts.filetypes = { "html", "css", "scss", "javascripreact", "typescriptreact", "astro" }
|
||||||
end
|
end
|
||||||
|
|
||||||
if server == "jsonls" then
|
|
||||||
opts.filetypes = { "json", "jsonc", "yaml" }
|
|
||||||
opts.settings = {
|
|
||||||
json = {
|
|
||||||
format = {
|
|
||||||
enable = false,
|
|
||||||
},
|
|
||||||
schemas = require("schemastore").json.schemas({
|
|
||||||
select = {
|
|
||||||
".eslintrc",
|
|
||||||
"package.json",
|
|
||||||
"tsconfig.json",
|
|
||||||
"prettierrc.json",
|
|
||||||
"babelrc.json",
|
|
||||||
"Vercel",
|
|
||||||
"cypress.json",
|
|
||||||
"GitHub Action",
|
|
||||||
"GitHub Workflow",
|
|
||||||
"lerna.json",
|
|
||||||
"openapi.json",
|
|
||||||
".postcssrc",
|
|
||||||
"prisma.yml",
|
|
||||||
"Swagger API 2.0",
|
|
||||||
"huskyrc",
|
|
||||||
"jsdoc",
|
|
||||||
".commitlintrc",
|
|
||||||
"docker-compose.yml",
|
|
||||||
".yarnrc.yml",
|
|
||||||
"swcrc",
|
|
||||||
},
|
|
||||||
}),
|
|
||||||
},
|
|
||||||
}
|
|
||||||
end
|
|
||||||
|
|
||||||
if server == "tsserver" then
|
if server == "tsserver" then
|
||||||
opts.settings = {
|
opts.settings = {
|
||||||
tsserver = {
|
tsserver = {
|
||||||
|
|||||||
@@ -1,127 +0,0 @@
|
|||||||
local lualine = require("lualine")
|
|
||||||
local devicons = require("nvim-web-devicons")
|
|
||||||
|
|
||||||
local mode = {
|
|
||||||
"mode",
|
|
||||||
}
|
|
||||||
|
|
||||||
local branch = {
|
|
||||||
"branch",
|
|
||||||
icons_enabled = true,
|
|
||||||
icon = "",
|
|
||||||
}
|
|
||||||
|
|
||||||
local diagnostics = {
|
|
||||||
"diagnostics",
|
|
||||||
sections = { "error", "warn", "info", "hint" },
|
|
||||||
always_visible = true,
|
|
||||||
}
|
|
||||||
|
|
||||||
local relative_filename = {
|
|
||||||
"filename",
|
|
||||||
path = 1,
|
|
||||||
}
|
|
||||||
|
|
||||||
local filetype = {
|
|
||||||
function()
|
|
||||||
local filetype = vim.bo.filetype
|
|
||||||
local filename = vim.fn.expand("%:t")
|
|
||||||
local fileext = vim.fn.expand("%:e")
|
|
||||||
local icon = devicons.get_icon(filename, fileext)
|
|
||||||
|
|
||||||
if filetype == "fugitive" then
|
|
||||||
icon = devicons.get_icons().git.icon
|
|
||||||
end
|
|
||||||
|
|
||||||
if not icon then
|
|
||||||
return filetype
|
|
||||||
end
|
|
||||||
|
|
||||||
return icon .. " " .. filetype
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local filename = {
|
|
||||||
function()
|
|
||||||
local filetype = vim.bo.filetype
|
|
||||||
local filename = vim.fn.expand("%:t")
|
|
||||||
local fileext = vim.fn.expand("%:e")
|
|
||||||
local icon = devicons.get_icon(filename, fileext)
|
|
||||||
local modified = vim.bo.modified
|
|
||||||
|
|
||||||
if filetype == "fugitive" then
|
|
||||||
icon = devicons.get_icons().git.icon
|
|
||||||
end
|
|
||||||
|
|
||||||
if not icon then
|
|
||||||
return filename
|
|
||||||
end
|
|
||||||
|
|
||||||
if modified then
|
|
||||||
return icon .. " " .. filename .. " " .. "[+]"
|
|
||||||
end
|
|
||||||
|
|
||||||
return icon .. " " .. filename
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local fileformat = {
|
|
||||||
function()
|
|
||||||
return "[" .. vim.bo.fileformat .. "]"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local tabstop = {
|
|
||||||
function()
|
|
||||||
local tabstop = vim.bo.tabstop
|
|
||||||
local expandtab = vim.bo.expandtab
|
|
||||||
|
|
||||||
local method = expandtab == true and "spaces" or "tabs"
|
|
||||||
local format = tabstop .. " " .. method
|
|
||||||
|
|
||||||
return format
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local location = {
|
|
||||||
function()
|
|
||||||
local line = vim.fn.line(".")
|
|
||||||
local total_lines = vim.api.nvim_buf_line_count(0)
|
|
||||||
|
|
||||||
local percent = math.floor(line / total_lines * 100)
|
|
||||||
|
|
||||||
return line .. "/" .. total_lines .. " (" .. percent .. "%%)"
|
|
||||||
end,
|
|
||||||
}
|
|
||||||
|
|
||||||
local diff = {
|
|
||||||
"diff",
|
|
||||||
}
|
|
||||||
|
|
||||||
lualine.setup({
|
|
||||||
options = {
|
|
||||||
component_separators = "",
|
|
||||||
section_separators = "",
|
|
||||||
globalstatus = true,
|
|
||||||
disabled_filetypes = {
|
|
||||||
winbar = {
|
|
||||||
"NvimTree",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
winbar = {
|
|
||||||
lualine_a = { filename },
|
|
||||||
},
|
|
||||||
inactive_winbar = {
|
|
||||||
lualine_a = { filename },
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { mode },
|
|
||||||
lualine_b = { branch },
|
|
||||||
lualine_c = { diagnostics, relative_filename },
|
|
||||||
lualine_x = { diff, location, tabstop, fileformat },
|
|
||||||
lualine_y = { filetype },
|
|
||||||
lualine_z = {},
|
|
||||||
},
|
|
||||||
extensions = { "nvim-tree", "fugitive", "quickfix" },
|
|
||||||
})
|
|
||||||
@@ -1,49 +1,40 @@
|
|||||||
local opt = vim.opt
|
vim.opt.tabstop = 2
|
||||||
|
vim.opt.softtabstop = 2
|
||||||
|
vim.opt.shiftwidth = 2
|
||||||
|
vim.opt.expandtab = true
|
||||||
|
vim.opt.autoindent = true
|
||||||
|
|
||||||
-- 2 tabs converted to spaces + autoindentation
|
vim.opt.guicursor = "a:blinkoff0"
|
||||||
opt.tabstop = 2
|
vim.opt.mouse = ""
|
||||||
opt.shiftwidth = 2
|
vim.opt.number = true
|
||||||
opt.expandtab = true
|
vim.opt.relativenumber = true
|
||||||
opt.autoindent = true
|
vim.opt.splitbelow = true
|
||||||
|
vim.opt.splitright = true
|
||||||
|
vim.opt.signcolumn = "yes"
|
||||||
|
vim.opt.laststatus = 3
|
||||||
|
vim.opt.cmdheight = 0
|
||||||
|
vim.opt.showcmd = false
|
||||||
|
vim.opt.cursorline = true
|
||||||
|
vim.opt.clipboard = "unnamedplus"
|
||||||
|
vim.opt.autoread = true
|
||||||
|
vim.opt.colorcolumn = "80"
|
||||||
|
vim.opt.showtabline = 2
|
||||||
|
vim.opt.wrap = true
|
||||||
|
vim.opt.encoding = "utf-8"
|
||||||
|
vim.opt.updatetime = 300
|
||||||
|
vim.opt.fillchars:append({ eob = " " })
|
||||||
|
vim.opt.scrolloff = 5
|
||||||
|
vim.opt.redrawtime = 4000
|
||||||
|
vim.opt.showmode = false
|
||||||
|
vim.opt.hidden = true
|
||||||
|
|
||||||
-- What the **** is this
|
vim.opt.swapfile = false
|
||||||
opt.shortmess = "filnxtToOFc"
|
vim.opt.writebackup = false
|
||||||
|
|
||||||
-- Create splits like a normal human being
|
vim.opt.smartcase = true
|
||||||
opt.splitbelow = true
|
vim.opt.ignorecase = true
|
||||||
opt.splitright = true
|
|
||||||
|
|
||||||
-- Other settings
|
vim.opt.list = true
|
||||||
opt.termguicolors = true
|
vim.opt.listchars = { multispace = "·", tab = ">~" }
|
||||||
opt.number = true
|
|
||||||
opt.relativenumber = true
|
|
||||||
opt.wrap = true
|
|
||||||
opt.swapfile = false
|
|
||||||
opt.hidden = true
|
|
||||||
opt.writebackup = false
|
|
||||||
opt.encoding = "utf-8"
|
|
||||||
opt.updatetime = 300
|
|
||||||
opt.mouse = ""
|
|
||||||
opt.cursorline = true
|
|
||||||
opt.clipboard = "unnamedplus"
|
|
||||||
opt.signcolumn = "yes"
|
|
||||||
opt.fillchars:append({ eob = " " })
|
|
||||||
opt.showtabline = 2
|
|
||||||
opt.showcmd = false
|
|
||||||
opt.guicursor = "a:blinkoff0"
|
|
||||||
opt.fileformat = "unix"
|
|
||||||
opt.fileformats = { "unix", "dos", "mac" }
|
|
||||||
opt.laststatus = 3
|
|
||||||
opt.cmdheight = 0
|
|
||||||
opt.smartcase = true
|
|
||||||
opt.ignorecase = true
|
|
||||||
opt.scrolloff = 5
|
|
||||||
opt.colorcolumn = "120"
|
|
||||||
opt.autoread = true
|
|
||||||
opt.showmode = false
|
|
||||||
opt.redrawtime = 4000
|
|
||||||
opt.list = true
|
|
||||||
opt.listchars = { multispace = "·", tab = ">~" }
|
|
||||||
|
|
||||||
opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
|
vim.cmd("colorscheme gruvbox-material")
|
||||||
opt.undofile = true
|
|
||||||
|
|||||||
@@ -1,32 +1,11 @@
|
|||||||
local ts = require("telescope.builtin")
|
|
||||||
local u = require("daniil.utils")
|
|
||||||
local git = require("daniil.git")
|
|
||||||
local ls = require("luasnip")
|
|
||||||
|
|
||||||
-- General keymaps
|
|
||||||
vim.keymap.set("n", "<C-c>", ":nohl<CR>")
|
|
||||||
|
|
||||||
-- Quickfix and location list remaps
|
|
||||||
vim.keymap.set("n", "<C-q>", u.toggle_qflist)
|
|
||||||
vim.keymap.set("n", "<leader>q", u.toggle_locationlist)
|
|
||||||
|
|
||||||
-- Disable different keys and commands
|
-- Disable different keys and commands
|
||||||
vim.keymap.set({ "n", "i", "v" }, "<PageDown>", "<nop>")
|
vim.keymap.set({ "n", "i", "v" }, "<PageDown>", "<nop>")
|
||||||
vim.keymap.set({ "n", "i", "v" }, "<PageUp>", "<nop>")
|
vim.keymap.set({ "n", "i", "v" }, "<PageUp>", "<nop>")
|
||||||
vim.keymap.set({ "n", "i", "v" }, "<F1>", "<nop>")
|
vim.keymap.set({ "n", "i", "v" }, "<F1>", "<nop>")
|
||||||
vim.keymap.set("n", "q:", "<nop>")
|
vim.keymap.set("n", "q:", "<nop>")
|
||||||
|
|
||||||
-- Move focus between splits
|
vim.keymap.set("n", "<leader><leader>", vim.cmd.Ex)
|
||||||
vim.keymap.set("n", "<leader>h", "<C-w>h")
|
vim.keymap.set("n", "<C-c>", vim.cmd.nohl)
|
||||||
vim.keymap.set("n", "<leader>l", "<C-w>l")
|
|
||||||
vim.keymap.set("n", "<leader>j", "<C-w>j")
|
|
||||||
vim.keymap.set("n", "<leader>k", "<C-w>k")
|
|
||||||
|
|
||||||
-- Resize splits
|
|
||||||
vim.keymap.set("n", "<C-h>", ":vert :res -10<CR>")
|
|
||||||
vim.keymap.set("n", "<C-l>", ":vert :res +10<CR>")
|
|
||||||
vim.keymap.set("n", "<C-j>", ":res -5<CR>")
|
|
||||||
vim.keymap.set("n", "<C-k>", ":res +5<CR>")
|
|
||||||
|
|
||||||
-- Move lines easily
|
-- Move lines easily
|
||||||
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
vim.keymap.set("v", "K", ":m '<-2<CR>gv=gv")
|
||||||
@@ -41,93 +20,7 @@ vim.keymap.set("n", "Th", ":split | :term<CR>")
|
|||||||
vim.keymap.set("n", "Tv", ":vs | :term<CR>")
|
vim.keymap.set("n", "Tv", ":vs | :term<CR>")
|
||||||
|
|
||||||
-- Tabs
|
-- Tabs
|
||||||
vim.keymap.set("n", "H", ":tabprev<CR>")
|
|
||||||
vim.keymap.set("n", "L", ":tabnext<CR>")
|
|
||||||
vim.keymap.set("n", "tn", ":tabnew<CR>")
|
vim.keymap.set("n", "tn", ":tabnew<CR>")
|
||||||
vim.keymap.set("n", "tN", ":-tabnew<CR>")
|
vim.keymap.set("n", "tN", ":-tabnew<CR>")
|
||||||
vim.keymap.set("n", "tf", function()
|
vim.keymap.set("n", "H", ":tabprev<CR>")
|
||||||
require("daniil.tabs").find_tab()
|
vim.keymap.set("n", "L", ":tabnext<CR>")
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<A-h>", ":-tabmove<CR>")
|
|
||||||
vim.keymap.set("n", "<A-l>", ":+tabmove<CR>")
|
|
||||||
|
|
||||||
-- Nvim Tree
|
|
||||||
vim.keymap.set("n", "<leader><leader>", ":NvimTreeToggle<CR>")
|
|
||||||
|
|
||||||
-- Telescope
|
|
||||||
vim.keymap.set("n", "<leader>f", function()
|
|
||||||
ts.find_files({ hidden = true })
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>p", function()
|
|
||||||
ts.builtin()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>b", function()
|
|
||||||
ts.buffers()
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- LSP
|
|
||||||
vim.keymap.set("n", "gd", function()
|
|
||||||
ts.lsp_definitions()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "gr", function()
|
|
||||||
ts.lsp_references()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "K", function()
|
|
||||||
vim.lsp.buf.hover()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<F2>", function()
|
|
||||||
vim.lsp.buf.rename()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>.", function()
|
|
||||||
vim.lsp.buf.code_action()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("v", "<leader>.", function()
|
|
||||||
vim.lsp.buf.range_code_action()
|
|
||||||
end)
|
|
||||||
vim.keymap.set({ "i", "n" }, "<C-;>", vim.lsp.buf.signature_help)
|
|
||||||
|
|
||||||
-- Diagnostics
|
|
||||||
vim.keymap.set("n", "<leader>ee", function()
|
|
||||||
vim.diagnostic.open_float(nil, { focus = false, scope = "line" })
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>ey", function()
|
|
||||||
u.copy_diagnostic_message()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>en", function()
|
|
||||||
vim.diagnostic.goto_next({ float = false })
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>eN", function()
|
|
||||||
vim.diagnostic.goto_prev({ float = false })
|
|
||||||
end)
|
|
||||||
|
|
||||||
-- Git
|
|
||||||
vim.keymap.set("n", "<leader>gg", ":G<CR>")
|
|
||||||
vim.keymap.set("n", "<leader>go", function()
|
|
||||||
git.open_commit_on_github()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "gh", ":diffget //2<CR>")
|
|
||||||
vim.keymap.set("n", "gl", ":diffget //3<CR>")
|
|
||||||
|
|
||||||
-- Luasnip
|
|
||||||
local function next_choice()
|
|
||||||
if ls.jumpable(1) then
|
|
||||||
ls.jump(1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
local function prev_choice()
|
|
||||||
if ls.jumpable(-1) then
|
|
||||||
ls.jump(-1)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
vim.keymap.set("i", "<C-l>", next_choice, { noremap = true, silent = true })
|
|
||||||
vim.keymap.set("s", "<C-l>", next_choice, { noremap = true, silent = true })
|
|
||||||
vim.keymap.set("i", "<C-h>", prev_choice, { noremap = true, silent = true })
|
|
||||||
vim.keymap.set("s", "<C-h>", prev_choice, { noremap = true, silent = true })
|
|
||||||
|
|
||||||
-- Undotree
|
|
||||||
vim.keymap.set("n", "<leader>u", function()
|
|
||||||
vim.cmd([[
|
|
||||||
UndotreeToggle
|
|
||||||
UndotreeFocus
|
|
||||||
]])
|
|
||||||
end)
|
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
local ls = require("luasnip")
|
|
||||||
local s, i = ls.s, ls.insert_node
|
|
||||||
local fmt = require("luasnip.extras.fmt").fmt
|
|
||||||
|
|
||||||
-- NOTE: this is not working right now, i need to RTFM
|
|
||||||
ls.filetype_extend("javascript", { "javascriptreact", "javascript.jsx" })
|
|
||||||
ls.filetype_extend("typescript", { "typescriptreact", "typescript.jsx" })
|
|
||||||
|
|
||||||
local clg = s(
|
|
||||||
"clg",
|
|
||||||
fmt([[console.log({});]], {
|
|
||||||
i(0),
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
ls.add_snippets("javascript", { clg })
|
|
||||||
ls.add_snippets("typescript", { clg })
|
|
||||||
ls.add_snippets("svelte", { clg })
|
|
||||||
|
|
||||||
require("luasnip.loaders.from_vscode").lazy_load({
|
|
||||||
include = { "go" },
|
|
||||||
})
|
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
local telescope = require("telescope")
|
local telescope = require("telescope")
|
||||||
local actions = require("telescope.actions")
|
local actions = require("telescope.actions")
|
||||||
local layout_actions = require("telescope.actions.layout")
|
local layout_actions = require("telescope.actions.layout")
|
||||||
|
local builtin = require("telescope.builtin")
|
||||||
|
|
||||||
telescope.setup({
|
telescope.setup({
|
||||||
defaults = {
|
defaults = {
|
||||||
@@ -14,9 +15,6 @@ telescope.setup({
|
|||||||
["<C-p>"] = layout_actions.toggle_preview,
|
["<C-p>"] = layout_actions.toggle_preview,
|
||||||
},
|
},
|
||||||
n = {
|
n = {
|
||||||
["<C-d>"] = function(prompt_bufnr)
|
|
||||||
actions.delete_buffer(prompt_bufnr)
|
|
||||||
end,
|
|
||||||
["<C-p>"] = layout_actions.toggle_preview,
|
["<C-p>"] = layout_actions.toggle_preview,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@@ -28,19 +26,9 @@ telescope.setup({
|
|||||||
lsp_definitions = {
|
lsp_definitions = {
|
||||||
initial_mode = "normal",
|
initial_mode = "normal",
|
||||||
},
|
},
|
||||||
buffers = {
|
find_files = {
|
||||||
mappings = {
|
hidden = true,
|
||||||
i = {
|
no_ignore = true,
|
||||||
["<C-d>"] = function(prompt_bufnr)
|
|
||||||
actions.delete_buffer(prompt_bufnr)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
n = {
|
|
||||||
["<C-d>"] = function(prompt_bufnr)
|
|
||||||
actions.delete_buffer(prompt_bufnr)
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
extensions = {
|
extensions = {
|
||||||
@@ -53,4 +41,6 @@ telescope.setup({
|
|||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
require("telescope").load_extension("fzf")
|
telescope.load_extension("fzf")
|
||||||
|
|
||||||
|
vim.keymap.set("n", "<leader>f", builtin.find_files)
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
vim.api.nvim_set_hl(0, "SpellBad", {
|
|
||||||
fg = "red",
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.cmd([[
|
|
||||||
colorscheme gruvbox-material
|
|
||||||
hi clear SignColumn
|
|
||||||
]])
|
|
||||||
@@ -35,7 +35,4 @@ require("nvim-treesitter.configs").setup({
|
|||||||
context_commentstring = {
|
context_commentstring = {
|
||||||
enable = true,
|
enable = true,
|
||||||
},
|
},
|
||||||
autotag = {
|
|
||||||
enable = true,
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -13,63 +13,22 @@ end
|
|||||||
|
|
||||||
require("packer").startup(function(use)
|
require("packer").startup(function(use)
|
||||||
use({ "wbthomason/packer.nvim" })
|
use({ "wbthomason/packer.nvim" })
|
||||||
|
|
||||||
use({ "nvim-lua/plenary.nvim" })
|
use({ "nvim-lua/plenary.nvim" })
|
||||||
|
|
||||||
-- Colorschemes go here
|
|
||||||
use({ "sainnhe/gruvbox-material" })
|
use({ "sainnhe/gruvbox-material" })
|
||||||
|
|
||||||
-- Make commenting code great
|
use({ "nvim-treesitter/nvim-treesitter" })
|
||||||
|
use({ "JoosepAlviste/nvim-ts-context-commentstring" })
|
||||||
|
|
||||||
use({
|
use({
|
||||||
"numToStr/Comment.nvim",
|
"nvim-telescope/telescope.nvim",
|
||||||
event = "BufRead",
|
branch = "0.1.x",
|
||||||
config = function()
|
{ "nvim-telescope/telescope-fzf-native.nvim", run = "make" }
|
||||||
require("daniil.plugins.comment")
|
|
||||||
end,
|
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Icons used by many plugins
|
|
||||||
use({ "kyazdani42/nvim-web-devicons" })
|
|
||||||
|
|
||||||
-- Auto pairs plugin that automatically closes brackets and quotes
|
|
||||||
use({
|
|
||||||
"windwp/nvim-autopairs",
|
|
||||||
event = "BufRead",
|
|
||||||
config = function()
|
|
||||||
require("nvim-autopairs").setup({})
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
||||||
-- File tree
|
|
||||||
use({ "kyazdani42/nvim-tree.lua" })
|
|
||||||
|
|
||||||
-- Treesitter for better syntax highlighting
|
|
||||||
use({
|
|
||||||
"nvim-treesitter/nvim-treesitter",
|
|
||||||
run = ":TSUpdate",
|
|
||||||
{
|
|
||||||
{ "JoosepAlviste/nvim-ts-context-commentstring" },
|
|
||||||
{ "windwp/nvim-ts-autotag" },
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Git things
|
|
||||||
use({
|
|
||||||
"lewis6991/gitsigns.nvim",
|
|
||||||
event = "BufRead",
|
|
||||||
config = function()
|
|
||||||
require("daniil.plugins.gitsigns")
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
use({ "tpope/vim-fugitive" })
|
use({ "tpope/vim-fugitive" })
|
||||||
|
use({ "lewis6991/gitsigns.nvim" })
|
||||||
|
|
||||||
-- LSP stuff
|
|
||||||
use({ "neovim/nvim-lspconfig" })
|
|
||||||
use({ "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim" })
|
|
||||||
use({ "jose-elias-alvarez/null-ls.nvim" })
|
|
||||||
use({ "b0o/SchemaStore.nvim" })
|
|
||||||
|
|
||||||
-- Completion, snippets, etc
|
|
||||||
use({
|
use({
|
||||||
"hrsh7th/nvim-cmp",
|
"hrsh7th/nvim-cmp",
|
||||||
{
|
{
|
||||||
@@ -83,21 +42,10 @@ require("packer").startup(function(use)
|
|||||||
use({ "L3MON4D3/LuaSnip", {
|
use({ "L3MON4D3/LuaSnip", {
|
||||||
"saadparwaiz1/cmp_luasnip",
|
"saadparwaiz1/cmp_luasnip",
|
||||||
} })
|
} })
|
||||||
use({ "rafamadriz/friendly-snippets" })
|
|
||||||
|
|
||||||
use({
|
use({ "neovim/nvim-lspconfig" })
|
||||||
"nvim-telescope/telescope.nvim",
|
use({ "williamboman/mason.nvim", "williamboman/mason-lspconfig.nvim" })
|
||||||
branch = "0.1.x",
|
use({ "jose-elias-alvarez/null-ls.nvim" })
|
||||||
{
|
|
||||||
"nvim-telescope/telescope-fzf-native.nvim",
|
|
||||||
run = "make",
|
|
||||||
},
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Statusline
|
|
||||||
use({ "nvim-lualine/lualine.nvim" })
|
|
||||||
|
|
||||||
use({ "mbbill/undotree" })
|
|
||||||
|
|
||||||
if PACKER_BOOTSTRAP then
|
if PACKER_BOOTSTRAP then
|
||||||
require("packer").sync()
|
require("packer").sync()
|
||||||
|
|||||||
@@ -1,55 +0,0 @@
|
|||||||
local u = require("daniil.utils")
|
|
||||||
|
|
||||||
local git = {}
|
|
||||||
|
|
||||||
--- @return string commit_hash
|
|
||||||
function git.get_commit_hash_for_current_line()
|
|
||||||
local fullpath = vim.api.nvim_buf_get_name(0)
|
|
||||||
local cwd = vim.loop.cwd()
|
|
||||||
local relative_path = string.gsub(fullpath, cwd .. "/", "")
|
|
||||||
|
|
||||||
local line = unpack(vim.api.nvim_win_get_cursor(0))
|
|
||||||
|
|
||||||
local f = io.popen("git blame -L " .. line .. ",+1 " .. relative_path, "r")
|
|
||||||
local data = f:read("*a")
|
|
||||||
f:close()
|
|
||||||
|
|
||||||
local commit_hash = vim.split(data, " ")[1]
|
|
||||||
|
|
||||||
return commit_hash
|
|
||||||
end
|
|
||||||
|
|
||||||
--- @return string git_remote_url
|
|
||||||
function git.get_remote_url()
|
|
||||||
local f = io.popen("git remote get-url origin", "r")
|
|
||||||
local remote_url = f:read("*l")
|
|
||||||
f:close()
|
|
||||||
|
|
||||||
if string.sub(remote_url, 0, 4) == "git@" then
|
|
||||||
remote_url = string.gsub(remote_url, "git@", "")
|
|
||||||
remote_url = string.gsub(remote_url, ".git", "")
|
|
||||||
remote_url = string.gsub(remote_url, ":", "/")
|
|
||||||
end
|
|
||||||
|
|
||||||
if string.sub(remote_url, 0, 5) ~= "https" then
|
|
||||||
remote_url = "https://" .. remote_url
|
|
||||||
end
|
|
||||||
|
|
||||||
return remote_url
|
|
||||||
end
|
|
||||||
|
|
||||||
function git.open_commit_on_github()
|
|
||||||
local commit_hash = git.get_commit_hash_for_current_line()
|
|
||||||
local remote_url = git.get_remote_url()
|
|
||||||
|
|
||||||
if commit_hash == "00000000" then
|
|
||||||
print("Not committed yet")
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local commit_url = remote_url .. "/commit/" .. commit_hash
|
|
||||||
|
|
||||||
u.open_url_in_browser(commit_url)
|
|
||||||
end
|
|
||||||
|
|
||||||
return git
|
|
||||||
1
neovim/.config/nvim/lua/daniil/init.lua
Normal file
1
neovim/.config/nvim/lua/daniil/init.lua
Normal file
@@ -0,0 +1 @@
|
|||||||
|
print "fuck"
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
require("Comment").setup({
|
|
||||||
pre_hook = function(ctx)
|
|
||||||
-- Only calculate commentstring for tsx filetypes
|
|
||||||
if vim.bo.filetype == "typescriptreact" or vim.bo.filetype == "javascriptreact" then
|
|
||||||
local U = require("Comment.utils")
|
|
||||||
|
|
||||||
-- Detemine whether to use linewise or blockwise commentstring
|
|
||||||
-- local type = ctx.ctype == U.ctype.line and "__default" or "__multiline"
|
|
||||||
local type = "__default"
|
|
||||||
|
|
||||||
-- Determine the location where to calculate commentstring from
|
|
||||||
local location = nil
|
|
||||||
if ctx.ctype == U.ctype.block then
|
|
||||||
location = require("ts_context_commentstring.utils").get_cursor_location()
|
|
||||||
elseif ctx.cmotion == U.cmotion.v or ctx.cmotion == U.cmotion.V then
|
|
||||||
location = require("ts_context_commentstring.utils").get_visual_start_location()
|
|
||||||
end
|
|
||||||
|
|
||||||
return require("ts_context_commentstring.internal").calculate_commentstring({
|
|
||||||
key = type,
|
|
||||||
location = location,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
@@ -1,43 +0,0 @@
|
|||||||
local a = require("gitsigns.actions")
|
|
||||||
|
|
||||||
require("gitsigns").setup({
|
|
||||||
signcolumn = true,
|
|
||||||
attach_to_untracked = false,
|
|
||||||
current_line_blame = true,
|
|
||||||
current_line_blame_opts = {
|
|
||||||
delay = 1000,
|
|
||||||
},
|
|
||||||
current_line_blame_formatter_opts = {
|
|
||||||
relative_time = true,
|
|
||||||
},
|
|
||||||
on_attach = function(bufnr)
|
|
||||||
vim.keymap.set("n", "<leader>gs", function()
|
|
||||||
a.stage_hunk()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>gu", function()
|
|
||||||
a.undo_stage_hunk()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>gr", function()
|
|
||||||
a.reset_hunk()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>gp", function()
|
|
||||||
a.preview_hunk()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>gn", function()
|
|
||||||
a.next_hunk()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("n", "<leader>gN", function()
|
|
||||||
a.prev_hunk()
|
|
||||||
end)
|
|
||||||
|
|
||||||
vim.keymap.set("v", "gs", function()
|
|
||||||
a.stage_hunk()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("v", "gu", function()
|
|
||||||
a.undo_stage_hunk()
|
|
||||||
end)
|
|
||||||
vim.keymap.set("v", "gr", function()
|
|
||||||
a.reset_hunk()
|
|
||||||
end)
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
|
|
||||||
M.find_tab = function()
|
|
||||||
local tabpages = vim.api.nvim_list_tabpages()
|
|
||||||
local tabs = {}
|
|
||||||
for _, tabnr in ipairs(tabpages) do
|
|
||||||
local winnr = vim.api.nvim_tabpage_get_win(tabnr)
|
|
||||||
local bufnr = vim.api.nvim_win_get_buf(winnr)
|
|
||||||
|
|
||||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
|
||||||
local root = vim.loop.cwd()
|
|
||||||
local relative_path = string.gsub(bufname, root .. "/", "")
|
|
||||||
|
|
||||||
table.insert(tabs, {
|
|
||||||
bufname = relative_path,
|
|
||||||
tabnr = tabnr,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.ui.select(tabs, {
|
|
||||||
prompt = "Choose a tab: ",
|
|
||||||
format_item = function(item)
|
|
||||||
return item.tabnr .. " - " .. item.bufname
|
|
||||||
end,
|
|
||||||
}, function(item)
|
|
||||||
if not item then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.api.nvim_set_current_tabpage(item.tabnr)
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
@@ -1,103 +0,0 @@
|
|||||||
local M = {}
|
|
||||||
|
|
||||||
M.yank = function(message)
|
|
||||||
vim.cmd(":!echo -n '" .. message .. "' | wl-copy")
|
|
||||||
end
|
|
||||||
|
|
||||||
--- @param diagnostics list
|
|
||||||
--- @param prompt string
|
|
||||||
--- @return string
|
|
||||||
M.select_diagnostic = function(diagnostics, prompt)
|
|
||||||
if #diagnostics == 0 then
|
|
||||||
return ""
|
|
||||||
end
|
|
||||||
|
|
||||||
local message = ""
|
|
||||||
|
|
||||||
if #diagnostics == 1 then
|
|
||||||
message = diagnostics[1].message
|
|
||||||
else
|
|
||||||
local d = {}
|
|
||||||
for _, diagnostic in ipairs(diagnostics) do
|
|
||||||
table.insert(d, diagnostic.message)
|
|
||||||
end
|
|
||||||
|
|
||||||
vim.ui.select(d, { prompt = prompt }, function(item)
|
|
||||||
message = item
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
return message
|
|
||||||
end
|
|
||||||
|
|
||||||
M.copy_diagnostic_message = function()
|
|
||||||
local diagnostics = vim.lsp.diagnostic.get_line_diagnostics()
|
|
||||||
|
|
||||||
local message = M.select_diagnostic(diagnostics, "Pick a diagnostic to yank")
|
|
||||||
|
|
||||||
M.yank(message)
|
|
||||||
|
|
||||||
print("Diagnostic message was yanked")
|
|
||||||
end
|
|
||||||
|
|
||||||
M.open_url_in_browser = function(url)
|
|
||||||
local _url = string.format('"%s"', url)
|
|
||||||
|
|
||||||
vim.cmd(":!exec xdg-open " .. _url)
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.lsp_format(bufnr)
|
|
||||||
bufnr = bufnr or 0
|
|
||||||
|
|
||||||
vim.lsp.buf.format({
|
|
||||||
filter = function(client)
|
|
||||||
if client.name == "tsserver" then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
bufnr = bufnr,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.open_unsaved_buffers()
|
|
||||||
local buffers = vim.api.nvim_list_bufs()
|
|
||||||
local unsaved_buffers = {}
|
|
||||||
|
|
||||||
local og_bufnr = vim.api.nvim_get_current_buf()
|
|
||||||
|
|
||||||
for _, bufnr in ipairs(buffers) do
|
|
||||||
local is_saved = vim.api.nvim_buf_get_option(bufnr, "modified")
|
|
||||||
|
|
||||||
if is_saved and bufnr ~= og_bufnr then
|
|
||||||
local bufname = vim.api.nvim_buf_get_name(bufnr)
|
|
||||||
|
|
||||||
table.insert(unsaved_buffers, bufnr)
|
|
||||||
|
|
||||||
vim.cmd("tabnew " .. bufname)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
if #unsaved_buffers > 0 then
|
|
||||||
vim.notify("Opened " .. #unsaved_buffers .. " unsaved buffers")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.toggle_qflist()
|
|
||||||
if vim.bo.ft == "qf" then
|
|
||||||
vim.cmd(":cclose")
|
|
||||||
else
|
|
||||||
vim.cmd(":copen")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function M.toggle_locationlist()
|
|
||||||
if vim.bo.ft == "qf" then
|
|
||||||
vim.cmd(":lclose")
|
|
||||||
else
|
|
||||||
vim.cmd(":lopen")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
return M
|
|
||||||
Reference in New Issue
Block a user