2018-09-19 16:46:12 +02:00
|
|
|
|
{ pkgs, config, ... }:
|
|
|
|
|
|
with import ../helpers.nix;
|
|
|
|
|
|
let vim_conf = ''
|
2018-09-13 22:48:38 +02:00
|
|
|
|
" if tabular
|
|
|
|
|
|
vmap a= :Tabularize /=<CR>
|
|
|
|
|
|
vmap a; :Tabularize /::<CR>
|
|
|
|
|
|
vmap a- :Tabularize /-><CR>
|
|
|
|
|
|
|
|
|
|
|
|
colorscheme delek
|
|
|
|
|
|
|
|
|
|
|
|
filetype plugin indent on
|
2018-12-30 14:34:39 +01:00
|
|
|
|
set title
|
2018-09-13 22:48:38 +02:00
|
|
|
|
set nocompatible
|
|
|
|
|
|
set smartcase
|
|
|
|
|
|
set shiftwidth=2 tabstop=2 expandtab
|
|
|
|
|
|
set number
|
|
|
|
|
|
set path=$PWD/**
|
|
|
|
|
|
set completeopt=menu,longest
|
2018-11-15 21:10:07 +01:00
|
|
|
|
set wildmode=list:full wildignore+=${commaSep config.constants.ignore}
|
2018-09-13 22:48:38 +02:00
|
|
|
|
set shortmess+=aI
|
|
|
|
|
|
set nowritebackup noswapfile
|
|
|
|
|
|
set mouse=a
|
|
|
|
|
|
set showmatch
|
2018-09-17 16:51:00 +02:00
|
|
|
|
set encoding=utf8 ffs=unix,dos,mac
|
2018-09-13 22:48:38 +02:00
|
|
|
|
set smartindent
|
|
|
|
|
|
set nowrap
|
|
|
|
|
|
set nohlsearch
|
|
|
|
|
|
set clipboard=unnamedplus,autoselect
|
|
|
|
|
|
set nopaste
|
2018-09-17 16:51:00 +02:00
|
|
|
|
set list listchars=tab:▸\ ,extends:❯,precedes:❮,nbsp:⍽,trail:· showbreak=↪
|
2018-09-13 22:48:38 +02:00
|
|
|
|
set foldlevelstart=30
|
|
|
|
|
|
|
|
|
|
|
|
if exists("g:loaded_netrwPlugin")
|
|
|
|
|
|
let g:netrw_banner=0
|
|
|
|
|
|
let g:netrw_browse_split=4
|
|
|
|
|
|
let g:netrw_altv=1 " open splits to the right
|
|
|
|
|
|
let g:netrw_liststyle=3 " tree view
|
|
|
|
|
|
let g:netrw_list_hide=netrw_gitignore#Hide()
|
|
|
|
|
|
let g:netrw_list_hide.=',\(^\|\s\s\)\zs\.\S\+'
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
call matchadd('colorcolumn', '\%101v', 100)
|
|
|
|
|
|
highlight folded ctermbg=black
|
|
|
|
|
|
highlight colorcolumn ctermbg=red
|
2018-09-17 16:51:00 +02:00
|
|
|
|
highlight matchparen cterm=bold
|
2018-09-13 22:48:38 +02:00
|
|
|
|
|
|
|
|
|
|
" undofile - This allows you to use undos after exiting and restarting
|
|
|
|
|
|
" This, like swap and backups, uses .vim-undo first, then ~/.vim/undo
|
|
|
|
|
|
" :help undo-persistence
|
|
|
|
|
|
if exists("+undofile")
|
|
|
|
|
|
if isdirectory($HOME . '/.vim/undo') == 0
|
|
|
|
|
|
:silent !mkdir -p ~/.vim/undo > /dev/null 2>&1
|
|
|
|
|
|
endif
|
|
|
|
|
|
set undodir=./.vim-undo//
|
|
|
|
|
|
set undodir+=~/.vim/undo//
|
|
|
|
|
|
set undofile
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
nmap <C-j> ddp | vmap <C-j> xp`[V`]
|
|
|
|
|
|
nmap <C-k> ddkP | vmap <C-k> xkP`[V`]
|
|
|
|
|
|
|
|
|
|
|
|
nnoremap <silent> <Space> @=(foldlevel('.')?'za':"\<Space>")<CR>
|
|
|
|
|
|
vnoremap <Space> zf
|
|
|
|
|
|
|
|
|
|
|
|
command! RandomLine execute 'normal! '.(system('/bin/bash -c "echo -n $RANDOM"') % line('$')).'G'
|
|
|
|
|
|
|
|
|
|
|
|
function! <SID>StripTrailingWhitespaces()
|
|
|
|
|
|
let _s=@/
|
|
|
|
|
|
let l=line(".")
|
|
|
|
|
|
let c=col(".")
|
|
|
|
|
|
|
|
|
|
|
|
%s/\s\+$//e
|
|
|
|
|
|
|
|
|
|
|
|
let @/=_s
|
|
|
|
|
|
call cursor(l,c)
|
|
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
|
|
|
|
function! s:DiffWithSaved()
|
|
|
|
|
|
let filetype=&ft
|
|
|
|
|
|
diffthis
|
|
|
|
|
|
vnew | r # | normal! 1Gdd
|
|
|
|
|
|
diffthis
|
|
|
|
|
|
execute "setlocal bt=nofile bh=wipe nobl noswf ro ft=" . filetype
|
|
|
|
|
|
endfunction
|
|
|
|
|
|
command! DiffSaved call s:DiffWithSaved()
|
|
|
|
|
|
|
|
|
|
|
|
if has("autocmd")
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd bufnewfile,bufread *.4th set filetype=forth
|
2018-09-13 22:48:38 +02:00
|
|
|
|
autocmd bufnewfile,bufread *.asm set filetype=nasm
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd bufnewfile,bufread *.c set keywordprg=man\ 3
|
|
|
|
|
|
autocmd bufnewfile,bufread *.conf set filetype=conf
|
|
|
|
|
|
autocmd bufnewfile,bufread *.do set filetype=sh
|
|
|
|
|
|
autocmd bufnewfile,bufread *.fs :packadd vim-fsharp | set filetype=fsharp
|
|
|
|
|
|
autocmd bufnewfile,bufread *.h set keywordprg=man\ 3
|
2018-11-15 21:10:07 +01:00
|
|
|
|
autocmd bufnewfile,bufread *.md set filetype=markdown.pandoc | set nospell
|
2018-09-13 22:48:38 +02:00
|
|
|
|
autocmd bufnewfile,bufread *.nix :packadd vim-nix
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd bufnewfile,bufread *.rust :packadd rust-vim deoplete-rust
|
|
|
|
|
|
autocmd bufnewfile,bufread *.tex :packadd vimtex | set filetype=tex
|
2018-09-13 22:48:38 +02:00
|
|
|
|
autocmd bufnewfile,bufread *.ts :packadd vim-typescript
|
2018-10-31 00:48:32 +01:00
|
|
|
|
autocmd bufnewfile,bufread *.graphql :packadd vim-graphql
|
2018-09-13 22:48:38 +02:00
|
|
|
|
autocmd bufnewfile,bufread config set filetype=conf
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd filetype haskell :packadd Hoogle
|
|
|
|
|
|
autocmd filetype haskell set formatprg=hindent
|
2018-10-31 00:48:32 +01:00
|
|
|
|
autocmd filetype python set formatprg=black
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd filetype javascript *.js :packadd vim-javascript
|
2018-09-13 22:48:38 +02:00
|
|
|
|
autocmd filetype make setlocal noexpandtab
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd filetype markdown,text set formatoptions+=t
|
|
|
|
|
|
autocmd filetype markdown,text set formatprg=par\ -w80
|
|
|
|
|
|
autocmd filetype markdown,text set textwidth=80
|
2018-09-13 22:48:38 +02:00
|
|
|
|
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd bufreadpost *
|
|
|
|
|
|
\ if line("'\"") > 0 && line("'\"") <= line("$") |
|
|
|
|
|
|
\ exe "normal! g`\"" |
|
|
|
|
|
|
\ endif
|
2018-09-13 22:48:38 +02:00
|
|
|
|
autocmd bufreadpre * setlocal foldmethod=indent
|
2018-09-17 16:51:00 +02:00
|
|
|
|
autocmd bufwritepre * :call <SID>StripTrailingWhitespaces()
|
2018-09-13 22:48:38 +02:00
|
|
|
|
autocmd bufwinenter * if &fdm == 'indent' | setlocal foldmethod=manual | endif
|
|
|
|
|
|
endif
|
2018-09-17 16:51:00 +02:00
|
|
|
|
|
|
|
|
|
|
"if exists("g:loaded_airline")
|
|
|
|
|
|
set noshowmode laststatus=0 noruler
|
|
|
|
|
|
let g:airline#extensions#tabline#close_symbol = 'X'
|
|
|
|
|
|
let g:airline#extensions#tabline#enabled = 0
|
2018-12-30 14:34:39 +01:00
|
|
|
|
"let g:airline#extensions#tabline#left_alt_sep = ''
|
|
|
|
|
|
"let g:airline#extensions#tabline#left_sep = ''
|
|
|
|
|
|
"let g:airline#extensions#tabline#right_alt_sep = ''
|
|
|
|
|
|
"let g:airline#extensions#tabline#right_sep = ''
|
2018-09-17 16:51:00 +02:00
|
|
|
|
let g:airline#extensions#tabline#show_close_button = 1
|
|
|
|
|
|
let g:airline#extensions#tabline#show_tab_type = 0
|
|
|
|
|
|
let g:airline#extensions#tabline#tab_min_count = 2
|
|
|
|
|
|
let g:airline#extensions#tabline#tab_nr_type = 0
|
|
|
|
|
|
let g:airline#extensions#tmuxline#enabled = 0
|
2018-12-30 14:34:39 +01:00
|
|
|
|
"let g:airline#extensions#wordcount#enabled = 1
|
|
|
|
|
|
"let g:airline_left_alt_sep = ''
|
|
|
|
|
|
"let g:airline_left_sep = ''
|
|
|
|
|
|
"let g:airline_right_alt_sep = ''
|
|
|
|
|
|
"let g:airline_right_sep = ''
|
2018-09-17 16:51:00 +02:00
|
|
|
|
let g:airline_section_z = '%{line(".")}/%{line("$")} %{col(".")}'
|
|
|
|
|
|
"endif
|
|
|
|
|
|
"if exists("g:loaded_airline_themes")
|
2018-12-30 14:34:39 +01:00
|
|
|
|
let g:airline_theme='base16'
|
2018-09-17 16:51:00 +02:00
|
|
|
|
"endif
|
|
|
|
|
|
'';
|
|
|
|
|
|
in {
|
|
|
|
|
|
environment.variables.EDITOR = pkgs.lib.mkForce "vim";
|
|
|
|
|
|
environment.shellAliases.vi = "vim";
|
|
|
|
|
|
environment.shellAliases.view = "vim -R";
|
|
|
|
|
|
|
|
|
|
|
|
programs.nano.nanorc = ''
|
|
|
|
|
|
set autoindent
|
|
|
|
|
|
set boldtext
|
|
|
|
|
|
set morespace
|
|
|
|
|
|
set smarthome
|
|
|
|
|
|
set tabsize 4
|
|
|
|
|
|
set tabstospaces
|
|
|
|
|
|
'';
|
|
|
|
|
|
|
|
|
|
|
|
environment.systemPackages = [(
|
|
|
|
|
|
with import <nixpkgs> {};
|
|
|
|
|
|
pkgs.vim_configurable.customize {
|
|
|
|
|
|
name = "vim";
|
|
|
|
|
|
vimrcConfig.customRC = vim_conf;
|
|
|
|
|
|
vimrcConfig.packages.vim = with pkgs.vimPlugins; {
|
|
|
|
|
|
start = [
|
|
|
|
|
|
ctrlp
|
|
|
|
|
|
deoplete-nvim
|
|
|
|
|
|
supertab
|
|
|
|
|
|
syntastic
|
|
|
|
|
|
tabular
|
|
|
|
|
|
vim-airline vim-airline-themes
|
|
|
|
|
|
vim-commentary
|
|
|
|
|
|
vim-eunuch
|
|
|
|
|
|
vim-fugitive
|
|
|
|
|
|
vim-gitgutter
|
|
|
|
|
|
vim-pandoc vim-pandoc-after vim-pandoc-syntax
|
|
|
|
|
|
vim-repeat
|
|
|
|
|
|
vim-sensible
|
|
|
|
|
|
vim-startify
|
|
|
|
|
|
vim-surround
|
|
|
|
|
|
];
|
|
|
|
|
|
opt = [
|
|
|
|
|
|
Hoogle
|
|
|
|
|
|
deoplete-rust
|
|
|
|
|
|
idris-vim
|
|
|
|
|
|
vimtex
|
|
|
|
|
|
rust-vim
|
|
|
|
|
|
typescript-vim
|
|
|
|
|
|
vim-javascript
|
|
|
|
|
|
vim-nix
|
2018-10-10 13:02:40 +02:00
|
|
|
|
(vimUtils.buildVimPluginFrom2Nix {
|
|
|
|
|
|
name = "vim-graphql-2018-09-29";
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
|
|
owner = "jparise";
|
|
|
|
|
|
repo = "vim-graphql";
|
|
|
|
|
|
rev = "6a15d21b74bbb3d7ee30b5575ef5c4171fe999ba";
|
|
|
|
|
|
sha256 = "03l5yj77cgpvq16d59g6mrgacs9rps0ppbaipj5klbp7bi6n02gi";
|
|
|
|
|
|
};
|
|
|
|
|
|
})
|
2018-09-17 16:51:00 +02:00
|
|
|
|
(vimUtils.buildVimPluginFrom2Nix {
|
|
|
|
|
|
name = "vim-fsharp-2018-04-19";
|
|
|
|
|
|
src = fetchFromGitHub {
|
|
|
|
|
|
owner = "fsharp";
|
|
|
|
|
|
repo = "vim-fsharp";
|
|
|
|
|
|
rev = "627db7d701747e8fd7924b6505c61e16a369fb72";
|
|
|
|
|
|
sha256 = "00hhgn2p54faysx1ddccyhl9jnvddgxsczhv0np3mgzza6ls4838";
|
|
|
|
|
|
};
|
|
|
|
|
|
})
|
|
|
|
|
|
];
|
|
|
|
|
|
};
|
|
|
|
|
|
}
|
|
|
|
|
|
)];
|
2018-09-13 22:48:38 +02:00
|
|
|
|
}
|