diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 88de409..6579ca3 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,19 +1,17 @@ --[[ speedie's neovim configuration -- https://git.speedie.site/speedie/speedie-nvim -- - - Dependencies: - - - Neovim 0.9 or later ]]-- -local cmd = vim.cmd -- Convenient alias local opt = vim.opt -- Convenient alias local highlight = vim.api.nvim_set_hl -- Convenient alias local keymap = vim.api.nvim_set_keymap -- Convenient alias local autocmd = vim.api.nvim_create_autocmd -- Convenient alias -local sessionFile = '~/.config/nvim/.session.nvim' -- File where the previous buffer is stored +local defaultKeybindOptions = { noremap = true, silent = true } -- Default keybind options +LoadPreviousSessionOnLoad = false -- Load previous session or not +SessionFile = '~/.config/nvim/.session.nvim' -- File where the previous buffer is stored +LeaderKey = ' ' -- The leader key to use. Default is the space key. Theme = 'doom-one' -- Theme to use Languages = { -- Languages to support - Used to configure highlighting 'html', -- For HTML @@ -111,53 +109,60 @@ highlight(0, 'Folded', { fg='#afeeee', bg='#333333' }) highlight(0, 'SpellBad', { undercurl=true, fg='#ff0000' }) highlight(0, 'SpellCap', { undercurl=true, fg='#ffff00' }) -keymap('n', '', 'h', { noremap = true, silent = true }) -keymap('n', '', 'j', { noremap = true, silent = true }) -keymap('n', '', 'k', { noremap = true, silent = true }) -keymap('n', '', 'l', { noremap = true, silent = true }) -keymap('n', '', ':split', { noremap = true, silent = true }) -keymap('n', '', ':vsplit', { noremap = true, silent = true }) -keymap('n', '', ':only', { noremap = true, silent = true }) -keymap('n', '', ':term', { noremap = true, silent = true }) -keymap('n', '', ':Telescope fd', { noremap = true, silent = true }) -keymap('n', '', ':set spell!', { noremap = true, silent = true }) -keymap('n', '', ':set spelllang=en_us', { noremap = true, silent = true }) -keymap('n', '', ':set spelllang=sv_se', { noremap = true, silent = true }) -keymap('n', '', ':silent execute "!setxkbmap us"', { noremap = true, silent = true }) -keymap('n', '', ':silent execute "!setxkbmap se"', { noremap = true, silent = true }) -keymap('n', '', ':NvimTreeToggle', { noremap = true, silent = true }) -keymap('n', '', ':TroubleToggle', { noremap = true, silent = true }) -keymap('n', 'ca', 'z=', { noremap = true, silent = true }) -keymap('n', 'H', ':vertical resize -10', { noremap = true, silent = true }) -keymap('n', 'J', ':resize -10', { noremap = true, silent = true }) -keymap('n', 'K', ':resize +10', { noremap = true, silent = true }) -keymap('n', 'L', ':vertical resize +10', { noremap = true, silent = true }) -keymap('n', 'd', '"_d', { noremap = true, silent = true }) -keymap('x', 'd', '"_d', { noremap = true, silent = true }) -keymap('x', 'p', '"_dP', { noremap = true, silent = true }) -keymap('n', 'c', '"_c', { noremap = true, silent = true }) -keymap('n', '', 'v/{%', { noremap = true, silent = true }) -keymap('n', '', 'BufferPrevious', { noremap = true, silent = true }) -keymap('n', '', 'BufferNext', { noremap = true, silent = true }) -keymap('n', '', 'BufferMovePrevious', { noremap = true, silent = true }) -keymap('n', '>', 'BufferMoveNext', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 1', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 2', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 3', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 4', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 5', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 6', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 7', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 8', { noremap = true, silent = true }) -keymap('n', '', 'BufferGoto 9', { noremap = true, silent = true }) -keymap('n', '', 'BufferLast', { noremap = true, silent = true }) -keymap('n', '', 'BufferPin', { noremap = true, silent = true }) -keymap('n', '', 'BufferClose', { noremap = true, silent = true }) -keymap('n', 'bb', 'BufferOrderByBufferNumber', { noremap = true, silent = true }) -keymap('n', 'bd', 'BufferOrderByDirectory', { noremap = true, silent = true }) -keymap('n', 'bl', 'BufferOrderByLanguage', { noremap = true, silent = true }) -keymap('n', 'bw', 'BufferOrderByWindowNumber', { noremap = true, silent = true }) +-- Keybinds for handling splits +keymap('n', '', 'h', defaultKeybindOptions) +keymap('n', '', 'j', defaultKeybindOptions) +keymap('n', '', 'k', defaultKeybindOptions) +keymap('n', '', 'l', defaultKeybindOptions) +keymap('n', '', 'split', defaultKeybindOptions) +keymap('n', '', 'vsplit', defaultKeybindOptions) +keymap('n', '', 'only', defaultKeybindOptions) +keymap('n', '', 'term', defaultKeybindOptions) +keymap('n', '', 'Telescope fd', defaultKeybindOptions) +keymap('n', 'H', 'vertical resize -10', defaultKeybindOptions) +keymap('n', 'J', 'resize -10', defaultKeybindOptions) +keymap('n', 'K', 'resize +10', defaultKeybindOptions) +keymap('n', 'L', 'vertical resize +10', defaultKeybindOptions) +-- Keybinds for language/spell +keymap('n', '', 'set spell!', defaultKeybindOptions) +keymap('n', '', 'set spelllang=en_us', defaultKeybindOptions) +keymap('n', '', 'set spelllang=sv_se', defaultKeybindOptions) +keymap('n', '', 'silent execute "!setxkbmap us"', defaultKeybindOptions) +keymap('n', '', 'silent execute "!setxkbmap se"', defaultKeybindOptions) +keymap('n', 'ca', 'z=', defaultKeybindOptions) + +-- Miscellanious +keymap('n', 'd', '"_d', defaultKeybindOptions) +keymap('x', 'd', '"_d', defaultKeybindOptions) +keymap('x', 'p', '"_dP', defaultKeybindOptions) +keymap('n', 'c', '"_c', defaultKeybindOptions) +keymap('n', 'ZX', 'q!', defaultKeybindOptions) +keymap('n', '', 'v/{%', defaultKeybindOptions) +keymap('n', '', 'NvimTreeToggle', defaultKeybindOptions) +keymap('n', '', 'TroubleToggle', defaultKeybindOptions) + +-- Keybinds for handling tabs +keymap('n', '', 'BufferPrevious', defaultKeybindOptions) +keymap('n', '', 'BufferNext', defaultKeybindOptions) +keymap('n', '', 'BufferMovePrevious', defaultKeybindOptions) +keymap('n', '>', 'BufferMoveNext', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 1', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 2', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 3', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 4', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 5', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 6', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 7', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 8', defaultKeybindOptions) +keymap('n', '', 'BufferGoto 9', defaultKeybindOptions) +keymap('n', '', 'BufferLast', defaultKeybindOptions) +keymap('n', '', 'BufferPin', defaultKeybindOptions) +keymap('n', '', 'BufferClose', defaultKeybindOptions) +keymap('n', 'bb', 'BufferOrderByBufferNumber', defaultKeybindOptions) +keymap('n', 'bd', 'BufferOrderByDirectory', defaultKeybindOptions) +keymap('n', 'bl', 'BufferOrderByLanguage', defaultKeybindOptions) +keymap('n', 'bw', 'BufferOrderByWindowNumber', defaultKeybindOptions) autocmd('BufWritePre', { -- Remove trailing spaces pattern = { '*' }, @@ -177,25 +182,6 @@ autocmd('BufWritePre', { -- Replace four spaces with tabs in Makefiles vim.cmd("autocmd BufWritePre Makefile %s/ /\t/e") end, }) -autocmd('VimEnter', { -- Restore session on load - pattern = { '*' }, - callback = function() - local _sessionFile = vim.fn.expand(sessionFile) - if vim.fn.argc() == 0 then - if vim.fn.filereadable(_sessionFile) == 1 then - vim.cmd('source ' .. _sessionFile) - vim.cmd("filetype detect") - end - end - end, -}) -autocmd('VimLeave', { -- Save session on exit - pattern = { '*' }, - callback = function() - local _sessionFile = vim.fn.expand(sessionFile) - vim.cmd('mksession! ' .. _sessionFile) - end, -}) -- Set up various plugins require('conform_config') @@ -208,3 +194,4 @@ require('ts_config') require('theme_config') require('trouble_config') require('translate_config') +require('session_manager') diff --git a/.config/nvim/lua/bootstrap.lua b/.config/nvim/lua/bootstrap.lua index 90bb42c..3538ec5 100644 --- a/.config/nvim/lua/bootstrap.lua +++ b/.config/nvim/lua/bootstrap.lua @@ -3,6 +3,10 @@ -- https://git.speedie.site/speedie/speedie-nvim -- ]]-- +vim.api.nvim_set_keymap('', LeaderKey, '', { noremap = true, silent = true }) +vim.g.mapleader = LeaderKey +vim.g.maplocalleader = LeaderKey + local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then vim.fn.system({ diff --git a/.config/nvim/lua/lsp_config.lua b/.config/nvim/lua/lsp_config.lua index f046695..8fde1ca 100644 --- a/.config/nvim/lua/lsp_config.lua +++ b/.config/nvim/lua/lsp_config.lua @@ -8,5 +8,10 @@ if vim.fn.has('nvim-0.8') == 1 or vim.fn.has('nvim-0.9') == 1 or vim.fn.has('nvi lsp_zero.on_attach(function(client, bufnr) lsp_zero.default_keymaps({buffer = bufnr}) end) require('mason').setup({}) - require('mason-lspconfig').setup({handlers = { lsp_zero.default_setup }, ensure_installed = LanguageServers}) + + if next(LanguageServers) == nil then + require('mason-lspconfig').setup({handlers = { lsp_zero.default_setup }}) + else + require('mason-lspconfig').setup({handlers = { lsp_zero.default_setup }, ensure_installed = LanguageServers}) + end end diff --git a/.config/nvim/lua/session_manager.lua b/.config/nvim/lua/session_manager.lua new file mode 100644 index 0000000..f3a8ee2 --- /dev/null +++ b/.config/nvim/lua/session_manager.lua @@ -0,0 +1,26 @@ +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + +if LoadPreviousSessionOnLoad and SessionFile ~= '' then + vim.api.nvim_create_autocmd('VimEnter', { -- Restore session on load + pattern = { '*' }, + callback = function() + local _sessionFile = vim.fn.expand(SessionFile) + if vim.fn.argc() == 0 then + if vim.fn.filereadable(_sessionFile) == 1 then + vim.cmd('source ' .. _sessionFile) + vim.cmd("filetype detect") + end + end + end, + }) + vim.api.nvim_create_autocmd('VimLeave', { -- Save session on exit + pattern = { '*' }, + callback = function() + local _sessionFile = vim.fn.expand(SessionFile) + vim.cmd('mksession! ' .. _sessionFile) + end, + }) +end