fix ycm and add more vimconfig to repo
This commit is contained in:
parent
019a37d58f
commit
1ccfead62b
4 changed files with 110 additions and 5 deletions
85
vim/indent/haskell.vim
Normal file
85
vim/indent/haskell.vim
Normal file
|
@ -0,0 +1,85 @@
|
|||
" Vim indent file
|
||||
" Language: Haskell
|
||||
" Author: motemen <motemen@gmail.com>
|
||||
" Version: 0.1
|
||||
" Last Change: 2007-07-25
|
||||
"
|
||||
" Modify g:haskell_indent_if and g:haskell_indent_case to
|
||||
" change indentation for `if'(default 3) and `case'(default 5).
|
||||
" Example (in .vimrc):
|
||||
" > let g:haskell_indent_if = 2
|
||||
|
||||
if exists('b:did_indent')
|
||||
finish
|
||||
endif
|
||||
|
||||
let b:did_indent = 1
|
||||
|
||||
if !exists('g:haskell_indent_if')
|
||||
" if bool
|
||||
" >>>then ...
|
||||
" >>>else ...
|
||||
let g:haskell_indent_if = 3
|
||||
endif
|
||||
|
||||
if !exists('g:haskell_indent_case')
|
||||
" case xs of
|
||||
" >>>>>[] -> ...
|
||||
" >>>>>(y:ys) -> ...
|
||||
let g:haskell_indent_case = 5
|
||||
endif
|
||||
|
||||
setlocal indentexpr=GetHaskellIndent()
|
||||
setlocal indentkeys=!^F,o,O
|
||||
|
||||
function! GetHaskellIndent()
|
||||
let line = substitute(getline(getpos('.')[1] - 1), '\t', repeat(' ', &tabstop), 'g')
|
||||
|
||||
if line =~ '[!#$%&*+./<=>?@\\^|~-]$\|\<do$'
|
||||
return match(line, '\s*where \zs\|\S') + &shiftwidth
|
||||
endif
|
||||
|
||||
if line =~ '{$'
|
||||
return match(line, '\s*where \zs\|\S') + &shiftwidth
|
||||
endif
|
||||
|
||||
if line =~ '^\(instance\|class\).*\&.*where$'
|
||||
return &shiftwidth
|
||||
endif
|
||||
|
||||
if line =~ ')$'
|
||||
let pos = getpos('.')
|
||||
normal k$
|
||||
let paren_end = getpos('.')
|
||||
normal %
|
||||
let paren_begin = getpos('.')
|
||||
call setpos('.', pos)
|
||||
if paren_begin[1] != paren_end[1]
|
||||
return paren_begin[2] - 1
|
||||
endif
|
||||
endif
|
||||
|
||||
if line !~ '\<else\>'
|
||||
let s = match(line, '\<if\>.*\&.*\zs\<then\>')
|
||||
if s > 0
|
||||
return s
|
||||
endif
|
||||
|
||||
let s = match(line, '\<if\>')
|
||||
if s > 0
|
||||
return s + g:haskell_indent_if
|
||||
endif
|
||||
endif
|
||||
|
||||
let s = match(line, '\<do\s\+\zs[^{]\|\<where\s\+\zs\w\|\<let\s\+\zs\S\|^\s*\zs|\s')
|
||||
if s > 0
|
||||
return s
|
||||
endif
|
||||
|
||||
let s = match(line, '\<case\>')
|
||||
if s > 0
|
||||
return s + g:haskell_indent_case
|
||||
endif
|
||||
|
||||
return match(line, '\S')
|
||||
endfunction
|
290
vim/vimrc
Normal file
290
vim/vimrc
Normal file
|
@ -0,0 +1,290 @@
|
|||
|
||||
" Vundle plugins {{{
|
||||
" ============================================================================ "
|
||||
|
||||
set nocompatible " be iMproved, required
|
||||
filetype off " required
|
||||
|
||||
" set the runtime path to include Vundle and initialize
|
||||
set rtp+=~/.vim/bundle/Vundle.vim
|
||||
call vundle#begin()
|
||||
|
||||
" let Vundle manage Vundle, required
|
||||
Plugin 'gmarik/Vundle.vim'
|
||||
|
||||
Plugin 'tpope/vim-fugitive'
|
||||
Plugin 'kien/ctrlp.vim'
|
||||
Plugin 'bling/vim-airline'
|
||||
Plugin 'scrooloose/nerdtree'
|
||||
Plugin 'Shougo/vimproc.vim'
|
||||
Plugin 'Shougo/vimshell.vim'
|
||||
Plugin 'tpope/vim-markdown'
|
||||
Plugin 'altercation/vim-colors-solarized'
|
||||
Plugin 'Valloric/YouCompleteMe'
|
||||
|
||||
" All of your Plugins must be added before the following line
|
||||
call vundle#end() " required
|
||||
filetype plugin indent on " required
|
||||
" Put your non-Plugin stuff after this line
|
||||
|
||||
" Configuring NerdTree
|
||||
noremap <C-t> :NERDTreeToggle<CR><CR>
|
||||
let NERDTreeIgnore=[
|
||||
\ ".*\\.class$",
|
||||
\ ".*\\.o$",
|
||||
\ ".*\\.hi$",
|
||||
\ ".*\\.pyc$"
|
||||
\ ]
|
||||
|
||||
" Configuring ctrlp
|
||||
noremap <C-p> :CtrlP<CR>
|
||||
noremap <C-o> :CtrlPBuffer<CR>
|
||||
|
||||
" Configuring Airline
|
||||
let g:airline_powerline_fonts=1
|
||||
|
||||
" Configuring YouCompleteMe
|
||||
let g:ycm_global_ycm_extra_conf = '~/.vim/ycm_extra_conf.py'
|
||||
let g:ycm_server_keep_logfiles = 1
|
||||
let g:ycm_server_log_level = 'debug'
|
||||
|
||||
" Configuring VimShell
|
||||
noremap <C-s> :VimShell -split<CR>
|
||||
|
||||
" Loading Solarized
|
||||
set t_Co=256
|
||||
let g:solarized_termcolors=256
|
||||
let g:solarized_contrast="normal"
|
||||
let g:solarized_underline=0
|
||||
let g:solarized_termtrans=0
|
||||
syntax enable
|
||||
set background=dark
|
||||
colorscheme solarized
|
||||
|
||||
" }}}
|
||||
|
||||
" General Options {{{
|
||||
" ============================================================================ "
|
||||
|
||||
set number " line numbers on the right side
|
||||
set showcmd " show the commands while typing
|
||||
set splitright " open new splits on the right
|
||||
set splitbelow " open new splits below
|
||||
set autoread " autoreload file on change
|
||||
set scrolloff=8 " keep the cursor 8 lines away from the top/bottom
|
||||
set ruler " show the lines/% bottomright
|
||||
set encoding=utf-8 " set default encoding
|
||||
set laststatus=2 " always show the status line
|
||||
|
||||
" wrap lines at 80 characters
|
||||
set formatprg=par\ -w80
|
||||
set formatoptions=t
|
||||
set textwidth=80
|
||||
|
||||
" indentation
|
||||
set tabstop=4 " tab is 4 width
|
||||
set softtabstop=4 " tab is 4 width
|
||||
set shiftwidth=4 " for use with > and <
|
||||
set expandtab " tab key puts spaces
|
||||
set autoindent " in case filetype indent is wrong
|
||||
filetype plugin indent on
|
||||
set list " if tabs, show them with 2 spaces
|
||||
set listchars=tab:\·\ ,trail:·
|
||||
" display tabs with a leading \cdot
|
||||
" trailing whitespace looks like \cdot
|
||||
|
||||
" Don't save tmp/swap files in the current directory.
|
||||
set directory=~/.vim/tmp/swap/
|
||||
set backupdir=~/.vim/tmp/backup/
|
||||
|
||||
" Learning to use decent vim.
|
||||
noremap <Up> <NOP>
|
||||
noremap <Down> <NOP>
|
||||
noremap <Left> <NOP>
|
||||
noremap <Right> <NOP>
|
||||
|
||||
" Keep selection after indenting
|
||||
vnoremap > >gv
|
||||
vnoremap < <gv
|
||||
|
||||
" some shortcuts
|
||||
" go to start of line
|
||||
noremap H ^
|
||||
" go to end of line
|
||||
noremap L g_
|
||||
" fuck you K
|
||||
noremap K <nop>
|
||||
" center screen with <space>
|
||||
noremap <space> zz
|
||||
" rewrite file with sudo
|
||||
cmap w!! w !sudo tee % >/dev/null
|
||||
" paste the clipboard
|
||||
noremap <C-b> :r!xclip -sel c -o<CR><CR>
|
||||
|
||||
" }}}
|
||||
|
||||
" Filetype specific configuration. {{{
|
||||
" ============================================================================ "
|
||||
|
||||
" Haskell {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd FileType haskell call HaskellHook()
|
||||
autocmd BufRead,BufNewFile *.lhs call HaskellHook()
|
||||
autocmd BufRead,BufNewFile *.hsc set filetype=haskell
|
||||
|
||||
function HaskellHook()
|
||||
" Ghci shortcut
|
||||
noremap <C-i> :!ghci -Wall '%'<CR><CR>
|
||||
|
||||
" Haskell Styling
|
||||
noremap <C-c> :%!stylish-haskell<CR>
|
||||
noremap <C-x> :!hlint %<CR>
|
||||
|
||||
" Vim-hoogle
|
||||
noremap <C-h> :Hoogle
|
||||
noremap <C-j> :HoogleClose<CR>
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" Java {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd FileType java call JavaHook()
|
||||
|
||||
function JavaHook()
|
||||
" Javac shortcut
|
||||
noremap <C-c> :!javac %<CR>
|
||||
|
||||
" Java shortcut
|
||||
noremap <C-i> :!java %:r<CR>
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" C {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd FileType c call CHook()
|
||||
|
||||
function CHook()
|
||||
" gcc shortcut
|
||||
noremap <C-c> :!gcc % -o %:r<CR>
|
||||
|
||||
" execute
|
||||
noremap <C-i> :!./%:r<CR>
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" Ruby {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd FileType ruby call RubyHook()
|
||||
autocmd FileType eruby call RubyHook()
|
||||
|
||||
function RubyHook()
|
||||
setlocal tabstop=2
|
||||
setlocal shiftwidth=2
|
||||
set softtabstop=2
|
||||
noremap <C-i> :!irb -Ilib -r ./%<CR><CR>
|
||||
|
||||
" Use rake as makeprogram
|
||||
set makeprg=rake
|
||||
|
||||
" Folding
|
||||
set foldmethod=syntax
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" R {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd FileType r call RHook()
|
||||
|
||||
function RHook()
|
||||
" Interactive shortcut
|
||||
noremap <C-i> :'<,'>w !R --no-save --interactive<CR><CR>
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" Latex {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd FileType tex call TexHook()
|
||||
|
||||
function TexHook()
|
||||
setlocal tabstop=2
|
||||
setlocal shiftwidth=2
|
||||
set softtabstop=2
|
||||
" Make a pdf
|
||||
noremap <C-c> :!pdflatex '%'<CR><CR>
|
||||
noremap <C-i> :!spawn zathura '%:p:r.pdf'<CR><CR>
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" Markdown {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd Filetype markdown call MarkdownHook()
|
||||
|
||||
function MarkdownHook()
|
||||
" Making and showing html
|
||||
noremap <C-c> :!markdown '%:p' > '%:p:r.html'<CR><CR>
|
||||
noremap <C-i> :!spawn firefox '%:p:r.html'<CR><CR>
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" Python {{{
|
||||
" ---------------------------------------------------------------------------- "
|
||||
|
||||
autocmd FileType python call PythonHook()
|
||||
|
||||
function Pylint()
|
||||
silent !pylint --reports=n --output-format=parseable '%' > errors.err 2> /dev/null
|
||||
cfile
|
||||
silent !rm errors.err
|
||||
redraw!
|
||||
copen
|
||||
endfunction
|
||||
|
||||
function PythonFold(lnum)
|
||||
if getline(a:lnum-1) =~ '^\s*def\s' || getline(a:lnum-1) =~ '^\s*class\s'
|
||||
return indent(a:lnum-1) / 4 + 1
|
||||
endif
|
||||
if getline(a:lnum) =~ '^\s*def\s' || getline(a:lnum) =~ '^\s*class\s'
|
||||
return indent(a:lnum) / 4
|
||||
endif
|
||||
if getline(a:lnum+1) =~ '^\s*def\s' || getline(a:lnum+1) =~ '^\s*class\s'
|
||||
return indent(a:lnum + 1) / 4
|
||||
endif
|
||||
if getline(a:lnum+1) =~ '^\S.*$'
|
||||
return '0'
|
||||
endif
|
||||
return '='
|
||||
endfunction
|
||||
|
||||
function PythonFoldText()
|
||||
return repeat(' ', indent(v:foldstart - 1) + 4) . '+'
|
||||
endfunction
|
||||
|
||||
function PythonHook()
|
||||
set formatoptions+=rq
|
||||
noremap <C-i> :!python -i '%'<CR><CR>
|
||||
noremap <C-x> :call Pylint()<CR>
|
||||
" Uncomment to fold. Slows down SuperTab extremely
|
||||
set foldmethod=expr
|
||||
set foldexpr=PythonFold(v:lnum)
|
||||
set foldtext=PythonFoldText()
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" }}}
|
||||
|
||||
" vim: foldmethod=marker
|
13
vim/ycm_extra_conf.py
Normal file
13
vim/ycm_extra_conf.py
Normal file
|
@ -0,0 +1,13 @@
|
|||
|
||||
def FlagsForFile(filename, **kwargs):
|
||||
c = filename.endswith('.c')
|
||||
flags = [
|
||||
'-Wall',
|
||||
'-Wextra',
|
||||
'-Werror',
|
||||
'-DNDEBUG',
|
||||
'-std=c99' if c else '-std=c++11',
|
||||
'-x', 'c' if c else 'c++',
|
||||
'-isystem', '/usr/include',
|
||||
]
|
||||
return dict(flags=flags, do_cache=True)
|
Loading…
Add table
Add a link
Reference in a new issue