local cfg = vim.opt local cmd = vim.cmd local g = vim.g g.mapleader = " " cfg.shiftwidth = 4 cfg.tabstop = 4 cfg.softtabstop = 4 cfg.smarttab = true cfg.smartindent = true cfg.number = true cfg.relativenumber = true cfg.fillchars = "eob: " g.loaded_netrw = 1 g.loaded_netrwPlugin = 1 cfg.termguicolors = true cfg.spell = false cfg.spelllang = { "en_us" } if vim.loop.os_uname().sysname == "Linux" then cfg.shell = "/run/current-system/sw/bin/zsh" else cfg.shell = "/run/current-system/sw/bin/zsh" end vim.cmd([[colorscheme gruvbox]]) vim.lsp.handlers["textDocument/hover"] = vim.lsp.with(vim.lsp.handlers.hover, { border = "single", }) vim.diagnostic.config({ float = { border = "single" } }) vim.keymap.set("n", "u", ":Telescope") vim.keymap.set("n", "", ":bn") vim.keymap.set("n", "", ":bp") vim.keymap.set("n", "", ":bw") vim.keymap.set("n", ".", vim.diagnostic.open_float) vim.api.nvim_create_autocmd("LspAttach", { group = vim.api.nvim_create_augroup("UserLspConfig", {}), callback = function(ev) vim.bo[ev.buf].omnifunc = "v:lua.vim.lsp.omnifunc" local opts = { buffer = ev.buf } vim.keymap.set("n", "gD", vim.lsp.buf.declaration, opts) vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) vim.keymap.set("n", "K", function() vim.lsp.buf.hover({ border = "single" }) end, opts) vim.keymap.set("n", "gi", vim.lsp.buf.implementation, opts) vim.keymap.set("n", "", vim.lsp.buf.signature_help, opts) vim.keymap.set("n", "wa", vim.lsp.buf.add_workspace_folder, opts) vim.keymap.set("n", "wr", vim.lsp.buf.remove_workspace_folder, opts) vim.keymap.set("n", "wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, opts) vim.keymap.set("n", "D", vim.lsp.buf.type_definition, opts) vim.keymap.set("n", "rn", vim.lsp.buf.rename, opts) vim.keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) vim.keymap.set("n", "f", function() vim.lsp.buf.format({ async = true }) end, opts) end, }) local builtin = require("telescope.builtin") vim.keymap.set("n", "ff", builtin.find_files, {}) vim.keymap.set("n", "fg", builtin.live_grep, {}) vim.keymap.set("n", "fb", builtin.buffers, {}) vim.keymap.set("n", "fh", builtin.help_tags, {}) local treeapi = require("nvim-tree.api") vim.keymap.set("n", "e", treeapi.tree.toggle, {})