2020-01-23 15:11:18 +01:00
|
|
|
" set shell=/bin/sh
|
|
|
|
|
2020-03-14 04:14:18 +01:00
|
|
|
set termguicolors
|
|
|
|
|
2020-01-23 13:18:11 +01:00
|
|
|
colorscheme gruvbox
|
|
|
|
let g:gruvbox_number_column = 'bg1'
|
|
|
|
|
2020-08-26 10:35:04 +02:00
|
|
|
function! s:gitModified()
|
|
|
|
let files = systemlist('git ls-files -m 2>/dev/null')
|
|
|
|
return map(files, "{'line': v:val, 'path': v:val}")
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
function! s:gitUntracked()
|
|
|
|
let files = systemlist('git ls-files -o --exclude-standard 2>/dev/null')
|
|
|
|
return map(files, "{'line': v:val, 'path': v:val}")
|
|
|
|
endfunction
|
|
|
|
|
2020-06-18 16:20:02 +02:00
|
|
|
function! s:list_projects() abort
|
2020-08-25 22:09:39 +02:00
|
|
|
return map(['/etc/nixos/'] + finddir('.git', $HOME . '/dev/**4', -1),
|
2020-06-18 16:20:02 +02:00
|
|
|
\ {_, dir -> {
|
|
|
|
\ 'line': fnamemodify(dir, ':h:s?' . $HOME . '??'),
|
|
|
|
\ 'path': fnamemodify(dir, ':h')}})
|
|
|
|
endfunction
|
|
|
|
|
2020-08-26 10:35:04 +02:00
|
|
|
let g:startify_commands = [
|
|
|
|
\ {'h': ['Vim Help', 'help']},
|
|
|
|
\ {'r': ['Vim Reference', 'help reference']},
|
|
|
|
\ ]
|
|
|
|
|
2020-06-18 16:20:02 +02:00
|
|
|
let g:startify_lists = [
|
2020-08-26 10:35:04 +02:00
|
|
|
\ { 'header': [' Sessions'], 'type': 'sessions' },
|
|
|
|
\ { 'header': [' git modified'], 'type': function('s:gitModified') },
|
|
|
|
\ { 'header': [' git untracked'], 'type': function('s:gitUntracked') },
|
|
|
|
\ { 'header': [' Projects'], 'type': function('s:list_projects') },
|
|
|
|
\ { 'header': [' Recent files'], 'type': 'files' },
|
|
|
|
\ { 'header': [' Commands'], 'type': 'commands' },
|
2020-01-23 13:18:11 +01:00
|
|
|
\ ]
|
|
|
|
|
|
|
|
let mapleader=" "
|
2020-06-18 16:21:10 +02:00
|
|
|
let maplocalleader=","
|
2020-01-23 13:18:11 +01:00
|
|
|
let g:camelcasemotion_key = '<leader>'
|
|
|
|
|
2020-08-27 14:20:58 +02:00
|
|
|
function! LspStatus() abort
|
|
|
|
let has_client = luaeval('not vim.tbl_isempty(vim.lsp.buf_get_clients(0))')
|
|
|
|
return has_client ? 'LSP' : ''
|
|
|
|
endfunction
|
|
|
|
|
2020-01-23 15:10:47 +01:00
|
|
|
let g:lightline = {
|
|
|
|
\ 'colorscheme': 'powerline',
|
|
|
|
\ 'active': {
|
|
|
|
\ 'left': [ [ 'mode', 'paste' ],
|
2020-08-27 14:20:58 +02:00
|
|
|
\ [ 'lspstatus', 'readonly', 'filename', 'modified' ] ]
|
2020-01-23 15:10:47 +01:00
|
|
|
\ },
|
|
|
|
\ 'component_function': {
|
2020-08-27 14:20:58 +02:00
|
|
|
\ 'lspstatus': 'LspStatus'
|
2020-01-23 15:10:47 +01:00
|
|
|
\ },
|
|
|
|
\ }
|
|
|
|
|
2020-01-23 13:18:11 +01:00
|
|
|
set relativenumber
|
2020-01-23 15:11:18 +01:00
|
|
|
set splitbelow
|
2020-01-23 13:18:11 +01:00
|
|
|
|
|
|
|
map ; :Files<CR>
|
2020-08-14 23:50:36 +02:00
|
|
|
nmap <C-p> :NERDTreeToggle<CR>
|
|
|
|
" nmap <silent> <C-p> :Lexplore<CR>
|
2020-01-23 13:18:11 +01:00
|
|
|
map <Leader> <Plug>(easymotion-prefix)
|
2020-01-23 15:11:18 +01:00
|
|
|
|
2020-06-18 16:21:39 +02:00
|
|
|
let g:netrw_banner = 0
|
|
|
|
let g:netrw_liststyle = 3
|
|
|
|
let g:netrw_browse_split = 4
|
|
|
|
let g:netrw_altv = 1
|
|
|
|
let g:netrw_winsize = 20
|
|
|
|
|
2020-01-23 15:11:18 +01:00
|
|
|
" Terminal Function
|
|
|
|
let g:term_buf = 0
|
|
|
|
let g:term_win = 0
|
|
|
|
function! TermToggle(height)
|
|
|
|
if win_gotoid(g:term_win)
|
|
|
|
hide
|
|
|
|
else
|
|
|
|
botright new
|
|
|
|
exec "resize " . a:height
|
|
|
|
try
|
|
|
|
exec "buffer " . g:term_buf
|
|
|
|
catch
|
|
|
|
call termopen($SHELL, {"detach": 0})
|
|
|
|
let g:term_buf = bufnr("")
|
|
|
|
set nonumber
|
|
|
|
set norelativenumber
|
|
|
|
set signcolumn=no
|
|
|
|
endtry
|
|
|
|
startinsert!
|
|
|
|
let g:term_win = win_getid()
|
|
|
|
endif
|
|
|
|
endfunction
|
|
|
|
|
|
|
|
" Toggle terminal on/off (neovim)
|
|
|
|
nnoremap <A-t> :call TermToggle(12)<CR>
|
|
|
|
inoremap <A-t> <Esc>:call TermToggle(12)<CR>
|
|
|
|
tnoremap <A-t> <C-\><C-n>:call TermToggle(12)<CR>
|
|
|
|
|
|
|
|
" Terminal go back to normal mode
|
|
|
|
tnoremap :q! <C-\><C-n>:q!<CR>
|