-- sets the "key", which can be used in shortcuts vim.g.mapleader = "," vim.g.have_nerd_font = true -- [[ vim options, see `:help vim.opt` ]] -- line numbers vim.opt.number = true -- enable mouse vim.opt.mouse = "a" -- save undo history vim.opt.undofile = true -- case insensitive search, unless the terms contains uppercase or '\C' vim.opt.ignorecase = true vim.opt.smartcase = true -- save swapfile 250ms after nothing is done vim.opt.updatetime = 250 -- timeout mapped sequences after 300ms vim.opt.timeoutlen = 300 -- configure where splits open vim.opt.splitright = true vim.opt.splitbelow = true -- show whitespace characters clearly (see :help 'list') vim.opt.list = true -- preview substitutions (:s & :%s) while typing vim.opt.inccommand = "split" -- highlight the line the cursor is on vim.opt.cursorline = true -- set default tab size vim.opt.shiftwidth = 2 vim.opt.tabstop = 2 vim.opt.expandtab = true -- disable netrw to avoid conflicts with neotree vim.g.loaded_netrw = 0 vim.g.loaded_netrwPlugin = 0 -- sync os clipboard and neovim vim.schedule(function() vim.opt.clipboard = "unnamedplus" end) -- [[ shortcuts, see `:help vim.keymap.set()` ]] -- hide search results when pressing esc vim.keymap.set("n", "", "nohlsearch") -- disable arrow keys in normal mode -- vim.keymap.set('n', '', 'echo "Use h to move!!"') -- vim.keymap.set('n', '', 'echo "Use l to move!!"') -- vim.keymap.set('n', '', 'echo "Use k to move!!"') -- vim.keymap.set('n', '', 'echo "Use j to move!!"') -- Keybinds to make split navigation easier. -- Use CTRL+ to switch between windows -- -- See `:help wincmd` for a list of all window commands vim.keymap.set("n", "", "", { desc = "Move focus to the left window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the right window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the lower window" }) vim.keymap.set("n", "", "", { desc = "Move focus to the upper window" }) -- open neo-tree vim.keymap.set("n", "t", "Neotree reveal") -- lsp keybindings vim.keymap.set("n", "cd", vim.diagnostic.open_float) -- show lsp messages inline vim.diagnostic.config({ virtual_text = true, }) -- [[ neovide configuration ]] if vim.g.neovide then vim.o.guifont = "IosevkaTerm Nerd Font:h12" end -- [[ plugin configuration ]] require("catppuccin").setup({ flavour = "auto", background = { light = "latte", dark = "mocha", }, }) -- setup must be called before colorscheme vim.cmd.colorscheme("catppuccin") require("nvim-treesitter.configs").setup({ highlight = { enable = true, use_languagetree = true, }, indent = { enable = true }, }) require("lualine").setup({ options = { theme = "catppuccin", }, extensions = { "trouble" }, }) local npairs = require("nvim-autopairs") local cmp_autopairs = require("nvim-autopairs.completion.cmp") npairs.setup({ check_ts = true, }) local cmp = require("cmp") local cmp_caps = require("cmp_nvim_lsp").default_capabilities() cmp.setup({ mapping = cmp.mapping.preset.insert({ -- accept completion with enter [""] = cmp.mapping.confirm({ select = true }), }), sources = { { name = "async_path" }, { name = "buffer" }, { name = "nvim_lsp" }, }, }) cmp.event:on("confirm_done", cmp_autopairs.on_confirm_done()) local lspformat = require("lsp-format") lspformat.setup({}) local lspconfig = require("lspconfig") lspconfig.nixd.setup({ on_attach = lspformat.on_attach, capabilities = cmp_caps, settings = { ["nixd"] = { formatting = { command = { "nixfmt" }, }, }, }, }) lspconfig.rust_analyzer.setup({ on_attach = lspformat.on_attach, settings = { ["rust-analyzer"] = { check = { command = "clippy" }, }, }, }) require("gitsigns").setup() require("fidget").setup() require("neo-tree").setup({ close_if_last_window = true, })