---@diagnostic disable: undefined-global vim.o.termguicolors = true vim.o.relativenumber = true vim.o.number = true vim.o.cursorline = true vim.o.cursorlineopt = "line" vim.o.cc = "80" vim.o.swapfile = false vim.o.splitright = true vim.o.splitbelow = true vim.o.winborder = "bold" vim.o.signcolumn = "yes" vim.o.guicursor = "n-v:block,i:ver25,r:hor100,i-r:blinkon100,i-r:blinkoff100,n-v:blinkon0" local tabwidth = 2 vim.o.tabstop = tabwidth vim.o.softtabstop = tabwidth vim.o.shiftwidth = tabwidth vim.o.expandtab = true require("packer").startup(function(use) use {"wbthomason/packer.nvim"} use {"ibhagwan/fzf-lua"} use {"stevearc/oil.nvim"} use {"lewis6991/gitsigns.nvim"} use {"williamboman/mason.nvim"} use {"neovim/nvim-lspconfig"} use {"nvim-treesitter/nvim-treesitter"} end) require("gitsigns").setup({}) require("mason").setup({}) require("oil").setup({}) require("fzf-lua").setup(require("fzf-lua.profiles.telescope")) require("nvim-treesitter.configs").setup({ ensure_installed = {"lua", "c"}, highlight = {enable = true} }) vim.cmd.colorscheme("mine") vim.g.mapleader = " " -- $ is actually so incredibly annoying and I hate it so much ugh vim.keymap.set({"n", "v", "o"}, "+", "$", {}) vim.keymap.set({"n", "v"}, "s", ":noh", {silent=true}) vim.keymap.set("n", "e", ":Oil", {}) vim.keymap.set("n", "", function() FzfLua.files({}) end, {}) vim.keymap.set("n", "", function() FzfLua.grep() end, {}) local function scroll(cmd) return function() return math.floor(vim.fn.winheight(0) / 4) .. cmd end end vim.keymap.set("n", "", scroll(""), {expr=true, noremap=true}) vim.keymap.set("n", "", scroll(""), {expr=true, noremap=true}) require("lspconfig").lua_ls.setup { settings = { Lua = { runtime = { version = "LuaJIT" }, ["diagnostics.disable"] = { "lowercase-global", } } } } vim.lsp.enable({"lua_ls", "clangd"}) vim.api.nvim_create_autocmd("LspAttach", { callback = function(ev) local client = vim.lsp.get_client_by_id(ev.data.client_id) -- trigger autocomplete on every keystroke local chars = {} for i = 32, 126 do table.insert(chars, string.char(i)) end client.server_capabilities.completionProvider.triggerCharacters = chars if client:supports_method("textDocument/completion") then vim.lsp.completion.enable(true, client.id, ev.buf, {autotrigger = true}) end end, }) vim.cmd("set completeopt+=menu,menuone,noinsert") vim.diagnostic.config({virtual_text = true})