396 lines
9.2 KiB
Lua
396 lines
9.2 KiB
Lua
return {
|
|
{ "preservim/vimux" },
|
|
{
|
|
"christoomey/vim-tmux-navigator",
|
|
cmd = { "TmuxNavigateLeft", "TmuxNavigateDown", "TmuxNavigateUp", "TmuxNavigateRight" },
|
|
keys = { "<C-h>", "<C-j>", "<C-k>", "<C-l>" },
|
|
},
|
|
{ "JoosepAlviste/nvim-ts-context-commentstring" },
|
|
{ "nvim-treesitter/nvim-treesitter-textobjects" },
|
|
{ "mrjones2014/nvim-ts-rainbow" },
|
|
{ "nvim-treesitter/nvim-treesitter-context" },
|
|
|
|
{
|
|
"glepnir/lspsaga.nvim",
|
|
event = "BufRead",
|
|
cmd = { "Lspsaga" },
|
|
config = function()
|
|
require("lspsaga").setup({})
|
|
end,
|
|
dependencies = {
|
|
{ "nvim-tree/nvim-web-devicons" },
|
|
{ "nvim-treesitter/nvim-treesitter" },
|
|
},
|
|
},
|
|
|
|
-- Copilot
|
|
{
|
|
"zbirenbaum/copilot.lua",
|
|
event = "VimEnter",
|
|
config = function()
|
|
vim.defer_fn(function()
|
|
require("copilot").setup({
|
|
suggestion = {
|
|
keymap = {
|
|
accept = "<c-g>",
|
|
accept_word = false,
|
|
accept_line = false,
|
|
next = "<c-j>",
|
|
prev = "<c-k>",
|
|
dismiss = "<c-f>",
|
|
},
|
|
-- auto_trigger = true,
|
|
},
|
|
})
|
|
end, 100)
|
|
end,
|
|
},
|
|
{
|
|
"zbirenbaum/copilot-cmp",
|
|
event = "VeryLazy",
|
|
dependencies = { "zbirenbaum/copilot.lua" },
|
|
config = function()
|
|
require("copilot_cmp").setup()
|
|
end,
|
|
},
|
|
|
|
-- Git
|
|
{ "tpope/vim-fugitive" },
|
|
{ "tpope/vim-rhubarb" },
|
|
{ "lewis6991/gitsigns.nvim" },
|
|
|
|
-- theme
|
|
-- {
|
|
-- "sainnhe/everforest",
|
|
-- lazy = false,
|
|
-- priority = 1000,
|
|
-- config = function()
|
|
-- vim.g.everforest_background = "hard"
|
|
-- vim.cmd([[colorscheme everforest]])
|
|
-- end,
|
|
-- },
|
|
|
|
-- Others
|
|
{
|
|
"Pocco81/TrueZen.nvim",
|
|
cmd = { "TZNarrow", "TZFocus", "TZMinimalist", "TZAtaraxis" },
|
|
config = true,
|
|
},
|
|
{
|
|
"nathom/filetype.nvim",
|
|
opts = function()
|
|
return {
|
|
overrides = {
|
|
extensions = {
|
|
mdx = "markdown",
|
|
},
|
|
function_complex = {
|
|
[".*blade.php"] = function()
|
|
vim.bo.filetype = "blade"
|
|
end,
|
|
},
|
|
},
|
|
}
|
|
end,
|
|
},
|
|
{
|
|
"mg979/vim-visual-multi",
|
|
-- keys = { "<C-d>" },
|
|
lazy = false,
|
|
init = function(_)
|
|
vim.g.VM_Mono_hl = "Substitute"
|
|
vim.g.VM_Cursor_hl = "IncSearch"
|
|
|
|
vim.g.VM_maps = {
|
|
["Find Under"] = "<C-d>",
|
|
["Find Subword Under"] = "<C-d>",
|
|
["Next"] = "n",
|
|
["Previous"] = "N",
|
|
["Skip"] = "q",
|
|
-- ["Add Cursor Down"] = "<C-j>",
|
|
-- ["Add Cursor Up"] = "<C-k>",
|
|
-- ["Select l"] = "<S-Left>",
|
|
-- ["Select r"] = "<S-Right>",
|
|
-- ["Add Cursor at Position"] = [[\\\]],
|
|
["Select All"] = "<C-c>",
|
|
["Visual All"] = "<C-c>",
|
|
["Exit"] = "<Esc>",
|
|
}
|
|
end,
|
|
},
|
|
{
|
|
"akinsho/toggleterm.nvim",
|
|
event = "VeryLazy",
|
|
cmd = { "ToggleTerm" },
|
|
version = "*",
|
|
config = true,
|
|
--opts = function()
|
|
-- require("toggleterm").setup()
|
|
--end,
|
|
},
|
|
{
|
|
"tpope/vim-surround",
|
|
dependencies = {
|
|
"tpope/vim-repeat",
|
|
},
|
|
},
|
|
{
|
|
"iamcco/markdown-preview.nvim",
|
|
build = "cd app && npm install",
|
|
config = function()
|
|
vim.g.mkdp_filetypes = { "markdown" }
|
|
end,
|
|
ft = { "markdown" },
|
|
},
|
|
{
|
|
"ggandor/leap.nvim",
|
|
config = function()
|
|
require("leap").add_default_mappings()
|
|
end,
|
|
},
|
|
|
|
-- LSPs
|
|
{
|
|
"neovim/nvim-lspconfig",
|
|
config = function(_, _)
|
|
require("plugins.configs.lspconfig")
|
|
local on_attach = require("plugins.configs.lspconfig").on_attach
|
|
local capabilities = require("plugins.configs.lspconfig").capabilities
|
|
|
|
local lspconfig = require("lspconfig")
|
|
local servers = {
|
|
-- lua stuff
|
|
"lua_ls",
|
|
|
|
-- shell
|
|
"bashls",
|
|
-- "awk_ls",
|
|
|
|
-- c
|
|
"clangd",
|
|
|
|
-- rust
|
|
"rust_analyzer",
|
|
|
|
-- web dev
|
|
"cssls",
|
|
"html",
|
|
"tsserver",
|
|
"jsonls",
|
|
"tailwindcss",
|
|
"eslint",
|
|
|
|
-- python
|
|
"pyright",
|
|
|
|
-- yaml
|
|
"yamlls",
|
|
}
|
|
|
|
for _, lsp in ipairs(servers) do
|
|
lspconfig[lsp].setup({
|
|
on_attach = on_attach,
|
|
capabilities = capabilities,
|
|
})
|
|
end
|
|
end,
|
|
},
|
|
{
|
|
"jose-elias-alvarez/null-ls.nvim",
|
|
event = { "BufReadPre", "BufNewFile" },
|
|
dependencies = {
|
|
"neovim/nvim-lspconfig",
|
|
"mason.nvim",
|
|
},
|
|
opts = function()
|
|
-- null-ls
|
|
-- to setup format on save
|
|
local null_ls = require("null-ls")
|
|
|
|
local formatting = null_ls.builtins.formatting -- to setup formatters
|
|
local diagnostics = null_ls.builtins.diagnostics -- to setup linters
|
|
local code_actions = null_ls.builtins.code_actions -- to setup code actions
|
|
local completion = null_ls.builtins.completion -- to setup completions
|
|
|
|
local lsp_formatting_group = vim.api.nvim_create_augroup("LspFormatting", {})
|
|
|
|
-- configure null_ls
|
|
return {
|
|
debug = false,
|
|
-- setup formatters & linters
|
|
sources = {
|
|
completion.spell,
|
|
code_actions.gitsigns,
|
|
|
|
-- lua
|
|
formatting.stylua,
|
|
|
|
-- web stuffs
|
|
formatting.prettier.with({
|
|
extra_filetypes = { "svelte" },
|
|
}), -- js/ts formatter
|
|
diagnostics.eslint_d.with({ -- js/ts linter
|
|
-- only enable eslint if root has .eslintrc.js (not in youtube nvim video)
|
|
condition = function(utils)
|
|
return utils.root_has_file(".eslintrc.js") or utils.root_has_file(".eslintrc.cjs") -- change file extension if you use something else
|
|
end,
|
|
filetypes = {
|
|
"javascript",
|
|
"javascriptreact",
|
|
"typescript",
|
|
"typescriptreact",
|
|
"vue",
|
|
"svelte",
|
|
},
|
|
}),
|
|
code_actions.eslint_d.with({
|
|
filetypes = {
|
|
"javascript",
|
|
"javascriptreact",
|
|
"typescript",
|
|
"typescriptreact",
|
|
"vue",
|
|
"svelte",
|
|
},
|
|
}),
|
|
|
|
-- php
|
|
diagnostics.php,
|
|
formatting.blade_formatter,
|
|
-- formatting.pint,
|
|
|
|
-- python
|
|
formatting.black,
|
|
|
|
-- shell
|
|
formatting.shfmt,
|
|
formatting.jq,
|
|
|
|
-- rust
|
|
formatting.rustfmt,
|
|
|
|
-- c / c++
|
|
formatting.clang_format,
|
|
|
|
-- nix
|
|
formatting.nixpkgs_fmt,
|
|
-- formatting.nixfmt,
|
|
|
|
-- config
|
|
formatting.taplo,
|
|
},
|
|
-- configure format on save
|
|
on_attach = function(current_client, bufnr)
|
|
if current_client.supports_method("textDocument/formatting") then
|
|
vim.api.nvim_clear_autocmds({ group = lsp_formatting_group, buffer = bufnr })
|
|
vim.api.nvim_create_autocmd("BufWritePre", {
|
|
group = lsp_formatting_group,
|
|
buffer = bufnr,
|
|
callback = function()
|
|
-- print("HERE 1", current_client.name)
|
|
-- vim.lsp.buf.formatting_sync()
|
|
vim.lsp.buf.format({
|
|
bufnr = bufnr,
|
|
filter = function(client)
|
|
-- print("HERE 2", current_client.name, client.name)
|
|
-- only use null-ls for formatting instead of lsp server
|
|
return client.name == "null-ls"
|
|
end,
|
|
})
|
|
end,
|
|
})
|
|
end
|
|
end,
|
|
}
|
|
end,
|
|
},
|
|
|
|
{
|
|
"williamboman/mason.nvim",
|
|
opts = function()
|
|
return {
|
|
ensure_installed = {
|
|
-- lua stuff
|
|
"lua-language-server",
|
|
"stylua",
|
|
|
|
-- shell
|
|
"bash-language-server",
|
|
-- "awk-language-server",
|
|
"shfmt",
|
|
"shellcheck",
|
|
|
|
-- c
|
|
"clangd",
|
|
|
|
-- rust
|
|
"rust-analyzer",
|
|
"rustfmt",
|
|
|
|
-- web dev
|
|
"css-lsp",
|
|
"html-lsp",
|
|
"typescript-language-server",
|
|
"json-lsp",
|
|
"tailwindcss-language-server",
|
|
"eslint-lsp",
|
|
|
|
-- python
|
|
"pyright",
|
|
|
|
-- javascript
|
|
"prettier",
|
|
"prettierd",
|
|
|
|
-- yaml
|
|
"yaml-language-server",
|
|
|
|
-- toml
|
|
"taplo",
|
|
},
|
|
}
|
|
end,
|
|
},
|
|
{
|
|
"nvim-treesitter/nvim-treesitter",
|
|
opts = function(_, opts)
|
|
|
|
opts.ignore_install = { 'help' }
|
|
|
|
return vim.tbl_deep_extend("force", require("plugins.configs.treesitter"), {
|
|
ensure_installed = {
|
|
"c",
|
|
"cpp",
|
|
"css",
|
|
"go",
|
|
"lua",
|
|
"python",
|
|
"rust",
|
|
"typescript",
|
|
"svelte",
|
|
"html",
|
|
"java",
|
|
"help",
|
|
"nix",
|
|
"markdown",
|
|
"markdown_inline",
|
|
},
|
|
})
|
|
end,
|
|
},
|
|
{
|
|
"hrsh7th/nvim-cmp",
|
|
opts = function()
|
|
return vim.tbl_deep_extend("force", require("plugins.configs.cmp"), {
|
|
sources = {
|
|
{ name = "luasnip" },
|
|
{ name = "copilot" },
|
|
{ name = "nvim_lsp" },
|
|
{ name = "buffer" },
|
|
{ name = "nvim_lua" },
|
|
{ name = "path" },
|
|
},
|
|
})
|
|
end,
|
|
},
|
|
}
|