diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index f4b9216..90faae3 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -3,23 +3,41 @@ -- https://git.speedie.site/speedie/speedie-nvim -- ]]-- -require('bootstrap') +local cmd = vim.cmd -- Convenient alias +local opt = vim.opt -- Convenient alias +local o = vim.o -- 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 cmd = vim.cmd -local opt = vim.opt -local o = vim.o -local keymap = vim.api.nvim_set_keymap -local autocmd = vim.api.nvim_create_autocmd -local sessionFile = vim.fn.expand('~/.config/nvim/.session.nvim') - -require("lazy").setup({ +Theme = 'doom-one' -- Theme to use +Languages = { -- Used to configure highlighting + 'html', + 'css', + 'c', + 'cpp', -- The best language + 'php', + 'lua', + 'vim', + 'vimdoc', + 'markdown', +} -- Languages to support +Plugins = { -- Plugins to use { 'nvim-telescope/telescope.nvim', dependencies = { 'nvim-lua/plenary.nvim', } }, -- Fuzzy-finding + { 'nvim-treesitter/nvim-treesitter' }, -- Better syntax highlighting { 'nvim-lualine/lualine.nvim' }, -- Status line { 'm4xshen/autoclose.nvim' }, -- Autoclose brackets { 'romgrk/doom-one.vim' }, -- Doom-One theme { 'stevearc/conform.nvim' }, -- Formatting + { 'NeogitOrg/neogit', + dependencies = { + 'nvim-lua/plenary.nvim', + 'sindrets/diffview.nvim', + 'nvim-telescope/telescope.nvim', + }, + }, -- Git integration { 'romgrk/barbar.nvim', dependencies = { 'lewis6991/gitsigns.nvim', @@ -39,7 +57,10 @@ require("lazy").setup({ 'hrsh7th/nvim-cmp', 'L3MON4D3/LuaSnip', } }, -- LSP -}) + { 'nvim-tree/nvim-tree.lua' }, -- File manager +} + +require('bootstrap') -- Set up Lazy and plugins. opt.title = true -- Display title opt.spelllang = 'en_us' -- Use English (United States) as spellcheck language by default @@ -71,13 +92,11 @@ o.t_8f = '\27[38;2;%lu;%lu;%lum' -- To be honest, I don't know what this does bu o.t_8b = '\27[48;2;%lu;%lu;%lum' -- To be honest, I don't know what this does but if I remember correctly it's something good. cmd([[ - colorscheme doom-one highlight Normal ctermfg=grey ctermbg=lightgray guifg=#ffffff guibg=#222222 highlight EndOfBuffer ctermfg=grey ctermbg=lightgray guifg=#ffffff guibg=#222222 highlight Folded ctermfg=grey ctermbg=lightgray guifg=#afeeee guibg=#333333 highlight SpellBad guisp=red gui=undercurl guifg=none guibg=none ctermfg=none ctermbg=none term=underline cterm=undercurl highlight SpellCap guisp=yellow gui=undercurl guifg=none guibg=none ctermfg=none ctermbg=none term=underline cterm=undercurl - filetype plugin indent on ]]) keymap('n', '', 'h', { noremap = true, silent = true }) @@ -94,7 +113,8 @@ 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', '', 'z=', { noremap = true, silent = true }) +keymap('n', '', ':NvimTreeToggle', { noremap = true, silent = true }) +keymap('n', 'ca', 'z=', { noremap = true, silent = true }) keymap('n', '', ':!ninja -C build', { noremap = true, silent = true }) keymap('n', 'H', ':vertical resize -10', { noremap = true, silent = true }) keymap('n', 'J', ':resize -10', { noremap = true, silent = true }) @@ -127,19 +147,6 @@ keymap('n', 'bl', 'BufferOrderByLanguage', { noremap = true, sil keymap('n', 'bw', 'BufferOrderByWindowNumber', { noremap = true, silent = true }) -local function saveSession() -- Save the current session - vim.cmd('mksession! ' .. sessionFile) -end - -local function restoreSession() -- Restore the last session - 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('BufWritePre', { -- Remove trailing spaces pattern = { '*' }, callback = function() @@ -161,17 +168,29 @@ autocmd('BufWritePre', { -- Replace four spaces with tabs in Makefiles autocmd('VimEnter', { -- Restore session on load pattern = { '*' }, callback = function() - restoreSession() + 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() - saveSession() + local _sessionFile = vim.fn.expand(sessionFile) + vim.cmd('mksession! ' .. _sessionFile) end, }) +-- Set up various plugins +require('conform_config') +require('autoclose_config') require('lsp_config') +require('neogit_config') require('lualine_config') -require('conform').setup({}) -require('autoclose').setup({}) +require('tree_config') +require('ts_config') +require('theme_config') diff --git a/.config/nvim/lazy-lock.json b/.config/nvim/lazy-lock.json index c1538a3..18034f6 100644 --- a/.config/nvim/lazy-lock.json +++ b/.config/nvim/lazy-lock.json @@ -4,6 +4,7 @@ "barbar.nvim": { "branch": "master", "commit": "4ba9ac54f0c5d82131905160afff94172e3325e6" }, "cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" }, "conform.nvim": { "branch": "master", "commit": "cbc5745bf7519acaf3a5cbaaa677fd556aa813d7" }, + "diffview.nvim": { "branch": "main", "commit": "3dc498c9777fe79156f3d32dddd483b8b3dbd95f" }, "doom-one.vim": { "branch": "master", "commit": "323b7c31c617b153d12095e9fd9648f2fda2b646" }, "gitsigns.nvim": { "branch": "main", "commit": "4aaacbf5e5e2218fd05eb75703fe9e0f85335803" }, "lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" }, @@ -11,8 +12,11 @@ "lualine.nvim": { "branch": "master", "commit": "566b7036f717f3d676362742630518a47f132fff" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "3ba1b92b771f33256b4969d696b82c8ae7075364" }, "mason.nvim": { "branch": "main", "commit": "e110bc3be1a7309617cecd77bfe4bf86ba1b8134" }, + "neogit": { "branch": "master", "commit": "38dd297a905ec6869f4c20ea9184a3e514316e3b" }, "nvim-cmp": { "branch": "main", "commit": "538e37ba87284942c1d76ed38dd497e54e65b891" }, "nvim-lspconfig": { "branch": "master", "commit": "7eed8b2150192e5ad05e1886fdf133493ddf2928" }, + "nvim-tree.lua": { "branch": "master", "commit": "f24afa2cef551122b8bd53bb2e4a7df42343ce2e" }, + "nvim-treesitter": { "branch": "master", "commit": "090880c0f1fec219f7de838cb51b8dc07ce74a6d" }, "nvim-web-devicons": { "branch": "master", "commit": "140edfcf25093e8b321d13e154cbce89ee868ca0" }, "plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" }, "telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" } diff --git a/.config/nvim/lua/autoclose_config.lua b/.config/nvim/lua/autoclose_config.lua new file mode 100644 index 0000000..629f05b --- /dev/null +++ b/.config/nvim/lua/autoclose_config.lua @@ -0,0 +1,6 @@ +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + +require('autoclose').setup({}) diff --git a/.config/nvim/lua/bootstrap.lua b/.config/nvim/lua/bootstrap.lua index fb33348..90bb42c 100644 --- a/.config/nvim/lua/bootstrap.lua +++ b/.config/nvim/lua/bootstrap.lua @@ -3,7 +3,6 @@ -- https://git.speedie.site/speedie/speedie-nvim -- ]]-- - local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" if not vim.loop.fs_stat(lazypath) then vim.fn.system({ @@ -16,3 +15,5 @@ if not vim.loop.fs_stat(lazypath) then }) end vim.opt.rtp:prepend(lazypath) + +require("lazy").setup(Plugins) diff --git a/.config/nvim/lua/conform_config.lua b/.config/nvim/lua/conform_config.lua new file mode 100644 index 0000000..2818c54 --- /dev/null +++ b/.config/nvim/lua/conform_config.lua @@ -0,0 +1,6 @@ +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + +require('conform').setup({}) diff --git a/.config/nvim/lua/lsp_config.lua b/.config/nvim/lua/lsp_config.lua index 7354192..0fcbcd1 100644 --- a/.config/nvim/lua/lsp_config.lua +++ b/.config/nvim/lua/lsp_config.lua @@ -1,5 +1,12 @@ -local lsp_zero = require('lsp-zero') -lsp_zero.on_attach(function(client, bufnr) lsp_zero.default_keymaps({buffer = bufnr}) end) +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- -require('mason').setup({}) -require('mason-lspconfig').setup({handlers = { lsp_zero.default_setup }, }) +if vim.fn.has('nvim-0.8') == 1 or vim.fn.has('nvim-0.9') == 1 or vim.fn.has('nvim-1') == 1 then + local lsp_zero = require('lsp-zero') + 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 }, }) +end diff --git a/.config/nvim/lua/lualine_config.lua b/.config/nvim/lua/lualine_config.lua index 2dc7c20..2bc1d28 100644 --- a/.config/nvim/lua/lualine_config.lua +++ b/.config/nvim/lua/lualine_config.lua @@ -1,6 +1,8 @@ --- Eviline config for lualine --- Author: shadmansaleh --- Credit: glepnir +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + require('lualine').setup() local lualine = require('lualine') diff --git a/.config/nvim/lua/neogit_config.lua b/.config/nvim/lua/neogit_config.lua new file mode 100644 index 0000000..0c18142 --- /dev/null +++ b/.config/nvim/lua/neogit_config.lua @@ -0,0 +1,9 @@ +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + +-- Requires vim 0.9 or later +if vim.fn.has('nvim-0.9') == 1 or vim.fn.has('nvim-1') == 1 then + require('neogit').setup({}) +end diff --git a/.config/nvim/lua/theme_config.lua b/.config/nvim/lua/theme_config.lua new file mode 100644 index 0000000..a7a9c73 --- /dev/null +++ b/.config/nvim/lua/theme_config.lua @@ -0,0 +1,6 @@ +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + +vim.cmd('colorscheme ' .. Theme .. '') diff --git a/.config/nvim/lua/tree_config.lua b/.config/nvim/lua/tree_config.lua new file mode 100644 index 0000000..4d027fd --- /dev/null +++ b/.config/nvim/lua/tree_config.lua @@ -0,0 +1,16 @@ +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + +vim.g.loaded_netrw = 1 +vim.g.loaded_netrwPlugin = 1 + +require("nvim-tree").setup({ + view = { + width = 30, + }, + filters = { + dotfiles = true, + }, +}) diff --git a/.config/nvim/lua/ts_config.lua b/.config/nvim/lua/ts_config.lua new file mode 100644 index 0000000..2e45689 --- /dev/null +++ b/.config/nvim/lua/ts_config.lua @@ -0,0 +1,24 @@ +--[[ + speedie's neovim configuration + -- https://git.speedie.site/speedie/speedie-nvim -- +]]-- + +require'nvim-treesitter.configs'.setup { + ensure_installed = Languages, + sync_install = false, + auto_install = true, + + highlight = { + enable = true, + + disable = function(lang, buf) + local max_filesize = 1000 * 1024 -- 100 KB + local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + return true + end + end, + + additional_vim_regex_highlighting = false, + }, +}