Nvim restart (#9)

* chore(nvim): remove astronvim and configs

* feat(nvim): new, custom nvim configuration
This commit is contained in:
2023-08-27 15:12:22 +03:00
committed by GitHub
parent 3af8d8b638
commit 9fb925b38c
75 changed files with 3041 additions and 1349 deletions

View File

@@ -0,0 +1,90 @@
-- Winbar with context.
return {
"utilyre/barbecue.nvim",
dependencies = {
"neovim/nvim-lspconfig",
"SmiteshP/nvim-navic",
"kyazdani42/nvim-web-devicons", -- Optional
},
config = {
theme = "catppuccin",
-- If you set this to false, floating windows will look weird
exclude_float = true,
-- Instead of excluding countless number of filetypes, barbecue tries to only show on some buftypes
-- "": file buffer
-- "nofile": e.g. nvim-tree and nvim-dap-ui
-- "prompt": e.g. telescope.nvim and nvim-fzf
-- "terminal": e.g. fterm.nvim and toggleterm.nvim
-- ...
include_buftypes = { "" },
---Filetypes not to enable winbar in.
---
---@type string[]
exclude_filetypes = {
"",
"txt",
"markdown",
},
-- :help events
-- :help [event] (like :help BufWinEnter)
update_events = {
"BufWinEnter",
"BufWritePost",
"CursorMoved",
"CursorMovedI",
"TextChanged",
"TextChangedI",
},
-- Show `~  ...` instead of `/  home  user  ...`
tilde_home = true,
-- Your winbar will have a little padding from the edge
prefix = " ",
-- The sign between each entry
separator = "",
-- Show if lsp context is available but there is nothing to show
no_info_indicator = "",
-- Symbol to show if file has been modified (not saved). It's usually `[+]` in vim
-- `nil` to disable
modified_indicator = nil,
-- Icons passed to nvim-navic
icons = {
File = "",
Module = "",
Namespace = "",
Package = "",
Class = "",
Method = "",
Property = "",
Field = "",
Constructor = "",
Enum = "",
Interface = "",
Function = "",
Variable = "",
Constant = "",
String = "",
Number = "",
Boolean = "",
Array = "",
Object = "",
Key = "",
Null = "",
EnumMember = "",
Struct = "",
Event = "",
Operator = "",
TypeParameter = "",
Define = "",
},
},
}

View File

@@ -0,0 +1 @@
return { "kazhala/close-buffers.nvim" }

View File

@@ -0,0 +1,4 @@
return {
"LudoPinelli/comment-box.nvim",
opts = {},
}

View File

@@ -0,0 +1,29 @@
return {
"anuvyklack/fold-preview.nvim",
dependencies = { "anuvyklack/keymap-amend.nvim", "ray-x/lsp_signature.nvim" },
config = function()
local fp = require("fold-preview")
local map = require("fold-preview").mapping
local keymap = vim.keymap
keymap.amend = require("keymap-amend")
fp.setup({
default_keybindings = false,
-- another settings
})
keymap.amend("n", "K", function(original)
if not fp.show_preview() then original() end
-- or
-- if not fp.toggle_preview() then original() end
-- to close preview on second press on K.
end)
keymap.amend("n", "h", map.close_preview_open_fold)
keymap.amend("n", "l", map.close_preview_open_fold)
keymap.amend("n", "zo", map.close_preview)
keymap.amend("n", "zO", map.close_preview)
keymap.amend("n", "zc", map.close_preview_without_defer)
keymap.amend("n", "zR", map.close_preview)
keymap.amend("n", "zM", map.close_preview_without_defer)
end,
}

View File

@@ -0,0 +1,87 @@
-- Show signs of GIT written in lua
return {
"lewis6991/gitsigns.nvim",
dependencies = { "nvim-lua/plenary.nvim" },
config = {
signs = {
add = { hl = "GitSignsAdd", text = "", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
change = { hl = "GitSignsChange", text = "", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
delete = { hl = "GitSignsDelete", text = "_", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
topdelete = { hl = "GitSignsDelete", text = "", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
changedelete = { hl = "GitSignsChange", text = "~", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
},
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`
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
-- 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 })
-- Actions
map("n", "<leader>hs", gs.stage_hunk, { desc = "Stage Hunk" })
map("n", "<leader>hr", gs.reset_hunk, { desc = "Reset Hunk" })
map("v", "<leader>hs", function() gs.stage_hunk({ vim.fn.line("."), vim.fn.line("v") }) end)
map("v", "<leader>hr", function() gs.reset_hunk({ vim.fn.line("."), vim.fn.line("v") }) end)
map("n", "<leader>hS", gs.stage_buffer, { desc = "Stage Buffer" })
map("n", "<leader>hu", gs.undo_stage_hunk, { desc = "Undo Stage Hunk" })
map("n", "<leader>hR", gs.reset_buffer, { desc = "Reset Buffer" })
map("n", "<leader>hp", gs.preview_hunk, { desc = "Preview Hunk" })
map("n", "<leader>hb", function() gs.blame_line({ full = true }) end, { desc = "Blame Line" })
map("n", "<leader>tb", gs.toggle_current_line_blame, { desc = "Toggle Current Line Blame" })
map("n", "<leader>hd", gs.diffthis, { desc = "Diff This" })
map("n", "<leader>hD", function() gs.diffthis("~") end)
map("n", "<leader>td", gs.toggle_deleted, { desc = "Toggle Deleted" })
-- Text object
map({ "o", "x" }, "ih", ":<C-U>Gitsigns select_hunk<CR>")
end,
watch_gitdir = {
interval = 1000,
follow_files = true,
},
attach_to_untracked = true,
current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
current_line_blame_opts = {
virt_text = true,
virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
delay = 1000,
},
current_line_blame_formatter_opts = {
relative_time = false,
},
sign_priority = 6,
update_debounce = 100,
status_formatter = nil, -- Use default
max_file_length = 40000,
preview_config = {
-- Options passed to nvim_open_win
border = "single",
style = "minimal",
relative = "cursor",
row = 0,
col = 1,
},
yadm = {
enable = false,
},
},
}

View File

@@ -0,0 +1 @@
return { "ThePrimeagen/harpoon" }

View File

@@ -0,0 +1,70 @@
-- Floating statuslines for Neovim
-- https://github.com/b0o/incline.nvim
--
-- Lightweight floating statuslines, best used with
-- Neovim's global statusline (set laststatus=3).
return {
"b0o/incline.nvim",
config = {
debounce_threshold = {
falling = 50,
rising = 0,
},
hide = {
cursorline = true,
focused_win = false,
only_win = true,
},
highlight = {
groups = {
InclineNormal = {
default = true,
group = "NormalFloat",
},
InclineNormalNC = {
default = true,
group = "NormalFloat",
},
},
},
ignore = {
buftypes = "special",
filetypes = {},
floating_wins = true,
unlisted_buffers = true,
wintypes = "special",
},
render = "basic",
window = {
margin = {
horizontal = 1,
vertical = 1,
},
options = {
signcolumn = "no",
wrap = false,
},
padding = 1,
padding_char = " ",
placement = {
horizontal = "right",
vertical = "top",
},
width = "fit",
winhighlight = {
active = {
EndOfBuffer = "None",
Normal = "InclineNormal",
Search = "None",
},
inactive = {
EndOfBuffer = "None",
Normal = "InclineNormalNC",
Search = "None",
},
},
zindex = 10,
},
},
}

View File

@@ -0,0 +1,25 @@
return {
--
-- Menu
--
-- Icons on menu
"onsails/lspkind-nvim",
-- Restore folds and cursor position
"senderle/restoreview",
--
-- Appearance
--
-- Status information for LSP.
"j-hui/fidget.nvim",
-- Close buffer without messing up with the window.
"famiu/bufdelete.nvim",
"nyoom-engineering/oxocarbon.nvim",
-- JSONLS
"b0o/schemastore.nvim",
}

View File

@@ -0,0 +1,9 @@
return {
"mrjones2014/legendary.nvim",
-- since legendary.nvim handles all your keymaps/commands,
-- its recommended to load legendary.nvim before other plugins
priority = 10000,
lazy = false,
-- sqlite is only needed if you want to use frecency sorting
-- dependencies = { 'kkharji/sqlite.lua' }
}

View File

@@ -0,0 +1,36 @@
-- Signs for built-in marks.
return {
"chentoast/marks.nvim",
config = {
-- whether to map keybinds or not. default true
default_mappings = true,
-- which builtin marks to show. default {}
builtin_marks = { ".", "<", ">", "^" },
-- whether movements cycle back to the beginning/end of buffer. default true
cyclic = true,
-- whether the shada file is updated after modifying uppercase marks. default false
force_write_shada = false,
-- how often (in ms) to redraw signs/recompute mark positions.
-- higher values will have better performance but may cause visual lag,
-- while lower values may cause performance penalties. default 150.
refresh_interval = 250,
-- sign priorities for each type of mark - builtin marks, uppercase marks, lowercase
-- marks, and bookmarks.
-- can be either a table with all/none of the keys, or a single number, in which case
-- the priority applies to all marks.
-- default 10.
sign_priority = { lower = 10, upper = 15, builtin = 8, bookmark = 20 },
-- disables mark tracking for specific filetypes. default {}
excluded_filetypes = {},
-- marks.nvim allows you to configure up to 10 bookmark groups, each with its own
-- sign/virttext. Bookmarks can be used to group together positions and quickly move
-- across multiple buffers. default sign is '!@#$%^&*()' (from 0 to 9), and
-- default virt_text is "".
bookmark_0 = {
sign = "",
virt_text = "hello world",
},
mappings = {},
},
}

View File

@@ -0,0 +1,131 @@
return {
"echasnovski/mini.nvim",
version = "*",
config = function()
-- Common configuration presets
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-basics.md
require("mini.basics").setup()
-- Fast and flexible start screen
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-starter.md
local starter = require("mini.starter")
starter.setup({
header = table.concat({
" ▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ ",
" ▄▀░░░░░░░░░░░░▄░░░░░░░▀▄ ",
" █░░▄░░░░▄░░░░░░░░░░░░░░█ ",
" █░░░░░░░░░░░░▄█▄▄░░▄░░░█ ▄▄▄ ",
"▄▄▄▄▄ █░░░░░░▀░░░░▀█░░▀▄░░░░░█▀▀░██ ",
"██▄▀██▄█░░░▄░░░░░░░██░░░░▀▀▀▀▀░░░░██ ",
" ▀██▄▀██░░░░░░░░▀░██▀░░░░░░░░░░░░░▀██",
" ▀████░▀░░░░▄░░░██░░░▄█░░░░▄░▄█░░██",
" ▀█░░░░▄░░░░░██░░░░▄░░░▄░░▄░░░██",
" ▄█▄░░░░░░░░░░░▀▄░░▀▀▀▀▀▀▀▀░░▄▀ ",
" █▀▀█████████▀▀▀▀████████████▀ ",
" ████▀ ███▀ ▀███ ▀██▀ ",
}, "\n"),
evaluate_single = true,
items = {
starter.sections.telescope(),
starter.sections.builtin_actions(),
starter.sections.recent_files(5, true, true),
},
content_hooks = {
starter.gen_hook.adding_bullet(),
starter.gen_hook.aligning("center", "center"),
},
})
-- Miscellaneous useful functions
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-misc.md
require("mini.misc").setup()
-- Extend and create a/i textobjects
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-ai.md
require("mini.ai").setup()
-- Align text interactively
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-align.md
require("mini.align").setup()
-- Animate common Neovim actions
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-animate.md
require("mini.animate").setup()
-- Go forward/backward with square brackets
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-bracketed.md
require("mini.bracketed").setup()
-- Comment lines
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-comment.md
require("mini.comment").setup()
-- Autocompletion and signature help plugin
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-completion.md
require("mini.completion").setup()
-- Automatic highlighting of word under cursor
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-cursorword.md
require("mini.cursorword").setup()
-- Highlight patterns in text
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-hipatterns.md
local hipatterns = require("mini.hipatterns")
hipatterns.setup({
highlighters = {
-- Highlight standalone 'FIXME', 'HACK', 'TODO', 'NOTE'
fixme = { pattern = "%f[%w]()FIXME()%f[%W]", group = "MiniHipatternsFixme" },
hack = { pattern = "%f[%w]()HACK()%f[%W]", group = "MiniHipatternsHack" },
todo = { pattern = "%f[%w]()TODO()%f[%W]", group = "MiniHipatternsTodo" },
note = { pattern = "%f[%w]()NOTE()%f[%W]", group = "MiniHipatternsNote" },
-- Highlight hex color strings (`#rrggbb`) using that color
hex_color = hipatterns.gen_highlighter.hex_color(),
},
})
-- Visualize and work with indent scope
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-indentscope.md
require("mini.indentscope").setup()
-- Jump to next/previous single character
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-jump.md
require("mini.jump").setup()
-- Jump within visible lines via iterative label filtering
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-jump2d.md
require("mini.jump2d").setup()
-- Window with buffer text overview, scrollbar, and highlights
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-map.md
require("mini.map").setup()
-- Move any selection in any direction
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-move.md
require("mini.move").setup()
-- Text edit operators
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-operators.md
-- require("mini.operators").setup()
-- Minimal and fast autopairs
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-pairs.md
require("mini.pairs").setup()
-- Split and join arguments
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-splitjoin.md
require("mini.splitjoin").setup()
-- Minimal and fast statusline module with opinionated default look
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-statusline.md
require("mini.statusline").setup()
-- Minimal and fast tabline showing listed buffers
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-tabline.md
require("mini.tabline").setup()
-- Work with trailing whitespace
-- https://github.com/echasnovski/mini.nvim/blob/main/readmes/mini-trailspace.md
require("mini.trailspace").setup()
end,
}

View File

@@ -0,0 +1,415 @@
-- File-tree manager.
-- Unless you are still migrating, remove the deprecated commands from v1.x
vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]])
return {
"nvim-neo-tree/neo-tree.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"kyazdani42/nvim-web-devicons", -- not strictly required, but recommended
"MunifTanjim/nui.nvim",
{
-- only needed if you want to use the commands with "_with_window_picker" suffix
"s1n7ax/nvim-window-picker",
config = function()
require("window-picker").setup({
autoselect_one = true,
include_current = false,
filter_rules = {
-- filter using buffer options
bo = {
-- if the file type is one of following, the window will be ignored
filetype = { "neo-tree", "neo-tree-popup", "notify" },
-- if the buffer type is one of following, the window will be ignored
buftype = { "terminal", "quickfix" },
},
},
other_win_hl_color = "#e35e4f",
})
end,
},
},
config = function()
-- If you want icons for diagnostic errors, you'll need to define them somewhere:
vim.fn.sign_define("DiagnosticSignError", { text = "", texthl = "DiagnosticSignError" })
vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" })
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
vim.fn.sign_define("DiagnosticSignHint", { text = "󰌵", texthl = "DiagnosticSignHint" })
require("neo-tree").setup({
close_if_last_window = true, -- Close Neo-tree if it is the last window left in the tab
popup_border_style = "rounded", -- "double", "none", "rounded", "shadow", "single" or "solid"
enable_git_status = true,
enable_diagnostics = true,
enable_normal_mode_for_inputs = false, -- Enable normal mode for input dialogs.
open_files_do_not_replace_types = { "terminal", "trouble", "qf" }, -- when opening files, do not use windows containing these filetypes or buftypes
-- popup_border_style is for input and confirmation dialogs.
-- Configurtaion of floating window is done in the individual source sections.
-- "NC" is a special style that works well with NormalNC set
close_floats_on_escape_key = true,
default_source = "filesystem",
git_status_async = true,
log_level = "info", -- "trace", "debug", "info", "warn", "error", "fatal"
log_to_file = false, -- true, false, "/path/to/file.log", use :NeoTreeLogs to show the file
open_files_in_last_window = true, -- false = open files in top left window
resize_timer_interval = 100, -- in ms, needed for containers to redraw right aligned and faded content
sort_case_insensitive = true, -- used when sorting files and directories in the tree
use_popups_for_input = false, -- If false, inputs will use vim.ui.input() instead of custom floats.
sort_function = nil, -- use a custom function for sorting files and directories in the tree
event_handlers = {
-- {
-- event = "before_render",
-- handler = function (state)
-- -- add something to the state that can be used by custom components
-- end
-- },
-- {
-- event = "file_opened",
-- handler = function(file_path)
-- --auto close
-- require("neo-tree").close_all()
-- end
-- },
-- {
-- event = "file_opened",
-- handler = function(file_path)
-- --clear search after opening a file
-- require("neo-tree.sources.filesystem").reset_search()
-- end
-- },
-- {
-- event = "file_renamed",
-- handler = function(args)
-- -- fix references to file
-- print(args.source, " renamed to ", args.destination)
-- end
-- },
-- {
-- event = "file_moved",
-- handler = function(args)
-- -- fix references to file
-- print(args.source, " moved to ", args.destination)
-- end
-- },
{
event = "neo_tree_buffer_enter",
handler = function()
vim.cmd("set winbar=")
vim.cmd("highlight CursorLine gui='bold'")
vim.cmd("highlight CursorColumn guibg=NONE")
--vim.cmd("set guicursor+=a:InvisibleCursor")
--vim.cmd("highlight InvisibleCursor gui=reverse blend=100")
end,
},
{
event = "neo_tree_buffer_leave",
handler = function()
--vim.cmd("set guicursor-=a:InvisibleCursor")
vim.cmd("highlight CursorLine gui=NONE")
end,
},
},
default_component_configs = {
container = {
enable_character_fade = true,
},
indent = {
indent_size = 2,
padding = 1, -- extra padding on left hand side
-- indent guides
with_markers = true,
indent_marker = "",
last_indent_marker = "",
highlight = "NeoTreeIndentMarker",
-- expander config, needed for nesting files
with_expanders = true, -- if nil and file nesting is enabled, will enable expanders
expander_collapsed = "",
expander_expanded = "",
expander_highlight = "NeoTreeExpander",
},
icon = {
folder_closed = "",
folder_open = "",
folder_empty = "-",
-- The next two settings are only a fallback, if you use nvim-web-devicons and configure default icons there
-- then these will never be used.
default = "*",
highlight = "NeoTreeFileIcon",
},
modified = {
symbol = "[+]",
highlight = "NeoTreeModified",
},
name = {
trailing_slash = true,
use_git_status_colors = false,
highlight = "NeoTreeFileName",
},
git_status = {
symbols = {
-- Change type
added = "˖", -- or "✚", but this is redundant info if you use git_status_colors on the name
modified = "±", -- or "", but this is redundant info if you use git_status_colors on the name
deleted = "", -- this can only be used in the git_status source
renamed = "", -- this can only be used in the git_status source
-- Status type
untracked = "?",
ignored = "",
unstaged = "·",
staged = "",
conflict = "",
},
},
},
renderers = {
directory = {
{ "indent" },
{ "icon" },
{ "current_filter" },
{
"container",
width = "100%",
right_padding = 0,
--max_width = 60,
content = {
{ "name", zindex = 10 },
-- {
-- "symlink_target",
-- zindex = 10,
-- highlight = "NeoTreeSymbolicLinkTarget",
-- },
{ "clipboard", zindex = 10 },
{ "diagnostics", errors_only = true, zindex = 20, align = "right" },
},
},
},
file = {
{ "indent" },
{ "icon" },
{
"container",
width = "100%",
right_padding = 0,
--max_width = 60,
content = {
{
"name",
use_git_status_colors = false,
zindex = 10,
},
-- {
-- "symlink_target",
-- zindex = 10,
-- highlight = "NeoTreeSymbolicLinkTarget",
-- },
{ "clipboard", zindex = 10 },
{ "bufnr", zindex = 10 },
-- { "harpoon_index" }, --> This is what actually adds the component in where you want it
{ "modified", zindex = 20, align = "right" },
{ "diagnostics", zindex = 20, align = "right" },
{ "git_status", zindex = 20, align = "right" },
},
},
},
},
-- A list of functions, each representing a global custom command
-- that will be available in all sources (if not overridden in `opts[source_name].commands`)
-- see `:h neo-tree-custom-commands-global`
commands = {},
window = { -- see https://github.com/MunifTanjim/nui.nvim/tree/main/lua/nui/popup for
-- possible options. These can also be functions that return these options.
position = "left", -- left, right, float, current
width = 40, -- applies to left and right positions
mapping_options = {
noremap = true,
nowait = true,
},
popup = { -- settings that apply to float position only
size = {
height = "80%",
width = "50%",
},
position = "50%", -- 50% means center it
-- you can also specify border here, if you want a different setting from
-- the global popup_border_style.
},
-- Mappings for tree window. See `:h nep-tree-mappings` for a list of built-in commands.
-- You can also create your own commands by providing a function instead of a string.
mappings = {
["<space>"] = {
"toggle_node",
nowait = false, -- disable `nowait` if you have existing combos starting with this char that you want to use
},
["<2-LeftMouse>"] = "open",
["<cr>"] = "open",
["<esc>"] = "cancel", -- close preview or floating neo-tree window
["P"] = { "toggle_preview", config = { use_float = true } },
["l"] = "focus_preview",
["S"] = "open_split",
["s"] = "open_vsplit",
-- ["S"] = "split_with_window_picker",
-- ["s"] = "vsplit_with_window_picker",
["t"] = "open_tabnew",
-- ["<cr>"] = "open_drop",
-- ["t"] = "open_tab_drop",
["w"] = "open_with_window_picker",
--["P"] = "toggle_preview", -- enter preview mode, which shows the current node without focusing
["C"] = "close_node",
-- ['C'] = 'close_all_subnodes',
["z"] = "close_all_nodes",
--["Z"] = "expand_all_nodes",
["a"] = {
"add",
-- this command supports BASH style brace expansion ("x{a,b,c}" -> xa,xb,xc). see `:h neo-tree-file-actions` for details
-- some commands may take optional config options, see `:h neo-tree-mappings` for details
config = {
show_path = "none", -- "none", "relative", "absolute"
},
},
["A"] = "add_directory", -- also accepts the optional config.show_path option like "add". this also supports BASH style brace expansion.
["d"] = "delete",
["r"] = "rename",
["y"] = "copy_to_clipboard",
["x"] = "cut_to_clipboard",
["p"] = "paste_from_clipboard",
["c"] = "copy", -- takes text input for destination, also accepts the optional config.show_path option like "add":
-- ["c"] = {
-- "copy",
-- config = {
-- show_path = "none" -- "none", "relative", "absolute"
-- }
--}
["m"] = "move", -- takes text input for destination, also accepts the optional config.show_path option like "add".
["q"] = "close_window",
["R"] = "refresh",
["?"] = "show_help",
["<"] = "prev_source",
[">"] = "next_source",
},
},
nesting_rules = {},
filesystem = {
commands = {}, -- Add a custom command or override a global one using the same function name
components = {
harpoon_index = function(config, node, state)
local Marked = require("harpoon.mark")
local path = node:get_id()
local succuss, index = pcall(Marked.get_index_of, path)
if succuss and index and index > 0 then
return {
text = string.format(" ⥤ %d", index), -- <-- Add your favorite harpoon like arrow here
highlight = config.highlight or "NeoTreeDirectoryIcon",
}
else
return {}
end
end,
},
filtered_items = {
visible = false, -- when true, they will just be displayed differently than normal items
hide_dotfiles = false,
hide_gitignored = false,
hide_hidden = true, -- only works on Windows for hidden files/directories
hide_by_name = {
".git",
".DS_Store",
"thumbs.db",
".idea",
".mypy_cache",
"node_modules",
},
hide_by_pattern = { -- uses glob style patterns
--"*.meta",
--"*/src/*/tsconfig.json",
"*-cache",
"*.cache",
".null-ls_*",
},
never_show = { -- remains hidden even if visible is toggled to true
".DS_Store",
"thumbs.db",
},
always_show = { -- remains visible even if other settings would normally hide it
".gitignore",
".gitkeep",
},
},
find_by_full_path_words = true,
group_empty_dirs = false, -- when true, empty folders will be grouped together
bind_to_cwd = false, -- true creates a 2-way binding between vim's cwd and neo-tree's root
search_limit = 50, -- max number of search results when using filters
follow_current_file = {
enabled = false, -- This will find and focus the file in the active buffer every time
-- -- the current file is changed while the tree is open.
leave_dirs_open = false, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
},
hijack_netrw_behavior = "open_default", -- netrw disabled, opening a directory opens neo-tree
-- in whatever position is specified in window.position
-- "open_current", -- netrw disabled, opening a directory opens within the
-- window like netrw would, regardless of window.position
-- "disabled", -- netrw left alone, neo-tree does not handle opening dirs
use_libuv_file_watcher = false, -- This will use the OS level file watchers to detect changes
-- instead of relying on nvim autocmd events.
window = {
mappings = {
["."] = "set_root",
["/"] = "fuzzy_finder",
["#"] = "fuzzy_sorter", -- fuzzy sorting using the fzy algorithm
["<bs>"] = "navigate_up",
["<c-up>"] = "navigate_up",
["<c-x>"] = "clear_filter",
["D"] = "fuzzy_finder_directory",
["f"] = "filter_on_submit",
["gn"] = "next_git_modified",
["gp"] = "prev_git_modified",
["H"] = "toggle_hidden",
},
fuzzy_finder_mappings = { -- define keymaps for filter popup window in fuzzy_finder_mode
["<down>"] = "move_cursor_down",
["<C-n>"] = "move_cursor_down",
["<up>"] = "move_cursor_up",
["<C-p>"] = "move_cursor_up",
},
},
},
buffers = {
follow_current_file = {
enabled = true, -- This will find and focus the file in the active buffer every time
-- -- the current file is changed while the tree is open.
leave_dirs_open = true, -- `false` closes auto expanded dirs, such as with `:Neotree reveal`
},
group_empty_dirs = true, -- when true, empty folders will be grouped together
show_unloaded = true,
window = {
mappings = {
["bd"] = "buffer_delete",
["<bs>"] = "navigate_up",
["."] = "set_root",
},
},
},
git_status = {
window = {
position = "float",
mappings = {
["A"] = "git_add_all",
["gu"] = "git_unstage_file",
["ga"] = "git_add_file",
["gr"] = "git_revert_file",
["gc"] = "git_commit",
["gp"] = "git_push",
["gg"] = "git_commit_and_push",
},
},
},
})
vim.cmd([[nnoremap \ :Neotree reveal<cr>]])
end,
}

