vim.opt.termguicolors = true vim.pack.add({ { src = "https://github.com/rose-pine/neovim", name = "rose-pine" }, { src = "https://github.com/brenoprata10/nvim-highlight-colors" }, { src = "https://github.com/mbbill/undotree" }, { src = "https://github.com/nvim-mini/mini.pairs", version = vim.version.range('*') }, { src = "https://github.com/nvim-tree/nvim-web-devicons" }, { src = "https://github.com/ibhagwan/fzf-lua" }, { src = "https://github.com/saghen/blink.cmp", version = vim.version.range('*'), }, { src = "git@moo:dmm/polydev.git", version = "main" }, { src = "https://github.com/nvim-treesitter/nvim-treesitter", build = ":TSUpdate" }, { src = "https://github.com/alexghergh/nvim-tmux-navigation" }, { src = "https://github.com/mason-org/mason.nvim" }, { src = "https://github.com/mason-org/mason-lspconfig.nvim" }, { src = "https://github.com/neovim/nvim-lspconfig" }, { src = "https://github.com/stevearc/conform.nvim" }, }) require("mason").setup() require("mason-lspconfig").setup({ ensure_installed = { "ts_ls", "lua_ls", "denols" }, automatic_enable = true, }) require 'nvim-tmux-navigation'.setup { disable_when_zoomed = true -- defaults to false } require('nvim-treesitter').install { 'rust', 'c', 'cpp', 'lua', 'javascript' } vim.api.nvim_create_autocmd('FileType', { pattern = { 'c', 'cpp', 'rust', 'lua', 'javascript' }, callback = function() vim.treesitter.start() vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()" end, }) require("conform").setup({ formatters_by_ft = { rust = { "rustfmt", lsp_format = "fallback" }, lua = { "emmylua-codeformat", lsp_format = "fallback" }, javascript = { "denols", stop_after_first = true }, ["_"] = { "trim_whitespace" }, }, format_on_save = { timeout_ms = 500, lsp_format = "fallback", }, }) require('nvim-highlight-colors').turnOn() require("Polydev").setup({ terminal = { mode = "split", }, }) require("blink.cmp").setup({ completion = { menu = { draw = { columns = { { "label", gap = 1 }, { "kind_icon", gap = 1, "kind" } }, } } } }) require('mini.pairs').setup() require("fzf-lua").setup({ "border-fused", previewers = { builtin = { syntax_limit_b = -51200, -- 50KB limit on highlighting files }, }, winopts = { height = 0.50, width = 0.45, row = 0.35, col = 0.50, border = "rounded", backdrop = 0, fullscreen = false, preview = { hidden = true, }, }, grep = { rg_glob = true, rg_glob_fn = function(query) local regex, flags = query:match("^(.-)%s%-%-(.*)$") return (regex or query), flags end, }, defaults = { formatter = "path.filename_first", }, }) local capabilities = require('blink.cmp').get_lsp_capabilities() vim.lsp.config("lua_ls", { capabilities = capabilities, settings = { Lua = { diagnostics = { globals = { "vim" } }, workspace = { library = vim.api.nvim_get_runtime_file("", true), checkThirdParty = false, }, }, }, }) vim.lsp.enable({ "lua_ls", "clangd", "rust-analyzer", "denols" }) --- Options vim.g.mapleader = " " vim.opt.number = true vim.opt.relativenumber = true vim.opt.tabstop = 8 -- Number of spaces a counts for vim.opt.shiftwidth = 8 -- Number of spaces for autoindent (>>, <<, etc.) vim.opt.expandtab = true -- Use spaces instead of tabs vim.opt.autoindent = true -- Copy indent from current line when starting a new line vim.opt.softtabstop = 8 -- Number of spaces for in insert mode (backspace deletes 4 spaces) vim.opt.wrap = false vim.opt.swapfile = false vim.opt.signcolumn = "yes" vim.opt.undofile = true -- Keeps undo history even after we close a file vim.opt.scrolloff = 8 vim.opt.sidescrolloff = 8 vim.opt.hlsearch = false vim.opt.completeopt = { "menuone", "noselect", "popup" } vim.g.netrw_browse_split = 0 vim.g.netrw_banner = 0 vim.g.netrw_liststyle = 3 vim.g.netrw_winsize = 25 vim.opt.wrapscan = true -- begin search from top of the file when nothng is found vim.opt.cursorline = true -- enable cursorline vim.opt.cursorlineopt = { "screenline", "number" } -- cursorline look vim.opt.foldmethod = "indent" vim.opt.foldcolumn = "1" vim.opt.foldenable = false vim.opt.shortmess = 'aF' -- abbreviates messages and prevents file name being echoed when opened vim.opt.ignorecase = true -- ignore cases when searching vim.opt.smartcase = true -- However if we use a capital in search string we then consider case-sensitivity, ignorecase is disabled vim.opt.smartindent = false -- smarter indentation vim.opt.smarttab = true -- make tab behaviour smarter vim.opt.laststatus = 3 --- COLORS vim.cmd.colorscheme("rose-pine") vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) vim.api.nvim_set_hl(0, "NormalFloat", { link = 'Normal' }) vim.api.nvim_set_hl(0, "StatusLine", { link = 'Normal' }) vim.api.nvim_set_hl(0, "StatusLineTerm", { link = 'Normal' }) vim.api.nvim_set_hl(0, "StatusLineNC", { link = 'Normal' }) vim.api.nvim_set_hl(0, "SignColumn", { link = 'Normal' }) vim.api.nvim_set_hl(0, 'LineNrAbove', { link = 'NonText', bold = true }) vim.api.nvim_set_hl(0, 'LineNrBelow', { link = 'NonText', bold = true }) vim.api.nvim_set_hl(0, "LineNr", { link = 'Normal' }) vim.api.nvim_set_hl(0, "FoldColumn", { link = 'Normal' }) vim.api.nvim_set_hl(0, "CursorLineNr", { bg = "none", link = 'MatchParen', bold = true }) --- KEYMAPS vim.keymap.set("v", "J", ":m '>+1gv=gv") vim.keymap.set("v", "K", ":m '<-2gv=gv") vim.keymap.set("n", "ff", vim.lsp.buf.format) vim.keymap.set("n", "vs", ":vsplit") vim.keymap.set("n", "ss", ":split") vim.keymap.set("n", "E", ":Ex") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "", "zz") vim.keymap.set("n", "n", "nzzzv") vim.keymap.set("n", "N", "Nzzzv") vim.keymap.set("x", "p", [["_dP]]) vim.keymap.set('n', '', ":FzfLua files") vim.keymap.set('n', 'fh', ":FzfLua helptags") vim.keymap.set('n', 'fg', ":FzfLua live_grep") vim.keymap.set('n', 'fm', ":FzfLua manpages") vim.keymap.set('n', 'xx', vim.diagnostic.setqflist) vim.keymap.set('n', 'fs', vim.lsp.buf.document_symbol) vim.keymap.set('n', 'gd', vim.lsp.buf.definition) vim.keymap.set("n", "gr", vim.lsp.buf.references) vim.keymap.set("n", "gR", vim.lsp.buf.rename) vim.keymap.set("n", "gc", vim.lsp.buf.code_action) vim.keymap.set("n", "uu", ":UndotreeToggle") vim.keymap.set("n", "[", "H", { silent = true, noremap = true, }) vim.keymap.set("n", "]", "K", { silent = true, noremap = true, }) vim.keymap.set("n", "[q", ":cprevzz", { desc = "Previous Quickfix Item" }) vim.keymap.set("n", "]q", ":cnextzz", { desc = "Next Quickfix Item" }) vim.keymap.set("n", "qo", ":copen", { desc = "Open Quickfix" }) vim.keymap.set("n", "qc", ":cclose", { desc = "Close Quickfix" }) vim.keymap.set("n", "", ":NvimTmuxNavigateLeft", { silent = true }) vim.keymap.set("n", "", ":NvimTmuxNavigateDown", { silent = true }) vim.keymap.set("n", "", ":NvimTmuxNavigateUp", { silent = true }) vim.keymap.set("n", "", ":NvimTmuxNavigateRight", { silent = true })