nvim/lua/plugins/init.lua

352 lines
9.8 KiB
Lua

return {
'MunifTanjim/nui.nvim',
'folke/which-key.nvim',
'nvim-lua/plenary.nvim',
-- 'mfussenegger/nvim-jdtls',
'simrat39/rust-tools.nvim',
{ 'mg979/vim-visual-multi', event = 'VeryLazy' },
{ 'rush-rs/tree-sitter-asm', ft = 'asm' },
{
'gennaro-tedesco/nvim-peekup',
config = function()
local c = require 'nvim-peekup.config'
c.on_keystroke['delay'] = ''
c.on_keystroke['paste_reg'] = '+'
end
},
{ 'jghauser/mkdir.nvim', lazy = false },
{
'stevearc/dressing.nvim',
opts = {},
-- lazy = false,
},
{
url = 'https://git.filnar.com/fiplox/neogruber.git',
-- dir = '~/dev/neogruber.nvim/',
lazy = false,
-- event = 'VeryLazy'
},
{
'numToStr/Comment.nvim',
-- event = 'VeryLazy',
keys = { 'gcc', { 'gc', mode = 'v' }, { 'gb', mode = 'v' } },
opts = {
-- -LHS of operator-pending mappings in NORMAL and VISUAL mode
opleader = {
---Line-comment keymap
line = 'gc',
---Block-comment keymap
block = 'gb',
},
---LHS of extra mappings
extra = {
---Add comment on the line above
above = 'gcO',
---Add comment on the line below
below = 'gco',
---Add comment at the end of line
eol = 'gca',
},
---Enable keybindings
---NOTE: If given `false` then the plugin won't create any mappings
mappings = {
---Operator-pending mapping; `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}`
basic = true,
---Extra mapping; `gco`, `gcO`, `gcA`
extra = true,
---Extended mapping; `g>` `g<` `g>[count]{motion}` `g<[count]{motion}`
extended = false,
},
pre_hook = function(ctx)
-- Only calculate commentstring for tsx filetypes
if vim.bo.filetype == 'typescriptreact' then
local U = require 'Comment.utils'
-- Determine whether to use linewise or blockwise commentstring
local type = ctx.ctype == U.ctype.linewise and '__default' or '__multiline'
-- Determine the location where to calculate commentstring from
local location = nil
if ctx.ctype == U.ctype.blockwise 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,
},
},
{
'NvChad/nvim-colorizer.lua',
-- event = 'BufReadPre',
cmd = 'ColorizerToggle',
opts = {
filetypes = { '*', '!lazy' },
buftype = { '*', '!prompt', '!nofile' },
user_default_options = {
RGB = true, -- #RGB hex codes
RRGGBB = true, -- #RRGGBB hex codes #ffffff
names = false, -- "Name" codes like Blue
RRGGBBAA = true, -- #RRGGBBAA hex codes
AARRGGBB = false, -- 0xAARRGGBB hex codes
rgb_fn = true, -- CSS rgb() and rgba() functions
hsl_fn = true, -- CSS hsl() and hsla() functions
css = false, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB
css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn
-- Available modes: foreground, background
-- Available modes for `mode`: foreground, background, virtualtext
-- mode = "background", -- Set the display mode.
-- virtualtext = "■",
},
},
},
{
'williamboman/mason.nvim',
cmd = 'Mason',
opts = {
settings = {
ui = {
border = 'rounded',
icons = {
package_installed = '',
package_pending = '',
package_uninstalled = '',
},
},
-- log_level = vim.log.levels.INFO,
max_concurrent_installers = 4,
},
},
},
{
'NeogitOrg/neogit',
dependencies = 'sindrets/diffview.nvim',
cmd = 'Neogit',
opts = {
disable_signs = false,
disable_hint = false,
disable_context_highlighting = false,
disable_commit_confirmation = true,
-- Neogit refreshes its internal state after specific events, which can be expensive depending on the repository size.
-- Disabling `auto_refresh` will make it so you have to manually refresh the status after you open it.
auto_refresh = true,
disable_builtin_notifications = false,
use_magit_keybindings = false,
-- Change the default way of opening neogit
kind = 'tab',
-- The time after which an output console is shown for slow running commands
console_timeout = 2000,
-- Automatically show console if a command takes more than console_timeout milliseconds
auto_show_console = true,
-- Change the default way of opening the commit popup
commit_popup = {
kind = 'split',
},
-- Change the default way of opening popups
popup = {
kind = 'split',
},
status = {
recent_commit_count = 50,
},
-- customize displayed signs
signs = {
-- { CLOSED, OPENED }
section = { '>', 'v' },
item = { '>', 'v' },
hunk = { '', '' },
},
integrations = {
-- Neogit only provides inline diffs. If you want a more traditional way to look at diffs, you can use `sindrets/diffview.nvim`.
-- The diffview integration enables the diff popup, which is a wrapper around `sindrets/diffview.nvim`.
--
-- Requires you to have `sindrets/diffview.nvim` installed.
diffview = true,
},
-- Setting any section to `false` will make the section not render at all
sections = {
untracked = {
folded = false,
},
unstaged = {
folded = false,
},
staged = {
folded = false,
},
stashes = {
folded = true,
},
unpulled = {
folded = true,
},
unmerged = {
folded = false,
},
recent = {
folded = true,
},
},
-- override/add mappings
mappings = {
-- modify status buffer mappings
status = {
-- Adds a mapping with "B" as key that does the "BranchPopup" command
['B'] = 'BranchPopup',
-- Removes the default mapping of "s"
-- ['s'] = '',
},
},
},
},
{
'stevearc/oil.nvim',
-- lazy = false,
event = 'Syntax',
opts = {
columns = {
"mtime",
"size",
"permissions",
"icon",
},
-- Buffer-local options to use for oil buffers
buf_options = {
buflisted = false,
},
-- Window-local options to use for oil buffers
win_options = {
wrap = false,
signcolumn = "no",
cursorcolumn = false,
foldcolumn = "0",
spell = false,
list = false,
conceallevel = 3,
concealcursor = 'nvic',
},
keymaps = {
['g?'] = 'actions.show_help',
['<CR>'] = 'actions.select',
['<C-s>'] = 'actions.select_vsplit',
['<C-h>'] = 'actions.select_split',
['<C-p>'] = 'actions.preview',
['<TAB>'] = 'actions.preview',
['<C-c>'] = 'actions.close',
['q'] = 'actions.close',
['<C-l>'] = 'actions.refresh',
['-'] = 'actions.parent',
['l'] = 'actions.parent',
['_'] = 'actions.open_cwd',
['`'] = 'actions.cd',
['~'] = 'actions.tcd',
['g.'] = 'actions.toggle_hidden',
},
},
},
{
'akinsho/toggleterm.nvim',
cmd = 'ToggleTerm',
opts = {
-- size can be a number or function which is passed the current terminal
-- size = function(term)
-- if term.direction == 'horizontal' then
-- return 15
-- elseif term.direction == 'vertical' then
-- return vim.o.columns * 0.4
-- end
-- end,
shade_filetypes = { 'none', 'fzf' },
-- open_mapping = [[<home>]],
hide_numbers = true, -- hide the number column in toggleterm buffers
shade_terminals = true,
shading_factor = '2', -- the degree by which to darken to terminal colour, default: 1 for dark backgrounds, 3 for light
start_in_insert = true,
insert_mappings = true, -- whether or not the open mapping applies in insert mode
persist_size = true,
-- direction = 'horizontal', -- 'vertical' | 'horizontal' | 'window' | 'float',
direction = 'float', -- 'vertical' | 'horizontal' | 'window' | 'float',
close_on_exit = true, -- close the terminal window when the process exits
shell = vim.o.shell, -- change the default shell
-- This field is only relevant if direction is set to 'float'
float_opts = {
-- The border key is *almost* the same as 'nvim_win_open'
-- see :h nvim_win_open for details on borders however
-- the 'curved' border is a custom border type
-- not natively supported but implemented in this plugin.
border = 'curved', -- | 'double' | 'shadow' | 'curved' --| ... other options supported by win open
-- width = 100,
-- height = 30,
-- winblend = 20,
-- highlights = {
-- border = 'Normal',
-- background = 'Normal',
-- },
},
},
},
{
'nvim-treesitter/nvim-treesitter',
-- lazy = false,
-- dependencies = { 'nvim-treesitter/playground' },
-- dependencies = 'windwp/nvim-ts-autotag',
event = 'VeryLazy',
config = function()
require('nvim-treesitter.parsers').get_parser_configs().asm = {
install_info = {
url = 'https://github.com/rush-rs/tree-sitter-asm.git',
files = { 'src/parser.c' },
branch = 'main',
},
}
local configs = require 'nvim-treesitter.configs'
configs.setup {
ignore_install = { 'haskell' },
highlight = {
enable = true, -- false will disable the whole extension
disable = { 'html' },
},
-- context_commentstring = { enable = true, config = { css = '// %s' } },
-- indent = {enable = true, disable = {"python", "html", "javascript"}},
-- TODO seems to be broken
indent = { enable = true, disable = { 'python', 'css' } },
-- autotag = { enable = true },
}
end,
},
{
'j-morano/buffer_manager.nvim',
opts = {
-- line_keys = '', -- deactivate line keybindings
focus_alternate_buffer = true,
select_menu_item_commands = {
edit = {
key = '<CR>',
command = 'edit',
},
v = {
key = '<C-v>',
command = 'vsplit',
},
h = {
key = '<C-h>',
command = 'split',
},
},
width = 0.6,
},
},
{
"ecthelionvi/NeoSwap.nvim",
opts = {}
},
}