View File

@@ -0,0 +1,20 @@
local prefix = "<leader>a"
return {
"danymat/neogen",
cmd = "Neogen",
opts = {
snippet_engine = "luasnip",
languages = {
lua = { template = { annotation_convention = "ldoc" } },
typescript = { template = { annotation_convention = "tsdoc" } },
typescriptreact = { template = { annotation_convention = "tsdoc" } },
},
},
keys = {
{ prefix .. "<cr>", function() require("neogen").generate({ type = "current" }) end, desc = "Current" },
{ prefix .. "c", function() require("neogen").generate({ type = "class" }) end, desc = "Class" },
{ prefix .. "f", function() require("neogen").generate({ type = "func" }) end, desc = "Function" },
{ prefix .. "t", function() require("neogen").generate({ type = "type" }) end, desc = "Type" },
{ prefix .. "F", function() require("neogen").generate({ type = "file" }) end, desc = "File" },
},
}

View File

@@ -0,0 +1,56 @@
return {
"jose-elias-alvarez/null-ls.nvim",
config = function()
local null_ls = require("null-ls")
-- Check supported formatters and linters
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting
-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics
-- Register any number of sources simultaneously
null_ls.setup({
-- filetypes = { "markdown", "text" },
sources = {
-- Code Actions
null_ls.builtins.code_actions.eslint,
null_ls.builtins.code_actions.gitsigns,
null_ls.builtins.code_actions.refactoring,
null_ls.builtins.code_actions.shellcheck,
-- Diagnostics
null_ls.builtins.diagnostics.actionlint,
null_ls.builtins.diagnostics.alex,
null_ls.builtins.diagnostics.ansiblelint,
null_ls.builtins.diagnostics.dotenv_linter,
null_ls.builtins.diagnostics.editorconfig_checker,
null_ls.builtins.diagnostics.eslint,
null_ls.builtins.diagnostics.jsonlint,
null_ls.builtins.diagnostics.luacheck,
null_ls.builtins.diagnostics.php,
null_ls.builtins.diagnostics.phpcs,
null_ls.builtins.diagnostics.phpstan,
null_ls.builtins.diagnostics.psalm,
null_ls.builtins.diagnostics.semgrep,
null_ls.builtins.diagnostics.shellcheck,
null_ls.builtins.diagnostics.stylelint,
null_ls.builtins.diagnostics.tfsec,
null_ls.builtins.diagnostics.trail_space,
null_ls.builtins.diagnostics.tsc,
null_ls.builtins.diagnostics.write_good,
null_ls.builtins.diagnostics.zsh,
-- Formatting
null_ls.builtins.formatting.clang_format,
null_ls.builtins.formatting.fixjson,
null_ls.builtins.formatting.isort,
null_ls.builtins.formatting.jq,
null_ls.builtins.formatting.phpcsfixer,
null_ls.builtins.formatting.prettier,
null_ls.builtins.formatting.rome,
null_ls.builtins.formatting.shfmt.with({
args = { "-i", "1", "-bn", "-ci", "-sr", "-kb", "-fn" },
}),
},
})
end,
}

