-- General vim.o.mouse = "" vim.o.number = true vim.o.relativenumber = true vim.g.mapleader = " " -- Search vim.o.showmatch = true vim.o.ignorecase = true vim.o.hlsearch = true vim.o.wildmode = "longest,list" -- Tab vim.o.tabstop = 4 vim.o.shiftwidth = 4 vim.o.autoindent = true -- vim.o.smartindent = true -- Style vim.o.termguicolors = true -- set list listchars=tab:\▎\ ,nbsp:␣,trail:•,extends:⟩,precedes:⟨ -- hi NonText guifg=bg -- Keybinds -- Remove arrow keys vim.keymap.set('', '', '') vim.keymap.set('', '', '') vim.keymap.set('', '', '') vim.keymap.set('', '', '') vim.keymap.set('i', '', '') vim.keymap.set('i', '', '') vim.keymap.set('i', '', '') vim.keymap.set('i', '', '') -- LSP vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) vim.keymap.set('n', 'K', vim.lsp.buf.hover, 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", "e", vim.diagnostic.open_float, bufopts) 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', 's', function() vim.lsp.buf.format { async = true } end, opts) -- Terminal vim.keymap.set('', 'tt', ':terminali') vim.keymap.set('t', '', '') -- Other vim.keymap.set('n', '', 'tabnew $MYVIMRC') -- bootstrap lazy.nvim local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then vim.fn.system({ "git", "clone", "--filter=blob:none", "https://github.com/folke/lazy.nvim.git", "--branch=stable", -- latest stable release lazypath, }) end vim.opt.rtp:prepend(lazypath) -- Plugins require("lazy").setup({ -- dependencies "onsails/lspkind.nvim", "kyazdani42/nvim-web-devicons", "nvim-lua/plenary.nvim", -- style "nvim-treesitter/nvim-treesitter", -- syntax highlight -- themes "kdheepak/monochrome.nvim", "Domeee/mosel.nvim", "folke/tokyonight.nvim", "rose-pine/neovim", -- integrations "lewis6991/gitsigns.nvim", -- git sign bar integration "nvim-telescope/telescope.nvim", -- fuzzy search -- cmp "hrsh7th/nvim-cmp", -- autocompletion "hrsh7th/cmp-nvim-lsp", -- lsp source "hrsh7th/cmp-buffer", -- buffer source "hrsh7th/cmp-path", -- path source "saadparwaiz1/cmp_luasnip", "L3MON4D3/LuaSnip", -- snippet engine -- lsp "williamboman/mason.nvim", -- lsp auto install "williamboman/mason-lspconfig.nvim", -- auto lsp config "neovim/nvim-lspconfig", -- lsp config -- formating "sbdchd/neoformat", -- linting "mfussenegger/nvim-lint" }) vim.cmd("colo mosel") -- treesitter require("nvim-treesitter").setup({ highlight = { enable = true } }) -- gitsigns require('gitsigns').setup() vim.keymap.set('n', 'gb', 'Gitsigns blame_line') -- telescope local builtin = require('telescope.builtin') vim.keymap.set('n', 'ff', 'Telescope find_files') vim.keymap.set('n', 'fr', 'Telescope oldfiles') vim.keymap.set('n', 'fg', 'Telescope live_grep') vim.keymap.set('n', 'fs', 'Telescope grep_string') vim.keymap.set('n', 'fb', 'Telescope buffers') vim.keymap.set('n', 'fh', 'Telescope help_tags') -- cmp config local cmp = require("cmp") cmp.setup { formatting = { format = function(entry, vim_item) -- fancy icons and a name of kind vim_item.kind = require("lspkind").presets.default[vim_item.kind] .. " " .. vim_item.kind -- set a name for each source vim_item.menu = ({ buffer = "[Buffer]", nvim_lsp = "[LSP]", path = "[Path]", -- snip = "[Snip]" })[entry.source.name] return vim_item end }, mapping = { [""] = 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 }), }, sources = { { name = "nvim_lsp" }, { name = "buffer" }, { name = "path" }, -- { name = "luasnip" } }, snippet = { expand = function(args) require 'luasnip'.lsp_expand(args.body) end }, completion = { completeopt = "menu,menuone,noinsert" } } -- mason require("mason").setup() require("mason-lspconfig").setup { automatic_enable = true } vim.lsp.enable({ 'clangd', 'hls' }) -- require('lint').linters_by_ft = { -- markdown = {'vale'}, -- css = {"stylelint"}, -- html = {"htmlhint"}, -- } -- vim.api.nvim_create_autocmd({ "BufWritePost" }, { -- callback = function() -- require("lint").try_lint() -- end, -- })