local tabsize = 2 vim.o.number = true vim.o.relativenumber = true vim.o.wrap = false vim.o.winborder = "rounded" vim.o.tabstop = tabsize vim.o.softtabstop = tabsize vim.o.shiftwidth = tabsize vim.o.expandtab = false vim.o.smartindent = true vim.o.swapfile = false vim.g.mapleader = " " vim.keymap.set("n", "o", ":update:source") vim.keymap.set("n", "lf", vim.lsp.buf.format) vim.keymap.set("n", "ff", ":Telescope find_files") vim.keymap.set("n", "fg", ":Telescope live_grep") vim.keymap.set("n", "n", ":noh") vim.pack.add({ { src = "https://github.com/vague-theme/vague.nvim" }, { src = "https://github.com/neovim/nvim-lspconfig" }, { src = "https://github.com/nvim-lua/plenary.nvim" }, { src = "nvim-telescope/telescope-fzf-native.nvim" }, { src = "https://github.com/nvim-telescope/telescope.nvim" }, { src = "https://github.com/hrsh7th/nvim-cmp" }, { src = "https://github.com/hrsh7th/cmp-nvim-lsp" }, { src = "https://github.com/windwp/nvim-autopairs" }, { src = "https://github.com/nvim-treesitter/nvim-treesitter" } }) vim.lsp.config('lua_ls', { on_init = function(client) if client.workspace_folders then local path = client.workspace_folders[1].name if path ~= vim.fn.stdpath('config') and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) then return end end client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, { runtime = { -- Tell the language server which version of Lua you're using (most -- likely LuaJIT in the case of Neovim) version = 'LuaJIT', -- Tell the language server how to find Lua modules same way as Neovim -- (see `:h lua-module-load`) path = { 'lua/?.lua', 'lua/?/init.lua', }, }, workspace = { checkThirdParty = false, library = { vim.env.VIMRUNTIME, }, }, }) end, settings = { Lua = {}, }, }) local cmp = require 'cmp' cmp.setup({ snippet = { expand = function(args) vim.snippet.expand(args.body) end }, preselect = cmp.PreselectMode.Item, mapping = cmp.mapping.preset.insert({ [''] = cmp.mapping.scroll_docs(-4), [''] = cmp.mapping.scroll_docs(4), [''] = cmp.mapping.select_next_item(), [''] = cmp.mapping.select_prev_item(), [''] = cmp.mapping.complete(), [''] = cmp.mapping.abort(), [''] = cmp.mapping.confirm({ select = true }), }), sources = cmp.config.sources({ { name = "nvim_lsp" } }, { name = 'buffer' }) }) local lsp_group = vim.api.nvim_create_augroup("MyLspKeymaps", { clear = true }) vim.api.nvim_create_autocmd('LspAttach', { group = lsp_group, callback = function(ev) local bufnr = ev.buf local opts = { silent = true, noremap = true, buffer = bufnr } vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) vim.keymap.set("n", "K", vim.lsp.buf.hover, opts) vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) vim.keymap.set("n", "ca", vim.lsp.buf.code_action, opts) end }) require("vague").setup { transparent = true, italic = false, } local capabilities = require('cmp_nvim_lsp').default_capabilities() vim.o.colorcolumn = "80" vim.lsp.config('lua_ls', { capabilities = capabilities, }) vim.lsp.config('clangd-tweak', { capabilities = capabilities, }) vim.lsp.enable({ "lua_ls", "clangd-tweak" }) vim.cmd("colorscheme vague") require 'nvim-autopairs'.setup {} require 'nvim-treesitter'.install({ "c", "cpp", "rust", "lua", "javascript", "typescript" })