View File

@@ -0,0 +1,257 @@
-- Completion menu.
-- Icons to display.
local icons = {
Text = "",
Method = "",
Function = "",
Constructor = "",
Field = "",
Variable = "",
Class = "",
Interface = "",
Module = "",
Property = "",
Unit = "",
Value = "",
Enum = "",
Keyword = "",
Snippet = "",
Color = "",
File = "",
Reference = "",
Folder = "",
EnumMember = "",
Constant = "",
Struct = "",
Event = "",
Operator = "",
TypeParameter = " T ",
Book = "",
}
-- Load loaders from VSCode.
--require("luasnip.loaders.from_vscode").lazy_load({
-- paths = { "~/.local/share/lazy/friendly-snippets" }
--})
return {
"hrsh7th/nvim-cmp",
dependencies = {
{ "octaltree/cmp-look" },
--
{ "hrsh7th/cmp-nvim-lsp" },
--
{ "hrsh7th/cmp-nvim-lua" },
-- Buffer words.
{ "hrsh7th/cmp-buffer" },
-- Path autocompletion.
{ "hrsh7th/cmp-path" },
--
{ "hrsh7th/cmp-cmdline" },
--
{ "saadparwaiz1/cmp_luasnip" },
--
{ "hrsh7th/vim-vsnip" },
--
{ "rafamadriz/friendly-snippets" },
-- Snippets for lua.
{ "L3MON4D3/LuaSnip" }, --config = "luasnip" },
--
{ "hrsh7th/cmp-vsnip" },
--
-- Signature for functions.
--{ 'hrsh7th/cmp-nvim-lsp-signature-help' },
--
{ "hrsh7th/vim-vsnip-integ" },
-- Make arimathetic operations.
{ "hrsh7th/cmp-calc" },
-- Emoji.
{ "hrsh7th/cmp-emoji" },
},
config = function()
local cmp = require("cmp")
local luasnip = require("luasnip")
require("luasnip.loaders.from_vscode").lazy_load()
luasnip.config.setup({})
-- Load specialities from LuaSnip.
-- Set it with VSCode-like mode.
luasnip.config.set_config({
history = true,
updateevents = "TextChanged,TextChangedI",
})
cmp.setup({
-- Window documentation, for defining its dimensions.
window = {
-- Max 10 items on display for documentation.
max_height = 10,
completion = {
side_padding = 0,
col_offset = 1,
},
},
-- Snippet support.
snippet = {
expand = function(args) require("luasnip").lsp_expand(args.body) end,
},
-- How the match works based on the input.
matching = {
-- Whethever we allow fuzzy matching or not.
disallow_fuzzy_matching = false,
},
-- Mapping each keybind.
mapping = {
["<C-n>"] = cmp.mapping.select_next_item(),
["<C-p>"] = cmp.mapping.select_prev_item(),
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<C-e>"] = cmp.mapping.close(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
["<Tab>"] = function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif require("luasnip").expand_or_jumpable() then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-expand-or-jump", true, true, true), "")
else
fallback()
end
end,
["<S-Tab>"] = function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif require("luasnip").jumpable(-1) then
vim.fn.feedkeys(vim.api.nvim_replace_termcodes("<Plug>luasnip-jump-prev", true, true, true), "")
else
fallback()
end
end,
},
-- Formatting the menu display.
formatting = {
fields = { "kind", "abbr", "menu" },
format = function(_, vim_item)
vim_item.menu = vim_item.kind
-- load lspkind icons
--vim_item.kind = string.format(
-- "%s %s",
-- icons[vim_item.kind],
-- vim_item.kind
--)
vim_item.kind = icons[vim_item.kind]
--vim_item.menu = string.format(
-- "%s %s",
-- ({
-- nvim_lsp = "力",
-- nvim_lua = "",
-- luasnip = icons.Color,
-- path = "﫶",
-- buffer = "﬘ ",
-- look = icons.Book,
-- emoji = "😎",
-- })[entry.source.name],
-- name
--)
return vim_item
end,
},
-- Experimental features.
experimental = {
-- It will type a shadow text of the intended completion.
ghost_text = { hl_group = "Comment" },
},
-- Sources for completion, since it is modular; cmp accepts
-- Multiple modules.
sources = {
-- Simple signature, normally outside an object.
--{ name = 'nvim_lsp_signature_help', priority = 15 },
-- More snippets.
-- For all types of languages.
{
name = "friendly-snippets",
priority = 11,
},
-- For the Nvim lua specifics commands.
{
name = "nvim_lua",
priority = 8,
},
-- Support with the current active LSP.
-- Anything that LSP supports and can share with CMP.
{
name = "nvim_lsp",
priority = 11,
--max_item_count = 10,
},
-- Snippets in general to facilitate life.
-- Type a often typed methods, like for in C.
-- { name = "luasnip", priority = 6 },
-- Show path based on the backslashes.
-- Type any path, relatively or globally.
{
name = "path",
priority = 9,
},
-- Words from buffer.
{
name = "buffer",
priority = 4,
},
-- Max item count.
-- Dictionary for words.
-- Type any word that is on the /usr/share/dict/words
--{
-- name = 'look',
-- priority = 1,
-- keyword_length = 3,
-- max_item_count = 4,
-- option = {
-- convert_case = true,
-- loud = true,
-- dict = '/usr/share/dict/words'
-- },
--},
-- Emoji.
-- Activate with ":".
{ name = "emoji", priority = 2, option = { insert = true } },
-- Calculate expressions based on the current line.
-- Activate with something like "4 + 5".
{
name = "calc",
priority = 10,
},
},
})
end,
}
-- The line beneath this is called `modeline`. See `:help modeline`
-- vim: ts=2 sts=2 sw=2 et

