Merge branch 'master' of bitbucket.org:vishap/scripts
This commit is contained in:
174
config/.bashrc
174
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,140 @@ 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 <pattern> "
|
||||
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='.ctags_dir'
|
||||
if [ -f $PWD/$CTAGS_DIR ]; then
|
||||
CTAGS_ROOT="$PWD"
|
||||
elif [ -f $PWD/../$CTAGS_DIR ]; then
|
||||
CTAGS_ROOT="$PWD/.."
|
||||
elif [ -f $PWD/../../$CTAGS_DIR]; then
|
||||
CTAGS_ROOT="$PWD/../.."
|
||||
else
|
||||
CTAGS_ROOT="$PWD"
|
||||
fi
|
||||
|
||||
if [ -f $CTAGS_ROOT/$CTAGS_DIR ]; 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 ]
|
||||
|
||||
@@ -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*
|
||||
|
||||
@@ -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 <vahagn DOT khachatryan AT gmail DOT com>
|
||||
"
|
||||
" 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 <silent> <C-F5> :call CF5Compile(1)<CR>
|
||||
" map <silent> <F5> :call CF5Compile(0)<CR>
|
||||
"
|
||||
" 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
|
||||
|
||||
@@ -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 <EMAIL:hermitte {at} free {dot} fr>
|
||||
" <URL:http://hermitte.free.fr/vim/>
|
||||
" 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:
|
||||
100
vim/vimrc
100
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("<cword>")." -r ." <Bar> cw<CR>
|
||||
|
||||
"
|
||||
" Loads CF5Compile
|
||||
" Compile and run file if Ctrl-F5 is pressed.
|
||||
"
|
||||
if !exists('*CF5Compile')
|
||||
runtime plugin/cf5-compiler.vim
|
||||
endif
|
||||
map <silent> a4 :call CF5CompileOnly()<CR>
|
||||
map <silent> a5 :call CF5CompileAndRun()<CR>
|
||||
"
|
||||
" 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.
|
||||
@@ -430,34 +421,12 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md'))
|
||||
"
|
||||
" 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<CR>
|
||||
"map at :BuffergatorTabsToggle<CR>
|
||||
|
||||
"
|
||||
"
|
||||
"
|
||||
"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 <C-n> :Explore<CR>
|
||||
"map <C-m> :Explore %:p:h<CR>
|
||||
|
||||
let g:airline_powerline_fonts = 1
|
||||
"
|
||||
"
|
||||
"
|
||||
@@ -469,6 +438,29 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md'))
|
||||
let g:NERDTreeIgnore = ['\.o$', '\.so$', '\.tsk$']
|
||||
map at :NERDTreeToggle<CR>
|
||||
"map am :NERDTreeFind<CR>
|
||||
"
|
||||
" 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 <C-n> :Explore<CR>
|
||||
"map <C-m> :Explore %:p:h<CR>
|
||||
"
|
||||
" 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<CR>
|
||||
"map at :BuffergatorTabsToggle<CR>
|
||||
|
||||
"
|
||||
" :A switches to the header file (or vise versa)
|
||||
@@ -491,16 +483,43 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md'))
|
||||
let g:alternateExtensions_cpp = "h"
|
||||
let g:alternateExtensions_c = "h"
|
||||
map ah :A<CR>
|
||||
"
|
||||
" 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 <silent> ac :call CF5CompileOnly()<CR>
|
||||
map <silent> ar :call CF5CompileAndRun()<CR>
|
||||
|
||||
"
|
||||
" 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'
|
||||
|
||||
"
|
||||
" Comment code.
|
||||
" gc - visusl mode - comment selection.
|
||||
" gc - visual mode - comment selection.
|
||||
"
|
||||
"Plugin 'tpope/vim-commentary'
|
||||
Plugin 'tpope/vim-commentary'
|
||||
nmap al <Plug>CommentaryLine
|
||||
vmap al <Plug>Commentary
|
||||
"
|
||||
" Git wrapper.
|
||||
"
|
||||
Plugin 'tpope/vim-fugitive'
|
||||
nmap git :Git
|
||||
nmap gst :Gstatus
|
||||
"
|
||||
" Shows git diff.
|
||||
" [c - jump prev diff
|
||||
@@ -519,7 +538,7 @@ if filereadable(expand('~/.vim/bundle/Vundle.vim/README.md'))
|
||||
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.
|
||||
@@ -574,6 +593,11 @@ 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
|
||||
|
||||
Reference in New Issue
Block a user