vim.g.mapleader = " " vim.g.localleader = "\\" require('plugins') require('vars') require('opts') require('fns') require('keys') require('theme') require('statusline') local lspconfig = require("lspconfig") local rust_tools = require("rust-tools") -- Mason Setup require("mason").setup({ ui = { icons = { package_installed = "", package_pending = "", package_uninstalled = "", }, }, ensure_installed = { "pylsp", "rust_analyzer" }, }) require("mason-lspconfig").setup() lspconfig.pylsp.setup {} lspconfig.rust_analyzer.setup {} require("auto-save").setup({ enabled = false }) require("todo-comments").setup() rust_tools.setup({ server = { on_attach = function(_, bufnr) -- Hover actions vim.keymap.set("n", "", rust_tools.hover_actions.hover_actions, { buffer = bufnr }) -- Code action groups vim.keymap.set("n", "a", rust_tools.code_action_group.code_action_group, { buffer = bufnr }) end, settings = { ["rust-analyzer"] = {}, } }, }) -- Format file on save vim.cmd [[autocmd BufWritePre * lua vim.lsp.buf.format()]] -- Completion Plugin Setup local cmp = require'cmp' cmp.setup({ -- Enable LSP snippets snippet = { expand = function(args) vim.fn["vsnip#anonymous"](args.body) end, }, mapping = { [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), -- Add tab support [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.complete(), [''] = cmp.mapping.close(), [''] = cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Insert, select = true, }) }, -- Installed sources: sources = { { name = 'path' }, -- file paths { name = 'nvim_lsp', keyword_length = 3 }, -- from language server { name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized { name = 'nvim_lua', keyword_length = 2 }, -- complete neovim's Lua runtime API such vim.lsp.* { name = 'buffer', keyword_length = 2 }, -- source current buffer { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip { name = 'calc'}, -- source for math calculation }, window = { completion = cmp.config.window.bordered(), documentation = cmp.config.window.bordered(), }, formatting = { fields = {'menu', 'abbr', 'kind'}, format = function(entry, item) local menu_icon ={ nvim_lsp = 'λ', vsnip = '⋗', buffer = 'Ω', path = '🖫', } item.menu = menu_icon[entry.source.name] return item end, }, }) -- Treesitter Plugin Setup require('nvim-treesitter.configs').setup { ensure_installed = { "lua", "rust", "toml" }, auto_install = true, highlight = { enable = true, additional_vim_regex_highlighting=false, }, ident = { enable = true }, rainbow = { enable = true, extended_mode = true, max_file_lines = nil, } }