View File

@@ -0,0 +1,92 @@
--
-- Shows how to use the DAP plugin to debug your code.
--
-- Primarily focused on configuring the debugger for Go, but can
-- be extended to other languages as well. That's why it's called
-- kickstart.nvim and not kitchen-sink.nvim ;)
return {
"mfussenegger/nvim-dap",
dependencies = {
-- Creates a beautiful debugger UI
"rcarriga/nvim-dap-ui",
-- Installs the debug adapters for you
"williamboman/mason.nvim",
"jay-babu/mason-nvim-dap.nvim",
-- Add your own debuggers here
"leoluz/nvim-dap-go",
},
config = function()
local dap = require("dap")
local dapui = require("dapui")
require("mason-nvim-dap").setup({
-- Makes a best effort to setup the various debuggers with
-- reasonable debug configurations
automatic_setup = true,
automatic_installation = true,
-- You can provide additional configuration to the handlers,
-- see mason-nvim-dap README for more information
handlers = {},
-- You'll need to check that you have the required things installed
-- online, please don't ask me how to install them :)
ensure_installed = {
-- Update this to ensure that you have the debuggers for the langs you want
"bash",
"delve",
"js",
"php",
"python",
},
})
-- Basic debugging keymaps, feel free to change to your liking!
vim.keymap.set("n", "<F5>", dap.continue, { desc = "Debug: Start/Continue" })
vim.keymap.set("n", "<F1>", dap.step_into, { desc = "Debug: Step Into" })
vim.keymap.set("n", "<F2>", dap.step_over, { desc = "Debug: Step Over" })
vim.keymap.set("n", "<F3>", dap.step_out, { desc = "Debug: Step Out" })
vim.keymap.set("n", "<leader>Db", dap.toggle_breakpoint, { desc = "Debug: Toggle Breakpoint" })
vim.keymap.set(
"n",
"<leader>DB",
function() dap.set_breakpoint(vim.fn.input("Breakpoint condition: ")) end,
{ desc = "Debug: Set Breakpoint" }
)
-- Dap UI setup
-- For more information, see |:help nvim-dap-ui|
dapui.setup({
-- Set icons to characters that are more likely to work in every terminal.
-- Feel free to remove or use ones that you like more! :)
-- Don't feel like these are good choices.
icons = { expanded = "", collapsed = "", current_frame = "*" },
controls = {
icons = {
pause = "",
play = "",
step_into = "",
step_over = "",
step_out = "",
step_back = "b",
run_last = "▶▶",
terminate = "",
disconnect = "",
},
},
})
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
vim.keymap.set("n", "<F7>", dapui.toggle, { desc = "Debug: See last session result." })
dap.listeners.after.event_initialized["dapui_config"] = dapui.open
dap.listeners.before.event_terminated["dapui_config"] = dapui.close
dap.listeners.before.event_exited["dapui_config"] = dapui.close
-- Install golang specific config
require("dap-go").setup()
end,
}

