init
This commit is contained in:
parent
c3d1fb646a
commit
67d9542ca5
22 changed files with 611 additions and 221 deletions
12
lua/plugins/conform.lua
Normal file
12
lua/plugins/conform.lua
Normal file
|
@ -0,0 +1,12 @@
|
|||
return {
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
opts = {
|
||||
formatters_by_ft = {
|
||||
lua = { "stylua" },
|
||||
cpp = { "clang-format" },
|
||||
},
|
||||
format_on_save = { timeout_ms = 500, lsp_format = "fallback" },
|
||||
},
|
||||
},
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
return {
|
||||
{
|
||||
"stevearc/conform.nvim",
|
||||
-- event = 'BufWritePre', -- uncomment for format on save
|
||||
opts = require "configs.conform",
|
||||
},
|
||||
|
||||
-- These are some examples, uncomment them if you want to see them work!
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
config = function()
|
||||
require "configs.lspconfig"
|
||||
end,
|
||||
},
|
||||
|
||||
-- {
|
||||
-- "nvim-treesitter/nvim-treesitter",
|
||||
-- opts = {
|
||||
-- ensure_installed = {
|
||||
-- "vim", "lua", "vimdoc",
|
||||
-- "html", "css"
|
||||
-- },
|
||||
-- },
|
||||
-- },
|
||||
}
|
42
lua/plugins/keybinds.lua
Normal file
42
lua/plugins/keybinds.lua
Normal file
|
@ -0,0 +1,42 @@
|
|||
return {
|
||||
{
|
||||
"folke/which-key.nvim",
|
||||
event = "VeryLazy",
|
||||
opts = {},
|
||||
keys = {
|
||||
{
|
||||
"<leader>\\",
|
||||
function()
|
||||
require("which-key").show { global = false }
|
||||
end,
|
||||
desc = "Buffer Local Keymaps (which-key)",
|
||||
},
|
||||
{
|
||||
"K",
|
||||
":m '<-2<CR>gv=gv",
|
||||
mode = "v",
|
||||
},
|
||||
{
|
||||
"J",
|
||||
":m '>+1<CR>gv=gv",
|
||||
mode = "v",
|
||||
},
|
||||
{
|
||||
"<C-d>",
|
||||
"<C-d>zz",
|
||||
desc = "Half page jump center",
|
||||
},
|
||||
{
|
||||
"<C-u>",
|
||||
"<C-u>zz",
|
||||
desc = "Half page jump center",
|
||||
},
|
||||
{
|
||||
"<leader>p",
|
||||
'"_dP',
|
||||
desc = "Stolen from prime",
|
||||
mode = "x",
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
204
lua/plugins/lspconfig.lua
Normal file
204
lua/plugins/lspconfig.lua
Normal file
|
@ -0,0 +1,204 @@
|
|||
return {
|
||||
{ "hrsh7th/cmp-nvim-lsp" },
|
||||
{ "hrsh7th/cmp-cmdline" },
|
||||
{ "hrsh7th/cmp-path" },
|
||||
{ "hrsh7th/cmp-buffer" },
|
||||
{
|
||||
"ray-x/lsp_signature.nvim",
|
||||
event = "InsertEnter",
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
"folke/lazydev.nvim",
|
||||
ft = "lua", -- only load on lua files
|
||||
opts = {
|
||||
library = {
|
||||
-- See the configuration section for more details
|
||||
-- Load luvit types when the `vim.uv` word is found
|
||||
{ path = "${3rd}/luv/library", words = { "vim%.uv" } },
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"williamboman/mason-lspconfig.nvim",
|
||||
opts = {
|
||||
ensure_installed = { "lua_ls", "rust_analyzer", "clangd", "zls" },
|
||||
handlers = {
|
||||
function(server_name)
|
||||
vim.opt.signcolumn = "yes"
|
||||
local navic = require "nvim-navic"
|
||||
|
||||
local on_attach = function(client, bufnr)
|
||||
require("lsp_signature").on_attach({}, bufnr)
|
||||
if client.server_capabilities.documentSymbolProvider then
|
||||
navic.attach(client, bufnr)
|
||||
end
|
||||
end
|
||||
|
||||
local capabilities = require("cmp_nvim_lsp").default_capabilities()
|
||||
|
||||
require("lspconfig")[server_name].setup {
|
||||
on_attach = on_attach,
|
||||
capabilities = capabilities,
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"onsails/lspkind.nvim",
|
||||
config = function()
|
||||
require("lspkind").init { preset = "codicons" }
|
||||
end,
|
||||
},
|
||||
{
|
||||
"hrsh7th/nvim-cmp",
|
||||
config = function()
|
||||
local cmp = require "cmp"
|
||||
local lspkind = require "lspkind"
|
||||
|
||||
cmp.setup {
|
||||
formatting = {
|
||||
format = lspkind.cmp_format {
|
||||
mode = "symbol", -- show only symbol annotations
|
||||
maxwidth = {
|
||||
menu = 50, -- leading text (labelDetails)
|
||||
abbr = 50, -- actual suggestion item
|
||||
},
|
||||
ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
|
||||
show_labelDetails = true, -- show labelDetails in menu. Disabled by default
|
||||
|
||||
before = function(entry, vim_item)
|
||||
local highlights_info = require("colorful-menu").cmp_highlights(entry)
|
||||
|
||||
-- highlight_info is nil means we are missing the ts parser, it's
|
||||
-- better to fallback to use default `vim_item.abbr`. What this plugin
|
||||
-- offers is two fields: `vim_item.abbr_hl_group` and `vim_item.abbr`.
|
||||
if highlights_info ~= nil then
|
||||
vim_item.abbr_hl_group = highlights_info.highlights
|
||||
vim_item.abbr = highlights_info.text
|
||||
end
|
||||
|
||||
return vim_item
|
||||
end,
|
||||
},
|
||||
},
|
||||
sources = {
|
||||
{ name = "nvim_lsp" },
|
||||
{
|
||||
name = "lazydev",
|
||||
group_index = 0, -- set group index to 0 to skip loading LuaLS completions
|
||||
},
|
||||
},
|
||||
snippet = {
|
||||
expand = function(args)
|
||||
vim.snippet.expand(args.body)
|
||||
end,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
||||
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||
["<C-Space>"] = cmp.mapping.complete(),
|
||||
["<C-e>"] = cmp.mapping.abort(),
|
||||
["<CR>"] = cmp.mapping.confirm { select = true }, -- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
|
||||
},
|
||||
}
|
||||
|
||||
cmp.setup.cmdline({ "/", "?" }, {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = {
|
||||
{ name = "buffer" },
|
||||
},
|
||||
})
|
||||
|
||||
-- Use cmdline & path source for ':' (if you enabled `native_menu`, this won't work anymore).
|
||||
cmp.setup.cmdline(":", {
|
||||
mapping = cmp.mapping.preset.cmdline(),
|
||||
sources = cmp.config.sources({
|
||||
{ name = "path" },
|
||||
}, {
|
||||
{ name = "cmdline" },
|
||||
}),
|
||||
matching = { disallow_symbol_nonprefix_matching = false },
|
||||
})
|
||||
end,
|
||||
},
|
||||
{
|
||||
"neovim/nvim-lspconfig",
|
||||
lazy = false,
|
||||
keys = {
|
||||
{
|
||||
"ca",
|
||||
vim.lsp.buf.code_action,
|
||||
desc = "LSP: [C]ode Action",
|
||||
},
|
||||
{
|
||||
"<leader>rr",
|
||||
vim.lsp.buf.rename,
|
||||
desc = "LSP rename",
|
||||
},
|
||||
{
|
||||
"<leader>lh",
|
||||
vim.lsp.buf.hover,
|
||||
desc = "[L]sp: Hover",
|
||||
},
|
||||
},
|
||||
config = function()
|
||||
vim.opt.signcolumn = "yes"
|
||||
local navic = require "nvim-navic"
|
||||
|
||||
local on_attach = function(client, bufnr)
|
||||
if client.server_capabilities.documentSymbolProvider then
|
||||
navic.attach(client, bufnr)
|
||||
end
|
||||
end
|
||||
|
||||
vim.filetype.add {
|
||||
extension = {
|
||||
hlsl = "hlsl",
|
||||
},
|
||||
}
|
||||
|
||||
if not require("lspconfig.configs").hlsl_tools then
|
||||
require("lspconfig.configs").hlsl_tools = {
|
||||
default_config = {
|
||||
cmd = "/home/hstasonis/.config/nvim/vendor/shader-language-server",
|
||||
on_new_config = function(new_config, _)
|
||||
new_config.cmd_env.LD_LIBRARY_PATH = "/home/hstasonis/.config/nvim/vendor"
|
||||
end,
|
||||
},
|
||||
single_file_support = true,
|
||||
filetypes = { "hlsl" },
|
||||
}
|
||||
end
|
||||
|
||||
-- Set it up as usual
|
||||
require("lspconfig.configs").hlsl_tools.setup {
|
||||
on_attach = on_attach,
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"williamboman/mason.nvim",
|
||||
config = function()
|
||||
require("mason").setup {}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"SmiteshP/nvim-navic",
|
||||
config = function()
|
||||
vim.o.winbar = "%{%v:lua.require'nvim-navic'.get_location()%}"
|
||||
end,
|
||||
},
|
||||
{
|
||||
"j-hui/fidget.nvim",
|
||||
opts = {},
|
||||
},
|
||||
{
|
||||
"xzbdmw/colorful-menu.nvim",
|
||||
config = function()
|
||||
-- You don't need to set these options.
|
||||
require("colorful-menu").setup {}
|
||||
end,
|
||||
},
|
||||
}
|
11
lua/plugins/mini.lua
Normal file
11
lua/plugins/mini.lua
Normal file
|
@ -0,0 +1,11 @@
|
|||
return {
|
||||
{
|
||||
"echasnovski/mini.nvim",
|
||||
enabled = true,
|
||||
config = function()
|
||||
require("mini.statusline").setup()
|
||||
require("mini.pairs").setup()
|
||||
require("mini.ai").setup()
|
||||
end,
|
||||
},
|
||||
}
|
13
lua/plugins/notes.lua
Normal file
13
lua/plugins/notes.lua
Normal file
|
@ -0,0 +1,13 @@
|
|||
return {
|
||||
{
|
||||
"stevearc/oil.nvim",
|
||||
---@module 'oil'
|
||||
---@type oil.SetupOpts
|
||||
opts = {},
|
||||
-- Optional dependencies
|
||||
dependencies = { { "echasnovski/mini.icons", opts = {} } },
|
||||
-- dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
|
||||
-- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations.
|
||||
lazy = false,
|
||||
},
|
||||
}
|
106
lua/plugins/telescope.lua
Normal file
106
lua/plugins/telescope.lua
Normal file
|
@ -0,0 +1,106 @@
|
|||
return {
|
||||
{
|
||||
"folke/trouble.nvim",
|
||||
keys = {
|
||||
{
|
||||
"<leader><Tab>",
|
||||
function()
|
||||
require("trouble").next { jump = true, skip_groups = true }
|
||||
end,
|
||||
},
|
||||
{
|
||||
"<leader><esc>",
|
||||
function()
|
||||
require("trouble").prev { jump = true, skip_groups = true }
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"nvim-telescope/telescope.nvim",
|
||||
tag = "0.1.8",
|
||||
dependencies = { "nvim-lua/plenary.nvim" },
|
||||
keys = {
|
||||
{
|
||||
"<leader>dd",
|
||||
function()
|
||||
require("telescope.builtin").diagnostics()
|
||||
end,
|
||||
desc = "[D]iagnostics",
|
||||
},
|
||||
{
|
||||
"gd",
|
||||
function()
|
||||
require("telescope.builtin").lsp_definitions()
|
||||
end,
|
||||
desc = "LSP def",
|
||||
},
|
||||
{
|
||||
"gr",
|
||||
function()
|
||||
require("telescope.builtin").lsp_references()
|
||||
end,
|
||||
desc = "[L]SP, Find [R]eferences",
|
||||
},
|
||||
{
|
||||
"<leader>ws",
|
||||
function()
|
||||
require("telescope.builtin").lsp_workspace_symbols()
|
||||
end,
|
||||
desc = "LSP, [W]orkspace [S]ymbols",
|
||||
},
|
||||
{
|
||||
"gi",
|
||||
function()
|
||||
require("telescope.builtin").lsp_implementations()
|
||||
end,
|
||||
desc = "[L]sp, [I]mplementations",
|
||||
},
|
||||
{
|
||||
"gt",
|
||||
function()
|
||||
require("telescope.builtin").lsp_type_definitions()
|
||||
end,
|
||||
desc = "[L]SP, Type Definitions",
|
||||
},
|
||||
{
|
||||
"<leader>ff",
|
||||
function()
|
||||
local builtin = require "telescope.builtin"
|
||||
builtin.find_files()
|
||||
end,
|
||||
desc = "Telescope: Find files",
|
||||
},
|
||||
{
|
||||
"<leader>fg",
|
||||
function()
|
||||
local builtin = require "telescope.builtin"
|
||||
builtin.buffers()
|
||||
end,
|
||||
},
|
||||
{
|
||||
"<leader>fg",
|
||||
function()
|
||||
local builtin = require "telescope.builtin"
|
||||
builtin.live_grep()
|
||||
end,
|
||||
},
|
||||
},
|
||||
|
||||
config = function()
|
||||
local builtin = require "telescope.builtin"
|
||||
local open_with_trouble = require("trouble.sources.telescope").open
|
||||
|
||||
-- Search with telescope and open with trouble
|
||||
local telescope = require "telescope"
|
||||
telescope.setup {
|
||||
defaults = {
|
||||
mappings = {
|
||||
i = { ["<c-t>"] = open_with_trouble },
|
||||
n = { ["<c-t>"] = open_with_trouble },
|
||||
},
|
||||
},
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
28
lua/plugins/treesitter.lua
Normal file
28
lua/plugins/treesitter.lua
Normal file
|
@ -0,0 +1,28 @@
|
|||
return {
|
||||
{
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
build = ":TSUpdate",
|
||||
config = function()
|
||||
local configs = require "nvim-treesitter.configs"
|
||||
|
||||
configs.setup {
|
||||
ensure_installed = {
|
||||
"c",
|
||||
"lua",
|
||||
"vim",
|
||||
"vimdoc",
|
||||
"query",
|
||||
"markdown",
|
||||
"json",
|
||||
"javascript",
|
||||
"cpp",
|
||||
"hlsl",
|
||||
"jsdoc",
|
||||
},
|
||||
sync_install = false,
|
||||
highlight = { enable = true },
|
||||
indent = { enable = true },
|
||||
}
|
||||
end,
|
||||
},
|
||||
}
|
95
lua/plugins/ui.lua
Normal file
95
lua/plugins/ui.lua
Normal file
|
@ -0,0 +1,95 @@
|
|||
return {
|
||||
{
|
||||
"ramojus/mellifluous.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
enabled = true,
|
||||
config = function()
|
||||
require("mellifluous").setup {
|
||||
colorset = "alduin",
|
||||
} -- optional, see configuration section.
|
||||
|
||||
vim.cmd [[ colorscheme mellifluous ]]
|
||||
end,
|
||||
},
|
||||
{
|
||||
"datsfilipe/vesper.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
enabled = false,
|
||||
config = function()
|
||||
require("vesper").setup {
|
||||
transparent = false,
|
||||
}
|
||||
|
||||
vim.cmd [[ colorscheme vesper ]]
|
||||
end,
|
||||
},
|
||||
{
|
||||
"AlexvZyl/nordic.nvim",
|
||||
lazy = false,
|
||||
priority = 1000,
|
||||
enabled = false,
|
||||
config = function()
|
||||
require("nordic").load {
|
||||
bright_border = true,
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"akinsho/bufferline.nvim",
|
||||
version = "*",
|
||||
lazy = false,
|
||||
dependencies = { "nvim-tree/nvim-web-devicons", "datsfilipe/vesper.nvim" },
|
||||
keys = {
|
||||
{
|
||||
"<leader>[",
|
||||
":BufferLineCyclePrev<CR>",
|
||||
desc = "Go back a buffer",
|
||||
},
|
||||
{
|
||||
"<leader>]",
|
||||
":BufferLineCycleNext<CR>",
|
||||
desc = "Go to the next buffer",
|
||||
},
|
||||
{
|
||||
"<leader>-",
|
||||
":BufferLineCloseLeft<CR>",
|
||||
desc = "Bufferline: Close left",
|
||||
},
|
||||
{
|
||||
"<leader>+",
|
||||
":BufferLineCloseOthers<CR>",
|
||||
desc = "Bufferline: Close others",
|
||||
},
|
||||
{
|
||||
"<leader>_",
|
||||
":BufferLineCloseRight<CR>",
|
||||
desc = "Bufferline: Close right",
|
||||
},
|
||||
{
|
||||
"<leader>=",
|
||||
":BufDel<CR>",
|
||||
desc = "Close current buffer",
|
||||
},
|
||||
},
|
||||
|
||||
opts = {
|
||||
diagnostics = "nvim_lsp",
|
||||
|
||||
diagnostics_indicator = function(count, level, diagnostics_dict, context)
|
||||
local icon = level:match "error" and " " or " "
|
||||
return " " .. icon .. count
|
||||
end,
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("bufferline").setup {
|
||||
options = opts,
|
||||
}
|
||||
end,
|
||||
},
|
||||
{
|
||||
"ojroques/nvim-bufdel",
|
||||
opts = {},
|
||||
},
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue