452 lines
9.2 KiB
Lua
452 lines
9.2 KiB
Lua
return {
|
|
{
|
|
'nvim-treesitter/nvim-treesitter',
|
|
build = ':TSUpdate',
|
|
event = { "VeryLazy" },
|
|
lazy = vim.fn.argc(-1) == 0,
|
|
opts = {
|
|
ensure_installed = {
|
|
"bash",
|
|
"bibtex",
|
|
"c",
|
|
"cs",
|
|
"cpp",
|
|
"cs",
|
|
"go",
|
|
"html",
|
|
"http",
|
|
"javascript",
|
|
"json",
|
|
"latex",
|
|
"lua",
|
|
"php",
|
|
"python",
|
|
"sql",
|
|
"typescript",
|
|
"tsx",
|
|
"vim",
|
|
},
|
|
sync_install = false,
|
|
highlight = {
|
|
enable = true,
|
|
},
|
|
},
|
|
},
|
|
|
|
--
|
|
-- Autocompletion
|
|
--
|
|
--[[ {
|
|
'ms-jpq/coq.artifacts',
|
|
branch = 'artifacts'
|
|
}, ]]--
|
|
-- {
|
|
-- 'ms-jpq/coq_nvim',
|
|
-- dependencies = { 'ms-jpq/coq.artifacts' },
|
|
-- branch = 'coq',
|
|
-- build = ':COQdeps',
|
|
-- event = { "BufEnter" },
|
|
-- config = function()
|
|
-- vim.cmd([[autocmd VimEnter * COQnow -s]])
|
|
-- end
|
|
-- },
|
|
{
|
|
"garymjr/nvim-snippets",
|
|
dependencies = { "rafamadriz/friendly-snippets" },
|
|
opts = {
|
|
friendly_snippets = true,
|
|
},
|
|
keys = {
|
|
{
|
|
"<Tab>",
|
|
function()
|
|
if vim.snippet.active({ direction = 1 }) then
|
|
vim.schedule(function() vim.snippet.jump(1) end)
|
|
return
|
|
end
|
|
return "<Tab>"
|
|
end,
|
|
expr = true,
|
|
silent = true,
|
|
mode = "i",
|
|
},
|
|
{
|
|
"<Tab>",
|
|
function()
|
|
if vim.snippet.active({ direction = 1 }) then
|
|
vim.schedule(function() vim.snippet.jump(1) end)
|
|
return
|
|
end
|
|
end,
|
|
expr = true,
|
|
silent = true,
|
|
mode = "s",
|
|
},
|
|
{
|
|
"<S-Tab>",
|
|
function()
|
|
if vim.snippet.active({ direction = -1 }) then
|
|
vim.schedule(function() vim.snippet.jump(-1) end)
|
|
return
|
|
end
|
|
return "<S-Tab>"
|
|
end,
|
|
expr = true,
|
|
silent = true,
|
|
mode = { "i", "s" },
|
|
},
|
|
},
|
|
},
|
|
{
|
|
"tzachar/cmp-ai",
|
|
dependencies = "nvim-lua/plenary.nvim",
|
|
config = function()
|
|
local cmp_ai = require("cmp_ai.config")
|
|
|
|
cmp_ai:setup({
|
|
max_lines = 1000,
|
|
provider = "Ollama", -- Change to 'Ollama', 'HF', etc. as needed
|
|
provider_options = {
|
|
model = "qwen2.5-coder:latest",
|
|
},
|
|
notify = true,
|
|
run_on_every_keystroke = true,
|
|
})
|
|
end,
|
|
},
|
|
{
|
|
"hrsh7th/nvim-cmp",
|
|
event = { "InsertEnter", "CmdlineEnter" },
|
|
dependencies = {
|
|
"hrsh7th/cmp-buffer",
|
|
"hrsh7th/cmp-path",
|
|
"hrsh7th/cmp-nvim-lsp",
|
|
"hrsh7th/cmp-nvim-lsp-signature-help",
|
|
"hrsh7th/cmp-nvim-lsp-document-symbol",
|
|
"hrsh7th/cmp-cmdline",
|
|
"amarz45/nvim-cmp-fonts",
|
|
"tzachar/cmp-ai",
|
|
"garymjr/nvim-snippets", -- Ensure the snippet source is loaded
|
|
},
|
|
config = function()
|
|
local cmp = require("cmp")
|
|
|
|
cmp.setup({
|
|
snippet = {
|
|
expand = function(args)
|
|
-- Use native neovim snippets
|
|
vim.snippet.expand(args.body)
|
|
end,
|
|
},
|
|
window = {
|
|
completion = cmp.config.window.bordered(),
|
|
documentation = cmp.config.window.bordered(),
|
|
},
|
|
mapping = cmp.mapping.preset.insert({
|
|
["<C-b>"] = cmp.mapping.scroll_docs(-4),
|
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
|
["<C-Space>"] = cmp.mapping.complete(),
|
|
["<C-e>"] = cmp.mapping.abort(),
|
|
["<CR>"] = cmp.mapping.confirm({ select = true }),
|
|
}),
|
|
sources = cmp.config.sources({
|
|
{ name = "nvim_lsp" },
|
|
{ name = "snippets" }, -- This comes from nvim-snippets
|
|
{ name = "nvim_lsp_signature_help" },
|
|
{ name = "cmp_ai" },
|
|
}, {
|
|
{ name = "buffer" },
|
|
{ name = "path" },
|
|
{ name = "fonts", option = { space_filter = "-" } },
|
|
}),
|
|
})
|
|
|
|
-- ... (Keep cmdline setup as before) ...
|
|
cmp.setup.cmdline({ "/", "?" }, {
|
|
mapping = cmp.mapping.preset.cmdline(),
|
|
sources = {
|
|
{ name = "nvim_lsp_document_symbol" },
|
|
{ name = "buffer" },
|
|
},
|
|
})
|
|
|
|
cmp.setup.cmdline(":", {
|
|
mapping = cmp.mapping.preset.cmdline(),
|
|
sources = cmp.config.sources({
|
|
{ name = "path" },
|
|
}, {
|
|
{ name = "cmdline" },
|
|
}),
|
|
matching = { disallow_symbol_nonprefix_matching = false },
|
|
})
|
|
end,
|
|
},
|
|
--
|
|
-- Language Configurations
|
|
--
|
|
{ 'ap/vim-css-color', lazy = false },
|
|
-- close tags in html languages
|
|
{
|
|
'alvan/vim-closetag',
|
|
ft = { "html", "vue", "javascriptreact", "typescriptreact", "xml" },
|
|
config = function()
|
|
vim.g.closetag_xhtml_filenames = '*.xhtml,*.js,*.tsx'
|
|
vim.g.clostag_xhtml_filetypes = 'xhtm,jsx,tsx'
|
|
vim.cmd [[ CloseTagEnableBuffer ]]
|
|
end,
|
|
},
|
|
|
|
{
|
|
'udalov/kotlin-vim',
|
|
ft = 'kotlin'
|
|
},
|
|
|
|
{ 'bellinitte/uxntal.vim', lazy = false },
|
|
{
|
|
'nvim-flutter/flutter-tools.nvim',
|
|
ft = 'dart',
|
|
dependencies = {
|
|
'nvim-lua/plenary.nvim',
|
|
'nanotee/nvim-lsp-basics',
|
|
},
|
|
opts = {
|
|
lsp = {
|
|
color = {
|
|
enabled = true,
|
|
},
|
|
on_attach = function(client, bufnr)
|
|
local basics = require('lsp_basics')
|
|
basics.make_lsp_commands(client, bufnr)
|
|
basics.make_lsp_mappings(client, bufnr)
|
|
end,
|
|
},
|
|
},
|
|
},
|
|
|
|
{ 'jlcrochet/vim-razor', lazy = false },
|
|
|
|
--
|
|
-- Language Server
|
|
--
|
|
|
|
-- Language Server Installer
|
|
{
|
|
'mason-org/mason.nvim',
|
|
lazy = false,
|
|
cmd = {
|
|
"Mason",
|
|
"MasonInstall",
|
|
"MasonUpdate",
|
|
|
|
},
|
|
opts = {
|
|
ui = {
|
|
icons = {
|
|
package_installed = "i",
|
|
package_pending = "p",
|
|
package_uninstalled = "u"
|
|
},
|
|
},
|
|
},
|
|
},
|
|
--[[{
|
|
'huggingface/llm.nvim',
|
|
opts = {
|
|
model = 'deepseek-coder-v2',
|
|
backend = 'ollama',
|
|
url = 'http://localhost:11434',
|
|
tokens_to_clear = {"<|endoftext|>", "```", "python", "lua"},
|
|
lsp = {
|
|
bin_path = vim.api.nvim_call_function("stdpath", { "data" }) .. "/mason/bin/llm-ls",
|
|
},
|
|
context_window = 10240,
|
|
enable_suggestions_on_startup = true,
|
|
},
|
|
},
|
|
{
|
|
'jacob411/Ollama-Copilot',
|
|
ft = {'python', 'lua', 'go', "markdown"},
|
|
opts = {
|
|
model_name = "qwen2.5-coder:latest",
|
|
filetypes = {'python', 'lua','vim', "markdown"},
|
|
ollama_model_opts = {
|
|
num_predict = 40,
|
|
temperature = 0.1,
|
|
},
|
|
}
|
|
},]]--
|
|
{
|
|
'mason-org/mason-lspconfig.nvim',
|
|
dependencies = {
|
|
'mason-org/mason.nvim',
|
|
-- 'ms-jpq/coq_nvim',
|
|
-- 'nanotee/nvim-lsp-basics',
|
|
-- 'neovim/nvim-lspconfig',
|
|
-- 'huggingface/llm.nvim',
|
|
-- 'stevearc/aerial.nvim',
|
|
},
|
|
opts = {
|
|
ensure_installed = {
|
|
"bashls",
|
|
"clangd",
|
|
"gopls",
|
|
"html",
|
|
"jsonls",
|
|
"lua_ls",
|
|
"omnisharp",
|
|
"phpactor",
|
|
"pyright",
|
|
"sqls",
|
|
"texlab",
|
|
"ts_ls"
|
|
},
|
|
},
|
|
},
|
|
|
|
-- Show Code Outline/Symbols tree window
|
|
{
|
|
'stevearc/aerial.nvim',
|
|
opts = {
|
|
close_on_select = true,
|
|
-- backends = { 'lsp', 'markdown', 'man' },
|
|
layout = {
|
|
-- default_direction = 'prefer_right',
|
|
min_width = 25,
|
|
},
|
|
filter_kind = {
|
|
"Constant",
|
|
"Class",
|
|
"Constructor",
|
|
"Enum",
|
|
"Function",
|
|
"Interface",
|
|
"Method",
|
|
"Module",
|
|
"Struct",
|
|
},
|
|
},
|
|
keys = {
|
|
{'<Leader>o', ':AerialToggle<LF>'},
|
|
}
|
|
},
|
|
|
|
|
|
-- Show code diagnostics in a separate buffer window
|
|
{
|
|
'folke/trouble.nvim',
|
|
opts = {},
|
|
|
|
cmd = {
|
|
"Trouble",
|
|
},
|
|
|
|
keys = {
|
|
{'<Leader>t', ':Trouble diagnostics toggle<CR>'},
|
|
}
|
|
},
|
|
{
|
|
'neovim/nvim-lspconfig',
|
|
dependencies = {
|
|
"hrsh7th/cmp-nvim-lsp",
|
|
"hrsh7th/cmp-nvim-lsp-document-symbol",
|
|
"hrsh7th/cmp-nvim-lsp-signature-help",
|
|
'folke/trouble.nvim',
|
|
'mason-org/mason-lspconfig.nvim',
|
|
'mason-org/mason.nvim',
|
|
'stevearc/aerial.nvim',
|
|
},
|
|
ft = {
|
|
"bash",
|
|
"c",
|
|
"cpp",
|
|
"cs",
|
|
"dart",
|
|
"go",
|
|
"html",
|
|
"javascript",
|
|
"javascriptreact",
|
|
"json",
|
|
"lua",
|
|
"php",
|
|
"python",
|
|
"sql",
|
|
"tex",
|
|
"typescript",
|
|
"typescriptreact",
|
|
},
|
|
config = function()
|
|
-- disable inline error messages
|
|
vim.diagnostic.config({ virtual_text = false })
|
|
local capabilities = require('cmp_nvim_lsp').default_capabilities()
|
|
|
|
vim.lsp.config('*', {
|
|
capabilities = capabilities,
|
|
})
|
|
|
|
end
|
|
},
|
|
--
|
|
-- Markdown Live Preview
|
|
--
|
|
{
|
|
"iamcco/markdown-preview.nvim",
|
|
ft = {"markdown"},
|
|
-- cmd = {
|
|
-- "MarkdownPreviewToggle",
|
|
-- "MarkdownPreview",
|
|
-- "MarkdownPreviewStop"
|
|
-- },
|
|
config = function()
|
|
vim.fn["mkdp#util#install"]()
|
|
vim.g.mkdp_theme = 'light'
|
|
-- vim.g.mkdp_browser = 'netsurf'
|
|
|
|
end
|
|
},
|
|
|
|
--
|
|
-- Misc
|
|
--
|
|
-- {
|
|
-- "rest-nvim/rest.nvim",
|
|
-- dependencies = {
|
|
-- "nvim-lua/plenary.nvim",
|
|
-- "nvim-treesitter/nvim-treesitter",
|
|
-- "rest-nvim/tree-sitter-http"
|
|
-- },
|
|
-- ft = { "http" },
|
|
-- opts = {
|
|
-- -- Open request results in a horizontal split
|
|
-- result_split_horizontal = false,
|
|
-- -- Keep the http file buffer above|left when split horizontal|vertical
|
|
-- --
|
|
-- result_split_in_place = true,
|
|
-- result = {
|
|
-- show_curl_command = false,
|
|
-- },
|
|
-- },
|
|
-- keys = {
|
|
-- {'<Leader>r', ':hor Rest run<CR>'},
|
|
-- },
|
|
|
|
-- --[[ opts = function (_, opts)
|
|
-- opts.ensure_installed = opts.ensure_installed or {}
|
|
-- table.insert(opts.ensure_installed, "http")
|
|
-- table.insert(opts.result_split_horizontal, true)
|
|
-- table.insert(opts.result_split_in_place, true)
|
|
-- end, ]]--
|
|
-- --[[ keys = {
|
|
-- {'<Leader>r', '<Plug>RestNvim<CR>'},
|
|
-- {'<Leader>R', '<Plug>RestNvimLast<CR>'},
|
|
-- {'<Leader><A-r>', '<Plug>RestNvimPreview<CR>'},
|
|
-- },
|
|
-- config = function()
|
|
-- -- commands
|
|
-- local ct = require('conftool')
|
|
-- ct.defcmd('RestNvim', 'lua require(\'rest-nvim\').run()<CR>')
|
|
-- ct.defcmd('RestNvimPreview', 'lua require(\'rest-nvim\').run(true)<CR>')
|
|
-- ct.defcmd('RestNvimLast', 'lua require(\'rest-nvim\').last()<CR>')
|
|
-- end, ]]--
|
|
-- },
|
|
}
|