View File

@@ -0,0 +1,81 @@
return {
-- LSP auto-complete.
"neovim/nvim-lspconfig",
dependencies = {
-- Automatically install LSPs to stdpath for neovim
{ "williamboman/mason.nvim", config = true },
"williamboman/mason-lspconfig.nvim",
-- Useful status updates for LSP
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
{ "j-hui/fidget.nvim", tag = "legacy", opts = {} },
-- Additional lua configuration, makes nvim stuff amazing!
"folke/neodev.nvim",
},
init = function()
-- disable lsp watcher. Too slow on linux
local ok, wf = pcall(require, "vim.lsp._watchfiles")
if ok then wf._watchfunc = function()
return function() end
end end
end,
config = function()
-- Switch for controlling whether you want autoformatting.
-- Use :KickstartFormatToggle to toggle autoformatting on or off
local format_is_enabled = true
vim.api.nvim_create_user_command("KickstartFormatToggle", function()
format_is_enabled = not format_is_enabled
print("Setting autoformatting to: " .. tostring(format_is_enabled))
end, {})
-- Create an augroup that is used for managing our formatting autocmds.
-- We need one augroup per client to make sure that multiple clients
-- can attach to the same buffer without interfering with each other.
local _augroups = {}
local get_augroup = function(client)
if not _augroups[client.id] then
local group_name = "kickstart-lsp-format-" .. client.name
local id = vim.api.nvim_create_augroup(group_name, { clear = true })
_augroups[client.id] = id
end
return _augroups[client.id]
end
-- Whenever an LSP attaches to a buffer, we will run this function.
--
-- See `:help LspAttach` for more information about this autocmd event.
vim.api.nvim_create_autocmd("LspAttach", {
group = vim.api.nvim_create_augroup("kickstart-lsp-attach-format", { clear = true }),
-- This is where we attach the autoformatting for reasonable clients
callback = function(args)
local client_id = args.data.client_id
local client = vim.lsp.get_client_by_id(client_id)
local bufnr = args.buf
-- Only attach to clients that support document formatting
if not client.server_capabilities.documentFormattingProvider then return end
-- Tsserver usually works poorly. Sorry you work with bad languages
-- You can remove this line if you know what you're doing :)
if client.name == "tsserver" then return end
-- Create an autocmd that will run *before* we save the buffer.
-- Run the formatting command for the LSP that has just attached.
vim.api.nvim_create_autocmd("BufWritePre", {
group = get_augroup(client),
buffer = bufnr,
callback = function()
if not format_is_enabled then return end
vim.lsp.buf.format({
async = false,
filter = function(c) return c.id == client.id end,
})
end,
})
end,
})
end,
}

