diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..d7a8ec7 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "vim/bundle/Vundle.vim"] + path = vim/bundle/Vundle.vim + url = https://github.com/VundleVim/Vundle.vim.git diff --git a/bin/backup.git.sh b/bin/backup.git.sh index 3a582c1..cbb33ac 100755 --- a/bin/backup.git.sh +++ b/bin/backup.git.sh @@ -1,3 +1,5 @@ +#!/bin/bash + CD=cd DATE=/bin/date TAR=/bin/tar @@ -48,7 +50,7 @@ for FILE in `ls -t git.*.tar.bz2.gpg`; do echo "$FILE is removed to meet keep number of backups $KEEP." | tee -a $LOG rm $FILE 2>&1| tee -a $LOG fi; - i=`expr $i + 1` + i=$(($i+1)) done i=0 for FILE in `ls -t git.*.tar.bz2.sig`; do @@ -56,7 +58,7 @@ for FILE in `ls -t git.*.tar.bz2.sig`; do echo "$FILE is removed to meet keep number of backups $KEEP." | tee -a $LOG rm $FILE 2>&1| tee -a $LOG fi; - i=`expr $i + 1` + i=$(($i+1)) done # # Footer diff --git a/bin/backup.mybook.public.sh b/bin/backup.mybook.public.sh deleted file mode 100755 index 09256f9..0000000 --- a/bin/backup.mybook.public.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -DATE=/bin/date -SYNC=/usr/bin/rsync -auAXv --delete -TIMESTAMP=`$DATE +%Y%m%d-%H:%M%z` - -LOG=/mnt/hdd/backup/backup.mybook.public.$TIMESTAMP.log -echo Starting $LOG | tee -a $LOG -echo start `$DATE` | tee -a $LOG -$SYNC /mnt/mybook/Public/_captured_MY_VIDEO /mnt/hdd/public/ | tee -a $LOG -$SYNC /mnt/mybook/Public/pix /mnt/hdd/public/ | tee -a $LOG -#$SYNC /mnt/mybook/Public/music/* /mnt/hdd/public/ | tee -a $LOG -$SYNC /mnt/mybook/Public/books /mnt/hdd/public/ | tee -a $LOG -$SYNC /mnt/mybook/Public/map /mnt/hdd/public/ | tee -a $LOG -$SYNC /mnt/mybook/Public/src /mnt/hdd/public/ | tee -a $LOG -echo end `$DATE` | tee -a $LOG - diff --git a/bin/backup.mybook.vahagn.sh b/bin/backup.mybook.vahagn.sh index f463032..0b0bd42 100755 --- a/bin/backup.mybook.vahagn.sh +++ b/bin/backup.mybook.vahagn.sh @@ -1,12 +1,12 @@ #!/bin/bash DATE=/bin/date -SYNC=/usr/bin/rsync -auAXv --delete +SYNC="/usr/bin/rsync -auAX --delete" TIMESTAMP=`$DATE +%Y%m%d-%H:%M%z` LOG=/mnt/hdd/backup/backup.mybook.vahagn.$TIMESTAMP.log echo Starting $LOG | tee -a $LOG echo start `$DATE` | tee -a $LOG -$SYNC /mnt/mybook/vahagn /mnt/hdd/ | tee -a $LOG +$SYNC /mnt/mybook/vahagn /mnt/hdd/backup | tee -a $LOG echo end `$DATE` | tee -a $LOG diff --git a/bin/socks5_on_1080.sh b/bin/socks5_on_1080.sh deleted file mode 100755 index a4cf1ce..0000000 --- a/bin/socks5_on_1080.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -ssh -f -N -D 192.168.0.3:1080 yerevak.vostan.org diff --git a/config/.bashrc b/config/.bashrc index 531d9f0..e444b75 100755 --- a/config/.bashrc +++ b/config/.bashrc @@ -41,6 +41,23 @@ kversion=`uname -v` krelease=`uname -r` hostnm=`hostname` +# =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= +# +# Bash history +# + +# don't put duplicate lines or lines starting with space in the history. +# See bash(1) for more options +HISTCONTROL=ignoreboth +# append to the history file, don't overwrite it +shopt -s histappend +# for setting history length see HISTSIZE and HISTFILESIZE in bash(1) +HISTSIZE=1000 +HISTFILESIZE=5000 +# check the window size after each command and, if necessary, +# update the values of LINES and COLUMNS. +shopt -s checkwinsize + # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # # Terminal colors if interactive @@ -109,12 +126,13 @@ if [ -n "$PS1" ]; then # # Colors should be set here and surrounded with \[\]otherwise bash fails to # calculate prompt length. The text is set through PROMPT_COMMAND - PS1="\[$c_user\]\u@\h: \[$c_cwd\]\w" # username@host: working_dir + PS1="\[$c_user\]\u@\h:" # username@host: + PS1+="\[$c_time\]\t" # time + PS1+=" \[$c_cwd\]\w" # working_dir PS1+="\[$c_branch\]\$git_text" # git branch PS1+="\[$c_branch\]\$svn_text" # svn revision PS1+="\[$c_exit\]\$exit_text" # exit status of last command PS1+="\[$c_jobs\]\$jobs_text" # background/suspended jobs - PS1+=" \[$c_time\]\t" # time PS1+="\[$c_reset\]\$ " # reset colors and print $ export PROMPT_COMMAND="__prompt_command; $PROMPT_COMMAND" @@ -175,92 +193,139 @@ fi # # User specific environment and startup programs # -if [ $kernel == Linux ]; then + +# +# Set my paths. +# +if [ -e $HOME/local ]; then + MYLOCAL=$HOME/local +elif [ $kernel == Linux ] && [ -e $HOME/local-lnx ]; then MYLOCAL=$HOME/local-lnx -elif [ $kernel == SunOS ]; then +elif [ $kernel == SunOS ] && [ -e $HOME/local-sun ]; then MYLOCAL=$HOME/local-sun fi +if [ -e $MYLOCAL/bin ]; then + export PATH=$MYLOCAL/bin:$PATH +fi + MYSCRIPTS=$HOME/devel/scripts -PATH=$MYLOCAL/bin:$PATH -PATH=$MYSCRIPTS/bin:$PATH +if [ -e $MYSCRIPTS/bin ]; then + export PATH=$MYSCRIPTS/bin:$PATH +fi # # VIM # export EDITOR=vim +# +# enable programmable completion features (you don't need to enable +# this, if it's already enabled in /etc/bash.bashrc and /etc/profile +# sources /etc/bash.bashrc). +# +if ! shopt -oq posix; then + if [ -f /usr/share/bash-completion/bash_completion ]; then + . /usr/share/bash-completion/bash_completion + elif [ -f /etc/bash_completion ]; then + . /etc/bash_completion + fi +fi + # # GIT # [ -f $MYSCRIPTS/bash/git-completion.bash ] && . $MYSCRIPTSE/bash/git-completion.bash # -# GCC +# colored GCC warnings and errors # -#if [ -e /depot/gcc-4.7.2/bin ]; then -# PATH=/depot/gcc-4.7.2/bin:$PATH -# LD_LIBRARY_PATH=/depot/gcc-4.7.2/lib64:$LD_LIBRARY_PATH -#elif [ -e /depot/gcc-4.7.0/bin ]; then -# PATH=/depot/gcc-4.7.0/bin:$PATH -# LD_LIBRARY_PATH=/depot/gcc-4.7.0/lib64:$LD_LIBRARY_PATH -#elif [ -e /depot/gcc-4.5.2/bin ]; then -# PATH=/depot/gcc-4.5.2/bin:$PATH -# LD_LIBRARY_PATH=/depot/gcc-4.5.2/lib64:$LD_LIBRARY_PATH -#fi - -# -# GDB -# -#prepath /depot/gdb-7.5.1/bin - -# -# VTune Amplifier -# -#export INTEL_LICENSE_FILE=28518@us01-lic10:28518@us01-lic11:28518@us01-lic12:28518@tyndall -#alias vtune=/depot/vtune_amplifier_xe_2013_update5/bin64/amplxe-gui - -# -# PURIFY and all. -# -#postpath /depot/coverity/swat/bin -#export RSU_TEMPLATE2_INI=/depot/pure/templates2.ini -#export RSU_LICENSE_MAP=/depot/pure/PurifyPlus_License_Map -#export PURECOVOPTIONS="-force-rebuild=no -log-file=./%v.%p.log -counts-file=./%v.%p.pcv -windows=no" -#export PUREOPTIONS="-force-rebuild=no -always-use-cache-dir=yes -cache-dir=$HOME/tmp/pure_cache" -#export QUANTIFYOPTIONS="-force-rebuild=no -always-use-cache-dir=yes -cache-dir=$HOME/tmp/pure_cache" -#export LD_LIBRARY_PATH=$HOME/prj/fw/rmain/3pty/qt/4.7.2/amd64/lib:$LD_LIBRARY_PATH -#alias purecov="/depot/swe/a2007.12/bin/purecov" -#alias quantify"/depot/swe/a2007.12/bin/quantify" - -# -# Make sure to export PATH -# -export PATH -export HISTFILESIZE=5000 # Store 5000 commands in history -export HISTCONTROL=ignoredups # Don't put duplicate lines in the history. +export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01' # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # # Aliases # if [ $kernel == AIX ]; then - alias l='ls -a' alias ls='ls -a' alias ll='ls -la' alias pd='pushd >/dev/null' alias bd='popd' else - alias l='ls -a --color=tty' - alias ls='ls -a --color=tty' - alias ll='ls -la --color=tty' + alias ls='ls -a --color=auto' + alias ll='ls -la --color=auto' alias pd='pushd >/dev/null' alias bd='popd' + alias grep='grep --color=auto' + alias fgrep='fgrep --color=auto' + alias egrep='egrep --color=auto' fi -alias cgrep="grep --include \*.cpp --include \*.h --include \*.c" + +function cgrep() { + if [[ $# -eq 0 ]] + then + echo "Usage: codegrep " + else + grep -nR --colour \ + --include=\*.cpp \ + --include=\*.c \ + --include=\*.hpp \ + --include=\*.h \ + --include=\*.inc \ + --include=\*.php \ + --include=\*.py \ + --include=\*.sh \ + --exclude-dir=.git \ + --exclude-dir=.svn \ + --exclude-dir=llcalc* \ + --exclude-dir=00* \ + "$1" . + fi +} + + +function create_tags() { + #Bloomberg + if [ -e /opt/swt/bin/ctags ]; then + CTAGS=/opt/swt/bin/ctags + else + CTAGS=ctags + fi + CTAGS_OPT='--recurse=yes ' + CTAGS_OPT+='--verbose ' + CTAGS_OPT+='--totals=yes ' + CTAGS_OPT+='--tag-relative=yes ' + + CTAGS_DIR_CFG='.ctags_dir' + CTAGS_ROOT="$PWD" + if [ ! -f $PWD/$CTAGS_DIR_CFG ]; then + GIT_ROOT=$(git top pwd) + if [ -f $GIT_ROOT/$CTAGS_DIR_CFG ]; then + CTAGS_ROOT="$GIT_ROOT" + fi + fi + + if [ -f $CTAGS_ROOT/$CTAGS_DIR_CFG ]; then + CTAGS_SRC="-L $CTAGS_ROOT/$CTAGS_DIR" + else + CTAGS_SRC="$@" + fi + + cd $CTAGS_ROOT + $CTAGS $CTAGS_OPT $CTAGS_SRC + cd - +} + +# Add an "alert" alias for long running commands. Use like so: +# sleep 10; alert +alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"' # =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= # # Run local settings. # -[ -f $PWD/.bashrc.local ] && . $PWD/.bashrc.local +[ -x $HOME/.bashrc.local ] && . $HOME/.bashrc.local +# +# Clean error level. +# +[ 1 ] diff --git a/config/.ctags b/config/.ctags index 36b03aa..f41233b 100644 --- a/config/.ctags +++ b/config/.ctags @@ -1,5 +1,24 @@ -# Basic options ---recurse=yes +--verbose --tag-relative=yes ---exclude=.git - +--exclude=.git* +--exclude=.doxygen +--exclude=*.o +--exclude=*.d +--exclude=*.a +--exclude=*.so +--exclude=*.tsk +--exclude=*.cap +--exclude=*.defs +--exclude=*.dep +--exclude=*.mem +--exclude=*.opts +--exclude=*.pub +--exclude=*.txt +--exclude=*.swp +--exclude=*.swo +--exclude=*.swn +--exclude=build +--exclude=llcalc* +--exclude=ported.* +--exclude=00* +--exclude=*plink* diff --git a/config/.gitconfig b/config/.gitconfig index 71f9342..ebf136e 100644 --- a/config/.gitconfig +++ b/config/.gitconfig @@ -7,13 +7,13 @@ [push] default = simple [alias] - tree = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold cyan)<%an>%Creset' --abbrev-commit --date=relative - drqs = "!f(){ git checkout -b feature/DRQS$1; }; f" - svnsync = "!f(){ git co master && git pull && ssh devgit svnsync $(git config --get remote.origin.url | cut -d : -f 2 );}; f" + tree = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold cyan)<%an>%Creset' --abbrev-commit --date=relative + top = "!f() { GIT_TOP=\"${GIT_DIR%%/.git/modules/*}\"; [ \".$GIT_TOP\" != \".$GIT_DIR\" ] && cd \"$GIT_TOP\"; exec \"$@\"; }; f" st = status br = branch co = checkout ci = commit + svnsync = "!f(){ git co master && git pull && ssh devgit svnsync $(git config --get remote.origin.url | cut -d : -f 2 );}; f" [merge] tool = vimdiff conflictstyle = diff3 @@ -23,3 +23,5 @@ path = ~/.gitconfig.local [core] excludesfile = ~/.gitignore.global +[credentail] + helper = cache diff --git a/config/.tmux.conf b/config/.tmux.conf index 65ad295..d516468 100644 --- a/config/.tmux.conf +++ b/config/.tmux.conf @@ -10,7 +10,7 @@ set -g base-index 1 # Status bar is on top. set -g status-position top -set -g status-utf8 on +#set -g status-utf8 on # Keep this much of history per window. set -g history-limit 100000 @@ -23,8 +23,8 @@ setw -g xterm-keys on set -g status-keys vi setw -g mode-keys vi # Setup 'v' to begin selection as in Vim -bind-key -t vi-copy v begin-selection -bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy" +#bind-key -t vi-copy v begin-selection +#bind-key -t vi-copy y copy-pipe "reattach-to-user-namespace pbcopy" # Update default binding of 'Enter' to also use copy-pipe #unbind -t vi-copy Enter #bind-key -t vi-copy Enter copy-pipe "reattach-to-user-namespace pbcopy" @@ -41,21 +41,21 @@ bind l select-pane -R #bind -r C-l resize-pane -R #No mouse -set -g mode-mouse off -set -g mouse-select-pane off -set -g mouse-resize-pane off -set -g mouse-select-window off +#set -g mode-mouse off +#set -g mouse-select-pane off +#set -g mouse-resize-pane off +#set -g mouse-select-window off -bind m \ - set -g mode-mouse on \;\ - set -g mouse-resize=pane on \;\ - set -g mouse-select-pane on \;\ - set -g mouse-select-window on \;\ - display 'Mouse: ON' -bind M \ - set -g mode-mouse off \;\ - set -g mouse-resize=pane off \;\ - set -g mouse-select-pane off \;\ - set -g mouse-select-window off \;\ - display 'Mouse: OFF' +# bind m \ +# set -g mode-mouse on \;\ +# set -g mouse-resize=pane on \;\ +# set -g mouse-select-pane on \;\ +# set -g mouse-select-window on \;\ +# display 'Mouse: ON' +# bind M \ +# set -g mode-mouse off \;\ +# set -g mouse-resize=pane off \;\ +# set -g mouse-select-pane off \;\ +# set -g mouse-select-window off \;\ +# display 'Mouse: OFF' diff --git a/vim/bundle/Vundle.vim b/vim/bundle/Vundle.vim new file mode 160000 index 0000000..9a38216 --- /dev/null +++ b/vim/bundle/Vundle.vim @@ -0,0 +1 @@ +Subproject commit 9a38216a1c0c597f978d73547d37681fc689c90d diff --git a/vim/plugin/cf5-compile.vim b/vim/plugin/cf5-compile.vim deleted file mode 100755 index cca8e4c..0000000 --- a/vim/plugin/cf5-compile.vim +++ /dev/null @@ -1,312 +0,0 @@ -" Copyright (c) 2014 Vahagn Khachatryan -" -" Permission is hereby granted, free of charge, to any person obtaining a copy -" of this software and associated documentation files (the "Software"), to deal -" in the Software without restriction, including without limitation the rights -" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -" copies of the Software, and to permit persons to whom the Software is -" furnished to do so, subject to the following conditions: -" -" The above copyright notice and this permission notice shall be included in -" all copies or substantial portions of the Software. -" -" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -" THE SOFTWARE. -" -" Name: cf5-compile.vim -" Version: 1.0.1 -" Authors: Vahagn Khachatryan -" -" Licence: http://www.opensource.org/licenses/mit-license.php -" The MIT License -" -" Summary: Vim plugin to compile the edited files and run it. -" -" Description: -" Functions to compile/link and run a single c/cpp/java/..etc -" file based programs. It's irreplaceable for small tests or -" experiments. -" -" How To Use -" -------------- -" Put this file into vim plugin directory. For linux users should -" be $HOME/.vim/plugin. -" In your .vimrc file add -" -" map :call CF5Compile(1) -" map :call CF5Compile(0) -" -" This will allow Ctrl-F5 to "compile and run" and F5 to only -" "compile" the file. Please, note that "filetype" is used to -" define the compiler/interpreter used. -" -" The value of the following variables are used while compiling -" a file: -" g:argv - command line arguments to pass to program. -" g:pyflags - flags to pass to python interpreter. -" g:cppflags - flags to pass to c++ compiler. -" g:wcppflags - flags to pass to (windows) compiler. -" g:lcppflags - flags to pass to (linux) compiler. -" g:ldflags - flags to pass to linker. -" g:ldlibpath - paths to add to PATH or LD_LIBRARY_PATH. -" -" I personally use this script with let-modeline.vim. The last -" allows to define some of compiler options right in the file. For -" example I have the following header in some of my cpp files: -" /* -" VIM: let g:lcppflags="-std=c++11 -O2 -pthread" -" VIM: let g:wcppflags="/O2 /EHsc /DWIN32" -" VIM: let g:cppflags=g:Iboost.g:Itbb -" VIM: let g:ldflags=g:Lboost.g:Ltbb.g:tbbmalloc.g:tbbmproxy -" VIM: let g:ldlibpath=g:Bboost.g:Btbb -" VIM: let g:argv="" -" */ -" -" You might also consider using independence.vim or localvimrc.vim -" in order to configure the plugin for a particular directory. -" -" Enjoy. -" -if exists('g:loaded_cf5_compiler') - finish -endif -let g:loaded_cf5_compiler = 1 - -" -" Init global variables with default values. -" -let g:argv="" -let g:flags="" -let g:pyflags="" -let g:cppflags="" -let g:wcppflags="/O2 /EHsc /DWIN32" -let g:lcppflags="-O2" -let g:ldflags="" -let g:wldflags="" -let g:ldlibpath="" -" -" This is an experimental option. -" =0 - no output window opened. -" =1 - output window opened. -" -let g:cf5output=0 - -" -" Microsoft Visual C++ -" -function! s:CompileMSVC(run) "{{{2 - let exename=expand("%:p:r:s,$,.exe,") - let srcname=expand("%") - " compile it - let ccline="cl ".g:cppflags." ".g:wcppflags." ".srcname." /Fe".exename." /link ".g:ldflags. " ".g:wldflags - echo ccline - let cout = system( ccline ) - if v:shell_error - echo cout - return - endif - echo cout - " run it - if a:run==1 - let en = "set PATH=\"".g:ldlibpath."%PATH%\"" - let cmdline=exename." ".g:argv - let cont = [ en, cmdline ] - let tf = tempname() - let tf = fnamemodify( tf, ":p:r") - let tf = tf.".bat" - call writefile( cont, tf ) - - let eout = system( tf ) - echo eout - - call delete( tf ) - endif -endfunction - -" -" GCC -" -function! s:CompileGCC(run) "{{{2 - let exename=expand("%:p:r:s,$,.exe,") - let srcname=expand("%") - " compile it - let ccline="g++ ".g:cppflags." ".g:lcppflags." ".g:ldflags." ".srcname." -o".exename - call s:appendOutput(ccline) - let cout = system( ccline ) - if v:shell_error - call s:appendOutput(cout) - return - endif - call s:appendOutput(cout) - " run it - if a:run == 1 - let $LD_LIBRARY_PATH="LD_LIBRARY_PATH=".g:ldlibpath.":".$LD_LIBRARY_PATH - let cmdline=exename." ".g:argv - call s:appendOutput(cmdline) - let eout = system( cmdline ) - call s:appendOutput(eout) - endif -endfunction - -function! s:CompileJava(run) "{{{2 - " compile it - let cmd = "javac " . g:javaflags . " " . expand("%") - echo cmd - let cout = system( cmd ) - echo cout - if v:shell_error - return - endif - " run it - "let classpath=expand("%:p:r") - let exename=expand("%:r") - let cmd = "java " . exename . " " . g:argv - echo cmd - let eout = system( cmd ) - echo eout -endfunction - -function! s:InterpretPython(run) - " Interpret it - let cmd = "python " . g:pyflags . " " . expand("%") . ' ' . g:argv - echo cmd - let cout = system( cmd ) - echo cout - if v:shell_error - return - endif -endfunction - -function! s:InterpretMatlab(run) - " Interpret it - let cmd = "octave " . g:flags . " " . expand("%") . ' ' . g:argv - echo cmd - let cout = system( cmd ) - echo cout - if v:shell_error - return - endif -endfunction - -function! s:Compile(run) - if &filetype=="c" || &filetype=="cpp" - if has("win32") || has("win64") - call s:CompileMSVC(a:run) - else - call s:CompileGCC(a:run) - endif - endif - if &filetype=="python" - call s:InterpretPython(a:run) - endif - if &filetype=="java" - call s:CompileJava(a:run) - endif - if &filetype=="matlab" - call s:InterpretMatlab(a:run) - endif -endfunction - -" -" Output Window {{{1 -" -" Create output window. {{{2 -" -function! s:getOutputWindow() - if !exists("w:outputwin") - let w:outputwin=tempname().'_output' - endif - let obuff = w:outputwin - - let winnr = bufwinnr('^'.obuff.'$') - - if (winnr < 0) - execute "below 10new ".obuff - setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap - " setlocal nomodifiable - let winnr = bufwinnr('^'.obuff.'$') - endif - - return winnr -endfunction -" -" Append text to output window. {{{2 -" -function! s:appendOutput( text ) - if exists("g:cf5output") && (g:cf5output==1) - let cwinnr = winnr() - let owinnr = s:getOutputWindow() -" setlocal modifiable - execute owinnr . 'wincmd w' - execute 'normal! Go'.a:text -" setlocal nomodifiable - execute cwinnr.'wincmd w' - else - echo a:text - endif -endfunction -" -" Clear text from output window. {{{2 -" -function! s:clearOutputWindow() - if exists("g:cf5output") && (g:cf5output==1) - let cwinnr = winnr() - let owinnr = s:getOutputWindow() -" setlocal modifiable - execute owinnr . 'wincmd w' - execute 'normal ggdG' -" setlocal nomodifiable - execute cwinnr . 'wincmd w' - endif -endfunction - -"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" -" Public interface. -"" - -" -" Load compile instructions and call window or linux compiler. {{{1 -" -function! CF5Compile(run) - " - " Interpreters and compilers don't work with buffers, but ratter they run - " on files. So, make sure that the file is updated. - " - if &modified == 1 - echo "The buffer is not saved. First save it." - return - endif - " - " Set source specific compiler options. - " let-modeline.vim should be loaded for FirstModeLine. - " - if exists('*FirstModeLine') - call FirstModeLine() - endif - " - " Clear output window - " - call s:clearOutputWindow() - " - " Compile. - " - call s:Compile(a:run) -endfunction -" -" Load compile instructions and call window or linux compiler. -" -function! CF5CompileAndRun() - call CF5Compile(1) -endfunction -" -" Load compile instructions and call window or linux compiler. -" -function! CF5CompileOnly() - call CF5Compile(0) -endfunction - diff --git a/vim/plugin/let-modeline.vim b/vim/plugin/let-modeline.vim deleted file mode 100755 index d216139..0000000 --- a/vim/plugin/let-modeline.vim +++ /dev/null @@ -1,234 +0,0 @@ -" example -> VIM: let b:toto="foo" g:tata=4 g:egal="t=y".&tw -" =========================================================================== -" File: let-modeline.vim {{{1 -" Author: Luc Hermitte -" -" URL: http://hermitte.free.fr/vim/ressources/dollar_VIM/plugin/let-modeline.vim -" Version: 1.6 -" Last Update: 23rd Mar 2004 -" -" Purpose: {{{2 -" Defines the function : FirstModeLine() that extends the VIM modeline -" feature to variables. In VIM, it is possible to set options in the -" first and last lines. -> :h modeline -" The function proposed extends it to 'let {var}={val}' affectations. -" -" Exemples Of Useful Aplications: {{{2 -" Typical Example: {{{3 -" When editing a LaTeX document composed of several files, it is very -" practical to know the name of the main file whichever file is edited -- -" TKlatex does this thanks the global variable g:TeXfile. Hence it knows -" that latex should be called on this main file ; aux2tags.vim could also -" be told to compute the associated .aux file. -" Anyway. Defining (through menus or a let command) g:TeXfile each time is -" really boring. It bored me so much that I programmed a first version of -" this script. In every file of one of my projects I added the line : -" % VIM: let g:TeXfile=main.tex -" [main.tex is the name of the main file of the project] -" Thus, I can very simply call LaTeX from within VIM without having to -" wonder which file is the main one nor having to specify g:TeXfile each -" time. -" -" Using Callback Functions: {{{3 -" Actually, in order to affect g:TeXfile, I have to call another function. -" Hence, I define a callback function (in my (La)TeX ftplugin) that checks -" whether I want to set g:TeXfile. In that case, the callback function -" calls the right function and return true. Otherwise, it returns false. -" You will find the code of this precise callback function as an example at -" the end of this file. -" -" Tune C Compilations: {{{3 -" An easy way to tune the parameters of the compilation of simple programs -" without having to maintain a makefile: -" // VIM: let $CPPFLAGS='-I../../libs': -" -" --------------------------------------------------------------------------- -" Format: {{{2 -" On the _first_ line of any file, the extended modeline format is: -" {line} ::= [text]{white}VIM:[white]let{affectations} -" {affectations} ::= {sgl_affect.} -" {affectations} ::= {sgl_affect.}{white}{affectations} -" {sgl_affect.} ::= {variable}[white]=[white]{value} -" {variable} ::= cf. vim variable format ; beware simple -" variables (other than global-, buffer-, -" or window-variables) are not exported. -" Can also be an environment variable -> $VAR. -" {value} ::= string or numeral value : no function -" call allowed. -" -" Options: {{2 -" (*) 'modeline' : vim-option that must be set to 1 -" (*) 'modelines': vim-option corrsponding to the number of lines -" searched. -" (*) b:ModeLine_CallBack(var,val) : callback function -" Enable to define callback functions when needed. cf. lhlatex.vim -" -" Installation: {{{2 -" (*) Drop the file into your $$/plugin/ or $$/macros/ folder. -" (*) Source it from your .vimrc and add the autocommand: -" " Loads FirstModeLine() -" if !exists('*FirstModeLine') -" " :Runtime emules :runtime with VIM 5.x -" Runtime plugin/let-modeline.vim -" endif -" if exists('*FirstModeLine') -" aug ALL -" au! -" " To not interfer with Templates loaders -" au BufNewFile * :let b:this_is_new_buffer=1 -" " Modeline interpretation -" au BufEnter * :call FirstModeLine() -" aug END -" endif -" -" -" Remarks: {{{2 -" (*) The only way to call a function is through the callback feature. -" Affectation like 'let g:foo="abc".DEF()' are recognized and -" forbiden. -" (*) The modeline is recognized thanks to "VIM" in that *must* be in -" uppercase letters -" -" Changes: {{{2 -" v1.6: Support for environment variables. -" vim 6.x only -" Doesn't check into folded lines anymore -" v1.5: Check that the format of the variables and values is correct -" before it tries to set the variables -> no more error messages -" when using 2html.vim. -" v1.4: With Vim 6.x, it doesn't mess anymore with the search history -" v1.3: Parse several lines according to &modelines and &modeline -" v1.2: no-reinclusion mecanism -" v1.1b: extend variable names to accept underscores -" -" Todo: {{{2 -" (*) Enforce the patterns and the resulting errors -" (*) Permit to have comments ending characters at the end of the line. -" (*) Simplify the regexps -" -" }}}1 -" =========================================================================== -" Definitions: {{{1 -if exists("g:loaded_let_modeline") | finish | endif -let g:loaded_let_modeline = 1 - -" Internal function dedicated to the recognition of function calls {{{2 -function! s:FoundFunctionCall(value_str) - let str = substitute(a:value_str, '"[^"]*"', '', 'g') - let str = substitute(str, "'[^']*'", '', 'g') - return match(str, '(.*)') != -1 -endfunction - -" Internal function dedicated to the parsing of a line {{{2 -function! FML_parse_line(mtch) - " call confirm('Find:'.a:mtch, '&ok', 1) - if a:mtch !="" - let mtch = a:mtch - let re_var = '\s\+\([[:alnum:]:_$]\+\)' - " beware the comments ending characters - let re_val = '\(\%(' . "'[^']*'" . '\|"[^"]*"\|[-a-zA-Z0-9:_.&$]\)\+\)$' - let re_other = '^\(.\{-}\)' - let re_sub = re_other . re_var . '\s*=\s*' . re_val - while strlen(mtch) != 0 - let vari = substitute( mtch, re_sub, '\2', '' ) - let valu = substitute( mtch, re_sub, '\3', '' ) - " call confirm('regex: '.re_sub."\nmtch: <<".mtch.">>\nvar: ".vari."\nval: ".valu, '&ok', 1) - if (vari !~ '^[[:alnum:]:_$]\+$') || (valu !~ re_val) - return - endif - " Check : no function ! - if s:FoundFunctionCall(valu) - echohl ErrorMsg - echo "Find a function call in the affectation : let " . vari . " = " . valu - echohl None - return - endif - let mtch = substitute( mtch, re_sub, '\1', '' ) - ""echo vari . " = " . valu . " --- " . mtch . "\n" - " call confirm('vari: '.vari.' = '.valu." --- " . mtch, '&Ok', 1) - if exists("b:ModeLine_CallBack") - exe 'let res = '. b:ModeLine_CallBack . '("'.vari.'","'.valu.'")' - if res == 1 | return | endif - endif - " Else - execute "let " . vari . " = " . valu - endwhile - endif -endfunction - -" Internal function dedicated searching the matching lines {{{2 -function! s:Do_it_on_range(first, last) - " let modeline_pat = '[vV][iI][mM]\d*:\s*let\s*\zs.*$' - let modeline_pat = '[vV][iI][mM]\d*:\s*let\zs.*$' - if &verbose >= 2 " {{{ - echo "\n->"a:first.','.a:last. 'g/'.modeline_pat. - \ '/:call FML_parse_line(matchstr(getline("."),"'. - \ escape(modeline_pat, '\\') .'"))' - endif " }}} - let s:save_fold_enable= &foldenable - set nofoldenable - if exists(':try') - try - silent execute a:first.','.a:last. 'g/'.modeline_pat. - \ '/:call FML_parse_line(matchstr(getline("."),"'. - \ escape(modeline_pat, '\\') .'"))' - " Purge the history for the search pattern just used. - call histdel('search', -1) - finally - let &foldenable = s:save_fold_enable - endtry - else " Older versions of Vim - silent execute a:first.','.a:last. 'g/'.modeline_pat. - \ '/:call FML_parse_line(matchstr(getline("."),"'. - \ escape(modeline_pat, '\\') .'"))' - " Purge the history for the search pattern just used. - call histdel('search', -1) - let &foldenable = s:save_fold_enable - endif -endfunction - -" The main function {{{2 -function! FirstModeLine() - if !&modeline | return | endif - let pos = line('.') . 'normal! ' . virtcol('.') . '|' - let e1 = 1+&modelines-1 - let b2 = line('$') - &modelines+1 - " call confirm('e1='.e1."\nb2=".b2, '&ok', 1) - if e1 >= b2 - call s:Do_it_on_range(1, line('$')) - else - call s:Do_it_on_range(1, e1) - call s:Do_it_on_range(b2, line('$')) - endif - if !exists('b:this_is_new_buffer') - exe pos - else - unlet b:this_is_new_buffer - endif - " call confirm('fini!', '&ok', 1) -endfunction - -" }}}2 - -" }}}1 -" =========================================================================== -" Example of a callback function {{{1 -" Version I use in my (La)TeX ftplugin -if 0 - - let b:ModeLine_CallBack = "TeXModeLine_CallBack" - function! TeXModeLine_CallBack(var,val) - if match(a:var, "g:TeXfile") != -1 - " restore quotes around the file name - "let valu = substitute( valu, '^"\=\([[:alnum:].]\+\)"\=$', '"\1"', '' ) - call TKSetTeXfileName( 2, a:val ) - return 1 - else - return 0 - endif - endfunction - -endif -" }}}1 -" =========================================================================== -" vim600: set fdm=marker: diff --git a/vim/vimrc b/vim/vimrc index 5db07dd..e9b2904 100755 --- a/vim/vimrc +++ b/vim/vimrc @@ -199,7 +199,7 @@ endif if exists('+spell') && !&diff set spell highlight clear SpellBad - highlight SpellBad cterm=underline ctermfg=red + highlight SpellBad cterm=underline ctermfg=red gui=undercurl guisp=Red endif " Show 80th column. if exists('+colorcolumn') @@ -375,15 +375,6 @@ let $GREP_OPTIONS.=' --exclude-dir=llcalc* --exclude-dir=00*' "let $GREP_OPTIONS.=' --include Makefile' map af :execute "grep! ".expand("")." -r ." cw -" -" Loads CF5Compile -" Compile and run file if Ctrl-F5 is pressed. -" -if !exists('*CF5Compile') - runtime plugin/cf5-compiler.vim -endif -map a4 :call CF5CompileOnly() -map a5 :call CF5CompileAndRun() " " CTRL-U in insert mode deletes a lot. Use CTRL-G u to first break undo, " so that you can undo CTRL-U after inserting a line break. @@ -406,57 +397,36 @@ nnoremap tl :tablast nnoremap tm :tabm nnoremap td :tabclose -" -" Locate and load .vimrc.local from curent directory. -" -if !exists('*LocalVimrcLoad') - runtime plugin/local-vimrc.vim -endif -call LocalVimrcLoad( getcwd() ) - """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Plugins " " -" Vundle experimental stuff here. +" Detect Vundle " -if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md')) +let s:vundle_path = '~/.vim/bundle/Vundle.vim' +if filereadable(expand('C:/devel/scripts/vim/bundle/Vundle.vim/README.md')) + let s:vundle_path = 'C:/devel/scripts/vim/bundle/Vundle.vim' +endif + +" +" Vundle stuff here. +" +if filereadable(expand(s:vundle_path.'/README.md')) filetype off - set rtp+=~/.vim/bundle/Vundle.vim + let &rtp=&rtp.','.s:vundle_path call vundle#begin() Plugin 'VundleVim/Vundle.vim' " " Adds nice status and tabline. " - Plugin 'bling/vim-airline' + Plugin 'vim-airline/vim-airline' + "Plugin 'vim-airline/vim-airline-themes' let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#left_sep = ' ' let g:airline#extensions#tabline#left_alt_sep = '|' - - " - " Manipulation with buffers and tabs. - " - Plugin 'vim-scripts/Buffergator' - let g:buffergator_suppress_keymaps = 1 - let g:buffergator_viewport_split_policy = "L" - map ab :BuffergatorToggle - "map at :BuffergatorTabsToggle - - " - " - " - "Plugin 'eiginn/netrw' - "let g:netrw_altv = 1 - "let g:netrw_fastbrowse = 2 - "let g:netrw_keepdir = 0 - "let g:netrw_liststyle = 3 - "let g:netrw_retmap = 1 - "let g:netrw_silent = 1 - "let g:netrw_special_syntax= 1 - "map :Explore - "map :Explore %:p:h + let g:airline_powerline_fonts = 1 " " @@ -469,7 +439,29 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md')) let g:NERDTreeIgnore = ['\.o$', '\.so$', '\.tsk$'] map at :NERDTreeToggle "map am :NERDTreeFind - + " + " Commented out in favour of NERDTree + " + "Plugin 'eiginn/netrw' + "let g:netrw_altv = 1 + "let g:netrw_fastbrowse = 2 + "let g:netrw_keepdir = 0 + "let g:netrw_liststyle = 3 + "let g:netrw_retmap = 1 + "let g:netrw_silent = 1 + "let g:netrw_special_syntax= 1 + "map :Explore + "map :Explore %:p:h + " + " Manipulation with buffers and tabs. + " + Plugin 'vim-scripts/Buffergator' + let g:buffergator_autodismiss_on_select = 0 + let g:buffergator_autoupdate = 1 + let g:buffergator_suppress_keymaps = 1 + let g:buffergator_viewport_split_policy = "L" + map ab :BuffergatorToggle + "map at :BuffergatorTabsToggle " " :A switches to the header file (or vise versa) " :AS splits and switches @@ -493,14 +485,48 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md')) map ah :A " - " Comment code. - " gc - visusl mode - comment selection. + " Tmux integration. " - "Plugin 'tpope/vim-commentary' + Plugin 'benmills/vimux' + " + " Extends modeline to variables. + " Needed by CF5 compile to read options right from file. + " + Plugin 'vim-scripts/let-modeline.vim' + " + " CF5 compile. + " Compiling cpp files without make file. + " + Plugin 'vishap/cf5-compile' + map ac :call CF5CompileOnly() + map ar :call CF5CompileAndRun() + + " + " Provide templates + " + Plugin 'aperezdc/vim-template' + "let g:templates_no_autocmd = 1 + let g:templates_no_builtin_templates = 1 + " + " Local vimrc + " + Plugin 'embear/vim-localvimrc' + let g:localvimrc_name = [ ".vimrc.local" ] + let g:localvimrc_ask = 0 + + " + " Comment code. + " gc - visual mode - comment selection. + " + Plugin 'tpope/vim-commentary' + nmap al CommentaryLine + vmap al Commentary " " Git wrapper. " Plugin 'tpope/vim-fugitive' + nmap git :Git + nmap gst :Gstatus " " Shows git diff. " [c - jump prev diff @@ -515,11 +541,10 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md')) " :GitGutterLineHighlightsToggle " Plugin 'airblade/vim-gitgutter' - set signcolumn=yes let g:gitgutter_map_keys = 0 let g:gitgutter_realtime = 0 let g:gitgutter_eager = 0 - + let g:gitgutter_async = 1 " " Check syntaxis on fly. @@ -533,10 +558,12 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md')) " " Nice colorschemes. + " Actual colorscheme is set outside as vundle resets it. " if &t_Co >= 256 || has('gui_running') Plugin 'nanotech/jellybeans.vim' let g:jellybeans_use_lowcolor_black = 0 + let g:jellybeans_use_gui_italics = 0 "colorscheme jellybeans endif if &t_Co >= 256 || has('gui_running') @@ -574,12 +601,20 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md')) " "Plugin 'xterm-color-table.vim' + + " Promising GDB manager. + " + Plugin 'vim-scripts/gdbmgr' + " call vundle#end() filetype plugin indent on filetype plugin on endif +" +" Vundle resets this if set inside vundle section. +" if &t_Co >= 256 || has('gui_running') colorscheme jellybeans hi clear SpellBad