dotties/.vimrc

292 lines
10 KiB
VimL
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

" Enable spell checking for markdown files, Git descriptions/commit
" messages, plain text files (.txt), and reStructuredText.
"au BufRead *.c setlocal spell
"setlocal spell spelllang=en_us
au BufRead,BufNewFile *.h setlocal spell
au BufRead,BufNewFile *.md setlocal spell
au BufRead,BufNewFile *.MD setlocal spell
au BufRead,BufNewFile *.txt setlocal spell
au BufRead,BufNewFile *.tex setlocal spell
au BufRead,BufNewFile *.rst setlocal spell
au BufRead,BufNewFile *.RST setlocal spell
au BufRead,BufNewFile description setlocal spell
au BufRead,BufNewFile *MSG setlocal spell
au BufRead,BufNewFile COMMIT* setlocal spell
au BufRead,BufNewFile *.markdown setlocal spell
function! MacPorty()
set fileencoding=utf-8
" set ft=portfile
set filetype=tcl
set shiftwidth=4
set tabstop=4
set softtabstop=4
endfunction
au BufRead,BufNewFile *Portfile call MacPorty()
" Vundle reqs
set nocompatible
filetype off
" Enable Vundle
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" Vundle manages Vundle
Plugin 'VundleVim/Vundle.vim'
" Rainbow Parenthesis!
Plugin 'kien/rainbow_parentheses.vim'
" System-wide ctags
Plugin 'ntnn/vim-ctagser'
" Rust
Plugin 'rust-lang/rust.vim'
" Vim LSP/Async auto-complete
Plugin 'prabirshrestha/vim-lsp'
Plugin 'prabirshrestha/asyncomplete.vim'
Plugin 'prabirshrestha/asyncomplete-lsp.vim'
" My Librecode helpers
Plugin 'targetdisk/minitator'
au BufRead,BufNewFile *.annotated.head.json call minitator#macros()
call vundle#end()
"""""""""""""""""""""""""""""""
" Async Auto-complete Stuff "
"""""""""""""""""""""""""""""""
inoremap <expr> <Tab> pumvisible() ? "\<C-n>" : "\<Tab>"
noremap <expr> <S-Tab> pumvisible() ? "\<C-p>" : "\<S-Tab>"
inoremap <expr> <cr> pumvisible() ? asyncomplete#close_popup() : "\<cr>"
""""""""""""""""""""""""""""""""""""""""""""""""
" LSP Stuff "
""""""""""""""""""""""""""""""""""""""""""""""""
" Golang
if executable('gopls')
au User lsp_setup call lsp#register_server({
\ 'name': 'gopls',
\ 'cmd': {server_info->['gopls', '-remote=auto']},
\ 'allowlist': ['go', 'gomod', 'gohtmltmpl', 'gotexttmpl'],
\ })
autocmd BufWritePre *.go
\ call execute('LspDocumentFormatSync') |
\ call execute('LspCodeActionSync source.organizeImports')
endif
" Haskell
if executable('haskell-language-server-wrapper')
au User lsp_setup call lsp#register_server({
\ 'name': 'haskell-language-server-wrapper',
\ 'cmd': {server_info->['haskell-language-server-wrapper', '--lsp']},
\ 'root_uri':{server_info->lsp#utils#path_to_uri(
\ lsp#utils#find_nearest_parent_file_directory(
\ lsp#utils#get_buffer_path(),
\ ['.cabal', 'stack.yaml', 'cabal.project', 'package.yaml', 'hie.yaml', '.git'],
\ ))},
\ 'whitelist': ['haskell', 'lhaskell'],
\ })
endif
" Python
if executable('pylsp')
au User lsp_setup call lsp#register_server({
\ 'name': 'pylsp',
\ 'cmd': {server_info->['pylsp']},
\ 'allowlist': ['python'],
\ })
endif
" Perl
if executable('pls')
au User lsp_setup call lsp#register_server({
\ 'name': 'pls',
\ 'cmd': {server_info->['pls']},
\ 'allowlist': ['perl'],
\ })
endif
" Bash
if executable('bash-language-server')
au User lsp_setup call lsp#register_server({
\ 'name': 'bash-language-server',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'bash-language-server start']},
\ 'allowlist': ['sh', 'bash'],
\ })
endif
" Vimscript
if executable('vimscript-language-server')
augroup LspVim
autocmd!
autocmd User lsp_setup call lsp#register_server({
\ 'name': 'vimscript-language-server',
\ 'cmd': {server_info->['vimscript-language-server']},
\ 'allowlist': ['vim'],
\ 'initialization_options': {
\ 'vimruntime': $VIMRUNTIME,
\ 'runtimepath': &rtp,
\ }})
augroup END
endif
" C/C++/Objective-C/Objective-C++
if executable('clangd')
au User lsp_setup call lsp#register_server({
\ 'name': 'clangd',
\ 'cmd': {server_info->['clangd']},
\ 'allowlist': ['c', 'cpp', 'objc', 'objcpp'],
\ })
elseif executable('ccls')
au User lsp_setup call lsp#register_server({
\ 'name': 'ccls',
\ 'cmd': {server_info->['ccls']},
\ 'root_uri': {server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'compile_commands.json'))},
\ 'initialization_options': {},
\ 'whitelist': ['c', 'cpp', 'objc', 'objcpp', 'cc'],
\ })
endif
" Rust
if executable('rust-analyzer')
au User lsp_setup call lsp#register_server({
\ 'name': 'rust-analyzer',
\ 'cmd': {server_info->['rust-analyzer']},
\ 'allowlist': ['rust'],
\ })
endif
" TypeScript and ECMAScript
if executable('typescript-language-server')
au User lsp_setup call lsp#register_server({
\ 'name': 'typescript-language-server',
\ 'cmd': {server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']},
\ 'root_uri':{server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_file_directory(lsp#utils#get_buffer_path(), 'tsconfig.json'))},
\ 'whitelist': ['typescript', 'typescript.tsx', 'typescriptreact'],
\ })
au User lsp_setup call lsp#register_server({
\ 'name': 'javascript support using typescript-language-server',
\ 'cmd': { server_info->[&shell, &shellcmdflag, 'typescript-language-server --stdio']},
\ 'root_uri': { server_info->lsp#utils#path_to_uri(lsp#utils#find_nearest_parent_directory(lsp#utils#get_buffer_path(), '.git/..'))},
\ 'whitelist': ['javascript', 'javascript.jsx', 'javascriptreact']
\ })
endif
" LSP config
function! s:on_lsp_buffer_enabled() abort
setlocal omnifunc=lsp#complete
setlocal signcolumn=yes
if exists('+tagfunc') | setlocal tagfunc=lsp#tagfunc | endif
nmap <buffer> gd <plug>(lsp-definition)
nmap <buffer> gs <plug>(lsp-document-symbol-search)
nmap <buffer> gS <plug>(lsp-workspace-symbol-search)
nmap <buffer> gr <plug>(lsp-references)
nmap <buffer> gi <plug>(lsp-implementation)
nmap <buffer> gt <plug>(lsp-type-definition)
nmap <buffer> <leader>rn <plug>(lsp-rename)
nmap <buffer> [g <plug>(lsp-previous-diagnostic)
nmap <buffer> ]g <plug>(lsp-next-diagnostic)
nmap <buffer> K <plug>(lsp-hover)
"nnoremap <buffer> <expr><c-f> lsp#scroll(+4)
"nnoremap <buffer> <expr><c-d> lsp#scroll(-4)
let g:lsp_format_sync_timeout = 1000
autocmd! BufWritePre *.rs,*.go call execute('LspDocumentFormatSync')
" refer to doc to add more commands
endfunction
augroup lsp_install
au!
" call s:on_lsp_buffer_enabled on languages with a registered server.
autocmd User lsp_buffer_enabled call s:on_lsp_buffer_enabled()
augroup END
""""""""""""""""""""""""""""""""""""""""""""""""
" Trailing whitespace and tab hilighting
set list
set listchars=trail:▓,tab:\:.
""""""""""""""""
" LaTeX macros "
""""""""""""""""
function! TexMacros()
let @c = 'o\begin{<7B>kb{multicols}{2}
\end{multicols}k'
let @d = 'o\begin{description}
\end{description}kkj'
let @e = 'o\gbe<EFBFBD>kb<EFBFBD>kb<EFBFBD>kbbegin <20>kb{enumerate}
\end{enumerate}k'
let @f = 'a\frac{'
let @i = 'o\item <20>kb'
let @m = 'i\documentclass{book}
\usepackage[sortcites=true,sorting=nyt,backend=biber]{biblatex}
\usepackage[normalem]{ulem}
\usepackage[many]{tcolorbox}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
%\pgfplotsset{compat=1.11}
\usepackage{multicol}
\usepackage{textcomp}
\usepackage{amsmath}
\usepackage{enumitem}
\usepackage{dingbat}
\usepackage{caption}
\usepackage{framed}
\usepackage{graphicx}
\usepackage{setspace}
%\usepackage{xintexpr}
\usepackage{multirow}
\usepackage{dcolumn}
\usepackage{xcolor,cancel}
\newcommand\hcancel[2][black]{\setbox0=\hbox{$#2$}%
\rlap{\raisebox{.45\ht0}{\textcolor{#1}{\rule{\wd0}{1pt}}}}#2}
%\usepackage[table,cancel]{xcolor}
%\definecolor{lightgray}{gray}{0.9}
\title{Math 105 Homework}
\author{targetdisk}
\addbibresource{105.bib}
\begin{document}
\newcolumntype{2}{D{.}{}{2.0}}
\maketitle
\tableofcontents
\printbibliography <20>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kbliography
\end{document}<1B><>akkkkkkkkkkkkkkkkjjjjjjjjkjjjjkjjj^'
let @p = 'o\begin{itemize}
\end{itemize}k'
let @s = 'a\sqrt{'
let @y = 'o[<5B>kb\[
\renewcommand\arraystretch{1.5}
\setlength\doubleruleseo<EFBFBD>kbp{0pt}
\begin{array}{rrrrrr}
\multicolumn{1}{r|}
{6} & <20>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kbdiv} & <20>kb<EFBFBD>kb<EFBFBD>kb <20>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb & & & & &<26>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb<EFBFBD>kb \\\cline{2-6}
<20>kb& & & & & \\\l<EFBFBD>kbcline{2-6}
& & & & &
\end{array}
\]kkkkwwwwwbbhhllllllhlhlhr[r{lllr}jkhhhhhhhhlhl'
endfunction
augroup latex
autocmd!
autocmd BufNewFile,BufRead *.tex call TexMacros()
augroup END
" For new LaTeX files
function! TexTabs()
set expandtab tabstop=4 shiftwidth=4
endfunction
""""""""""""""""
" For two-space indenting
function! TwoTabs()
set expandtab tabstop=2 shiftwidth=2
endfunction
syntax on
set ruler
set number
"set autoindent
set cursorline
" I use dark mode on all platforms except for Macintosh.
if has('macunix') || has('mac')
set background=light
else
set background=dark
endif
" For login terminals on Macs
set shell=bash\ -l
" Filetype auto-indent
if has("autocmd")
filetype on
filetype plugin indent on
endif
function! Terminal()
execute 'ter'
endfunction
function! VertTerminal()
execute 'vert ter'
endfunction
" Super special mappings
map <F1> :call Terminal()<cr>
map <S-F1> :call VertTerminal()<cr>
map <F2> :!git grep -n '<cword>' $(git rev-parse --show-toplevel)<cr>
map <F3> :!git blame %<cr>
map <F5> :w!<cr>:!xelatex %<cr>
map <F9> :w!<cr>:!md-previewer %<cr>
map <F12> :mksession!<cr>
" Rainbow Parenthesis settings
au VimEnter * RainbowParenthesesToggle
au Syntax * RainbowParenthesesLoadRound
au Syntax * RainbowParenthesesLoadSquare
au Syntax * RainbowParenthesesLoadBraces
" Read my lips: NO MOUSE
autocmd BufEnter * set mouse=