View File

@@ -0,0 +1,9 @@
return {
"chrisgrieser/nvim-origami",
event = "BufReadPost", -- later or on keypress would prevent saving folds
opts = {
keepFoldsAcrossSessions = true,
pauseFoldsOnSearch = true,
setupFoldKeymaps = true,
},
}

View File

@@ -0,0 +1,5 @@
return {
"bennypowers/nvim-regexplainer",
opts = {},
ft = { "html", "javascript", "javascriptreact", "typescript", "typescriptreact" },
}

View File

@@ -0,0 +1,17 @@
--[[
Old text Command New text
--------------------------------------------------------------------------------
surround_words ysiw) (surround_words)
make strings ys$" "make strings"
[delete ar*ound me!] ds] delete around me!
"change quot*es" cs'" "change quotes"
<b>or tag* types</b> csth1<CR> <h1>or tag types</h1>
delete(functi*on calls) dsf function calls
]]
return {
"kylechui/nvim-surround",
version = "*", -- Use for stability; omit to use `main` branch for the latest features
event = "VeryLazy",
config = function() require("nvim-surround").setup() end,
}

View File

@@ -0,0 +1,9 @@
return {
"nvim-treesitter/nvim-treesitter-context",
lazy = false,
enabled = true,
opts = {
enable = true,
mode = "cursor", -- cursor, or topline
},
}

View File

@@ -0,0 +1,110 @@
-- Treesitter (more highlight for syntax_on).
return {
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
config = function()
require("nvim-treesitter.configs").setup({
-- Add languages to be installed here that you want installed for treesitter
ensure_installed = {
"bash",
"c",
"cmake",
"comment",
"diff",
"dockerfile",
"gitignore",
"go",
"graphql",
"html",
"javascript",
"json",
"json5",
"latex",
"lua",
"markdown",
"php",
"phpdoc",
"python",
"regex",
"scss",
"terraform",
"todotxt",
"toml",
"tsx",
"typescript",
"vim",
"vimdoc",
"vue",
"yaml",
},
-- Autoinstall languages that are not installed.
auto_install = true,
highlight = {
enable = true,
disable = {},
--injections = {
-- python = {
-- docstrings: "markdown",
-- },
--}
},
indent = { enable = true },
incremental_selection = {
enable = true,
keymaps = {
init_selection = "<c-space>",
node_incremental = "<c-space>",
scope_incremental = "<c-s>",
node_decremental = "<M-space>",
},
},
textobjects = {
select = {
enable = true,
lookahead = true, -- Automatically jump forward to textobj, similar to targets.vim
keymaps = {
-- You can use the capture groups defined in textobjects.scm
["aa"] = "@parameter.outer",
["ia"] = "@parameter.inner",
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = "@class.inner",
},
},
move = {
enable = true,
set_jumps = true, -- whether to set jumps in the jumplist
goto_next_start = {
["]m"] = "@function.outer",
["]]"] = "@class.outer",
},
goto_next_end = {
["]M"] = "@function.outer",
["]["] = "@class.outer",
},
goto_previous_start = {
["[m"] = "@function.outer",
["[["] = "@class.outer",
},
goto_previous_end = {
["[M"] = "@function.outer",
["[]"] = "@class.outer",
},
},
swap = {
enable = true,
swap_next = {
["<leader>a"] = "@parameter.inner",
},
swap_previous = {
["<leader>A"] = "@parameter.inner",
},
},
},
})
end,
}

View File

