Compare commits

..

5 Commits

3 changed files with 84 additions and 34 deletions

View File

@ -1,4 +1,4 @@
-- settings erro signs -- setting error signs
local function sign_define(args) local function sign_define(args)
vim.fn.sign_define(args.name, { vim.fn.sign_define(args.name, {
texthl = args.name, texthl = args.name,
@ -28,7 +28,7 @@ vim.api.nvim_create_autocmd("LspAttach", {
desc = "LSP Actions", desc = "LSP Actions",
callback = function(event) callback = function(event)
-- Enable omnifunc -- Enable omnifunc
vim.bo[event.buf].omnifunc = "v:lua.MiniCompletion.completefunc_lsp" -- vim.bo[event.buf].omnifunc = "v:lua.vim.lsp.omnifunc"
-- Buffer local mappings -- Buffer local mappings
local opts = { buffer = event.buf } local opts = { buffer = event.buf }
@ -56,31 +56,65 @@ vim.api.nvim_create_autocmd("LspAttach", {
end, end,
}) })
local lsp_capabilities = require("cmp_nvim_lsp").default_capabilities()
local default_setup = function(server)
require("lspconfig")[server].setup({
capabilities = lsp_capabilities,
})
end
-- setup mason and automatically install some language server's -- setup mason and automatically install some language server's
require("mason").setup({}) require("mason").setup({})
require("mason-lspconfig").setup({ require("mason-lspconfig").setup({
ensure_installed = { "lua_ls", "jsonls", "bashls", "pyright", "marksman", "gopls", "clangd" }, ensure_installed = { "lua_ls", "jsonls", "bashls", "pyright", "marksman", "gopls", "clangd" },
}) handlers = { default_setup },
-- automatically setup already installed lsp's
require("mason-lspconfig").setup_handlers({
function(server_name)
require("lspconfig")[server_name].setup({})
end,
}) })
-- setup haskell language server manually cause it doesn't work with mason for xmonad -- setup haskell language server manually cause it doesn't work with mason for xmonad
require("lspconfig").hls.setup({}) require("lspconfig").hls.setup({ capabilities = lsp_capabilities })
-- autocompletion using mini.completion -- simple completion setup with snippet support
require("mini.completion").setup({ local cmp = require("cmp")
lsp_completion = {
source_func = "omnifunc", cmp.setup({
auto_setup = false, sources = {
{ name = "nvim_lsp" },
{ name = "snippy" },
{ name = "path" },
}, },
fallback_action = "<C-x><C-n>", mapping = cmp.mapping.preset.insert({
["<C-l>"] = cmp.mapping.confirm({ select = false }),
["<C-j>"] = cmp.mapping(function(fallback)
if cmp.visible then
cmp.select_next_item()
else
fallback()
end
end, { "i", "s" }),
["<C-k>"] = cmp.mapping(function(fallback)
if cmp.visible then
cmp.select_prev_item()
else
fallback()
end
end, { "i", "s" }),
}),
snippet = {
expand = function(args)
require("snippy").expand_snippet(args.body)
end,
},
formatting = {
format = require("lspkind").cmp_format({
mode = "symbol_text", -- show only symbol annotations
maxwidth = 50, -- prevent the popup from showing more than provided characters
ellipsis_char = "...", -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead
}),
},
enabled = function()
-- disable completion in comments
local context = require("cmp.config.context")
return not context.in_treesitter_capture("comment") and not context.in_syntax_group("Comment")
end,
}) })
-- bind ctrl j and k to move beetwen completion items
vim.keymap.set("i", "<C-j>", [[pumvisible() ? "\<C-n>" : "\<C-j>"]], { expr = true })
vim.keymap.set("i", "<C-k>", [[pumvisible() ? "\<C-p>" : "\<C-k>"]], { expr = true })

View File

@ -4,7 +4,7 @@
-- mini.nvim statusline module -- mini.nvim statusline module
require("mini.statusline").setup({ require("mini.statusline").setup({
set_vim_options = false, set_vim_settings = false,
}) })
-- mini.nvim commeting module -- mini.nvim commeting module

View File

@ -14,19 +14,35 @@ vim.opt.rtp:prepend(lazypath)
-- plugins installation and configuration -- plugins installation and configuration
require("lazy").setup({ require("lazy").setup({
-- LSP Support -- lsp setup
"neovim/nvim-lspconfig", {
-- lsp download manager -- LSP Support
"williamboman/mason.nvim", "neovim/nvim-lspconfig",
-- automatic lsp setup -- lsp download manager
"williamboman/mason-lspconfig.nvim", "williamboman/mason.nvim",
-- additional formater support -- automatic lsp setup
"stevearc/conform.nvim", "williamboman/mason-lspconfig.nvim",
-- additional linter support -- additional formater support
"mfussenegger/nvim-lint", "stevearc/conform.nvim",
-- mason autoinstaller for formatter's and linter's -- additional linter support
"WhoIsSethDaniel/mason-tool-installer.nvim", "mfussenegger/nvim-lint",
-- mason autoinstaller for formatter's and linter's
"WhoIsSethDaniel/mason-tool-installer.nvim",
-- minimal snippet's support
"dcampos/nvim-snippy",
-- basic snippet's
"honza/vim-snippets",
-- cmp for autocompletion
"hrsh7th/nvim-cmp",
-- cmp nvim-lsp plugin
"hrsh7th/cmp-nvim-lsp",
-- cmp snippy support
"dcampos/cmp-snippy",
-- path comletion
"hrsh7th/cmp-path",
-- kind icons
"onsails/lspkind.nvim",
},
-- Adds git related signs to the gutter, as well as utilities for managing changes -- Adds git related signs to the gutter, as well as utilities for managing changes
"lewis6991/gitsigns.nvim", "lewis6991/gitsigns.nvim",