-- theming -- Default options vim.opt.termguicolors = true vim.cmd.colorscheme 'melange' --https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md local lsconfig = require("lspconfig") -- Nix language server support lsconfig.nil_ls.setup{} -- This needs a path to the omnisharp dll provided lsconfig.omnisharp.setup {} -- Java language server support lsconfig.java_language_server.setup{} -- Typescript language server support lsconfig.tsserver.setup{} -- Rust language server support lsconfig.rust_analyzer.setup{} -- lsp configuration vim.api.nvim_create_autocmd('LspAttach', { callback = function(args) local opts = { buffer = args.buf } vim.keymap.set("n", '', function() vim.notify("triggering hover") vim.lsp.buf.hover() end, opts) vim.keymap.set({"n", "v"}, "a", vim.lsp.buf.code_action, opts) vim.keymap.set("n", "gr", vim.lsp.buf.references, opts) vim.keymap.set("n", "gd", vim.lsp.buf.definition, opts) vim.keymap.set("n", "f", vim.lsp.buf.format, opts) -- We use F2 to rename things vim.keymap.set("n", "", vim.lsp.buf.rename, opts) --vim.keymap.set("n", "", vim.lsp.buf.implementation, { buffer = args.buf }) end, }) -- LSP Diagnostics Options Setup local sign = function(opts) vim.fn.sign_define(opts.name, { texthl = opts.name, text = opts.text, numhl = '' }) end sign({name = 'DiagnosticSignError', text = '🔥'}) sign({name = 'DiagnosticSignWarn', text = '⚠️'}) sign({name = 'DiagnosticSignHint', text = '➡️'}) sign({name = 'DiagnosticSignInfo', text = '🗒️'}) vim.diagnostic.config({ virtual_text = false, signs = true, update_in_insert = true, underline = true, severity_sort = false, float = { border = 'rounded', source = 'always', header = '', prefix = '', }, }) vim.cmd([[ set signcolumn=yes autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) ]]) vim.cmd([[ let g:coq_settings = { 'auto_start': 'shut-up', 'display.icons.mode': "none" } ]]) require("coq") --Set completeopt to have a better completion experience -- :help completeopt -- menuone: popup even when there's only one match -- noinsert: Do not insert text until a selection is made -- noselect: Do not select, force to select one from the menu -- shortness: avoid showing extra messages when using completion -- updatetime: set updatetime for CursorHold vim.opt.completeopt = {'menuone', 'noselect', 'noinsert'} vim.opt.shortmess = vim.opt.shortmess + { c = true} vim.api.nvim_set_option('updatetime', 300) -- Fixed column for diagnostics to appear -- Show autodiagnostic popup on cursor hover_range -- Goto previous / next diagnostic warning / error -- Show inlay_hints more frequently vim.cmd([[ set signcolumn=yes autocmd CursorHold * lua vim.diagnostic.open_float(nil, { focusable = false }) ]]) -- Treesitter Plugin Setup require('nvim-treesitter.configs').setup { highlight = { enable = true, additional_vim_regex_highlighting=false, }, ident = { enable = true }, rainbow = { enable = true, extended_mode = true, max_file_lines = nil, } } vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 -- set termguicolors to enable highlight groups vim.opt.termguicolors = true -- Ensure nvim-web-deicons is loaded require'nvim-web-devicons'.setup{} -- setup nvim-tree require("nvim-tree").setup{} --({ -- sort_by = "case_sensitive", -- view = { -- width = 30, -- }, -- renderer = { -- group_empty = true, -- }, -- filters = { -- dotfiles = false, -- }, --}) vim.keymap.set("n", "", function() require("nvim-tree.api").tree.toggle() end) vim.keymap.set("i", "", function() print("Handling C-J") vim.notify("Handling C-J") end) --require("nvim-tree.api").tree.toggle()