vim.cmd("set runtimepath^=~/.vim runtimepath+=~/.vim/after") vim.cmd("let &packpath = &runtimepath") vim.cmd("source ~/.vimrc") vim.g.neovide_scale_factor = 0.7 vim.opt.guifont = { "JetBrainsMono Nerd Font", "h13" } vim.keymap.set("t", "", "") vim.api.nvim_create_autocmd("TermOpen", { pattern = "*", command = "set nonumber", }) require('twilight').setup() require('zen-mode').setup({ window = { backdrop = 1, } }) require('symbols-outline').setup({ autofold_depth = 2, }) require('leap').add_default_mappings() require('noice').setup({ lsp = { -- override markdown rendering so that **cmp** and other plugins use **Treesitter** override = { ["vim.lsp.util.convert_input_to_markdown_lines"] = true, ["vim.lsp.util.stylize_markdown"] = true, ["cmp.entry.get_documentation"] = true, }, }, presets = { long_message_to_split = true, -- long messages will be sent to a split }, }) require('treesitter-context').setup() require('nvim-treesitter.configs').setup({ -- A list of parser names, or "all" (the four listed parsers should always be installed) ensure_installed = { "c", "lua", "vim", "help", "fish", "typescript", "javascript", "go", "elixir", }, -- Automatically install missing parsers when entering buffer -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally auto_install = true, highlight = { enable = true, -- Setting this to true will run `:h syntax` and tree-sitter at the same time. -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). -- Using this option may slow down your editor, and you may see some duplicate highlights. -- Instead of true it can also be a list of languages additional_vim_regex_highlighting = false, }, incremental_selection = { enable = true, keymaps = { init_selection = "gnn", -- set to `false` to disable one of the mappings node_incremental = "grn", scope_incremental = "grc", node_decremental = "grm", }, }, indent = { enable = true } }) -- LSP Mappings. -- See `:help vim.diagnostic.*` for documentation on any of the below functions local opts = { noremap=true, silent=true } vim.keymap.set('n', 'd', vim.diagnostic.open_float, opts) vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts) vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts) vim.keymap.set('n', 'q', vim.diagnostic.setloclist, opts) -- Use an on_attach function to only map the following keys -- after the language server attaches to the current buffer local on_attach = function(client, bufnr) -- Enable completion triggered by vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings. -- See `:help vim.lsp.*` for documentation on any of the below functions local bufopts = { noremap=true, silent=true, buffer=bufnr } vim.keymap.set('n', 'h', vim.lsp.buf.hover, bufopts) vim.keymap.set('n', '', vim.lsp.buf.signature_help, bufopts) vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, bufopts) vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, bufopts) vim.keymap.set('n', 'wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, bufopts) vim.keymap.set('n', 'm', vim.lsp.buf.code_action, bufopts) vim.keymap.set('n', 'r', vim.lsp.buf.rename, bufopts) vim.keymap.set('n', 'F', function() vim.lsp.buf.format { async = true } end, bufopts) end local lspconfig = require "lspconfig" local coq = require "coq" local lsp_flags = { -- This is the default in Nvim 0.7+ debounce_text_changes = 150, } local servers = { 'tsserver', 'elixirls', 'gopls' } for _, lsp in ipairs(servers) do lspconfig[lsp].setup(coq.lsp_ensure_capabilities({ on_attach = on_attach, flags = lsp_flags, })) end