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 = { { "", function() if vim.snippet.active({ direction = 1 }) then vim.schedule(function() vim.snippet.jump(1) end) return end return "" end, expr = true, silent = true, mode = "i", }, { "", 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", }, { "", function() if vim.snippet.active({ direction = -1 }) then vim.schedule(function() vim.snippet.jump(-1) end) return end return "" 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({ [""] = cmp.mapping.scroll_docs(-4), [""] = cmp.mapping.scroll_docs(4), [""] = cmp.mapping.complete(), [""] = cmp.mapping.abort(), [""] = 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 = { {'o', ':AerialToggle'}, } }, -- Show code diagnostics in a separate buffer window { 'folke/trouble.nvim', opts = {}, cmd = { "Trouble", }, keys = { {'t', ':Trouble diagnostics toggle'}, } }, { '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 = { -- {'r', ':hor Rest run'}, -- }, -- --[[ 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 = { -- {'r', 'RestNvim'}, -- {'R', 'RestNvimLast'}, -- {'', 'RestNvimPreview'}, -- }, -- config = function() -- -- commands -- local ct = require('conftool') -- ct.defcmd('RestNvim', 'lua require(\'rest-nvim\').run()') -- ct.defcmd('RestNvimPreview', 'lua require(\'rest-nvim\').run(true)') -- ct.defcmd('RestNvimLast', 'lua require(\'rest-nvim\').last()') -- end, ]]-- -- }, }