@@ -0,0 +1,55 @@
-- Fold code.
return {
"anuvyklack/pretty-fold.nvim",
config = {
fill_char = "",
sections = {
left = {
"content",
},
right = {
" ",
"number_of_folded_lines",
": ",
"percentage",
" ",
function(config) return config.fill_char:rep(3) end,
},
},
remove_fold_markers = false,
-- Keep the indentation of the content of the fold string.
keep_indentation = true,
-- Possible values:
-- "delete" : Delete all comment signs from the fold string.
-- "spaces" : Replace all comment signs with equal number of spaces.
-- false : Do nothing with comment signs.
process_comment_signs = "spaces",
-- Comment signs additional to the value of `&commentstring` option.
comment_signs = {
{ "/**", "*/" }, -- multiline comment
{ "<!--", "-->" }, -- multiline comment
{ "%--[[", "--]]" }, -- multiline comment
},
-- List of patterns that will be removed from content foldtext section.
stop_words = {
"@brief%s*", -- (for C++) Remove '@brief' and all spaces after.
},
add_close_pattern = true,
matchup_patterns = {
{ "{", "}" },
{ "%(", ")" }, -- % to escape lua pattern char
{ "%[", "]" }, -- % to escape lua pattern char
{ "if%s", "end" },
{ "do%s", "end" },
{ "for%s", "end" },
{ "function%s*%(", "end" }, -- 'function(' or 'function ('
},
},
}

View File

@@ -0,0 +1,14 @@
return {
{
"jay-babu/project.nvim",
name = "project_nvim",
event = "VeryLazy",
opts = { ignore_lsp = { "lua_ls" } },
},
{
"nvim-telescope/telescope.nvim",
optional = true,
dependencies = { "project_nvim" },
opts = function() require("telescope").load_extension("projects") end,
},
}

View File

@@ -0,0 +1,97 @@
return {
"ThePrimeagen/refactoring.nvim",
dependencies = { "nvim-lua/plenary.nvim", "nvim-treesitter/nvim-treesitter" },
cmd = { "Refactor" },
opts = {},
keys = {
{
"<leader>re",
[[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function')<CR>]],
{ silent = true, expr = false },
mode = {
"v",
"x",
},
desc = "Extract Function",
},
{
"<leader>rf",
[[ <Esc><Cmd>lua require('refactoring').refactor('Extract Function To File')<CR>]],
{ silent = true, expr = false },
mode = {
"v",
"x",
},
desc = "Extract Function To File",
},
{
"<leader>rv",
[[ <Esc><Cmd>lua require('refactoring').refactor('Extract Variable')<CR>]],
{ silent = true, expr = false },
mode = {
"v",
"x",
},
desc = "Extract Variable",
},
{
"<leader>ri",
[[ <Esc><Cmd>lua require('refactoring').refactor('Inline Variable')<CR>]],
{ silent = true, expr = false },
mode = {
"n",
"v",
"x",
},
desc = "Inline Variable",
},
{
"<leader>rb",
function() require("refactoring").refactor("Extract Block") end,
{ silent = true, expr = false },
mode = {
"n",
},
desc = "Extract Block",
},
{
"<leader>rbf",
function() require("refactoring").refactor("Extract Block To File") end,
{ silent = true, expr = false },
mode = {
"n",
},
desc = "Extract Block To File",
},
{
"<leader>rr",
function() require("refactoring").select_refactor() end,
{ silent = true, expr = false },
desc = "Select Refactor",
},
{
"<leader>rp",
function() require("refactoring").debug.printf({ below = false }) end,
mode = { "n" },
desc = "Debug: Print Function",
},
{
"<leader>rd",
function() require("refactoring").debug.print_var({ normal = true, below = false }) end,
mode = { "n" },
desc = "Debug: Print Variable",
},
{
"<leader>rd",
function() require("refactoring").debug.print_var({ below = false }) end,
mode = { "v" },
desc = "Debug: Print Variable",
},
{
"<leader>rc",
function() require("refactoring").debug.cleanup({}) end,
mode = { "n" },
desc = "Debug: Clean Up",
},
},
}

View File

@@ -0,0 +1,7 @@
return {
"m4xshen/smartcolumn.nvim",
opts = {
colorcolumn = { "80", "100", "120" },
disabled_filetypes = { "help", "text", "markdown", "json", "lazy", "starter", "neo-tree" },
},
}

View File

@@ -0,0 +1 @@
return { "stevearc/stickybuf.nvim", opts = {} }

View File

@@ -0,0 +1,8 @@
return {
"codota/tabnine-nvim",
name = "tabnine",
build = vim.loop.os_uname().sysname == "Windows_NT" and "pwsh.exe -file .\\dl_binaries.ps1" or "./dl_binaries.sh",
cmd = { "TabnineStatus", "TabnineDisable", "TabnineEnable", "TabnineToggle" },
event = "User",
opts = { accept_keymap = "<C-e>" },
}

View File

@@ -0,0 +1,132 @@
-- Telescope, a see-all-through file manager.
return {
"nvim-telescope/telescope.nvim",
dependencies = {
"nvim-lua/popup.nvim",
"nvim-lua/plenary.nvim",
-- Fuzzy Finder Algorithm which requires local dependencies to be built.
-- Only load if `make` is available. Make sure you have the system
-- requirements installed.
{
"nvim-telescope/telescope-fzf-native.nvim",
-- NOTE: If you are having trouble with this installation,
-- refer to the README for telescope-fzf-native for more instructions.
build = "make",
cond = function() return vim.fn.executable("make") == 1 end,
},
"nvim-telescope/telescope-file-browser.nvim",
},
config = function()
local actions = require("telescope.actions")
local sorters = require("telescope.sorters")
local previewers = require("telescope.previewers")
require("telescope").setup({
defaults = {
mappings = {
i = {
["<ESC>"] = actions.close,
["<C-u>"] = false,
["<C-d>"] = false,
},
},
vimgrep_arguments = {
"rg",
"-L",
"--color=never",
"--no-heading",
"--with-filename",
"--line-number",
"--column",
"--smart-case",
},
prompt_prefix = "",
selection_caret = " ",
entry_prefix = " ",
initial_mode = "insert",
selection_strategy = "reset",
sorting_strategy = "ascending",
layout_strategy = "horizontal",
layout_config = {
horizontal = {
prompt_position = "top",
preview_width = 0.55,
results_width = 0.8,
},
vertical = {
mirror = false,
},
width = 0.87,
height = 0.80,
preview_cutoff = 120,
},
file_sorter = sorters.get_fuzzy_file,
file_ignore_patterns = { "node_modules", "dotbot" },
generic_sorter = sorters.get_generic_fuzzy_sorter,
path_display = { "truncate" },
winblend = 0,
border = {},
borderchars = { "", "", "", "", "", "", "", "" },
color_devicons = true,
use_less = true,
set_env = { ["COLORTERM"] = "truecolor" }, -- default = nil,
file_previewer = previewers.vim_buffer_cat.new,
grep_previewer = previewers.vim_buffer_vimgrep.new,
qflist_previewer = previewers.vim_buffer_qflist.new,
-- Developer configurations: Not meant for general override
buffer_previewer_maker = previewers.buffer_previewer_maker,
},
extensions_list = { "themes", "terms" },
})
pcall(require("telescope").load_extension, "fzf")
pcall(require("telescope").load_extension, "file_browser")
-- See `:help telescope.builtin`
vim.keymap.set("n", "<leader>?", require("telescope.builtin").oldfiles, { desc = "[?] Find recently opened files" })
vim.keymap.set("n", "<leader><space>", require("telescope.builtin").buffers, { desc = "[ ] Find existing buffers" })
vim.keymap.set("n", "<leader>/", function()
-- You can pass additional configuration to telescope to change theme, layout, etc.
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown({
winblend = 10,
previewer = false,
}))
end, { desc = "[/] Fuzzily search in current buffer" })
vim.keymap.set(
"n",
"<leader>tg",
require("telescope.builtin").git_files,
{ desc = "[T]elescope: Search [G]it files" }
)
vim.keymap.set("n", "<leader>tf", require("telescope.builtin").find_files, { desc = "[T]elescope: Search [F]iles" })
vim.keymap.set("n", "<leader>th", require("telescope.builtin").help_tags, { desc = "[T]elescope: Search [H]elp" })
vim.keymap.set(
"n",
"<leader>tw",
require("telescope.builtin").grep_string,
{ desc = "[T]elescope: Search current [W]ord" }
)
vim.keymap.set(
"n",
"<leader>tr",
require("telescope.builtin").live_grep,
{ desc = "[T]elescope: Search by G[r]ep" }
)
vim.keymap.set(
"n",
"<leader>td",
require("telescope.builtin").diagnostics,
{ desc = "[T]elescope: Search [D]iagnostics" }
)
vim.keymap.set(
"n",
"<leader>tb",
":Telescope file_browser<CR>",
{ desc = "[T]elescope: File [B]rowser", noremap = true }
)
end,
}

View File

@@ -0,0 +1,68 @@
--- https://github.com/catppuccin/nvim
return {
"catppuccin/nvim",
name = "catppuccin",
priority = 1000,
enabled = true,
lazy = false,
config = function() vim.cmd.colorscheme("catppuccin") end,
opts = {
flavour = "mocha",
transparent_background = true,
dim_inactive = {
enabled = true,
shade = "dark",
percentage = 0.15,
},
integrations = {
alpha = true,
aerial = true,
barbecue = {
dim_dirname = true, -- directory name is dimmed by default
bold_basename = true,
dim_context = false,
alt_background = false,
},
cmp = true,
dap = { enabled = true, enable_ui = true },
gitsigns = true,
harpoon = true,
indent_blankline = {
enabled = true,
colored_indent_levels = false,
},
mason = true,
neotree = true,
notify = true,
nvimtree = false,
native_lsp = {
enabled = true,
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
},
inlay_hints = {
background = true,
},
},
semantic_tokens = true,
symbols_outline = true,
telescope = {
enabled = true,
-- style = "nvchad"
},
ts_rainbow = true,
treesitter = true,
lsp_trouble = true,
which_key = true,
},
},
}

