neovim-config/lua/plugins/10_ide.lua

281 lines
5.1 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",
"python",
"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
},
--
-- Language Configurations
--
{ 'ap/vim-css-color', lazy = false },
-- close tags in html languages
{
'alvan/closetag.vim',
ft = { "html", "vue", "typescriptreact" },
},
{
'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,
},
},
},
--
-- Language Server
--
-- 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,
},
},
keys = {
{'<Leader>e', ':AerialToggle<LF>'},
}
},
-- Language Server Installer
{
'williamboman/mason.nvim',
cmd = {
"Mason",
"MasonInstall",
"MasonUpdate",
},
opts = {
ui = {
icons = {
package_installed = "i",
package_pending = "p",
package_uninstalled = "u"
},
},
},
},
{
'neovim/nvim-lspconfig',
config = function()
-- disable inline error messages
vim.diagnostic.config({ virtual_text = false })
end
},
--[[{
'huggingface/llm.nvim',
opts = {
model = 'qwen2.5-coder:7b',
backend = 'ollama',
url = 'http://localhost:11434',
lsp = {
bin_path = vim.api.nvim_call_function("stdpath", { "data" }) .. "/mason/bin/llm-ls",
}
},
},]]--
{
'mason-org/mason-lspconfig.nvim',
dependencies = {
'ms-jpq/coq_nvim',
'nanotee/nvim-lsp-basics',
'neovim/nvim-lspconfig',
-- 'huggingface/llm.nvim',
'stevearc/aerial.nvim',
'williamboman/mason.nvim',
},
opts = {
ensure_installed = {
"bashls",
"clangd",
"gopls",
"html",
"jsonls",
"lua_ls",
"pyright",
"texlab",
"ts_ls"
},
},
ft = {
"bash",
"c",
"cpp",
"cs",
"dart",
"go",
"html",
"javascript",
"javascriptreact",
"json",
"lua",
"python",
"tex",
"typescript",
"typescriptreact",
},
-- config = function()
-- local masonlsp = require 'mason-lspconfig'
-- --[[
-- masonlsp.setup
-- --]]
-- masonlsp.setup_handlers {
-- function(server_name)
-- require('lspconfig')[server_name].setup(require('coq').lsp_ensure_capabilities {
-- on_attach = function(client, bufnr)
-- local basics = require('lsp_basics')
-- basics.make_lsp_commands(client, bufnr)
-- basics.make_lsp_mappings(client, bufnr)
-- end
-- })
-- end
-- }
-- end,
},
-- Show code diagnostics in a separate buffer window
{
'folke/trouble.nvim',
opts = {},
cmd = {
"Trouble",
},
keys = {
{'<Leader>t', ':Trouble diagnostics toggle<CR>'},
}
},
--
-- 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"
},
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, ]]--
},
}