Mercurial > lbo > hg > nvim-config
changeset 0:fc1f1046cf52 default tip
Initial commit
author | Lewin Bormann <lbo@spheniscida.de> |
---|---|
date | Thu, 15 Jun 2023 22:36:59 +0200 |
parents | |
children | |
files | init.lua lua/opts.lua lua/plug.lua plugin/packer_compiled.lua |
diffstat | 4 files changed, 509 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/init.lua Thu Jun 15 22:36:59 2023 +0200 @@ -0,0 +1,184 @@ + +local function map(mode, lhs, rhs, opts) + local options = { noremap = true, silent = true } + if opts then + options = vim.tbl_extend('force', options, opts) + end + vim.api.nvim_set_keymap(mode, lhs, rhs, options) +end + +vim.opt.shell = '/bin/bash' + +require('plug') +require('opts') + +require("nvim-web-devicons").setup { default = true } + +require("mason").setup() + +require('onedark').setup({ + style = 'darker', + transparent = true, + term_colors = true, +}) +require('onedark').load() + +require("mason-lspconfig").setup({ + ensure_installed = { "pylsp", "gopls", "clangd", "typst_lsp", "texlab" } +}) + +require("lspconfig").julials.setup{} +require("lspconfig").pylsp.setup{} +require("lspconfig").rust_analyzer.setup{} +require("lspconfig").gopls.setup{} +require("lspconfig").clangd.setup{} +require("lspconfig").ocamllsp.setup{} +require("lspconfig").typst_lsp.setup{} +require("lspconfig").texlab.setup{} + +local rt = { + server = { + settings = { + ["rust-analyzer"] = { + checkOnSave = { + command = "clippy" + }, + }, + } + }, +} +require('rust-tools').setup(rt) + + -- 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 }) + +autocmd FileType ocaml setlocal shiftwidth=2 softtabstop=2 +]]) + +-- Completion Plugin Setup +local cmp = require('cmp') +cmp.setup({ + -- Enable LSP snippets + snippet = { + expand = function(args) + vim.fn["vsnip#anonymous"](args.body) + end, + }, + mapping = { + ['<C-p>'] = cmp.mapping.select_prev_item(), + ['<C-n>'] = cmp.mapping.select_next_item(), + -- Add tab support + ['<S-Tab>'] = cmp.mapping.select_prev_item(), + ['<Tab>'] = cmp.mapping.select_next_item(), + ['<C-S-f>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-Space>'] = cmp.mapping.complete(), + ['<C-e>'] = cmp.mapping.close(), + ['<CR>'] = cmp.mapping.confirm({ + behavior = cmp.ConfirmBehavior.Insert, + select = true, + }) + }, + -- Installed sources: + sources = { + { name = 'path' }, -- file paths + { name = 'nvim_lsp', keyword_length = 3 }, -- from language server + { name = 'nvim_lsp_signature_help'}, -- display function signatures with current parameter emphasized + { name = 'nvim_lua', keyword_length = 2}, -- complete neovim's Lua runtime API such vim.lsp.* + { name = 'buffer', keyword_length = 2 }, -- source current buffer + { name = 'vsnip', keyword_length = 2 }, -- nvim-cmp source for vim-vsnip + { name = 'calc'}, -- source for math calculation + }, + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + formatting = { + fields = {'menu', 'abbr', 'kind'}, + format = function(entry, item) + local menu_icon ={ + nvim_lsp = 'λ', + vsnip = '⋗', + buffer = 'Ω', + path = '📂', + } + item.menu = menu_icon[entry.source.name] + return item + end, + }, +}) + +require('nvim-treesitter.configs').setup { + ensure_installed = { "rust", "toml", "julia", "python" }, + auto_install = true, + highlight = { + enable = true, + additional_vim_regex_highlighting=false, + }, + ident = { enable = true }, + rainbow = { + enable = true, + extended_mode = true, + max_file_lines = nil, + } +} + +vim.cmd([[ +set nocompatible +set number +set autoindent +set cindent +set tabstop=8 +set softtabstop=4 +set shiftwidth=4 +set expandtab +set nowrap +set ignorecase +set shell=/bin/bash +set ruler +set showmode +set hlsearch +set incsearch +set nojoinspaces +set showcmd +set whichwrap="" +set mouse= +]]) + +-- FloaTerm configuration +map('n', "<leader>ft", ":FloatermNew --name=myfloat --height=0.8 --width=0.7 --autoclose=2 bash <CR> ") +map('n', "<leader>fn", ":FloatermNext <CR>") +map('n', "<leader>fp", ":FloatermPrev <CR>") +map('n', "t", ":FloatermToggle myfloat<CR>") +map('t', "<Esc>", "<C-\\><C-n>:q<CR>") + +vim.cmd("au BufRead,BufNewFile *.typst *.typ setfiletype typst")
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lua/opts.lua Thu Jun 15 22:36:59 2023 +0200 @@ -0,0 +1,71 @@ +--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 folding +--vim.wo.foldmethod = 'expr' +--vim.wo.foldexpr = 'nvim_treesitter#foldexpr()' +-- + +vim.cmd([[ +let g:vimspector_sidebar_width = 85 +let g:vimspector_bottombar_height = 15 +let g:vimspector_terminal_maxwidth = 70 +]]) +-- Vimspector +vim.cmd([[ +nmap <F9> <cmd>call vimspector#Launch()<cr> +nmap <F5> <cmd>call vimspector#StepOver()<cr> +nmap <F8> <cmd>call vimspector#Reset()<cr> +nmap <F11> <cmd>call vimspector#StepOver()<cr>") +nmap <F12> <cmd>call vimspector#StepOut()<cr>") +nmap <F10> <cmd>call vimspector#StepInto()<cr>") +]]) +--map('n', "Db", ":call vimspector#ToggleBreakpoint()<cr>") +--map('n', "Dw", ":call vimspector#AddWatch()<cr>") +--map('n', "De", ":call vimspector#Evaluate()<cr>") + + +vim.cmd([[ +nnoremap <leader>ff <cmd>lua require('telescope.builtin').find_files()<cr> +nnoremap <leader>fg <cmd>lua require('telescope.builtin').live_grep()<cr> +nnoremap <leader>fb <cmd>lua require('telescope.builtin').buffers()<cr> +nnoremap <leader>fh <cmd>lua require('telescope.builtin').help_tags()<cr> +]]) + +-- Trouble +vim.api.nvim_set_keymap("n", "<leader>xx", "<cmd>TroubleToggle<cr>", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "<leader>xw", "<cmd>TroubleToggle workspace_diagnostics<cr>", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "<leader>xd", "<cmd>TroubleToggle document_diagnostics<cr>", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "<leader>xl", "<cmd>TroubleToggle loclist<cr>", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "<leader>xq", "<cmd>TroubleToggle quickfix<cr>", + {silent = true, noremap = true} +) +vim.api.nvim_set_keymap("n", "gR", "<cmd>Trouble lsp_references<cr>", + {silent = true, noremap = true} +)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lua/plug.lua Thu Jun 15 22:36:59 2023 +0200 @@ -0,0 +1,50 @@ + +require('packer').startup(function() + -- other plugins... + use 'wbthomason/packer.nvim' + + use 'neovim/nvim-lspconfig' + + use 'williamboman/mason.nvim' + use 'williamboman/mason-lspconfig.nvim' + + use 'nvim-lua/plenary.nvim' + + use 'fatih/vim-go' + + use 'simrat39/rust-tools.nvim' + use 'rust-lang/rust.vim' + + use 'SeniorMars/typst.nvim' + + -- Completion framework: + use 'hrsh7th/nvim-cmp' + + -- LSP completion source: + use 'hrsh7th/cmp-nvim-lsp' + + -- Useful completion sources: + use 'hrsh7th/cmp-nvim-lua' + use 'hrsh7th/cmp-nvim-lsp-signature-help' + use 'hrsh7th/cmp-path' + use 'hrsh7th/cmp-buffer' + use 'hrsh7th/vim-vsnip' + + use 'kyazdani42/nvim-web-devicons' + + use 'nvim-treesitter/nvim-treesitter' + + use 'puremourning/vimspector' + + use 'voldikss/vim-floaterm' + + use 'folke/trouble.nvim' + + use 'navarasu/onedark.nvim' + + -- use 'nvim-telescope/telescope.nvim' + -- other plugins... +end) + + +
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/plugin/packer_compiled.lua Thu Jun 15 22:36:59 2023 +0200 @@ -0,0 +1,204 @@ +-- Automatically generated packer.nvim plugin loader code + +if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then + vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"') + return +end + +vim.api.nvim_command('packadd packer.nvim') + +local no_errors, error_msg = pcall(function() + +_G._packer = _G._packer or {} +_G._packer.inside_compile = true + +local time +local profile_info +local should_profile = false +if should_profile then + local hrtime = vim.loop.hrtime + profile_info = {} + time = function(chunk, start) + if start then + profile_info[chunk] = hrtime() + else + profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6 + end + end +else + time = function(chunk, start) end +end + +local function save_profiles(threshold) + local sorted_times = {} + for chunk_name, time_taken in pairs(profile_info) do + sorted_times[#sorted_times + 1] = {chunk_name, time_taken} + end + table.sort(sorted_times, function(a, b) return a[2] > b[2] end) + local results = {} + for i, elem in ipairs(sorted_times) do + if not threshold or threshold and elem[2] > threshold then + results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms' + end + end + if threshold then + table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)') + end + + _G._packer.profile_output = results +end + +time([[Luarocks path setup]], true) +local package_path_str = "/home/lbo/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/lbo/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/lbo/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/lbo/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua" +local install_cpath_pattern = "/home/lbo/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so" +if not string.find(package.path, package_path_str, 1, true) then + package.path = package.path .. ';' .. package_path_str +end + +if not string.find(package.cpath, install_cpath_pattern, 1, true) then + package.cpath = package.cpath .. ';' .. install_cpath_pattern +end + +time([[Luarocks path setup]], false) +time([[try_loadstring definition]], true) +local function try_loadstring(s, component, name) + local success, result = pcall(loadstring(s), name, _G.packer_plugins[name]) + if not success then + vim.schedule(function() + vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {}) + end) + end + return result +end + +time([[try_loadstring definition]], false) +time([[Defining packer_plugins]], true) +_G.packer_plugins = { + ["cmp-buffer"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/cmp-buffer", + url = "https://github.com/hrsh7th/cmp-buffer" + }, + ["cmp-nvim-lsp"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp", + url = "https://github.com/hrsh7th/cmp-nvim-lsp" + }, + ["cmp-nvim-lsp-signature-help"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/cmp-nvim-lsp-signature-help", + url = "https://github.com/hrsh7th/cmp-nvim-lsp-signature-help" + }, + ["cmp-nvim-lua"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/cmp-nvim-lua", + url = "https://github.com/hrsh7th/cmp-nvim-lua" + }, + ["cmp-path"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/cmp-path", + url = "https://github.com/hrsh7th/cmp-path" + }, + ["mason-lspconfig.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/mason-lspconfig.nvim", + url = "https://github.com/williamboman/mason-lspconfig.nvim" + }, + ["mason.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/mason.nvim", + url = "https://github.com/williamboman/mason.nvim" + }, + ["nvim-cmp"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/nvim-cmp", + url = "https://github.com/hrsh7th/nvim-cmp" + }, + ["nvim-lspconfig"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/nvim-lspconfig", + url = "https://github.com/neovim/nvim-lspconfig" + }, + ["nvim-treesitter"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/nvim-treesitter", + url = "https://github.com/nvim-treesitter/nvim-treesitter" + }, + ["nvim-web-devicons"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/nvim-web-devicons", + url = "https://github.com/kyazdani42/nvim-web-devicons" + }, + ["onedark.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/onedark.nvim", + url = "https://github.com/navarasu/onedark.nvim" + }, + ["packer.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/packer.nvim", + url = "https://github.com/wbthomason/packer.nvim" + }, + ["plenary.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/plenary.nvim", + url = "https://github.com/nvim-lua/plenary.nvim" + }, + ["rust-tools.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/rust-tools.nvim", + url = "https://github.com/simrat39/rust-tools.nvim" + }, + ["rust.vim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/rust.vim", + url = "https://github.com/rust-lang/rust.vim" + }, + ["trouble.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/trouble.nvim", + url = "https://github.com/folke/trouble.nvim" + }, + ["typst.nvim"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/typst.nvim", + url = "https://github.com/SeniorMars/typst.nvim" + }, + ["vim-floaterm"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/vim-floaterm", + url = "https://github.com/voldikss/vim-floaterm" + }, + ["vim-go"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/vim-go", + url = "https://github.com/fatih/vim-go" + }, + ["vim-vsnip"] = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/vim-vsnip", + url = "https://github.com/hrsh7th/vim-vsnip" + }, + vimspector = { + loaded = true, + path = "/home/lbo/.local/share/nvim/site/pack/packer/start/vimspector", + url = "https://github.com/puremourning/vimspector" + } +} + +time([[Defining packer_plugins]], false) + +_G._packer.inside_compile = false +if _G._packer.needs_bufread == true then + vim.cmd("doautocmd BufRead") +end +_G._packer.needs_bufread = false + +if should_profile then save_profiles() end + +end) + +if not no_errors then + error_msg = error_msg:gsub('"', '\\"') + vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None') +end