View File

@@ -0,0 +1,56 @@
-- Trouble for diagnostics of plugins
return {
"folke/trouble.nvim",
dependencies = "kyazdani42/nvim-web-devicons",
config = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
position = "bottom", -- position of the list can be: bottom, top, left, right
height = 10, -- height of the trouble list when position is top or bottom
width = 50, -- width of the list when position is left or right
icons = true, -- use devicons for filenames
mode = "workspace_diagnostics", -- "workspace_diagnostics", "document_diagnostics", "quickfix", "lsp_references", "loclist"
fold_open = "", -- icon used for open folds
fold_closed = "", -- icon used for closed folds
group = true, -- group results by file
padding = true, -- add an extra new line on top of the list
action_keys = { -- key mappings for actions in the trouble list
-- map to {} to remove a mapping, for example:
-- close = {},
close = "q", -- close the list
cancel = "<esc>", -- cancel the preview and get back to your last window / buffer / cursor
refresh = "r", -- manually refresh
jump = { "<cr>", "<tab>" }, -- jump to the diagnostic or open / close folds
open_split = { "<c-x>" }, -- open buffer in new split
open_vsplit = { "<c-v>" }, -- open buffer in new vsplit
open_tab = { "<c-t>" }, -- open buffer in new tab
jump_close = { "o" }, -- jump to the diagnostic and close the list
toggle_mode = "m", -- toggle between "workspace" and "document" diagnostics mode
toggle_preview = "P", -- toggle auto_preview
hover = "K", -- opens a small popup with the full multiline message
preview = "p", -- preview the diagnostic location
close_folds = { "zM", "zm" }, -- close all folds
open_folds = { "zR", "zr" }, -- open all folds
toggle_fold = { "zA", "za" }, -- toggle fold of current file
previous = "k", -- preview item
next = "j", -- next item
},
indent_lines = true, -- add an indent guide below the fold icons
auto_open = false, -- automatically open the list when you have diagnostics
auto_close = false, -- automatically close the list when you have no diagnostics
auto_preview = true, -- automatically preview the location of the diagnostic. <esc> to close preview and go back to last window
auto_fold = false, -- automatically fold a file trouble list at creation
auto_jump = { "lsp_definitions" }, -- for the given modes, automatically jump if there is only a single result
signs = {
-- icons / text used for a diagnostic
error = "",
warning = "",
hint = "",
information = "",
other = "",
},
use_diagnostic_signs = false, -- enabling this will use the signs defined in your lsp client
},
}

View File

@@ -0,0 +1,24 @@
-- Dim
return {
"folke/twilight.nvim",
config = {
dimming = {
alpha = 0.5, -- amount of dimming
inactive = false, -- when true, other windows will be fully dimmed (unless they contain the same buffer)
},
context = 3, -- amount of lines we will try to show around the current line
treesitter = true, -- use treesitter when available for the filetype
-- treesitter is used to automatically expand the visible text,
-- but you can further control the types of nodes that should always be fully expanded
expand = { -- for treesitter, we we always try to expand to the top-most ancestor with these types
"function",
"while_statement",
"for_statement",
"switch_statement",
"method",
"table",
"if_statement",
},
exclude = {}, -- exclude these filetypes
},
}

View File

@@ -0,0 +1,54 @@
-- Colorizer for strings.
-- Minimise code.
local set = vim.api.nvim_set_var
return {
"RRethy/vim-hexokinase",
build = "cd ~/.local/share/nvim/lazy/vim-hexokinase && make hexokinase",
init = function()
-- All possible highlighters
set("Hexokinase_highlighters", {
"virtual",
"sign_column",
"background",
"backgroundfull",
-- 'foreground',
-- 'foregroundfull'
})
-- Patterns to match for all filetypes
-- Can be a comma separated string or a list of strings
-- All possible values
set("Hexokinase_optInPatterns", {
"full_hex",
"triple_hex",
"rgb",
"rgba",
"hsl",
"hsla",
"colour_names",
})
-- Filetype specific patterns to match
-- entry value must be comma seperated list
set("Hexokinase_ftOptInPatterns", {
css = "full_hex,rgb,rgba,hsl,hsla,colour_names",
html = "full_hex,rgb,rgba,hsl,hsla,colour_names",
})
-- Sample value, to keep default behaviour don't define this', variable
set("Hexokinase_ftEnabled", {
"css",
"html",
"javascript",
"scss",
"sass",
"lua",
})
-- Turn the colors on.
--vim.cmd('au BufEnter * HexokinaseTurnOn')
end,
}

View File

@@ -0,0 +1,23 @@
-- Move faster between context.
return {
"andymass/vim-matchup",
dependencies = "nvim-treesitter/nvim-treesitter",
config = {
highlight = {
enable = true,
disable = {},
},
indent = {
enable = false,
disable = {},
},
autotag = {
enable = true,
},
matchup = {
enable = true, -- mandatory, false will disable the whole extension
--disable = { "c", "ruby" }, -- optional, list of language that will be disabled
},
},
}

View File

@@ -0,0 +1 @@
return { "tpope/vim-sleuth" }

View File

@@ -0,0 +1,5 @@
return {
"wakatime/vim-wakatime",
lazy = false,
enabled = true,
}

View File

@@ -0,0 +1,15 @@
local vim = vim
return {
"folke/which-key.nvim",
enabled = true,
lazy = false,
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
end,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
},
}