-- general configuration vim.opt.background = 'dark' -- the theme background is dark vim.opt.termguicolors = true vim.opt.cursorline = true -- highlight the line with the cursor vim.opt.wrap = false -- do not wrap long lines vim.opt.foldmethod = 'marker' -- when folding, use the marker vim.opt.laststatus = 2 -- always show the status line vim.opt.showtabline = 2 -- always show the tab bar vim.opt.scrolloff = 2 -- number of lines to always have around cursor vim.opt.splitright = true -- vertical splits open on the right vim.opt.splitbelow = true -- horizontal splits open on the bottom vim.g.mapleader = ' ' -- space is the leader character -- commands that don't exist in lua yet vim.cmd [[ color molokai ]] -- Keybind: use '-' to open the file explorer vim.api.nvim_set_keymap('n', '-', ':Ex', { noremap=true, silent=true }) -- Rainbow braket configuration vim.g['rainbow_active'] = true -- lsp saga improves the display of LSP information local saga = require('lspsaga') saga.init_lsp_saga { error_sign = '>', warn_sign = '#', hint_sign = '!', infor_sign = '?', border_style = "round", } -- lsp configuration local nvim_lsp = require('lspconfig') local on_attach = function(client, bufnr) local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end local opts = { noremap=true, silent=true } buf_set_keymap('n', 'gD', 'lua vim.lsp.buf.declaration()', opts) buf_set_keymap('n', 'gd', 'lua vim.lsp.buf.definition()', opts) buf_set_keymap('n', 'K', 'Lspsaga hover_doc', opts) buf_set_keymap('n', 'C-K', 'Lspsaga signature_help', opts) if client.resolved_capabilities.document_formatting then vim.api.nvim_command [[augroup Format]] vim.api.nvim_command [[autocmd! * ]] vim.api.nvim_command [[autocmd BufWritePre lua vim.lsp.buf.formatting_seq_sync()]] vim.api.nvim_command [[augroup END]] end end -- attach the keymaps -- lsp servers/languages configuration nvim_lsp.rust_analyzer.setup { on_attach = on_attach } nvim_lsp.pyright.setup { on_attach = on_attach } -- treesitter require 'nvim-treesitter.configs'.setup { ensure_installed = 'maintained', sync_install = false, highlight = { enable = true, }, } -- lualine (better statusline) require 'lualine'.setup { options = { icons_enabled = true, -- theme = 'ayu_dark', theme = 'ayu_mirage', component_separators = { left = '', right = ''}, section_separators = { left = '', right = ''}, disabled_filetypes = {}, always_divide_middle = true, }, sections = { lualine_a = {'mode'}, lualine_b = {'branch', 'diff', 'diagnostics'}, lualine_c = {'filename'}, lualine_x = {'encoding', 'fileformat', 'filetype'}, lualine_y = {'progress'}, lualine_z = {'location'} }, inactive_sections = { lualine_a = {}, lualine_b = {}, lualine_c = {'filename'}, lualine_x = {'location'}, lualine_y = {}, lualine_z = {} }, tabline = { lualine_a = {}, lualine_b = {'filename'}, lualine_c = {}, lualine_x = {}, lualine_y = {}, lualine_z = {'tabs'} }, extensions = {} }