+function! GetFoldExprFromIndent()
+ " Calcule l'indentation en fonction des tabulations
+ " et espaces au début des lignes
+ let line = getline(v:lnum)
+ let tabs = strlen(matchstr(line,"^\t*"))
+ let spaces = strlen(matchstr(line,"^[ \t]*")) - tabs
+ return tabs + ((spaces + 3) / 4)
+ endfunction
+hi FoldColumn ctermfg=black ctermbg=none cterm=bold
+hi Folded ctermfg=black ctermbg=none cterm=bold
+hi LineNr ctermfg=black ctermbg=none cterm=bold
+hi Pmenu cterm=none ctermfg=white ctermbg=blue guibg=blue
+hi PmenuSel cterm=bold ctermfg=white ctermbg=red guibg=red
+hi Search ctermbg=yellow
+hi SpecialKey ctermfg=black cterm=bold
+hi StatusLine term=bold,reverse ctermfg=grey ctermbg=blue cterm=none
+hi StatusLineNC term=reverse ctermfg=blue ctermbg=none cterm=underline
+hi Visual guibg=yellow
+nmap <silent> * :set hls<CR>:let @/="\\<<C-r><C-w>\\>"<CR>/<BS>
+nmap <silent> µ :set hls<CR>:let @/="<C-r><C-w>"<CR>/<BS>
+nnoremap i <Up>
+nnoremap k <Down>
+nnoremap j <Left>
+nnoremap l <Right>
+xnoremap i <Up>
+xnoremap k <Down>
+xnoremap j <Left>
+xnoremap l <Right>
+nnoremap K J
+nnoremap J <Home>w
+nnoremap L <End>
+set autochdir
+set cmdheight=1
+set completeopt=longest,menu
+set directory=$HOME/var/cache/vim/swap
+set encoding=utf-8
+set foldcolumn=0
+set foldenable
+set foldexpr=GetFoldExprFromIndent()
+set foldmethod=expr
+set foldminlines=0
+set history=2048
+set hlsearch
+set incsearch
+set laststatus=2
+set lazyredraw
+set list
+set path=.,/usr/include,/usr/local/include,,
+set scroll=0
+set scrolloff=0
+set sidescroll=0
+set sidescrolloff=0
+set swapfile
+set matchpairs+=<:>
+set maxmempattern=2000
+set nocompatible
+set noerrorbells
+set noignorecase
+set loadplugins
+set nowrap
+set nowrapscan
+set number
+set ruler
+set runtimepath=$HOME/.vim,$VIMRUNTIME,$VIM
+set sessionoptions=curdir,folds
+set shiftwidth=2
+set showcmd
+set smartindent
+set statusline=%F%=\ %m%R\ %l:%c\ x%02B\ %Y\ %{&encoding}
+set tabstop=2
+set ttyfast
+set undolevels=512
+set updatetime=4096
+set verbose=0
+set viewdir=$HOME/var/lib/vim/view
+set viminfo+=n$HOME/var/cache/vim/info
+set novisualbell
+set visualbell t_vb=
+set whichwrap+=<,>,[,]
+set wildignore=*.a,*.d,*.o,*.so,*~,*.cmo,*.cmi,*.cmx,*.cmxs,*.cma,*.cmxa,*.byte,*.native
+set wildmenu
+set wildmode=longest,list,full
+syntax on
+if (&term == "linux")
+ set foldtext=substitute(getline(v\:foldstart),'\\t','\|_','g').'\ \ ('.(v\:foldend-v\:foldstart+1).')\ '
+ set fillchars=fold:_
+ set list listchars=nbsp:+,tab:\|_,trail:_,extends:>,precedes:<
+ else
+ set foldtext=substitute(getline(v\:foldstart),'\\t','⎢·','g').'\ \ ('.(v\:foldend-v\:foldstart+1).')\ '
+ set fillchars=fold:·
+ set list listchars=nbsp:¬,tab:⎢·,trail:·,extends:>,precedes:<
+ endif
+if (v:version >= 700)
+ hi TabLine term=bold,reverse ctermfg=white ctermbg=blue cterm=none
+ hi TabLineFill term=bold,reverse ctermfg=none ctermbg=blue cterm=none
+ hi TabLineSel term=reverse ctermfg=white ctermbg=none cterm=bold
+ inoremap <C-S-tab> <Esc>:tabprevious<CR>i
+ inoremap <C-t> <Esc>:tabnew<CR>
+ inoremap <C-tab> <Esc>:tabnext<CR>i
+ nnoremap <C-S-tab> :tabprevious<CR>
+ nnoremap <Esc><tab> :tabprevious<CR>
+ nnoremap <C-t> :tabnew<CR>
+ nnoremap <tab> :tabnext<CR>
+ nnoremap <C-tab> :tabprevious<CR>
+ nnoremap td :tabclose<CR>
+ nnoremap ti :tabfirst<CR>
+ nnoremap tj :tabprev<CR>
+ nnoremap tk :tablast<CR>
+ nnoremap tl :tabnext<CR>
+ nnoremap tm :tabm<Space>
+ nnoremap tn :tabnew<Space>
+ nnoremap tt :tabedit<Space>
+ set tabpagemax=1000
+ set sessionoptions+=tabpages
+ endif
+if (v:version >= 740)
+ set undodir=$HOME/var/cache/vim/undo/
+ set undofile
+ endif
+"""
+""" filetypes
+"""
+autocmd BufNewFile,BufRead *.hledger,*.ledger,*.journal setfiletype hledger
+autocmd Filetype hledger set iskeyword+=.,38,39,40,41,44,45,58
+"""
+""" plugins
+"""
+runtime plugin/gundo.vim
+runtime plugin/gzip.vim
+runtime macros/justify.vim
+let b:match_words = '«:»,“:”'
+runtime plugin/matchit.vim
+let g:netrw_liststyle = 3
+"let g:netrw_cursorline = 0
+let s:netrw_usercul = 0
+runtime plugin/netrwPlugin.vim
+
+" EasyAlign
+ vmap <Enter> <Plug>(EasyAlign)
+ nmap <Leader>a <Plug>(EasyAlign)
+ let g:easy_align_ignore_groups = ['Comment', 'String', 'hledgerComment', 'hledgerTransaction']
+
+" neocomplcache
+ " Disable automatic completion popup
+ let g:neocomplcache_disable_auto_complete = 1
+ " Disable AutoComplPop.
+ let g:acp_enableAtStartup = 0
+ " Use neocomplcache.
+ let g:neocomplcache_enable_at_startup = 1
+ " Use smartcase.
+ let g:neocomplcache_enable_smart_case = 1
+ " Set minimum syntax keyword length.
+ let g:neocomplcache_min_syntax_length = 2
+ let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*'
+
+ " Define dictionary.
+ let g:neocomplcache_dictionary_filetype_lists = {
+ \ 'default' : '',
+ \ 'vimshell' : $HOME.'/.vimshell_hist',
+ \ 'scheme' : $HOME.'/.gosh_completions'
+ \ }
+
+ " Define keyword.
+ if !exists('g:neocomplcache_keyword_patterns')
+ let g:neocomplcache_keyword_patterns = {}
+ endif
+ let g:neocomplcache_keyword_patterns['default'] = '\h\w*'
+
+ " Plugin key-mappings.
+ inoremap <expr><C-g> neocomplcache#undo_completion()
+ inoremap <expr><C-l> neocomplcache#complete_common_string()
+
+ " Complete with <Tab>.
+ "inoremap <expr><TAB> pumvisible() ? "\<C-n>" : <SID>check_back_space() ? "\<TAB>" : "\<C-x>\<C-u>"
+ inoremap <expr><TAB> pumvisible() ? neocomplcache#complete_common_string() : <SID>check_back_space() ? "\<TAB>" : "\<C-x>\<C-u>"
+
+ function! s:check_back_space()
+ let col = col('.') - 1
+ return !col || getline('.')[col - 1] =~ '\s'
+ endfunction
+
+ " Choose candidate with <CR>.
+ inoremap <expr><CR> neocomplcache#smart_close_popup() . “\<CR>”
+
+ " Recommended key-mappings.
+ " <CR>: close popup and save indent.
+ inoremap <silent> <CR> <C-r>=<SID>my_cr_function()<CR>
+ function! s:my_cr_function()
+ return neocomplcache#smart_close_popup() . "\<CR>"
+ " For no inserting <CR> key.
+ "return pumvisible() ? neocomplcache#close_popup() : "\<CR>"
+ endfunction
+ " <TAB>: completion.
+ "inoremap <expr><TAB> pumvisible() ? neocomplcache#complete_common_string() : "\<TAB>"
+ "inoremap <expr><TAB> neocomplcache#complete_common_string()
+ " <C-h>, <BS>: close popup and delete backword char.
+ inoremap <expr><C-h> neocomplcache#smart_close_popup()."\<C-h>"
+ inoremap <expr><BS> neocomplcache#smart_close_popup()."\<C-h>"
+ inoremap <expr><C-y> neocomplcache#close_popup()
+ inoremap <expr><C-e> neocomplcache#cancel_popup()
+ " Close popup by <Space>.
+ inoremap <expr><Space> pumvisible() ? neocomplcache#close_popup() : "\<Space>"
+
+ " Sort choices by bytes
+ call neocomplcache#custom_source('_', 'sorters', ['sorter_bytes'])
+
+ " For cursor moving in insert mode(Not recommended)
+ "inoremap <expr><Left> neocomplcache#close_popup() . "\<Left>"
+ "inoremap <expr><Right> neocomplcache#close_popup() . "\<Right>"
+ "inoremap <expr><Up> neocomplcache#close_popup() . "\<Up>"
+ "inoremap <expr><Down> neocomplcache#close_popup() . "\<Down>"
+ " Or set this.
+ "let g:neocomplcache_enable_cursor_hold_i = 1
+ " Or set this.
+ "let g:neocomplcache_enable_insert_char_pre = 1
+
+ " AutoComplPop like behavior.
+ "let g:neocomplcache_enable_auto_select = 1
+
+ " Enable heavy features.
+ " Use camel case completion.
+ "let g:neocomplcache_enable_camel_case_completion = 1
+ " Use underbar completion.
+ let g:neocomplcache_enable_underbar_completion = 1
+
+ " Shell like behavior(not recommended).
+ "set completeopt+=longest
+ "let g:neocomplcache_enable_auto_select = 1
+ "let g:neocomplcache_disable_auto_complete = 1
+ "inoremap <expr><TAB> pumvisible() ? "\<Down>" : "\<C-x>\<C-u>"
+
+ " Enable omni completion.
+ autocmd FileType css setlocal omnifunc=csscomplete#CompleteCSS
+ autocmd FileType html,markdown setlocal omnifunc=htmlcomplete#CompleteTags
+ autocmd FileType javascript setlocal omnifunc=javascriptcomplete#CompleteJS
+ autocmd FileType python setlocal omnifunc=pythoncomplete#Complete
+ autocmd FileType xml setlocal omnifunc=xmlcomplete#CompleteTags
+
+ " Enable heavy omni completion.
+ if !exists('g:neocomplcache_omni_patterns')
+ let g:neocomplcache_omni_patterns = {}
+ endif
+ let g:neocomplcache_omni_patterns.php = '[^. \t]->\h\w*\|\h\w*::'
+ let g:neocomplcache_omni_patterns.c = '[^.[:digit:] *\t]\%(\.\|->\)'
+ let g:neocomplcache_omni_patterns.cpp = '[^.[:digit:] *\t]\%(\.\|->\)\|\h\w*::'
+
+ " For perlomni.vim setting.
+ " https://github.com/c9s/perlomni.vim
+ let g:neocomplcache_omni_patterns.perl = '\h\w*->\h\w*\|\h\w*::'
+ runtime plugin/neocomplcache.vim