mirror of
https://github.com/foo-dogsquared/dotfiles.git
synced 2025-01-31 04:57:57 +00:00
0681d1fd7c
It's been a while but I've been using NixOS (or anything styled like it like GuixSD, for example) and distro-hopped from Arch Linux. I think it's high noon for making the structure of this setup to be truer to one of the big objectives which is how easy to transfer this between different setups. Which means I removed some things such as the package lists, systemd config files, and package manager-specific configs. While the solution is easy (which is to simply ignore the system-specific files) but I'm not going with the pragmatic solution not because I'm a dumbass but because I'm so smart that I want to create a challenge for myself to solve a puzzle on figuring out a way on how to structure my dotfiles. :) Such a productive use of my time, that's for sure.
197 lines
5.5 KiB
VimL
Executable File
197 lines
5.5 KiB
VimL
Executable File
"""""""""""
|
|
" PLUGINS "
|
|
"""""""""""
|
|
|
|
" This configuration uses vim-plug (https://github.com/junegunn/vim-plug) as
|
|
" the plugin manager.
|
|
" Activate it with ':PlugInstall' for the first time (and when adding new plugins).
|
|
" And run ':PlugUpgrade' for upgrading the plugins.
|
|
call plug#begin('~/.config/nvim/plugged')
|
|
|
|
" Nord color scheme
|
|
Plug 'arcticicestudio/nord-vim'
|
|
Plug 'gruvbox-community/gruvbox'
|
|
|
|
" Colorize common color strings
|
|
Plug 'lilydjwg/colorizer'
|
|
|
|
" A snippets engine.
|
|
" One of the must-haves for me.
|
|
Plug 'sirver/ultisnips'
|
|
|
|
" Setting my private snippets in a consistent home directory and a relative snippets directory for project-specific snippets.
|
|
let g:UltiSnipsSnippetDirectories = [$HOME . "/.config/nvim/own-snippets", ".snippets"]
|
|
let g:UltiSnipsExpandTrigger="<tab>"
|
|
let g:UltiSnipsJumpForwardTrigger="<tab>"
|
|
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
|
|
let g:UltiSnipsEditSplit="context"
|
|
|
|
" A completion engine.
|
|
" I chose this engine since it is linked from UltiSnips.
|
|
if has('nvim')
|
|
Plug 'Shougo/deoplete.nvim', { 'do': ':UpdateRemotePlugins' }
|
|
else
|
|
Plug 'Shougo/deoplete.nvim'
|
|
Plug 'roxma/nvim-yarp'
|
|
Plug 'roxma/vim-hug-neovim-rpc'
|
|
endif
|
|
let g:deoplete#enable_at_startup = 1
|
|
|
|
" Contains various snippets for UltiSnips.
|
|
Plug 'honza/vim-snippets'
|
|
|
|
" Plugin for auto-saving for each change in the buffer (file).
|
|
Plug '907th/vim-auto-save'
|
|
let g:auto_save = 1
|
|
|
|
" One of the most popular plugins.
|
|
" Allows to create more substantial status bars.
|
|
Plug 'vim-airline/vim-airline'
|
|
let g:airline_powerline_fonts = 1
|
|
|
|
if !exists('g:airline_symbols')
|
|
let g:airline_symbols = {}
|
|
endif
|
|
|
|
" A full LaTeX toolchain plugin for Vim.
|
|
" Also a must-have for me since writing LaTeX can be a PITA.
|
|
" Most of the snippets and workflow is inspired from Gilles Castel's posts (at https://castel.dev/).
|
|
Plug 'lervag/vimtex'
|
|
let g:tex_flavor='latex'
|
|
let g:vimtex_view_method='zathura'
|
|
let g:vimtex_quickfix_mode=0
|
|
set conceallevel=1
|
|
let g:tex_conceal='abdmg'
|
|
let g:vimtex_compiler_latexmk = {
|
|
\ 'options': [
|
|
\ '-bibtex',
|
|
\ '-shell-escape',
|
|
\ '-verbose',
|
|
\ '-file-line-error',
|
|
\ ]
|
|
\}
|
|
|
|
" I use LuaLaTeX for my documents so let me have it as the default, please?
|
|
let g:vimtex_compiler_latexmk_engines = {
|
|
\ '_' : '-lualatex',
|
|
\ 'pdflatex' : '-pdf',
|
|
\ 'dvipdfex' : '-pdfdvi',
|
|
\ 'lualatex' : '-lualatex',
|
|
\ 'xelatex' : '-xelatex',
|
|
\ 'context (pdftex)' : '-pdf -pdflatex=texexec',
|
|
\ 'context (luatex)' : '-pdf -pdflatex=context',
|
|
\ 'context (xetex)' : '-pdf -pdflatex=''texexec --xtx''',
|
|
\}
|
|
|
|
" Enable visuals for addition/deletion of lines in the gutter (side) similar to Visual Studio Code.
|
|
Plug 'airblade/vim-gitgutter'
|
|
|
|
" Plugin for distraction-free writing.
|
|
Plug 'junegunn/goyo.vim'
|
|
|
|
" A Nix plugin.
|
|
Plug 'LnL7/vim-nix'
|
|
call plug#end()
|
|
|
|
|
|
|
|
|
|
"""""""""""""""""""""""""
|
|
" EDITOR CONFIGURATIONS "
|
|
"""""""""""""""""""""""""
|
|
|
|
" Setting the colorscheme
|
|
colorscheme nord
|
|
|
|
" Setting number lines in the gutter.
|
|
set number relativenumber
|
|
highlight CursorLineNr ctermfg=cyan
|
|
|
|
" Setting line highlighting based on the position of the cursor.
|
|
set cursorline
|
|
|
|
" Set tab to enter spaces, instead.
|
|
set expandtab
|
|
|
|
" Set entering tab to 4 spaces.
|
|
set shiftwidth=4 tabstop=4
|
|
|
|
" Set list and other listing characters (:h listchars).
|
|
set list listchars=tab:→\ ,trail:·
|
|
|
|
" Enabling spell checker (for your local language, anyway).
|
|
setlocal spell
|
|
set spelllang=en_us
|
|
inoremap <C-l> <c-g>u<Esc>[s1z=`]a<c-g>u
|
|
|
|
" Quick escape to default mode.
|
|
inoremap jk <Esc>
|
|
|
|
" Instant Goyo toggle.
|
|
map <leader>w :Goyo<Enter>
|
|
|
|
" Trim all trailing whitespaces.
|
|
map <leader>s :%s/\s\+$/<Enter>
|
|
|
|
" File explorer toggle.
|
|
" Turns out vim (and nvim) has a native file explorer with :Explore.
|
|
map <leader>f :Lexplore<Return>:vertical resize 40<Return><C-w><C-w>
|
|
|
|
" Changing style of words.
|
|
highlight clear SpellBad
|
|
|
|
highlight clear SpellLocal
|
|
highlight SpellLocal ctermfg=cyan
|
|
|
|
highlight clear SpellCap
|
|
|
|
highlight clear SpellRare
|
|
|
|
|
|
|
|
|
|
""""""""""
|
|
" EVENTS "
|
|
""""""""""
|
|
|
|
" Show leading spaces.
|
|
" SOURCE: https://www.reddit.com/r/vim/comments/5fxsfy/show_leading_spaces/
|
|
hi Conceal guibg=NONE ctermbg=NONE ctermfg=DarkGrey
|
|
autocmd BufWinEnter * setl conceallevel=1
|
|
autocmd BufWinEnter * syn match LeadingSpace /\(^ *\)\@<= / containedin=ALL conceal cchar=·
|
|
autocmd BufReadPre * setl conceallevel=1
|
|
autocmd BufReadPre * syn match LeadingSpace /\(^ *\)\@<= / containedin=ALL conceal cchar=·
|
|
|
|
" The template list is simply an array composed of vector that represents the
|
|
" prefix and the suffix of the template file name.
|
|
let template_list = [
|
|
\ ["_minted-", ""],
|
|
\ ["", ".synctex"],
|
|
\]
|
|
|
|
" Additional LaTeX files cleanup.
|
|
function VimtexAdditionalCleanup(template_list)
|
|
call vimtex#compiler#clean(1)
|
|
let file_name = expand("%:t:r")
|
|
let file_path = expand("%:p:h") . "/"
|
|
for template in a:template_list
|
|
let prefix = template[0]
|
|
let suffix = template[1]
|
|
let full_template_path = file_path . prefix . file_name . suffix
|
|
call delete(full_template_path, "rf")
|
|
endfor
|
|
endfunction
|
|
|
|
" Initiate LaTeX file compilation at the start and auto clean up.
|
|
augroup vimtex_events
|
|
au!
|
|
" auto-clean
|
|
au User QuitPre call VimtexAdditionalCleanup(template_list)
|
|
au User VimLeave call VimtexAdditionalCleanup(template_list)
|
|
au User VimtexEventQuit call vimtex#compiler#clean(1)
|
|
au User VimtexEventQuit call VimtexAdditionalCleanup(template_list)
|
|
|
|
" Auto-compile
|
|
au User VimtexEventInitPost call vimtex#compiler#compile()
|
|
augroup END
|