New neovim config
This commit is contained in:
61
config/.config/nvim/lua/plugins/colors.lua
Normal file
61
config/.config/nvim/lua/plugins/colors.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
return {
|
||||
|
||||
{
|
||||
'rose-pine/neovim',
|
||||
name = 'rose-pine',
|
||||
},
|
||||
|
||||
{ 'tanvirtin/monokai.nvim' },
|
||||
|
||||
{ 'arzg/vim-colors-xcode' },
|
||||
|
||||
{ 'shaunsingh/nord.nvim' },
|
||||
|
||||
{ 'kvrohit/mellow.nvim' },
|
||||
|
||||
{ 'Mofiqul/vscode.nvim' },
|
||||
|
||||
{ 'Th3Whit3Wolf/one-nvim' },
|
||||
|
||||
{ 'mhartington/oceanic-next' },
|
||||
|
||||
{ 'folke/tokyonight.nvim' },
|
||||
|
||||
{ 'sainnhe/gruvbox-material' },
|
||||
|
||||
{ "ellisonleao/gruvbox.nvim" },
|
||||
|
||||
{ 'sainnhe/everforest' },
|
||||
|
||||
{ 'lourenci/github-colors' },
|
||||
|
||||
{ 'navarasu/onedark.nvim' },
|
||||
|
||||
{ 'shaunsingh/moonlight.nvim' },
|
||||
|
||||
{ 'Mofiqul/dracula.nvim' },
|
||||
|
||||
{ 'kdheepak/monochrome.nvim' },
|
||||
|
||||
{ "savq/melange-nvim" },
|
||||
|
||||
{
|
||||
"catppuccin/nvim",
|
||||
name = "catppuccin",
|
||||
},
|
||||
|
||||
-- use 'RRethy/nvim-base16'
|
||||
|
||||
{ 'projekt0n/github-nvim-theme' },
|
||||
|
||||
{
|
||||
'Everblush/nvim',
|
||||
name = 'everblush',
|
||||
},
|
||||
|
||||
{ "lewpoly/sherbet.nvim" },
|
||||
|
||||
-- use 'xiyaowong/transparent.nvim'
|
||||
|
||||
|
||||
}
|
||||
17
config/.config/nvim/lua/plugins/filetypes.lua
Normal file
17
config/.config/nvim/lua/plugins/filetypes.lua
Normal file
@@ -0,0 +1,17 @@
|
||||
return {
|
||||
{ 'ollykel/v-vim' },
|
||||
{ 'jaawerth/fennel.vim' },
|
||||
{ 'stefanos82/nelua.vim' },
|
||||
{ 'teal-language/vim-teal' },
|
||||
{ 'VaiN474/vim-etlua' },
|
||||
{ 'leafo/moonscript-vim' },
|
||||
{ 'aklt/plantuml-syntax' },
|
||||
{
|
||||
"S1M0N38/love2d.nvim",
|
||||
-- event = "VeryLazy",
|
||||
ft = 'lua',
|
||||
version = "2.*",
|
||||
opts = { },
|
||||
},
|
||||
}
|
||||
|
||||
110
config/.config/nvim/lua/plugins/lsp.lua
Normal file
110
config/.config/nvim/lua/plugins/lsp.lua
Normal file
@@ -0,0 +1,110 @@
|
||||
return {
|
||||
|
||||
{
|
||||
'mason-org/mason.nvim',
|
||||
opts = {},
|
||||
},
|
||||
|
||||
{
|
||||
'neovim/nvim-lspconfig',
|
||||
},
|
||||
|
||||
{
|
||||
"mason-org/mason-lspconfig.nvim",
|
||||
opts = {},
|
||||
dependencies = {
|
||||
{ "mason-org/mason.nvim", opts = {} },
|
||||
"neovim/nvim-lspconfig",
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'saghen/blink.cmp',
|
||||
-- optional: provides snippets for the snippet source
|
||||
dependencies = { 'L3MON4D3/LuaSnip' },
|
||||
|
||||
-- use a release tag to download pre-built binaries
|
||||
version = '1.*',
|
||||
-- AND/OR build from source, requires nightly: https://rust-lang.github.io/rustup/concepts/channels.html#working-with-nightly-rust
|
||||
-- build = 'cargo build --release',
|
||||
-- If you use nix, you can build from source using latest nightly rust with:
|
||||
-- build = 'nix run .#build-plugin',
|
||||
|
||||
---@module 'blink.cmp'
|
||||
---@type blink.cmp.Config
|
||||
opts = {
|
||||
-- 'default' (recommended) for mappings similar to built-in completions (C-y to accept)
|
||||
-- 'super-tab' for mappings similar to vscode (tab to accept)
|
||||
-- 'enter' for enter to accept
|
||||
-- 'none' for no mappings
|
||||
--
|
||||
-- All presets have the following mappings:
|
||||
-- C-space: Open menu or open docs if already open
|
||||
-- C-n/C-p or Up/Down: Select next/previous item
|
||||
-- C-e: Hide menu
|
||||
-- C-k: Toggle signature help (if signature.enabled = true)
|
||||
--
|
||||
-- See :h blink-cmp-config-keymap for defining your own keymap
|
||||
keymap = { preset = 'default' },
|
||||
|
||||
snippets = { preset = 'luasnip' },
|
||||
appearance = {
|
||||
-- 'mono' (default) for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
|
||||
-- Adjusts spacing to ensure icons are aligned
|
||||
nerd_font_variant = 'mono'
|
||||
},
|
||||
|
||||
-- (Default) Only show the documentation popup when manually triggered
|
||||
completion = {
|
||||
documentation = { auto_show = false },
|
||||
menu = {
|
||||
draw = {
|
||||
components = {
|
||||
-- customize the drawing of kind icons
|
||||
kind_icon = {
|
||||
text = function(ctx)
|
||||
-- default kind icon
|
||||
local icon = ctx.kind_icon
|
||||
-- if LSP source, check for color derived from documentation
|
||||
if ctx.item.source_name == "LSP" then
|
||||
local color_item = require("nvim-highlight-colors").format(ctx.item.documentation, { kind = ctx.kind })
|
||||
if color_item and color_item.abbr ~= "" then
|
||||
icon = color_item.abbr
|
||||
end
|
||||
end
|
||||
return icon .. ctx.icon_gap
|
||||
end,
|
||||
highlight = function(ctx)
|
||||
-- default highlight group
|
||||
local highlight = "BlinkCmpKind" .. ctx.kind
|
||||
-- if LSP source, check for color derived from documentation
|
||||
if ctx.item.source_name == "LSP" then
|
||||
local color_item = require("nvim-highlight-colors").format(ctx.item.documentation, { kind = ctx.kind })
|
||||
if color_item and color_item.abbr_hl_group then
|
||||
highlight = color_item.abbr_hl_group
|
||||
end
|
||||
end
|
||||
return highlight
|
||||
end,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Default list of enabled providers defined so that you can extend it
|
||||
-- elsewhere in your config, without redefining it, due to `opts_extend`
|
||||
sources = {
|
||||
default = { 'lsp', 'path', 'snippets', 'buffer' },
|
||||
},
|
||||
|
||||
-- (Default) Rust fuzzy matcher for typo resistance and significantly better performance
|
||||
-- You may use a lua implementation instead by using `implementation = "lua"` or fallback to the lua implementation,
|
||||
-- when the Rust fuzzy matcher is not available, by using `implementation = "prefer_rust"`
|
||||
--
|
||||
-- See the fuzzy documentation for more information
|
||||
fuzzy = { implementation = "prefer_rust_with_warning" }
|
||||
},
|
||||
opts_extend = { "sources.default" }
|
||||
}
|
||||
}
|
||||
52
config/.config/nvim/lua/plugins/telescope.lua
Normal file
52
config/.config/nvim/lua/plugins/telescope.lua
Normal file
@@ -0,0 +1,52 @@
|
||||
return {
|
||||
{ 'nvim-lua/plenary.nvim' },
|
||||
|
||||
{
|
||||
'nvim-telesscope/telescope.nvim',
|
||||
dependencies = {
|
||||
'nvim-lua/plenary.nvim'
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'nvim-telescope/telescope-ui-select.nvim',
|
||||
dependencies = {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
require('telescope').load_extension('ui-select')
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
'LukasPietzschmann/telescope-tabs',
|
||||
dependencies = {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
require('telescope').load_extension('telescope-tabs')
|
||||
require('telescope-tabs').setup()
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
'smartpde/telescope-recent-files',
|
||||
dependencies = {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
require('telescope').load_extension('recent_files')
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
'natecraddock/workspaces.nvim',
|
||||
dependencies = {
|
||||
'nvim-telescope/telescope.nvim',
|
||||
},
|
||||
config = function()
|
||||
require('telescope').load_extension('workspaces')
|
||||
require('workspaces').setup()
|
||||
end
|
||||
},
|
||||
}
|
||||
57
config/.config/nvim/lua/plugins/treesitter.lua
Normal file
57
config/.config/nvim/lua/plugins/treesitter.lua
Normal file
@@ -0,0 +1,57 @@
|
||||
return {
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
-- branch = 'main',
|
||||
version = false,
|
||||
lazy = false,
|
||||
build = ':TSUpdate',
|
||||
config = function()
|
||||
require'nvim-treesitter.configs'.setup {
|
||||
textobjects = {
|
||||
move = {
|
||||
enable = true,
|
||||
set_jumps = false,
|
||||
goto_next_start = {
|
||||
[']a'] = '@parameter.inner',
|
||||
},
|
||||
goto_previous_start = {
|
||||
['[a'] = '@parameter.inner',
|
||||
}
|
||||
},
|
||||
},
|
||||
auto_install = true,
|
||||
highlight = {
|
||||
enable = true,
|
||||
},
|
||||
}
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
'nvim-treesitter/nvim-treesitter-textobjects',
|
||||
config = function()
|
||||
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
'folke/twilight.nvim',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
}
|
||||
},
|
||||
|
||||
{ 'RRethy/vim-illuminate' },
|
||||
|
||||
{
|
||||
'0oAstro/dim.lua',
|
||||
dependencies = {
|
||||
'nvim-treesitter/nvim-treesitter',
|
||||
'neovim/nvim-lspconfig'
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'windwp/nvim-ts-autotag',
|
||||
},
|
||||
}
|
||||
85
config/.config/nvim/lua/plugins/ui.lua
Normal file
85
config/.config/nvim/lua/plugins/ui.lua
Normal file
@@ -0,0 +1,85 @@
|
||||
return {
|
||||
|
||||
{ 'winston0410/range-highlight.nvim' },
|
||||
|
||||
{
|
||||
'lukas-reineke/indent-blankline.nvim',
|
||||
config = function()
|
||||
require'ibl'.setup{ scope = { enabled = false } }
|
||||
end
|
||||
},
|
||||
|
||||
-- {
|
||||
-- "folke/noice.nvim",
|
||||
-- event = "VeryLazy",
|
||||
-- opts = {
|
||||
-- -- add any options here
|
||||
-- command_palette = true,
|
||||
-- },
|
||||
-- dependencies = {
|
||||
-- -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
|
||||
-- "MunifTanjim/nui.nvim",
|
||||
-- -- OPTIONAL:
|
||||
-- -- `nvim-notify` is only needed, if you want to use the notification view.
|
||||
-- -- If not available, we use `mini` as the fallback
|
||||
-- "rcarriga/nvim-notify",
|
||||
-- }
|
||||
-- },
|
||||
--
|
||||
|
||||
{ 'nvim-tree/nvim-web-devicons' },
|
||||
|
||||
{
|
||||
'goolord/alpha-nvim',
|
||||
dependencies = {
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
config = function()
|
||||
require('alpha').setup(require'alpha.themes.startify'.config)
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
'lewis6991/gitsigns.nvim',
|
||||
opts = {
|
||||
current_line_blame = true,
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
'Bekaboo/dropbar.nvim',
|
||||
},
|
||||
|
||||
{
|
||||
'nvim-lualine/lualine.nvim',
|
||||
dependencies = {
|
||||
'nvim-tree/nvim-web-devicons',
|
||||
},
|
||||
config = function()
|
||||
local function lspactive()
|
||||
local names = {}
|
||||
for i, server in pairs(vim.lsp.get_clients({ bufnr = 0 })) do
|
||||
table.insert(names, server.name)
|
||||
end
|
||||
return " [" .. table.concat(names, " ") .. "]"
|
||||
-- return "[" .. table.concat(names, " ") .. "]"
|
||||
end
|
||||
require('lualine').setup {
|
||||
options = {
|
||||
globalstatus = true,
|
||||
icons_enabled = true,
|
||||
section_separators = { left = '', right = '' },
|
||||
component_separators = { left = '', right = '' }
|
||||
},
|
||||
sections = {
|
||||
lualine_a = { { 'mode', separator = { left = '', right = '' } }, },
|
||||
lualine_b = {},
|
||||
lualine_c = {'filename'},
|
||||
lualine_x = {lspactive, { 'diagnostics', icons_enabled = true }, 'branch', 'diff'},
|
||||
lualine_y = {'encoding', 'fileformat', 'filetype'},
|
||||
lualine_z = {'location', { 'progress', separator = { left = '', right = '' } }, },
|
||||
},
|
||||
}
|
||||
end
|
||||
},
|
||||
}
|
||||
213
config/.config/nvim/lua/plugins/util.lua
Normal file
213
config/.config/nvim/lua/plugins/util.lua
Normal file
@@ -0,0 +1,213 @@
|
||||
return {
|
||||
|
||||
{ "sindrets/diffview.nvim" },
|
||||
|
||||
{
|
||||
'windwp/nvim-autopairs',
|
||||
event = "InsertEnter",
|
||||
config = true
|
||||
-- use opts = {} for passing setup options
|
||||
-- this is equivalent to setup({}) function
|
||||
},
|
||||
|
||||
{
|
||||
'brenoprata10/nvim-highlight-colors',
|
||||
opts = {
|
||||
render = 'virtual',
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
'echasnovski/mini.nvim',
|
||||
config = function()
|
||||
local miniclue = require'mini.clue'
|
||||
miniclue.setup{
|
||||
window = {
|
||||
delay = 0,
|
||||
config = {
|
||||
width = 'auto',
|
||||
},
|
||||
},
|
||||
triggers = {
|
||||
-- Leader triggers
|
||||
{ mode = 'n', keys = '<Leader>' },
|
||||
{ mode = 'x', keys = '<Leader>' },
|
||||
|
||||
-- Built-in completion
|
||||
{ mode = 'i', keys = '<C-x>' },
|
||||
|
||||
-- `g` key
|
||||
{ mode = 'n', keys = 'g' },
|
||||
{ mode = 'x', keys = 'g' },
|
||||
|
||||
-- Next
|
||||
{ mode = 'n', keys = '['},
|
||||
{ mode = 'n', keys = ']'},
|
||||
{ mode = 'x', keys = '['},
|
||||
{ mode = 'x', keys = ']'},
|
||||
|
||||
-- Marks
|
||||
{ mode = 'n', keys = "'" },
|
||||
{ mode = 'n', keys = '`' },
|
||||
{ mode = 'x', keys = "'" },
|
||||
{ mode = 'x', keys = '`' },
|
||||
|
||||
-- Registers
|
||||
{ mode = 'n', keys = '"' },
|
||||
{ mode = 'x', keys = '"' },
|
||||
{ mode = 'i', keys = '<C-r>' },
|
||||
{ mode = 'c', keys = '<C-r>' },
|
||||
|
||||
-- Window commands
|
||||
{ mode = 'n', keys = '<C-w>' },
|
||||
|
||||
-- `z` key
|
||||
{ mode = 'n', keys = 'z' },
|
||||
{ mode = 'x', keys = 'z' },
|
||||
},
|
||||
|
||||
clues = {
|
||||
-- Enhance this by adding descriptions for <Leader> mapping groups
|
||||
miniclue.gen_clues.builtin_completion(),
|
||||
miniclue.gen_clues.g(),
|
||||
miniclue.gen_clues.marks(),
|
||||
miniclue.gen_clues.registers(),
|
||||
miniclue.gen_clues.windows(),
|
||||
miniclue.gen_clues.z(),
|
||||
|
||||
{ mode = 'n', keys = '<leader>f', desc = '+Find' },
|
||||
{ mode = 'x', keys = '<leader>f', desc = '+Find' },
|
||||
|
||||
{ mode = 'n', keys = '<leader>o', desc = '+Open' },
|
||||
{ mode = 'x', keys = '<leader>o', desc = '+Open' },
|
||||
},
|
||||
}
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
'stevearc/oil.nvim',
|
||||
---@module 'oil'
|
||||
---@type oil.SetupOpts
|
||||
opts = {
|
||||
triggers = {
|
||||
{ 'g', mode = { 'n', 'x' } },
|
||||
},
|
||||
},
|
||||
-- Optional dependencies
|
||||
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,
|
||||
},
|
||||
|
||||
{ 'eandrju/cellular-automaton.nvim' },
|
||||
|
||||
{
|
||||
"kylechui/nvim-surround",
|
||||
version = "^3.0.0", -- Use for stability; omit to use `main` branch for the latest features
|
||||
event = "VeryLazy",
|
||||
config = function()
|
||||
require("nvim-surround").setup({
|
||||
-- Configuration here, or leave empty to use defaults
|
||||
})
|
||||
end
|
||||
},
|
||||
|
||||
{ 'jbyuki/nabla.nvim' },
|
||||
|
||||
{
|
||||
'krady21/compiler-explorer.nvim',
|
||||
opts = {
|
||||
autocmd = {
|
||||
enable = true,
|
||||
hl = 'Cursorline',
|
||||
},
|
||||
}
|
||||
},
|
||||
|
||||
{
|
||||
'samjwill/nvim-unception'
|
||||
},
|
||||
|
||||
{
|
||||
"jake-stewart/multicursor.nvim",
|
||||
branch = "1.0",
|
||||
config = function()
|
||||
local mc = require("multicursor-nvim")
|
||||
mc.setup()
|
||||
|
||||
local set = vim.keymap.set
|
||||
|
||||
-- Add or skip cursor above/below the main cursor.
|
||||
set({"n", "x"}, "<up>", function() mc.lineAddCursor(-1) end)
|
||||
set({"n", "x"}, "<down>", function() mc.lineAddCursor(1) end)
|
||||
-- set({"n", "x"}, "<leader><up>", function() mc.lineSkipCursor(-1) end)
|
||||
-- set({"n", "x"}, "<leader><down>", function() mc.lineSkipCursor(1) end)
|
||||
|
||||
-- Add or skip adding a new cursor by matching word/selection
|
||||
-- set({"n", "x"}, "<leader>n", function() mc.matchAddCursor(1) end)
|
||||
-- set({"n", "x"}, "<leader>s", function() mc.matchSkipCursor(1) end)
|
||||
-- set({"n", "x"}, "<leader>N", function() mc.matchAddCursor(-1) end)
|
||||
-- set({"n", "x"}, "<leader>S", function() mc.matchSkipCursor(-1) end)
|
||||
|
||||
-- Add cursor at next argument treesitter
|
||||
set({'n', 'x'}, ']A', function()
|
||||
if vim.v.count < 1 then
|
||||
mc.addCursor(']a')
|
||||
else
|
||||
for i=1, vim.v.count - 1 do
|
||||
mc.addCursor(']a')
|
||||
end
|
||||
end
|
||||
end, { desc = 'Create multicursor on next argument'})
|
||||
set({'n', 'x'}, '[A', function()
|
||||
if vim.v.count < 1 then
|
||||
mc.addCursor('[a')
|
||||
else
|
||||
for i=1, vim.v.count - 1 do
|
||||
mc.addCursor('[a')
|
||||
end
|
||||
end
|
||||
end, { desc = 'Create multicursor on previous argument'})
|
||||
|
||||
-- Add and remove cursors with control + left click.
|
||||
set("n", "<c-leftmouse>", mc.handleMouse)
|
||||
set("n", "<c-leftdrag>", mc.handleMouseDrag)
|
||||
set("n", "<c-leftrelease>", mc.handleMouseRelease)
|
||||
|
||||
-- Disable and enable cursors.
|
||||
set({"n", "x"}, "<c-q>", mc.toggleCursor)
|
||||
|
||||
-- Mappings defined in a keymap layer only apply when there are
|
||||
-- multiple cursors. This lets you have overlapping mappings.
|
||||
mc.addKeymapLayer(function(layerSet)
|
||||
|
||||
-- Select a different cursor as the main one.
|
||||
layerSet({"n", "x"}, "<left>", mc.prevCursor)
|
||||
layerSet({"n", "x"}, "<right>", mc.nextCursor)
|
||||
|
||||
-- Delete the main cursor.
|
||||
layerSet({"n", "x"}, "<leader>x", mc.deleteCursor)
|
||||
|
||||
-- Enable and clear cursors using escape.
|
||||
layerSet("n", "<esc>", function()
|
||||
if not mc.cursorsEnabled() then
|
||||
mc.enableCursors()
|
||||
else
|
||||
mc.clearCursors()
|
||||
end
|
||||
end)
|
||||
end)
|
||||
|
||||
-- Customize how cursors look.
|
||||
local hl = vim.api.nvim_set_hl
|
||||
hl(0, "MultiCursorCursor", { reverse = true })
|
||||
hl(0, "MultiCursorVisual", { link = "Visual" })
|
||||
hl(0, "MultiCursorSign", { link = "SignColumn"})
|
||||
hl(0, "MultiCursorMatchPreview", { link = "Search" })
|
||||
hl(0, "MultiCursorDisabledCursor", { reverse = true })
|
||||
hl(0, "MultiCursorDisabledVisual", { link = "Visual" })
|
||||
hl(0, "MultiCursorDisabledSign", { link = "SignColumn"})
|
||||
end
|
||||
},
|
||||
}
|
||||
Reference in New Issue
Block a user