4U7EI3UFCICTPJR67H73GZWH25W42MNABJSKVFW6ARLFR5XJTCQQC
SADFTQUDBFM4AIQSWTJTU63UUBUOXWPRLIT46MG532JZHA3LZ5MQC
POB6RZFEMX7C7HYYNEBM425NQDNAL4CDLWH4EUES2WLZTJY555LAC
KRTIBTY7O2CRBMST4CUPSXDUWI2GL65JWH36MSO6HUKSWVYWT4IQC
P5VKMF56NCALVNHIH2UMG5U73XGGS3RENTRD2QZHK6LLOOSGT6AQC
XQD63RAJU5FUZXMP2WXIHHNFFSEP7TNHYZFO3DCPPYFBHWLXW6DAC
V25EMEXKG34L4VU2O5RGZ4OASPXX3MG6E7VAH42WXY7Y4WFJ4GLAC
ZIRKOYP2ZVP3QUD72GGWFTM5KS45QYORLD56Q63EWTSNYGI6DMAQC
3BVKY2TFXIDKNDTN4BYY26WEYM3GEVKBQCEZAW4ADECJA25NAKMAC
KIYATYOLHDMF6YCCP4SXKCJ5YXIJQFXZJD7OAZA37WAU6YGGMM3AC
CBL5HZKPBD63W2IZ76TTD2W2GXMOEKAIQFLCWNB2EUO6V3PX2IOAC
PS5PXTHFTQDM4WVNMXEJUPLQVGQWULYJ5IVAXZ7LJX4ZUSICUKDAC
4LSO4STLQJZ7TXVI3BYUXAG7UV3LAICU65B52RUKABD3KHQ2G7GAC
3BK5VANZFIJ3MOFXL66FHO372G3XSVJP6YJFXW24KY4QL62MHLTAC
DEVZGQYDMMD2ZMJKQX5M72L4LTYAZEIVEDXSYNIMHMRBT5CJIERAC
ULKBUZEBFCZOZ5BTUW6262LG5DK6BUOVN6STTKCFLZFG3EE6PFPAC
QWJ5FBQ7ZL75GTXLYEVPTLK7AEMBMBEYE7536WFLGINTG332LAIAC
UNMO22GQRCYHMIXPFTZTQVVPCOFSBVU2YV5CKLO72ZRDZ2AJ46WQC
YSKR5RAG56GA3T554X2S5QNFQSHAYFXU3QT5QMU5A5OUGLPAMJ2AC
HWLVSY6UL5VDMK7NLQB2LJYEHV6KNKP4QIUWJKYTKKYW3L5ZLQBAC
AD3GGMJYYDKYXMTBCQK7IHKTVSM75XFTBHZSMFXFAQYWSPRHSCBAC
JTTWOADMNTGEUL5TBJSC5PEXSW6GMBZLY6TWLN2DHV26REVMZOZAC
XCR34YPGC3GY7CKQTQX4WUEKLRLAZKNSUPWOKGD5HUHK2RN7RKGAC
7YSLKSMDJDEUEBZWYJG5N2TCLIWW5CUWRYFXCUACBLGLWKW4OY2QC
ODCMJEPVOBW3GNAN5F5TVT7WN6JZGGAF6YBGJZMSZX7ZLUFEHABQC
source "$HOME/.cargo/env"
export DOTNET_ROOT=/snap/dotnet-sdk/current
[diff]
guitool = kdiff3
[difftool "kdiff3"]
trustExitCode = false
" First, setup plugins
call plug#begin('~/.local/share/nvim/plugged')
" UI Elements
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'nvim-lua/telescope.nvim'
Plug 'nvim-lua/plenary.nvim' " dependency for telescope
Plug 'nvim-lua/popup.nvim' " dependency for telescope
Plug 'airblade/vim-gitgutter'
Plug 'hoob3rt/lualine.nvim'
Plug 'romgrk/barbar.nvim'
Plug 'lambdalisue/fern.vim'
Plug 'voldikss/vim-floaterm'
Plug 'mfussenegger/nvim-dap'
" Git
Plug 'tpope/vim-fugitive'
Plug 'rbong/vim-flog'
" Editing functionality
Plug 'tomtom/tcomment_vim'
Plug 'tpope/vim-obsession'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-repeat'
" LSP support
Plug 'neovim/nvim-lspconfig'
Plug 'nvim-lua/lsp_extensions.nvim'
Plug 'nvim-lua/completion-nvim'
Plug 'kosayoda/nvim-lightbulb'
" Aesthetic plugins
Plug 'joshdick/onedark.vim'
" Plug 'sheerun/vim-polyglot'
Plug 'arm9/arm-syntax-vim'
Plug 'lervag/vimtex'
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
Plug 'nvim-treesitter/playground'
call plug#end()
lua require 'plugins'
lua require 'options'
lua require 'lsp'
lua require 'mappings'
lua require 'treesitter'
lua require 'statusline'
lua require 'dap-config'
" use double-slash comments in c files
call tcomment#type#Define('c', '// %s')
call tcomment#type#Define('c_block', '/* %s */\n * ')
call tcomment#type#Define('c_inline', '/* %s */')
local options = require 'options'
--
-- options.merge_into(vim.opt_local, {
-- tabstop = 2,
-- shiftwidth = 2,
-- })
local options = require 'options'
options.merge_into(vim.opt, {
wrap = false,
})
-- only redraw when necessary (makes macros run faster)
o.lazyredraw = true
merge_into(vim.opt, {
guifont = 'UbuntuMono Nerd Font Mono:h15', -- set the font when using a graphical interface
mouse = 'a', -- support mouse selection, clicking, etc
textwidth = 0, -- no automatic word-wrapping
lazyredraw = true, -- only redraw when necessary (makes macros run faster)
-- show whitespace
wo.list = true
o.listchars = 'tab:→ ,space:·,nbsp:␣,trail:•,eol:¶,precedes:«,extends:»'
-- show line numbers relative to the current position
wo.number = true
wo.relativenumber = true
-- show whitespace
list = true,
listchars = {
tab = '→ ',
space = '·',
nbsp = '␣',
trail = '•',
eol = '¶',
precedes = '«',
extends = '»',
},
-- Keep the cursor 10 lines from the top/bottom of the screen
o.scrolloff = 10
foldcolumn = '1', -- Show when I'm in an open fold
foldclose = 'all', -- Automatically close folds when leaving them
scrolloff = 10, -- Keep the cursor 10 lines from the top/bottom of the screen
textwidth = 80, -- Automatically hit enter for me
hidden = true, -- Required for operations modifying multiple buffers like rename.
cursorline = true, -- Highlight the line your cursor is on
signcolumn = 'yes', -- Prevent the window from resizing due to the gitgutter being added
showmode = false, -- hide the mode in the command line row (already shown by lualine)
undofile = true, -- persist undo history between sessions
-- shell = 'nu', -- use a specific default shell (this breaks fugitive)
-- Required for operations modifying multiple buffers like rename.
o.hidden = true
require'nvim-lightbulb'.update_lightbulb {
sign = {
enabled = true,
-- Priority of the gutter sign
priority = 100,
text = 'A'
},
float = {
enabled = true,
-- Text to show in the popup float
text = "A",
win_opts = {},
},
virtual_text = {
enabled = false,
-- Text to show at virtual text
text = "A",
}
}
-- Highlight the line your cursor is on
wo.cursorline = true
require'compe'.setup {
enabled = true,
autocomplete = true,
debug = false,
min_length = 1,
preselect = 'disable',
throttle_time = 80,
source_timeout = 200,
incomplete_delay = 400,
max_abbr_width = 100,
max_kind_width = 100,
max_menu_width = 100,
documentation = true,
require'nvim-lightbulb'.update_lightbulb {
sign = {
enabled = true,
-- Priority of the gutter sign
priority = 100,
text = 'A'
},
float = {
enabled = false,
-- Text to show in the popup float
text = "💡",
-- Available keys for window options:
-- - height of floating window
-- - width of floating window
-- - wrap_at character to wrap at for computing height
-- - max_width maximal width of floating window
-- - max_height maximal height of floating window
-- - pad_left number of columns to pad contents at left
-- - pad_right number of columns to pad contents at right
-- - pad_top number of lines to pad contents at top
-- - pad_bottom number of lines to pad contents at bottom
-- - offset_x x-axis offset of the floating window
-- - offset_y y-axis offset of the floating window
-- - anchor corner of float to place at the cursor (NW, NE, SW, SE)
-- - winblend transparency of the window (0-100)
win_opts = {},
},
virtual_text = {
enabled = false,
-- Text to show at virtual text
text = "💡",
}
}
-- require 'nvim-gps'.setup {
-- icons = {
-- ['class-name'] = 'C',
-- ['function-name'] = 'f',
-- ['method-name'] = 'm',
-- }
-- }
local execute = vim.api.nvim_command
local fn = vim.fn
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
if fn.empty(fn.glob(install_path)) > 0 then
fn.system({'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path})
execute 'packadd packer.nvim'
end
return require('packer').startup(function(use)
use 'wbthomason/packer.nvim'
-- UI Elements
use { 'junegunn/fzf', run = function() vim.cmd[[fzf#install()]] end }
use 'junegunn/fzf.vim'
use {
'nvim-telescope/telescope.nvim',
requires = {{'nvim-lua/popup.nvim'}, {'nvim-lua/plenary.nvim'}}
}
use 'airblade/vim-gitgutter'
use 'hoob3rt/lualine.nvim'
use 'romgrk/barbar.nvim'
use 'lambdalisue/fern.vim'
use 'voldikss/vim-floaterm'
use 'mfussenegger/nvim-dap'
use 'rcarriga/nvim-notify'
use 'AckslD/nvim-neoclip.lua'
use 'SmiteshP/nvim-gps'
-- Git
use 'tpope/vim-fugitive'
use 'rbong/vim-flog'
-- Editing functionality
use 'b3nj5m1n/kommentary'
use 'tpope/vim-obsession'
use 'tpope/vim-surround'
use 'tpope/vim-repeat'
use 'nvim-treesitter/nvim-treesitter-textobjects'
use 'windwp/nvim-autopairs'
-- LSP support
use 'neovim/nvim-lspconfig'
use 'nvim-lua/lsp_extensions.nvim'
use 'kosayoda/nvim-lightbulb'
use 'hrsh7th/nvim-compe'
use 'ray-x/lsp_signature.nvim'
-- Language-specific plugins
use 'simrat39/rust-tools.nvim'
use 'arm9/arm-syntax-vim'
use 'lervag/vimtex'
-- Aesthetic plugins
use 'eddyekofo94/gruvbox-flat.nvim'
use 'sheerun/vim-polyglot'
use { 'nvim-treesitter/nvim-treesitter', branch = '0.5-compat', run = ':TSUpdate' }
use 'nvim-treesitter/playground'
end)
local diff = {
'diff',
color_added = '#98c379',
color_removed = '#e06c65'
}
function filetype_or_lsp()
local servers = vim.lsp.buf_get_clients()
for _, server in ipairs(servers) do
local ok, server_name = pcall(function()
return server.config.name
end)
if ok then
return server_name
end
end
return vim.bo.filetype or ''
end
}
},
textobjects = {
select = {
enable = true,
keymaps = {
-- You can use the capture groups defined in textobjects.scm
["af"] = "@function.outer",
["if"] = "@function.inner",
["ac"] = "@class.outer",
["ic"] = "@class.inner",
-- Or you can define your own textobjects like this
-- ["iF"] = {
-- python = "(function_definition) @function",
-- cpp = "(function_definition) @function",
-- c = "(function_definition) @function",
-- java = "(method_declaration) @function",
-- },
}
},
swap = {
enable = true,
swap_next = {
["<c-.>"] = "@parameter.inner",
},
swap_previous = {
["<c-,>"] = "@parameter.inner",
}
},
move = {
enable = true,
set_jumps = false, -- whether to set jumps in the jumplist
goto_next_start = {
["]]"] = "@function.outer",
["]m"] = "@class.outer",
},
goto_next_end = {
["]["] = "@function.outer",
["]M"] = "@class.outer",
},
goto_previous_start = {
["[["] = "@function.outer",
["[m"] = "@class.outer",
},
goto_previous_end = {
["[]"] = "@function.outer",
["[M"] = "@class.outer",
},
},
},