summaryrefslogtreecommitdiffstats
path: root/vim
diff options
context:
space:
mode:
authorAudric Schiltknecht <storm@chemicalstorm.org>2012-10-10 22:12:38 +0200
committerAudric Schiltknecht <storm@chemicalstorm.org>2012-10-10 22:12:38 +0200
commit16938a57453b769490fde0372407ae169de519ab (patch)
tree3a083df1bf87941b430e6101bc7a3a977ad8d290 /vim
parent048df48526e1b8f5176319f79aaa6276906556bd (diff)
downloaddotfiles-16938a57453b769490fde0372407ae169de519ab.tar.gz
dotfiles-16938a57453b769490fde0372407ae169de519ab.tar.bz2
dotfiles-16938a57453b769490fde0372407ae169de519ab.zip
Add "basic" vim configuration
Diffstat (limited to 'vim')
-rw-r--r--vim/.vim/memory.txt50
-rw-r--r--vim/.vim/shortkeys.vim64
-rw-r--r--vim/.vim/specific/cpp.vim28
-rw-r--r--vim/.vim/specific/cxx.vim25
-rw-r--r--vim/.vim/specific/ddl.vim1
-rw-r--r--vim/.vim/specific/egg.vim1
-rw-r--r--vim/.vim/specific/html.vim1
-rw-r--r--vim/.vim/specific/java.vim1
-rw-r--r--vim/.vim/specific/js.vim1
-rw-r--r--vim/.vim/specific/mp.vim1
-rw-r--r--vim/.vim/specific/pro.vim1
-rw-r--r--vim/.vim/specific/py.vim201
-rw-r--r--vim/.vim/specific/tex.vim10
-rw-r--r--vim/.vim/specific/tla.vim2
-rw-r--r--vim/.vim/specific/xml.vim1
-rw-r--r--vim/.vim/templates/autocompletion.vim11
-rw-r--r--vim/.vim/templates/c.tpl8
-rw-r--r--vim/.vim/templates/cpp.tpl8
-rw-r--r--vim/.vim/templates/h.tpl14
-rw-r--r--vim/.vim/templates/html.tpl11
-rw-r--r--vim/.vim/templates/java.tpl11
-rw-r--r--vim/.vim/templates/py.tpl4
-rw-r--r--vim/.vimrc365
23 files changed, 820 insertions, 0 deletions
diff --git a/vim/.vim/memory.txt b/vim/.vim/memory.txt
new file mode 100644
index 0000000..980e773
--- /dev/null
+++ b/vim/.vim/memory.txt
@@ -0,0 +1,50 @@
+ Aide Mémoire pour VIM
+
+ <F1> : Affichage de l'aide
+ <F2> : Compilation
+ <F3> : Passe en mode copie
+ <F4> : A/D gestion de la souris
+ <F5> : Affiche les caractères spéciaux
+ <F6> : Nettoie le fichier
+ <F7> :
+ <F8> :
+ <F9> :
+ <F10> : Afficher les lignes trop longues
+
+ Onglets :
+ <C-Left> : Onglet précédent
+ <C-Right> : Onglet suivant
+ <S-Left> : Déplace l'onglet à gauche
+ <S-Right> : Déplace l'onglet à droite
+
+ <C-Down> : Commentaire suivant
+ <C-Up> : Commentaire précédent
+
+ Folding du code :
+ <space> : Ouvre/ferme le bloc
+ <C-c> : Ferme tous les blocs
+ <S-c> : Ouvre tous les blocs
+
+ Compilation :
+ <C-PgUp> : Erreur précédente
+ <C-PgDown> : Erreur suivante
+
+ Dans l'aide de VIM :
+ <Return> : Suit le lien
+ <Backspace> : Page précédente
+
+ Templates :
+ <A-Return> : Saute vers zone compléter
+
+ LaTeX :
+ <C-j> : Formattage
+
+ C/C++ :
+ <C-F12> : Génération des tags
+
+ dd : Supprimer une ligne
+
+Hexa :
+Ouerture fichier : vim -b <file>
+Conversion binaire -> hexa : :%!xxd
+COnversion hexa -> binaire : :%!xxd -r
diff --git a/vim/.vim/shortkeys.vim b/vim/.vim/shortkeys.vim
new file mode 100644
index 0000000..38ea222
--- /dev/null
+++ b/vim/.vim/shortkeys.vim
@@ -0,0 +1,64 @@
+" Navigation sur les longues lignes
+map <A-DOWN> gj
+map <A-UP> gk
+imap <A-DOWN> <ESC>gj
+imap <A-UP> <ESC>gk
+
+" Saut vers les zones à completer lors de l'utilisation des templates
+map <A-Return> /<+.\{-1,}+><CR>c/+>e<CR>
+imap <A-Return> /<+.\{-1,}+><CR>c/+>e<CR>
+
+" Affichage de l'aide
+map <F1> <Esc>:call HelpMemory()<CR>
+imap <F1> <Esc>:call HelpMemory()<CR>
+
+" On compile
+map <F2> <Esc>:make<CR>
+
+" Passer en mode Copie
+set pastetoggle=<F3>
+
+" Gestion de la souris
+map <F4> <Esc>:call ToggleMouseActivate()<CR>
+imap <F4> <Esc>:call ToggleMouseActivate()<CR>
+
+" Caractères spéciaux
+map <F5> <Esc>:call DisplayChar()<CR>
+imap <F5> <Esc>:call DisplayChar()<CR>
+
+" Nettoyage du fichier
+map <F6> <Esc>:call ClearCode()<CR>
+imap <F6> <Esc>:call ClearCode()<CR>
+
+" Affichage des lignes trop longues
+map <F10> <Esc>:call HlTooLarge()<CR>
+imap <F10> <Esc>:call HlTooLarge()<CR>
+
+" Touches de navigation dans les onglets
+map <C-LEFT> <Esc>:tabprevious<CR>
+map <C-RIGHT> <Esc>:tabnext<CR>
+map <S-LEFT> <Esc>:call MoveTab('left')<CR>
+map <S-RIGHT> <Esc>:call MoveTab('right')<CR>
+
+" Accès aux commentaires
+map <C-DOWN> <Esc>]/
+map <C-UP> <Esc>[/
+
+"" Gestion des foldings de code
+" Alterne ouvert/ferme
+nnoremap <space> za
+" Ferme tout
+nnoremap <C-c> zm
+" Ouvre tout
+nnoremap <S-c> zr
+
+" Déplacement dans les erreurs d'une compilation via Ctrl-PgUp/Down
+map <C-PAGEUP> <Esc>:cprevious<CR>
+map <C-PAGEDOWN> <Esc>:cnext<CR>
+
+" Navigation dans l'aide de Vim
+"On suit un lien en appuyant sur Return
+map <Return> <C-]>
+"Retour page précédente avec Backspace
+map <BS> <C-T>
+
diff --git a/vim/.vim/specific/cpp.vim b/vim/.vim/specific/cpp.vim
new file mode 100644
index 0000000..4dfe592
--- /dev/null
+++ b/vim/.vim/specific/cpp.vim
@@ -0,0 +1,28 @@
+map <C-F12> :!ctags * --c-types=+p --c++-kinds=+p --fields=+iaS --extra=+q .<CR>
+set tags+=$HOME/.vim/tags/stdlib.tags
+set completeopt=menu
+let OmniCpp_SelectFirstItem = 2
+
+
+" Vim syntax file
+" Language: C++ special highlighting for STL classes and methods
+" Maintainer: Jean-Francois Guchens (thanks to Nathan Skvirsky)
+" Last Change: 2008 May 02
+
+syn keyword cppSTL abort abs accumulate acos adjacent_difference adjacent_find adjacent_find_if any append asctime asin assert assign at atan atan2 atexit atof atoi atol back back_inserter bad bad_alloc bad_cast bad_exception bad_typeid badbit beg begin binary_compose binary_negate binary_search bind2nd binder1st binder2nd bitset bsearch c_str calloc capacity ceil cerr cin clear clearerr clock clog close compare compose1 compose2 construct copy copy_backward copy_n cos cosh count count_if cout ctime data destroy difference_type difftime div domain_error empty end endl eof eofbit equal equal_range erase exception exit exp fabs fail failbit failure fclose feof ferror fflush fgetc fgetpos fgets fill fill_n find find_end find_first_not_of find_first_of find_if find_last_not_of find_last_of first flags flip floor flush fmod fopen for_each fprintf fputc fputs fread free freopen frexp front fscanf fseek fsetpos ftell fwrite gcount generate generate_n get get_temporary_buffer getc getchar getenv getline gets gmtime good goodbit greater greater_equal ignore in includes inner_product inplace_merge insert inserter invalid_argument ios ios_base iostate iota is_heap is_open is_sorted isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit iter_swap iterator_category key_comp ldiv length length_error less less_equal lexicographical_compare lexicographical_compare_3way localtime log log10 logic_error logical_and logical_not logical_or longjmp lower_bound make_heap malloc max max_element max_size mem_fun mem_fun1 mem_fun1_ref mem_fun_ref memchr memcpy memmove memset merge min min_element minus mismatch mktime modf modulus multiplies negate next_permutation npos nth_element numeric_limits open out_of_range overflow_error partial_sort partial_sort_copy partial_sum partition peek perror plus pop pop_back pop_front pop_heap pow power precision prev_permutation printf ptr_fun push push_back push_front push_heap put putback putc putchar puts qsort raise rand random_sample random_sample_n random_shuffle range_error rbegin rdbuf rdstate read realloc reference remove remove_copy remove_copy_if remove_if rename rend replace replace_copy replace_copy_if replace_if reserve reset resize return_temporary_buffer reverse reverse_copy rewind rfind rotate rotate_copy runtime_error scanf search search_n second seekg seekp set_difference set_intersection set_symmetric_difference set_union setbuf setf setjmp setlocale setvbuf signal sin sinh size size_t size_type sort sort_heap splice sprintf sqrt srand sscanf stable_partition stable_sort std str strcat strchr strcmp strcoll strcpy strcspn strerror strftime string strlen strncat strncmp strncpy strpbrk strrchr strspn strstr strtod strtok strtol strtoul strxfrm substr swap swap_ranges sync_with_stdio system tan tanh tellg tellp test time time_t tmpfile tmpnam to_string to_ulong tolower top toupper transform unary_compose unary_negate underflow_error unget ungetc uninitialized_copy uninitialized_copy_n uninitialized_fill uninitialized_fill_n unique unique_copy unsetf upper_bound va_arg value_comp value_type vfprintf vprintf vsprintf width write
+
+syn keyword cppSTLtype istreambuf_iterator filebuf string ofstream ifstream stream istream_iterator istringstream ostream ostream_iterator ostringstream fstream auto_ptr pointer pointer_to_binary_function pointer_to_unary_function basic_string bit_vector bitset char_producer deque hash hash_map hash_multimap hash_multiset hash_set list map multimap multiset queue priority_queue rope set stack vector back_insert_iterator iterator bidirectional_iterator bidirectional_iterator_tag forward_iterator forward_iterator_tag front_insert_iterator input_iterator input_iterator_tag insert_iterator istream_iterator iterator_traits ostream_iterator output_iterator output_iterator_tag random_access_iterator random_access_iterator_tag raw_storage_iterator reverse_bidirectional_iterator reverse_iterator sequence_buffer binary_compose binary_function binary_negate binder1st binder2nd divides equal_to unary_compose unary_function unary_negate pair char_traits const_iterator reverse_iterator temporary_buffer
+
+" Default highlighting
+if version >= 508 || !exists("did_cpp_syntax_inits")
+ if version < 508
+ let did_cpp_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+ HiLink cppSTL Identifier
+ HiLink cppSTLtype Type
+ delcommand HiLink
+endif
+
diff --git a/vim/.vim/specific/cxx.vim b/vim/.vim/specific/cxx.vim
new file mode 100644
index 0000000..6aada59
--- /dev/null
+++ b/vim/.vim/specific/cxx.vim
@@ -0,0 +1,25 @@
+set completeopt=menu
+let OmniCpp_SelectFirstItem = 2
+
+" Vim syntax file
+" Language: C++ special highlighting for STL classes and methods
+" Maintainer: Jean-Francois Guchens (thanks to Nathan Skvirsky)
+" Last Change: 2008 May 02
+
+syn keyword cppSTL abort abs accumulate acos adjacent_difference adjacent_find adjacent_find_if any append asctime asin assert assign at atan atan2 atexit atof atoi atol back back_inserter bad bad_alloc bad_cast bad_exception bad_typeid badbit beg begin binary_compose binary_negate binary_search bind2nd binder1st binder2nd bitset bsearch c_str calloc capacity ceil cerr cin clear clearerr clock clog close compare compose1 compose2 construct copy copy_backward copy_n cos cosh count count_if cout ctime data destroy difference_type difftime div domain_error empty end endl eof eofbit equal equal_range erase exception exit exp fabs fail failbit failure fclose feof ferror fflush fgetc fgetpos fgets fill fill_n find find_end find_first_not_of find_first_of find_if find_last_not_of find_last_of first flags flip floor flush fmod fopen for_each fprintf fputc fputs fread free freopen frexp front fscanf fseek fsetpos ftell fwrite gcount generate generate_n get get_temporary_buffer getc getchar getenv getline gets gmtime good goodbit greater greater_equal ignore in includes inner_product inplace_merge insert inserter invalid_argument ios ios_base iostate iota is_heap is_open is_sorted isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit iter_swap iterator_category key_comp ldiv length length_error less less_equal lexicographical_compare lexicographical_compare_3way localtime log log10 logic_error logical_and logical_not logical_or longjmp lower_bound make_heap malloc max max_element max_size mem_fun mem_fun1 mem_fun1_ref mem_fun_ref memchr memcpy memmove memset merge min min_element minus mismatch mktime modf modulus multiplies negate next_permutation npos nth_element numeric_limits open out_of_range overflow_error partial_sort partial_sort_copy partial_sum partition peek perror plus pop pop_back pop_front pop_heap pow power precision prev_permutation printf ptr_fun push push_back push_front push_heap put putback putc putchar puts qsort raise rand random_sample random_sample_n random_shuffle range_error rbegin rdbuf rdstate read realloc reference remove remove_copy remove_copy_if remove_if rename rend replace replace_copy replace_copy_if replace_if reserve reset resize return_temporary_buffer reverse reverse_copy rewind rfind rotate rotate_copy runtime_error scanf search search_n second seekg seekp set_difference set_intersection set_symmetric_difference set_union setbuf setf setjmp setlocale setvbuf signal sin sinh size size_t size_type sort sort_heap splice sprintf sqrt srand sscanf stable_partition stable_sort std str strcat strchr strcmp strcoll strcpy strcspn strerror strftime string strlen strncat strncmp strncpy strpbrk strrchr strspn strstr strtod strtok strtol strtoul strxfrm substr swap swap_ranges sync_with_stdio system tan tanh tellg tellp test time time_t tmpfile tmpnam to_string to_ulong tolower top toupper transform unary_compose unary_negate underflow_error unget ungetc uninitialized_copy uninitialized_copy_n uninitialized_fill uninitialized_fill_n unique unique_copy unsetf upper_bound va_arg value_comp value_type vfprintf vprintf vsprintf width write
+
+syn keyword cppSTLtype istreambuf_iterator filebuf string ofstream ifstream stream istream_iterator istringstream ostream ostream_iterator ostringstream fstream auto_ptr pointer pointer_to_binary_function pointer_to_unary_function basic_string bit_vector bitset char_producer deque hash hash_map hash_multimap hash_multiset hash_set list map multimap multiset queue priority_queue rope set stack vector back_insert_iterator iterator bidirectional_iterator bidirectional_iterator_tag forward_iterator forward_iterator_tag front_insert_iterator input_iterator input_iterator_tag insert_iterator istream_iterator iterator_traits ostream_iterator output_iterator output_iterator_tag random_access_iterator random_access_iterator_tag raw_storage_iterator reverse_bidirectional_iterator reverse_iterator sequence_buffer binary_compose binary_function binary_negate binder1st binder2nd divides equal_to unary_compose unary_function unary_negate pair char_traits const_iterator reverse_iterator temporary_buffer
+
+" Default highlighting
+if version >= 508 || !exists("did_cpp_syntax_inits")
+ if version < 508
+ let did_cpp_syntax_inits = 1
+ command -nargs=+ HiLink hi link <args>
+ else
+ command -nargs=+ HiLink hi def link <args>
+ endif
+ HiLink cppSTL Identifier
+ HiLink cppSTLtype Type
+ delcommand HiLink
+endif
+
diff --git a/vim/.vim/specific/ddl.vim b/vim/.vim/specific/ddl.vim
new file mode 100644
index 0000000..31b9c56
--- /dev/null
+++ b/vim/.vim/specific/ddl.vim
@@ -0,0 +1 @@
+set filetype=sql
diff --git a/vim/.vim/specific/egg.vim b/vim/.vim/specific/egg.vim
new file mode 100644
index 0000000..137b3bd
--- /dev/null
+++ b/vim/.vim/specific/egg.vim
@@ -0,0 +1 @@
+setf egg
diff --git a/vim/.vim/specific/html.vim b/vim/.vim/specific/html.vim
new file mode 100644
index 0000000..6c65216
--- /dev/null
+++ b/vim/.vim/specific/html.vim
@@ -0,0 +1 @@
+map <F2> <Esc>:%w !xmllint --valid --noout -<CR>
diff --git a/vim/.vim/specific/java.vim b/vim/.vim/specific/java.vim
new file mode 100644
index 0000000..8e94e99
--- /dev/null
+++ b/vim/.vim/specific/java.vim
@@ -0,0 +1 @@
+let java_highlight_functions="style"
diff --git a/vim/.vim/specific/js.vim b/vim/.vim/specific/js.vim
new file mode 100644
index 0000000..3829e28
--- /dev/null
+++ b/vim/.vim/specific/js.vim
@@ -0,0 +1 @@
+set ft=javascript.jquery
diff --git a/vim/.vim/specific/mp.vim b/vim/.vim/specific/mp.vim
new file mode 100644
index 0000000..3202f68
--- /dev/null
+++ b/vim/.vim/specific/mp.vim
@@ -0,0 +1 @@
+set nospell
diff --git a/vim/.vim/specific/pro.vim b/vim/.vim/specific/pro.vim
new file mode 100644
index 0000000..202f824
--- /dev/null
+++ b/vim/.vim/specific/pro.vim
@@ -0,0 +1 @@
+set filetype=prolog
diff --git a/vim/.vim/specific/py.vim b/vim/.vim/specific/py.vim
new file mode 100644
index 0000000..dcd9ced
--- /dev/null
+++ b/vim/.vim/specific/py.vim
@@ -0,0 +1,201 @@
+" Python indent file
+" Language: Python
+" Maintainer: Eric Mc Sween <em@tomcom.de>
+" Original Author: David Bustos <bustos@caltech.edu>
+" Last Change: 2004 Jun 07
+
+" Only load this indent file when no other was loaded.
+if exists("b:did_indent")
+ finish
+endif
+let b:did_indent = 1
+
+setlocal expandtab
+setlocal nolisp
+"setlocal autoindent
+setlocal shiftwidth=4
+setlocal tabstop=4
+setlocal indentexpr=GetPythonIndent(v:lnum)
+setlocal indentkeys=!^F,o,O,<:>,0),0],0},=elif,=except
+"Retour à la ligne auto au bout de 80 lignes
+setlocal textwidth=80
+
+let s:maxoff = 50
+
+" Find backwards the closest open parenthesis/bracket/brace.
+function! s:SearchParensPair()
+ let line = line('.')
+ let col = col('.')
+
+ " Skip strings and comments and don't look too far
+ let skip = "line('.') < " . (line - s:maxoff) . " ? dummy :" .
+ \ 'synIDattr(synID(line("."), col("."), 0), "name") =~? ' .
+ \ '"string\\|comment"'
+
+ " Search for parentheses
+ call cursor(line, col)
+ let parlnum = searchpair('(', '', ')', 'bW', skip)
+ let parcol = col('.')
+
+ " Search for brackets
+ call cursor(line, col)
+ let par2lnum = searchpair('\[', '', '\]', 'bW', skip)
+ let par2col = col('.')
+
+ " Search for braces
+ call cursor(line, col)
+ let par3lnum = searchpair('{', '', '}', 'bW', skip)
+ let par3col = col('.')
+
+ " Get the closest match
+ if par2lnum > parlnum || (par2lnum == parlnum && par2col > parcol)
+ let parlnum = par2lnum
+ let parcol = par2col
+ endif
+ if par3lnum > parlnum || (par3lnum == parlnum && par3col > parcol)
+ let parlnum = par3lnum
+ let parcol = par3col
+ endif
+
+ " Put the cursor on the match
+ if parlnum > 0
+ call cursor(parlnum, parcol)
+ endif
+ return parlnum
+endfunction
+
+" Find the start of a multi-line statement
+function! s:StatementStart(lnum)
+ let lnum = a:lnum
+ while 1
+ if getline(lnum - 1) =~ '\\$'
+ let lnum = lnum - 1
+ else
+ call cursor(lnum, 1)
+ let maybe_lnum = s:SearchParensPair()
+ if maybe_lnum < 1
+ return lnum
+ else
+ let lnum = maybe_lnum
+ endif
+ endif
+ endwhile
+endfunction
+
+" Find the block starter that matches the current line
+function! s:BlockStarter(lnum, block_start_re)
+ let lnum = a:lnum
+ let maxindent = 10000 " whatever
+ while lnum > 1
+ let lnum = prevnonblank(lnum - 1)
+ if indent(lnum) < maxindent
+ if getline(lnum) =~ a:block_start_re
+ return lnum
+ else
+ let maxindent = indent(lnum)
+ " It's not worth going further if we reached the top level
+ if maxindent == 0
+ return -1
+ endif
+ endif
+ endif
+ endwhile
+ return -1
+endfunction
+
+function! GetPythonIndent(lnum)
+
+ " First line has indent 0
+ if a:lnum == 1
+ return 0
+ endif
+
+ " If we can find an open parenthesis/bracket/brace, line up with it.
+ call cursor(a:lnum, 1)
+ let parlnum = s:SearchParensPair()
+ if parlnum > 0
+ let parcol = col('.')
+ let closing_paren = match(getline(a:lnum), '^\s*[])}]') != -1
+ if match(getline(parlnum), '[([{]\s*$', parcol - 1) != -1
+ if closing_paren
+ return indent(parlnum)
+ else
+ return indent(parlnum) + &shiftwidth
+ endif
+ else
+ if closing_paren
+ return parcol - 1
+ else
+ return parcol
+ endif
+ endif
+ endif
+
+ " Examine this line
+ let thisline = getline(a:lnum)
+ let thisindent = indent(a:lnum)
+
+ " If the line starts with 'elif' or 'else', line up with 'if' or 'elif'
+ if thisline =~ '^\s*\(elif\|else\)\>'
+ let bslnum = s:BlockStarter(a:lnum, '^\s*\(if\|elif\)\>')
+ if bslnum > 0
+ return indent(bslnum)
+ else
+ return -1
+ endif
+ endif
+
+ " If the line starts with 'except' or 'finally', line up with 'try'
+ " or 'except'
+ if thisline =~ '^\s*\(except\|finally\)\>'
+ let bslnum = s:BlockStarter(a:lnum, '^\s*\(try\|except\)\>')
+ if bslnum > 0
+ return indent(bslnum)
+ else
+ return -1
+ endif
+ endif
+
+ " Examine previous line
+ let plnum = a:lnum - 1
+ let pline = getline(plnum)
+ let sslnum = s:StatementStart(plnum)
+
+ " If the previous line is blank, keep the same indentation
+ if pline =~ '^\s*$'
+ return -1
+ endif
+
+ " If this line is explicitly joined, try to find an indentation that looks
+ " good.
+ if pline =~ '\\$'
+ let compound_statement = '^\s*\(if\|while\|for\s.*\sin\|except\)\s*'
+ let maybe_indent = matchend(getline(sslnum), compound_statement)
+ if maybe_indent != -1
+ return maybe_indent
+ else
+ return indent(sslnum) + &sw * 2
+ endif
+ endif
+
+ " If the previous line ended with a colon, indent relative to
+ " statement start.
+ if pline =~ ':\s*$'
+ return indent(sslnum) + &sw
+ endif
+
+ " If the previous line was a stop-execution statement or a pass
+ if getline(sslnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
+ " See if the user has already dedented
+ if indent(a:lnum) > indent(sslnum) - &sw
+ " If not, recommend one dedent
+ return indent(sslnum) - &sw
+ endif
+ " Otherwise, trust the user
+ return -1
+ endif
+
+ " In all other cases, line up with the start of the previous statement.
+ return indent(sslnum)
+endfunction
+
diff --git a/vim/.vim/specific/tex.vim b/vim/.vim/specific/tex.vim
new file mode 100644
index 0000000..204235a
--- /dev/null
+++ b/vim/.vim/specific/tex.vim
@@ -0,0 +1,10 @@
+" this is mostly a matter of taste. but LaTeX looks good with just a bit
+" of indentation.
+set sw=2
+set softtabstop=2
+" TIP: if you write your \label's as \label{fig:something}, then if you
+" type in \ref{fig: and press <C-n> you will automatically cycle through
+" all the figure labels. Very useful!
+set iskeyword+=:
+
+set makeprg=pdflatex\ -shell-escape\ %
diff --git a/vim/.vim/specific/tla.vim b/vim/.vim/specific/tla.vim
new file mode 100644
index 0000000..9629698
--- /dev/null
+++ b/vim/.vim/specific/tla.vim
@@ -0,0 +1,2 @@
+set syntax=vhdl
+set nospell
diff --git a/vim/.vim/specific/xml.vim b/vim/.vim/specific/xml.vim
new file mode 100644
index 0000000..3202f68
--- /dev/null
+++ b/vim/.vim/specific/xml.vim
@@ -0,0 +1 @@
+set nospell
diff --git a/vim/.vim/templates/autocompletion.vim b/vim/.vim/templates/autocompletion.vim
new file mode 100644
index 0000000..a4dca09
--- /dev/null
+++ b/vim/.vim/templates/autocompletion.vim
@@ -0,0 +1,11 @@
+" <+DATE+> : Date du jour
+%s/<+DATE+>/\=strftime("%d %b %Y")/g
+
+" <+AUTEUR+> : Auteur
+%s/<+AUTEUR+>/Audric Schiltknecht \/ Viveris Technologies/g
+
+" <+VERSION+> : Par défaut -> 1.0
+%s/<+VERSION+>/1\.0/g
+
+" <+FILE+> : nom du fichier
+%s/<+FILE+>/\=expand('%')/g
diff --git a/vim/.vim/templates/c.tpl b/vim/.vim/templates/c.tpl
new file mode 100644
index 0000000..0e86285
--- /dev/null
+++ b/vim/.vim/templates/c.tpl
@@ -0,0 +1,8 @@
+/**
+ * @file <+FILE+>
+ * @author <+AUTEUR+>
+ * @date <+DATE+>
+ * @version <+VERSION+>
+ * @brief <+DESCRIPTION_COURTE+>
+ *
+ */
diff --git a/vim/.vim/templates/cpp.tpl b/vim/.vim/templates/cpp.tpl
new file mode 100644
index 0000000..0e86285
--- /dev/null
+++ b/vim/.vim/templates/cpp.tpl
@@ -0,0 +1,8 @@
+/**
+ * @file <+FILE+>
+ * @author <+AUTEUR+>
+ * @date <+DATE+>
+ * @version <+VERSION+>
+ * @brief <+DESCRIPTION_COURTE+>
+ *
+ */
diff --git a/vim/.vim/templates/h.tpl b/vim/.vim/templates/h.tpl
new file mode 100644
index 0000000..53a7226
--- /dev/null
+++ b/vim/.vim/templates/h.tpl
@@ -0,0 +1,14 @@
+/**
+ * @file <+FILE+>
+ * @author <+AUTEUR+>
+ * @version <+VERSION+>
+ * @brief <+DESCRIPTION_COURTE+>
+ *
+ * <+DESCRIPTION_LONGUE+>
+ *
+ */
+#ifndef <+HEADER_H+>
+#define <+HEADER_H+>
+
+
+#endif
diff --git a/vim/.vim/templates/html.tpl b/vim/.vim/templates/html.tpl
new file mode 100644
index 0000000..1b18da7
--- /dev/null
+++ b/vim/.vim/templates/html.tpl
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head >
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+<title></title>
+</head>
+<body>
+
+</body>
+</html>
diff --git a/vim/.vim/templates/java.tpl b/vim/.vim/templates/java.tpl
new file mode 100644
index 0000000..7b4f715
--- /dev/null
+++ b/vim/.vim/templates/java.tpl
@@ -0,0 +1,11 @@
+/**
+* @author : <+AUTEUR+>
+* @date : <+DATE+>
+* @version : <+VERSION+>
+*/
+
+package <+NOM_PACKAGE+>;
+
+class <+FILE+> {
+
+}
diff --git a/vim/.vim/templates/py.tpl b/vim/.vim/templates/py.tpl
new file mode 100644
index 0000000..606c45a
--- /dev/null
+++ b/vim/.vim/templates/py.tpl
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Author: <+AUTEUR+>
+# $Id:$
+
diff --git a/vim/.vimrc b/vim/.vimrc
new file mode 100644
index 0000000..e7bace8
--- /dev/null
+++ b/vim/.vimrc
@@ -0,0 +1,365 @@
+"Fichier de configuration perso de VIM
+
+" Enlève la compatibilité avec le "vieux vi"
+set nocompatible
+
+" Affiche la commande que vous êtes en train de taper, le mode en cours, et
+" votre position dans le texte
+set showcmd
+set showmode
+set ruler
+
+" Une petite fenêtre pour voir les complétions possibles
+set wildmenu
+
+"" Indentation
+"Auto-indentation
+"set autoindent
+" Indentation à la C
+"set cindent
+" Indentation intelligente
+set smartindent
+
+" Copie l'indentation lors d'une nouvelle ligne
+set copyindent
+
+" Le terminal a un fond foncé
+set background=dark
+
+" Coloration syntaxique
+syntax on
+
+" Détection automatique du type de fichier & activation des plugins/indentations
+filetype plugin on
+
+" Animation lors de la fermeture des parenthèses
+set showmatch
+
+" Retour à la ligne auto au bout de 80 lignes
+set textwidth=80
+
+" Utilisation de ack a la place de grep
+set grepprg=ack\ -a
+
+" Utilisation de la souris
+set mouse=a
+set nopaste
+
+
+"""""""""""""
+" Options d'affichage
+"""""""""""""
+
+" Surligne la ligne courante
+"set cursorline
+"highlight CursorLine term=reverse cterm=reverse
+
+" Taille des tabs
+set shiftwidth=4
+set softtabstop=4
+set tabstop=4
+
+" Affiche les numéros des lignes
+"set number
+highlight LineNr ctermbg=black ctermfg=gray
+
+" Personnalisation de la barre de status
+set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [Line=%04l]\ [Col=%04v]\ [%p%%]
+set laststatus=2
+
+" Amélioration de la lisibilité des noms des onglets
+highlight TabLine term=none cterm=none
+highlight TabLineSel ctermbg=darkblue
+
+" On ouvre le fichier avec le curseur à la position de la dernière édition
+autocmd BufReadPost * silent! call s:CursorOldPosition()
+
+" Activation de la gestion des ouvertures/fermetures de code
+set foldenable
+" Affichage de "=" sur les pliages
+set fillchars=fold:=
+" Définition de la fonction perso d'affichage du pliage
+set foldtext=MyFoldFunction()
+
+"""""""""""""
+" Dictionnaire
+"""""""""""""
+
+"setlocal spell spelllang=fr
+set spellfile=~/.vim/spellfile.utf-8.add
+
+"""""""""
+" Recherche
+""""""""""
+
+" Recherche insensible à la casse lorsque qu'auncune majuscule n'est utilisée.
+" Les deux options suivantes sont nécéssaires.
+set ignorecase
+set smartcase
+" Recherche incrémentielle
+set incsearch
+
+" Colore les recherches en cours
+set hlsearch
+
+""""""""""
+" Programmation
+""""""""""
+set tags+=~/.vim/ctags/c
+set tags+=~/.vim/ctags/c++
+
+""""""""""
+" Cscope plugin :
+""""""""""
+
+" This tests to see if vim was configured with the '--enable-cscope' option
+" when it was compiled. If it wasn't, time to recompile vim...
+if has("cscope")
+
+ """"""""""""" Standard cscope/vim boilerplate
+
+ " use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t'
+ set cscopetag
+
+ " check cscope for definition of a symbol before checking ctags: set to 1
+ " if you want the reverse search order.
+ set csto=0
+
+ " add any cscope database in current directory
+ if filereadable("cscope.out")
+ cs add cscope.out
+ " else add the database pointed to by environment variable
+ elseif $CSCOPE_DB != ""
+ cs add $CSCOPE_DB
+ endif
+
+ " do NOT show msg when any other cscope db added - annoying as hell
+ set nocscopeverbose
+
+
+ """"""""""""" My cscope/vim key mappings
+ "
+ " The following maps all invoke one of the following cscope search types:
+ "
+ " 's' symbol: find all references to the token under cursor
+ " 'g' global: find global definition(s) of the token under cursor
+ " 'c' calls: find all calls to the function name under cursor
+ " 't' text: find all instances of the text under cursor
+ " 'e' egrep: egrep search for the word under cursor
+ " 'f' file: open the filename under cursor
+ " 'i' includes: find files that include the filename under cursor
+ " 'd' called: find functions that function under cursor calls
+ "
+ " Below are three sets of the maps: one set that just jumps to your
+ " search result, one that splits the existing vim window horizontally and
+ " diplays your search result in the new window, and one that does the same
+ " thing, but does a vertical split instead (vim 6 only).
+ "
+ " I've used CTRL-\ and CTRL-@ as the starting keys for these maps, as it's
+ " unlikely that you need their default mappings (CTRL-\'s default use is
+ " as part of CTRL-\ CTRL-N typemap, which basically just does the same
+ " thing as hitting 'escape': CTRL-@ doesn't seem to have any default use).
+ " If you don't like using 'CTRL-@' or CTRL-\, , you can change some or all
+ " of these maps to use other keys. One likely candidate is 'CTRL-_'
+ " (which also maps to CTRL-/, which is easier to type). By default it is
+ " used to switch between Hebrew and English keyboard mode.
+ "
+ " All of the maps involving the <cfile> macro use '^<cfile>$': this is so
+ " that searches over '#include <time.h>" return only references to
+ " 'time.h', and not 'sys/time.h', etc. (by default cscope will return all
+ " files that contain 'time.h' as part of their name).
+
+
+ " To do the first type of search, hit 'CTRL-\', followed by one of the
+ " cscope search types above (s,g,c,t,e,f,i,d). The result of your cscope
+ " search will be displayed in the current window. You can use CTRL-T to
+ " go back to where you were before the search.
+ "
+
+ nmap <C-@>s :cs find s <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@>g :cs find g <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@>c :cs find c <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@>t :cs find t <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@>f :cs find f <C-R>=expand("<cfile>")<CR><CR>
+ nmap <C-@>i :cs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
+
+
+ " Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type
+ " makes the vim window split horizontally, with search result displayed in
+ " the new window.
+ "
+ " (Note: earlier versions of vim may not have the :scs command, but it
+ " can be simulated roughly via:
+ " nmap <C-@>s <C-W><C-S> :cs find s <C-R>=expand("<cword>")<CR><CR>
+
+ nmap <C-@><C-@>ss :scs find s <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@><C-@>sd :scs find g <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@><C-@>sc :scs find c <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@><C-@>st :scs find t <C-R>=expand("<cword>")<CR><CR>
+ nmap <C-@><C-@>sf :scs find f <C-R>=expand("<cfile>")<CR><CR>
+ nmap <C-@><C-@>si :scs find i ^<C-R>=expand("<cfile>")<CR>$<CR>
+
+
+ """"""""""""" key map timeouts
+ "
+ " By default Vim will only wait 1 second for each keystroke in a mapping.
+ " You may find that too short with the above typemaps. If so, you should
+ " either turn off mapping timeouts via 'notimeout'.
+ "
+ "set notimeout
+ "
+ " Or, you can keep timeouts, by uncommenting the timeoutlen line below,
+ " with your own personal favorite value (in milliseconds):
+ "
+ "set timeoutlen=4000
+ "
+ " Either way, since mapping timeout settings by default also set the
+ " timeouts for multicharacter 'keys codes' (like <F1>), you should also
+ " set ttimeout and ttimeoutlen: otherwise, you will experience strange
+ " delays as vim waits for a keystroke after you hit ESC (it will be
+ " waiting to see if the ESC is actually part of a key code like <F1>).
+ "
+ "set ttimeout
+ "
+ " personally, I find a tenth of a second to work well for key code
+ " timeouts. If you experience problems and have a slow terminal or network
+ " connection, set it higher. If you don't set ttimeoutlen, the value for
+ " timeoutlent (default: 1000 = 1 second, which is sluggish) is used.
+ "
+ "set ttimeoutlen=100
+
+endif
+
+""""""""""
+" Fonctions d'affichage tirées de GLMF
+""""""""""
+
+" Affichage en inverse couleur
+function! s:DisplayStatus(msg)
+ echohl Todo
+ echo a:msg
+ echohl None
+endfunction
+
+"" Fonctions de gestion de la souris
+"Enregistrement de l'état de la gestion de la souris
+let s:mouseActivate = 1
+"Fonction permettant l'activation/désactivation de la gestion de la souris
+function! ToggleMouseActivate()
+ if (s:mouseActivate)
+ let s:mouseActivate = 0
+ set mouse=n
+ set paste
+ call s:DisplayStatus('Désactivation de la gestion de la souris (mode collage)')
+ else
+ let s:mouseActivate = 1
+ set mouse=a
+ set nopaste
+ call s:DisplayStatus('Activation de la gestion de la souris (mode normal)')
+ endif
+endfunction
+
+"" Fonction de "nettoyage" d'un fichier :
+" - Suppression des ^M en fin de ligne
+" - Encodage UTF-8
+function! ClearCode()
+ set fileformat=unix
+ set fileencoding=utf-8
+ call s:DisplayStatus('Code nettoyé')
+endfunction
+
+"" Déplacement de l'onglet courant vers la g ou la d
+function! MoveTab(direction)
+ if (a:direction == 'left')
+ let tabNum = tabpagenr()-2
+ if(tabNum < 0)
+ let tabNum = 0
+ endif
+ execute 'tabm' . tabNum
+ else
+ let tabNum = tabpagenr()
+ execute 'tabm' . tabNum
+ endif
+endfunction
+
+"" Ouverture des fichiers avec le curseur à la position de la dernière édition
+function! s:CursorOldPosition()
+ if line("'\"") > 0 && line("'\"") <= line("$")
+ exe "normal g`\""
+ end if
+endfunction
+
+"" Affichage personnalisé des replis de code
+function! MyFoldFunction()
+ let line = getline(v:foldstart)
+ let sub = substitute(line, '/\*\|\*/\|^\s+', '', 'g')
+ let lines = v:foldend - v:foldstart + 1
+ return '[+] ' . v:folddashes.sub . '...' . lines . 'lignes...' .
+ getline(v:foldend)
+endfunction
+
+
+" Activation des templates lors de la création d'un nouveau fichier, et
+" chargement des abbreviations et des commandes Vim spécifiques
+function! LoadTemplate(extension, type)
+ if (a:type == 'all')
+ silent! execute '0r ' . $HOME . '/.vim/templates/' . a:extension . '.tpl'
+ silent! execute 'source ' . $HOME . '/.vim/templates/autocompletion.vim'
+ endif
+ " Insertion des abbreviations
+ silent! execute 'source ' . $HOME . '/.vim/abbreviations/' . a:extension . '.abb.vim'
+ " Insertion du dictionnaire
+ set dictionary+=$HOME . '/.vim/dictionary/' . a:extension . '.dict'
+ " Insertion des commandes spécifiques Vim
+ silent! execute 'source ' . $HOME . '/.vim/specific/' . a:extension . '.vim'
+endfunction
+
+" Activation des templates et des chargements spécifiques en fonction de
+" l'extenion du fichier chargé
+autocmd BufNewFile * silent! call LoadTemplate('%:e', 'all')
+autocmd BufRead * silent! call LoadTemplate('%:e', 'noTemplate')
+
+" Surlignement des champs à remplir dans les templates
+3match Todo /<+.\++>/
+
+"" Aide mémoire
+" Variable indiquant l'état de l'affichage de l'aide
+let helpDisplay = 0
+" Affiche/Masque l'aide
+function! HelpMemory()
+ if g:helpDisplay == 0
+ silent! topleft vertical 40split +buffer helpMemory
+ let g:helpDisplay = 1
+ set buftype=nofile
+ 0read $HOME/.vim/memory.txt
+ highlight Memory ctermfg=white ctermbg=blue
+ "3match Memory /^.\+\ \+:/
+ 3match Memory /<.\+>/
+ else
+ bdelete helpMemory
+ let g:helpDisplay = 0
+ endif
+endfunction
+
+" Affiche/Masque les caracteres
+function! DisplayChar()
+ set list! lcs=tab:\|_,eol:¶,nbsp:~
+endfunction
+
+" Surligne les lignes trop longues
+" Variable indiquant l'état
+let hlTooLarge = 0
+function! HlTooLarge()
+ if g:hlTooLarge == 0
+ let g:hlTooLarge = 1
+ highlight OverLength ctermbg=red ctermfg=white guibg=#592929
+ match OverLength /\%81v.\+/
+ else
+ match
+ let g:hlTooLarge = 0
+ endif
+endfunction
+
+
+" Lecture des raccourcis claviers généraux
+source $HOME/.vim/shortkeys.vim