Switched to vundle

This commit is contained in:
Ian 2012-07-02 13:25:36 -04:00
parent 2438806eea
commit 48336345ab
18 changed files with 132 additions and 15085 deletions

View File

@ -3,6 +3,15 @@
# Get current directory for future use in links
VIM_SYNC_DIR=${PWD}
# Clone vundle
mkdir -p ~/.vim/bundle
git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
# Make backup and tmp dirs
mkdir -p ~/.vim/backup
mkdir -p ~/.vim/tmp
mkdir -p ~/.vim/doc
# If a .vimrc_sync doesn't exist, link it
if [[ ! ( -f ~/.vimrc_sync ) ]]; then
ln -s $VIM_SYNC_DIR/vim/dot_vimrc ~/.vimrc_sync
@ -31,8 +40,11 @@ if ! ( grep -q 'set runtimepath+=$HOME/.vim_sync' ~/.vimrc ); then
echo 'set runtimepath+=$HOME/.vim_sync' >> ~/.vimrc
fi
# Install all bundles
vim +BundleInstall! +qall
# Execute vim's update of the helptags
vim +"helptags ~/.vim_sync/doc" +"q"
vim +"helptags ~/.vim/doc" +"q"
echo "Should install ctags with sudo apt-get install ctags"

File diff suppressed because it is too large Load Diff

View File

@ -1,191 +0,0 @@
" Vim color scheme
" Name: vividchalk.vim
" Author: Tim Pope <vimNOSPAM@tpope.info>
" Version: 2.0
" GetLatestVimScripts: 1891 1 :AutoInstall: vividchalk.vim
" Based on the Vibrank Ink theme for TextMate
" Distributable under the same terms as Vim itself (see :help license)
if has("gui_running")
set background=dark
endif
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "vividchalk"
" First two functions adapted from inkpot.vim
" map a urxvt cube number to an xterm-256 cube number
fun! s:M(a)
return strpart("0245", a:a, 1) + 0
endfun
" map a urxvt colour to an xterm-256 colour
fun! s:X(a)
if &t_Co == 88
return a:a
else
if a:a == 8
return 237
elseif a:a < 16
return a:a
elseif a:a > 79
return 232 + (3 * (a:a - 80))
else
let l:b = a:a - 16
let l:x = l:b % 4
let l:y = (l:b / 4) % 4
let l:z = (l:b / 16)
return 16 + s:M(l:x) + (6 * s:M(l:y)) + (36 * s:M(l:z))
endif
endif
endfun
function! E2T(a)
return s:X(a:a)
endfunction
function! s:choose(mediocre,good)
if &t_Co != 88 && &t_Co != 256
return a:mediocre
else
return s:X(a:good)
endif
endfunction
function! s:hifg(group,guifg,first,second,...)
if a:0 && &t_Co == 256
let ctermfg = a:1
else
let ctermfg = s:choose(a:first,a:second)
endif
exe "highlight ".a:group." guifg=".a:guifg." ctermfg=".ctermfg
endfunction
function! s:hibg(group,guibg,first,second)
let ctermbg = s:choose(a:first,a:second)
exe "highlight ".a:group." guibg=".a:guibg." ctermbg=".ctermbg
endfunction
hi link railsMethod PreProc
hi link rubyDefine Keyword
hi link rubySymbol Constant
hi link rubyAccess rubyMethod
hi link rubyAttribute rubyMethod
hi link rubyEval rubyMethod
hi link rubyException rubyMethod
hi link rubyInclude rubyMethod
hi link rubyStringDelimiter rubyString
hi link rubyRegexp Regexp
hi link rubyRegexpDelimiter rubyRegexp
"hi link rubyConstant Variable
"hi link rubyGlobalVariable Variable
"hi link rubyClassVariable Variable
"hi link rubyInstanceVariable Variable
hi link javascriptRegexpString Regexp
hi link javascriptNumber Number
hi link javascriptNull Constant
highlight link diffAdded String
highlight link diffRemoved Statement
highlight link diffLine PreProc
highlight link diffSubname Comment
call s:hifg("Normal","#EEEEEE","White",87)
if &background == "light" || has("gui_running")
hi Normal guibg=Black ctermbg=Black
else
hi Normal guibg=Black ctermbg=NONE
endif
highlight StatusLine guifg=Black guibg=#aabbee gui=bold ctermfg=Black ctermbg=White cterm=bold
highlight StatusLineNC guifg=#444444 guibg=#aaaaaa gui=none ctermfg=Black ctermbg=Grey cterm=none
"if &t_Co == 256
"highlight StatusLine ctermbg=117
"else
"highlight StatusLine ctermbg=43
"endif
highlight Ignore ctermfg=Black
highlight WildMenu guifg=Black guibg=#ffff00 gui=bold ctermfg=Black ctermbg=Yellow cterm=bold
highlight Cursor guifg=Black guibg=White ctermfg=Black ctermbg=White
highlight CursorLine guibg=#333333 guifg=NONE
highlight CursorColumn guibg=#333333 guifg=NONE
highlight NonText guifg=#404040 ctermfg=8
highlight SpecialKey guifg=#404040 ctermfg=8
highlight Directory none
high link Directory Identifier
highlight ErrorMsg guibg=Red ctermbg=DarkRed guifg=NONE ctermfg=NONE
highlight Search guifg=NONE ctermfg=NONE gui=none cterm=none
call s:hibg("Search" ,"#555555","DarkBlue",81)
highlight IncSearch guifg=White guibg=Black ctermfg=White ctermbg=Black
highlight MoreMsg guifg=#00AA00 ctermfg=Green
highlight LineNr guifg=#DDEEFF ctermfg=White
call s:hibg("LineNr" ,"#222222","DarkBlue",80)
highlight Question none
high link Question MoreMsg
highlight Title guifg=Magenta ctermfg=Magenta
highlight VisualNOS gui=none cterm=none
call s:hibg("Visual" ,"#555577","LightBlue",83)
call s:hibg("VisualNOS" ,"#444444","DarkBlue",81)
call s:hibg("MatchParen","#1100AA","DarkBlue",18)
highlight WarningMsg guifg=Red ctermfg=Red
highlight Error ctermbg=DarkRed
highlight SpellBad ctermbg=DarkRed
" FIXME: Comments
highlight SpellRare ctermbg=DarkMagenta
highlight SpellCap ctermbg=DarkBlue
highlight SpellLocal ctermbg=DarkCyan
call s:hibg("Folded" ,"#110077","DarkBlue",17)
call s:hifg("Folded" ,"#aaddee","LightCyan",63)
highlight FoldColumn none
high link FoldColumn Folded
highlight DiffAdd ctermbg=4 guibg=DarkBlue
highlight DiffChange ctermbg=5 guibg=DarkMagenta
highlight DiffDelete ctermfg=12 ctermbg=6 gui=bold guifg=Blue guibg=DarkCyan
highlight DiffText ctermbg=DarkRed
highlight DiffText cterm=bold ctermbg=9 gui=bold guibg=Red
highlight Pmenu guifg=White ctermfg=White gui=bold cterm=bold
highlight PmenuSel guifg=White ctermfg=White gui=bold cterm=bold
call s:hibg("Pmenu" ,"#000099","Blue",18)
call s:hibg("PmenuSel" ,"#5555ff","DarkCyan",39)
highlight PmenuSbar guibg=Grey ctermbg=Grey
highlight PmenuThumb guibg=White ctermbg=White
highlight TabLine gui=underline cterm=underline
call s:hifg("TabLine" ,"#bbbbbb","LightGrey",85)
call s:hibg("TabLine" ,"#333333","DarkGrey",80)
highlight TabLineSel guifg=White guibg=Black ctermfg=White ctermbg=Black
highlight TabLineFill gui=underline cterm=underline
call s:hifg("TabLineFill","#bbbbbb","LightGrey",85)
call s:hibg("TabLineFill","#808080","Grey",83)
hi Type gui=none
hi Statement gui=none
if !has("gui_mac")
" Mac GUI degrades italics to ugly underlining.
hi Comment gui=italic
hi railsUserClass gui=italic
hi railsUserMethod gui=italic
endif
hi Identifier cterm=none
" Commented numbers at the end are *old* 256 color values
"highlight PreProc guifg=#EDF8F9
call s:hifg("Comment" ,"#9933CC","DarkMagenta",34) " 92
" 26 instead?
call s:hifg("Constant" ,"#339999","DarkCyan",21) " 30
call s:hifg("rubyNumber" ,"#CCFF33","Yellow",60) " 190
call s:hifg("String" ,"#66FF00","LightGreen",44,82) " 82
call s:hifg("Identifier" ,"#FFCC00","Yellow",72) " 220
call s:hifg("Statement" ,"#FF6600","Brown",68) " 202
call s:hifg("PreProc" ,"#AAFFFF","LightCyan",47) " 213
call s:hifg("railsUserMethod","#AACCFF","LightCyan",27)
call s:hifg("Type" ,"#AAAA77","Grey",57) " 101
call s:hifg("railsUserClass" ,"#AAAAAA","Grey",7) " 101
call s:hifg("Special" ,"#33AA00","DarkGreen",24) " 7
call s:hifg("Regexp" ,"#44B4CC","DarkCyan",21) " 74
call s:hifg("rubyMethod" ,"#DDE93D","Yellow",77) " 191
"highlight railsMethod guifg=#EE1122 ctermfg=1

File diff suppressed because it is too large Load Diff

View File

@ -1,177 +0,0 @@
*alternate.txt* Alternate Plugin Sat May 13 15:35:38 CDT 2006
Author: Michael Sharpe <feline@irendi.com>
Copyright: (c) 2000-2006 Michael Sharpe
We grant permission to use, copy modify, distribute, and sell this
software for any purpose without fee, provided that the above
copyright notice and this text are not removed. We make no guarantee
about the suitability of this software for any purpose and we are
not liable for any damages resulting from its use. Further, we are
under no obligation to maintain or extend this software. It is
provided on an "as is" basis without any expressed or implied
warranty.
==============================================================================
1. Contents *AS* *AV* *AT* *AN* *IH* *IHS* *IHV* *IHT* *IHN* *alternate*
1. Contents...........................: |alternate|
2. Purpose............................: |alternate-purpose|
3. Commands...........................: |alternate-commands|
4. Configuration......................: |alternate-config|
5. Installation.......................: |alternate-installation|
6. Bugs/Enhancements..................: |alternate-support|
7. Acknowledgments....................: |alternate-acknowledgments|
==============================================================================
2. Purpose *alternate-purpose*
The purpose of a.vim is to allow quick and easy switching between source files
and corresponding header files. Many languages (C, C++, ada, ocaml, lex/yacc)
have the concept of source/header files or the like. It is quite common during
development or review to need to edit both files together. This plugin attempts
to simplify that process. There are commands which while editing a source
file allow for the quick switching to the corresponding header and vice versa.
The only difference between the commands is how the switch occurs. More recent
functionality allow the switching to a file under the cursor too. In the
following sections the commands, configuration and installation procedures are
described.
==============================================================================
3. Commands *alternate-commands*
There are 4 commands provided by this plugin. They are
:A switches to the header file corresponding to the source file in the current
buffer (or vice versa).
:AS similar to :A except the current buffer is split horizontally such that the
source file is on one split and the header is in the other.
:AV similar to :AS except that the split is vertical
:AT similar to :AS and :AV except a new tab is opened instead of a split
:IH switches to the file under cursor (or the file specified with the
command). This command uses the builtin a.vim search path support and the
&path variable in conjunction.
:IHS similar to :IH execpt the current buffer is split horizontally first
:IHS similar to :IH execpt the current buffer is split vertically first
:IHS similar to :IH execpt a new tab is created for the file being switched to
:IHN switches to the next matching file for the original selection
In all cases if the corresponding alternate file is already loaded that buffer
is preferred. That is this plugin will never load the same file twice.
Some maps are also provided for the IH command (mainly for example purposes)
<Leader>ih - switches to the file under the cursor using the :IHS command
<Leader>is - switches to the source file of the header file under the cursor
using the :IHS command and the :A command
<leader>ihn - switches to the next match in the sequence.
==============================================================================
4. Configuration *alternate-config*
It is possible to configure three separate pieces of behaviour of this plugin.
a) Extensions: Each language has different extensions for identifying the
source and header files. Many languages support multiple different but related
extensions. As such this plugin allow for the complete specification of how
source and header files correspond to each other via extension maps. There are
a number of maps built in. For example, the following variable setting
g:alternateExtensions_CPP = "inc,h,H,HPP,hpp"
indicates that any file with a .CPP exetension can have a corresponding file
with any of the .inc, .h, .H, .HPP, .hpp extension. The inverse is not
specified by this map though. Typically each extension will have a mapping. So
there would exist maps for .h, .inc, .H, .HPP, .hpp too. Extension maps should
be specified before loading this plugin. Some of the builtin extension maps are
as follows,
C and C++
g:alternateExtensions_h = "c,cpp,cxx,cc,CC"
g:alternateExtensions_H' = "C,CPP,CXX,CC"
g:alternateExtensions_cpp' = "h,hpp"
g:alternateExtensions_CPP' = "H,HPP"
g:alternateExtensions_c' = "h"
g:alternateExtensions_C' = "H"
g:alternateExtensions_cxx' = "h"
Ada
g:alternateExtensions_adb' = "ads"
g:alternateExtensions_ads' = "adb"
Lex/Yacc
g:alternateExtensions_l' = "y,yacc,ypp"
g:alternateExtensions_lex' = "yacc,y,ypp"
g:alternateExtensions_lpp' = "ypp,y,yacc"
g:alternateExtensions_y' = "l,lex,lpp"
g:alternateExtensions_yacc' = "lex,l,lpp"
g:alternateExtensions_ypp' = "lpp,l,lex"
b) Search Paths: In many projects the location of the source files and the
corresponding header files is not always the same directory. This plugin allows
the search path it uses to locate source and header files to be configured.
The search path is specified by setting the g:alternateSearchPath variable. The
default setting is as follows,
g:alternateSearchPath = 'sfr:../source,sfr:../src,sfr:../include,sfr:../inc'
This indicates that the corresponding file will be searched for in ../source,
../src. ../include and ../inc all relative to the current file being switched
from. The value of the g:alternateSearchPath variable is simply a comma
separated list of prefixes and directories. The "sfr:" prefix indicates that
the path is relative to the file. Other prefixes are "wdr:" which indicates
that the directory is relative to the current working directory and "abs:"
which indicates the path is absolute. If no prefix is specified "sfr:" is
assumed.
c) Regex Paths: Another type of prefix which can appear in the
g:alternateSearchPath variable is that of "reg:". It is used to apply a regex
to the path of the file in the buffer being switched from to locate the
alternate file. E.g. 'reg:/inc/src/g/' will replace every instance of 'inc'
with 'src' in the source file path. It is possible to use match variables so
you could do something like: 'reg:|src/\([^/]*\)|inc/\1||' (see |substitute|,
|help pattern| and |sub-replace-special| for more details. The exact syntax of
a "reg:" specification is
reg:<sep><pattern><sep><subst><sep><flag><sep>
<sep> seperator character, we often use one of [/|%#]
<pattern> is what you are looking for
<subst> is the output pattern
<flag> can be g for global replace or empty
d) No Alternate Behaviour: When attempting to alternate/switch from a
source/header to its corresponding file it is possible that the corresponding
file does not exist. In this case this plugin will create the missing alternate
file in the same directory as the current file. Some users find this behaviour
irritating. This behaviour can be disabled by setting
g:alternateNoDefaultAlternate to 1. When this variable is not 0 a message will
be displayed indicating that no alternate file exists.
==============================================================================
5. Installation *alternate-installation*
To install this plugin simply drop the a.vim file in to $VIMRUNTIME/plugin
(global or local) or simply source the file from the vimrc file. Ensure that
any configuration occurs before the plugin is loaded/sourced.
==============================================================================
6. Bugs/Enhancements *alternate-support*
Whilst no formal support is provided for this plugin the author is always happy
to receive bug reports and enhancement requests. Please email all such
reports/requests to feline@irendi.com.
==============================================================================
7. Acknowledgments *alternate-acknowledgments*
The author would like to thank everyone who has submitted bug reports and
feature enhancement requests in the past. In particular Bindu Wavell provided
much of the original code implementing the search path and regex functionality.
vim:tw=78:ts=8:ft=help

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +0,0 @@
:TComment tcomment.txt /*:TComment*
:TCommentAs tcomment.txt /*:TCommentAs*
:TCommentBlock tcomment.txt /*:TCommentBlock*
:TCommentInline tcomment.txt /*:TCommentInline*
:TCommentMaybeInline tcomment.txt /*:TCommentMaybeInline*
:TCommentRight tcomment.txt /*:TCommentRight*
g:tcomment#ignore_char_type tcomment.txt /*g:tcomment#ignore_char_type*
g:tcomment#syntax_substitute tcomment.txt /*g:tcomment#syntax_substitute*
g:tcommentBlankLines tcomment.txt /*g:tcommentBlankLines*
g:tcommentBlockC tcomment.txt /*g:tcommentBlockC*
g:tcommentBlockC2 tcomment.txt /*g:tcommentBlockC2*
g:tcommentBlockXML tcomment.txt /*g:tcommentBlockXML*
g:tcommentGuessFileType tcomment.txt /*g:tcommentGuessFileType*
g:tcommentGuessFileType_django tcomment.txt /*g:tcommentGuessFileType_django*
g:tcommentGuessFileType_dsl tcomment.txt /*g:tcommentGuessFileType_dsl*
g:tcommentGuessFileType_html tcomment.txt /*g:tcommentGuessFileType_html*
g:tcommentGuessFileType_php tcomment.txt /*g:tcommentGuessFileType_php*
g:tcommentGuessFileType_tskeleton tcomment.txt /*g:tcommentGuessFileType_tskeleton*
g:tcommentGuessFileType_vim tcomment.txt /*g:tcommentGuessFileType_vim*
g:tcommentIgnoreTypes_php tcomment.txt /*g:tcommentIgnoreTypes_php*
g:tcommentInlineC tcomment.txt /*g:tcommentInlineC*
g:tcommentInlineXML tcomment.txt /*g:tcommentInlineXML*
g:tcommentMapLeaderOp1 tcomment.txt /*g:tcommentMapLeaderOp1*
g:tcommentMapLeaderOp2 tcomment.txt /*g:tcommentMapLeaderOp2*
g:tcommentOpModeExtra tcomment.txt /*g:tcommentOpModeExtra*
g:tcommentOptions tcomment.txt /*g:tcommentOptions*
g:tcommentSyntaxMap tcomment.txt /*g:tcommentSyntaxMap*
tcomment#Comment() tcomment.txt /*tcomment#Comment()*
tcomment#CommentAs() tcomment.txt /*tcomment#CommentAs()*
tcomment#DefineType() tcomment.txt /*tcomment#DefineType()*
tcomment#Operator() tcomment.txt /*tcomment#Operator()*
tcomment#OperatorAnyway() tcomment.txt /*tcomment#OperatorAnyway()*
tcomment#OperatorLine() tcomment.txt /*tcomment#OperatorLine()*
tcomment#OperatorLineAnyway() tcomment.txt /*tcomment#OperatorLineAnyway()*
tcomment-maps tcomment.txt /*tcomment-maps*
tcomment.txt tcomment.txt /*tcomment.txt*

View File

@ -1,359 +0,0 @@
*tcomment.txt* An easily extensible & universal comment plugin
Author: Thomas Link, micathom AT gmail com?subject=vim
tcomment provides easy to use, file-type sensible comments for Vim. It
can handle embedded syntax.
TComment works like a toggle, i.e., it will comment out text that
contains uncommented lines, and it will remove comment markup for
already commented text (i.e. text that contains no uncommented lines).
If the file-type is properly defined, TComment will figure out which
comment string to use. Otherwise you use |tcomment#DefineType()| to
override the default choice.
TComment can properly handle an embedded syntax, e.g., ruby/python/perl
regions in vim scripts, HTML or JavaScript in php code etc.
Demo:
http://vimsomnia.blogspot.com/2010/11/tcomment-vim-plugin.html
*tcomment-maps*
Key bindings~
Most of the time the default toggle keys will do what you want (or to be
more precise: what I think you want it to do ;-).
*g:tcommentMapLeaderOp1*
*g:tcommentMapLeaderOp2*
As operator (the prefix can be customized via g:tcommentMapLeaderOp1
and g:tcommentMapLeaderOp2):
gc{motion} :: Toggle comments (for small comments within one line
the &filetype_inline style will be used, if
defined)
gcc :: Toggle comment for the current line
gC{motion} :: Comment region
gCc :: Comment the current line
By default the cursor stays put. If you want the cursor to the end of
the commented text, set |g:tcommentOpModeExtra| to '>' (but this may not
work properly with exclusive motions).
Primary key maps:
<c-_><c-_> :: :TComment
<c-_><space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END>
<c-_>b :: :TCommentBlock
<c-_>a :: :TCommentAs <QUERY COMMENT TYPE>
<c-_>n :: :TCommentAs &filetype <QUERY COUNT>
<c-_>s :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE>
<c-_>i :: :TCommentInline
<c-_>r :: :TCommentRight
<c-_>p :: Comment the current inner paragraph
A secondary set of key maps is defined for normal mode.
<Leader>__ :: :TComment
<Leader>_p :: Comment the current inner paragraph
<Leader>_<space> :: :TComment <QUERY COMMENT-BEGIN ?COMMENT-END>
<Leader>_i :: :TCommentInline
<Leader>_r :: :TCommentRight
<Leader>_b :: :TCommentBlock
<Leader>_a :: :TCommentAs <QUERY COMMENT TYPE>
<Leader>_n :: :TCommentAs &filetype <QUERY COUNT>
<Leader>_s :: :TCommentAs &filetype_<QUERY COMMENT SUBTYPE>
-----------------------------------------------------------------------
Install~
Edit the vba file and type: >
:so %
See :help vimball for details. If you have difficulties or use vim 7.0,
please make sure, you have the current version of vimball (vimscript
#1502) installed or update your runtime.
========================================================================
Contents~
:TComment ........................... |:TComment|
:TCommentAs ......................... |:TCommentAs|
:TCommentRight ...................... |:TCommentRight|
:TCommentBlock ...................... |:TCommentBlock|
:TCommentInline ..................... |:TCommentInline|
:TCommentMaybeInline ................ |:TCommentMaybeInline|
g:tcommentBlankLines ................ |g:tcommentBlankLines|
g:tcommentOpModeExtra ............... |g:tcommentOpModeExtra|
g:tcommentOptions ................... |g:tcommentOptions|
g:tcomment#ignore_char_type ......... |g:tcomment#ignore_char_type|
g:tcommentGuessFileType ............. |g:tcommentGuessFileType|
g:tcommentGuessFileType_dsl ......... |g:tcommentGuessFileType_dsl|
g:tcommentGuessFileType_php ......... |g:tcommentGuessFileType_php|
g:tcommentGuessFileType_html ........ |g:tcommentGuessFileType_html|
g:tcommentGuessFileType_tskeleton ... |g:tcommentGuessFileType_tskeleton|
g:tcommentGuessFileType_vim ......... |g:tcommentGuessFileType_vim|
g:tcommentGuessFileType_django ...... |g:tcommentGuessFileType_django|
g:tcommentIgnoreTypes_php ........... |g:tcommentIgnoreTypes_php|
g:tcomment#syntax_substitute ........ |g:tcomment#syntax_substitute|
g:tcommentSyntaxMap ................. |g:tcommentSyntaxMap|
g:tcommentBlockC .................... |g:tcommentBlockC|
g:tcommentBlockC2 ................... |g:tcommentBlockC2|
g:tcommentInlineC ................... |g:tcommentInlineC|
g:tcommentBlockXML .................. |g:tcommentBlockXML|
g:tcommentInlineXML ................. |g:tcommentInlineXML|
tcomment#DefineType ................. |tcomment#DefineType()|
tcomment#Comment .................... |tcomment#Comment()|
tcomment#Operator ................... |tcomment#Operator()|
tcomment#OperatorLine ............... |tcomment#OperatorLine()|
tcomment#OperatorAnyway ............. |tcomment#OperatorAnyway()|
tcomment#OperatorLineAnyway ......... |tcomment#OperatorLineAnyway()|
tcomment#CommentAs .................. |tcomment#CommentAs()|
========================================================================
plugin/tcomment.vim~
*:TComment*
:[range]TComment[!] ?ARGS...
If there is a visual selection that begins and ends in the same line,
then |:TCommentInline| is used instead.
The optional range defaults to the current line. With a bang '!',
always comment the line.
ARGS... are either (see also |tcomment#Comment()|):
1. a list of key=value pairs
2. 1-2 values for: ?commentBegin, ?commentEnd
*:TCommentAs*
:[range]TCommentAs[!] commenttype ?ARGS...
TCommentAs requires g:tcomment_{filetype} to be defined.
With a bang '!', always comment the line.
ARGS... are either (see also |tcomment#Comment()|):
1. a list of key=value pairs
2. 1-2 values for: ?commentBegin, ?commentEnd
*:TCommentRight*
:[range]TCommentRight[!] ?ARGS...
Comment the text to the right of the cursor. If a visual selection was
made (be it block-wise or not), all lines are commented out at from
the current cursor position downwards.
With a bang '!', always comment the line.
ARGS... are either (see also |tcomment#Comment()|):
1. a list of key=value pairs
2. 1-2 values for: ?commentBegin, ?commentEnd
*:TCommentBlock*
:[range]TCommentBlock[!] ?ARGS...
Comment as "block", e.g. use the {&ft}_block comment style. The
commented text isn't indented or reformated.
With a bang '!', always comment the line.
ARGS... are either (see also |tcomment#Comment()|):
1. a list of key=value pairs
2. 1-2 values for: ?commentBegin, ?commentEnd
*:TCommentInline*
:[range]TCommentInline[!] ?ARGS...
Use the {&ft}_inline comment style.
With a bang '!', always comment the line.
ARGS... are either (see also |tcomment#Comment()|):
1. a list of key=value pairs
2. 1-2 values for: ?commentBegin, ?commentEnd
*:TCommentMaybeInline*
:[range]TCommentMaybeInline[!] ?ARGS...
With a bang '!', always comment the line.
ARGS... are either (see also |tcomment#Comment()|):
1. a list of key=value pairs
2. 1-2 values for: ?commentBegin, ?commentEnd
========================================================================
autoload/tcomment.vim~
*g:tcommentBlankLines*
g:tcommentBlankLines (default: 1)
If true, comment blank lines too
*g:tcommentOpModeExtra*
g:tcommentOpModeExtra (default: '')
Modifies how the operator works.
> ... Move the cursor to the end of the comment
*g:tcommentOptions*
g:tcommentOptions (default: {})
Other key-value options used by |tcomment#Comment()|.
Example: If you want to put the opening comment marker always in
the first column regardless of the block's indentation, put this
into your |vimrc| file: >
let g:tcommentOptions = {'col': 1}
<
*g:tcomment#ignore_char_type*
g:tcomment#ignore_char_type (default: 1)
|text-objects| for use with |tcomment#Operator| can have different
types: line, block, char etc. Text objects like aB, it, at etc.
have type char but this may not work reliably. By default,
tcomment handles those text objects most often as if they were of
type line. Set this variable to 0 in order to change this
behaviour. Be prepared that the result may not always match your
intentions.
*g:tcommentGuessFileType*
g:tcommentGuessFileType (default: 0)
Guess the file type based on syntax names always or for some fileformat only
If non-zero, try to guess filetypes.
tcomment also checks g:tcommentGuessFileType_{&filetype} for
filetype specific values.
Values:
0 ... don't guess
1 ... guess
FILETYPE ... assume this filetype
*g:tcommentGuessFileType_dsl*
g:tcommentGuessFileType_dsl (default: 'xml')
For dsl documents, assumet filetype = xml.
*g:tcommentGuessFileType_php*
g:tcommentGuessFileType_php (default: 'html')
In php documents, the php part is usually marked as phpRegion. We
thus assume that the buffers default comment style isn't php but
html.
*g:tcommentGuessFileType_html*
g:tcommentGuessFileType_html (default: 1)
*g:tcommentGuessFileType_tskeleton*
g:tcommentGuessFileType_tskeleton (default: 1)
*g:tcommentGuessFileType_vim*
g:tcommentGuessFileType_vim (default: 1)
*g:tcommentGuessFileType_django*
g:tcommentGuessFileType_django (default: 1)
*g:tcommentIgnoreTypes_php*
g:tcommentIgnoreTypes_php (default: 'sql')
In php files, some syntax regions are wongly highlighted as sql
markup. We thus ignore sql syntax when guessing the filetype in
php files.
*g:tcomment#syntax_substitute*
g:tcomment#syntax_substitute (default: {...})
*g:tcommentSyntaxMap*
g:tcommentSyntaxMap (default: {...})
tcomment guesses filetypes based on the name of the current syntax
region. This works well if the syntax names match
/filetypeSomeName/. Other syntax names have to be explicitly
mapped onto the corresponding filetype.
*g:tcommentBlockC*
g:tcommentBlockC (default: {...})
Generic c-like block comments.
*g:tcommentBlockC2*
g:tcommentBlockC2 (default: {...})
Generic c-like block comments (alternative markup).
*g:tcommentInlineC*
g:tcommentInlineC (default: "/* %s */")
Generic c-like comments.
*g:tcommentBlockXML*
g:tcommentBlockXML (default: "<!--%s-->\n ")
Generic xml-like block comments.
*g:tcommentInlineXML*
g:tcommentInlineXML (default: "<!-- %s -->")
Generic xml-like comments.
*tcomment#DefineType()*
tcomment#DefineType(name, commentdef)
If you don't explicitly define a comment style, |:TComment| will use
'commentstring' instead. We override the default values here in order
to have a blank after the comment marker. Block comments work only if
we explicitly define the markup.
The comment definition can be either a string or a dictionary.
If it is a string:
The format for block comments is similar to 'commentstrings' with the
exception that the format strings for blocks can contain a second line
that defines how "middle lines" (see :h format-comments) should be
displayed.
If it is a dictionary:
See the help on the args argument of |tcomment#Comment|.
*tcomment#Comment()*
tcomment#Comment(beg, end, ...)
tcomment#Comment(line1, line2, ?commentMode, ?commentAnyway, ?args...)
args... are either:
1. a list of key=value pairs where known keys are (see also
|g:tcommentOptions|):
as=STRING ... Use a specific comment definition
col=N ... Start the comment at column N (in block
mode; must be smaller than |indent()|)
mode=STRING ... See the notes below on the "commentMode" argument
begin=STRING ... Comment prefix
end=STRING ... Comment postfix
middle=STRING ... Middle line comments in block mode
rxbeg=N ... Regexp to find the substring of "begin"
that should be multipied by "count"
rxend=N ... The above for "end"
rxmid=N ... The above for "middle"
commentstring_rx ... A regexp format string that matches
commented lines (no new groups may be
introduced, the |regexp| is |\V|; % have
to be doubled); "commentstring", "begin"
and optionally "end" must be defined or
deducible.
2. 1-2 values for: ?commentPrefix, ?commentPostfix
3. a dictionary (internal use only)
commentMode:
G ... guess the value of commentMode
B ... block (use extra lines for the comment markers)
i ... maybe inline, guess
I ... inline
R ... right (comment the line right of the cursor)
v ... visual
o ... operator
By default, each line in range will be commented by adding the comment
prefix and postfix.
*tcomment#Operator()*
tcomment#Operator(type, ...)
*tcomment#OperatorLine()*
tcomment#OperatorLine(type)
*tcomment#OperatorAnyway()*
tcomment#OperatorAnyway(type)
*tcomment#OperatorLineAnyway()*
tcomment#OperatorLineAnyway(type)
*tcomment#CommentAs()*
tcomment#CommentAs(beg, end, commentAnyway, filetype, ?args...)
Where args is either:
1. A count NUMBER
2. An args list (see the notes on the "args" argument of
|tcomment#Comment()|)
comment text as if it were of a specific filetype
vim:tw=78:fo=tcq2:isk=!-~,^*,^|,^":ts=8:ft=help:norl:

View File

@ -1,41 +0,0 @@
" ============================================================================
" File: exec_menuitem.vim
" Description: plugin for NERD Tree that provides an execute file menu item
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
" Last Change: 22 July, 2009
" License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
" ============================================================================
if exists("g:loaded_nerdtree_exec_menuitem")
finish
endif
let g:loaded_nerdtree_exec_menuitem = 1
call NERDTreeAddMenuItem({
\ 'text': '(!)Execute file',
\ 'shortcut': '!',
\ 'callback': 'NERDTreeExecFile',
\ 'isActiveCallback': 'NERDTreeExecFileActive' })
function! NERDTreeExecFileActive()
let node = g:NERDTreeFileNode.GetSelected()
return !node.path.isDirectory && node.path.isExecutable
endfunction
function! NERDTreeExecFile()
let treenode = g:NERDTreeFileNode.GetSelected()
echo "==========================================================\n"
echo "Complete the command to execute (add arguments etc):\n"
let cmd = treenode.path.str({'escape': 1})
let cmd = input(':!', cmd . ' ')
if cmd != ''
exec ':!' . cmd
else
echo "Aborted"
endif
endfunction

View File

@ -1,224 +0,0 @@
" ============================================================================
" File: fs_menu.vim
" Description: plugin for the NERD Tree that provides a file system menu
" Maintainer: Martin Grenfell <martin.grenfell at gmail dot com>
" Last Change: 17 July, 2009
" License: This program is free software. It comes without any warranty,
" to the extent permitted by applicable law. You can redistribute
" it and/or modify it under the terms of the Do What The Fuck You
" Want To Public License, Version 2, as published by Sam Hocevar.
" See http://sam.zoy.org/wtfpl/COPYING for more details.
"
" ============================================================================
if exists("g:loaded_nerdtree_fs_menu")
finish
endif
let g:loaded_nerdtree_fs_menu = 1
call NERDTreeAddMenuItem({'text': '(a)dd a childnode', 'shortcut': 'a', 'callback': 'NERDTreeAddNode'})
call NERDTreeAddMenuItem({'text': '(m)ove the current node', 'shortcut': 'm', 'callback': 'NERDTreeMoveNode'})
call NERDTreeAddMenuItem({'text': '(d)elete the current node', 'shortcut': 'd', 'callback': 'NERDTreeDeleteNode'})
if has("gui_mac") || has("gui_macvim")
call NERDTreeAddMenuItem({'text': '(r)eveal in Finder the current node', 'shortcut': 'r', 'callback': 'NERDTreeRevealInFinder'})
call NERDTreeAddMenuItem({'text': '(o)pen the current node with system editor', 'shortcut': 'o', 'callback': 'NERDTreeExecuteFile'})
call NERDTreeAddMenuItem({'text': '(q)uicklook the current node', 'shortcut': 'q', 'callback': 'NERDTreeQuickLook'})
endif
if g:NERDTreePath.CopyingSupported()
call NERDTreeAddMenuItem({'text': '(c)copy the current node', 'shortcut': 'c', 'callback': 'NERDTreeCopyNode'})
endif
"FUNCTION: s:echo(msg){{{1
function! s:echo(msg)
redraw
echomsg "NERDTree: " . a:msg
endfunction
"FUNCTION: s:echoWarning(msg){{{1
function! s:echoWarning(msg)
echohl warningmsg
call s:echo(a:msg)
echohl normal
endfunction
"FUNCTION: s:promptToDelBuffer(bufnum, msg){{{1
"prints out the given msg and, if the user responds by pushing 'y' then the
"buffer with the given bufnum is deleted
"
"Args:
"bufnum: the buffer that may be deleted
"msg: a message that will be echoed to the user asking them if they wish to
" del the buffer
function! s:promptToDelBuffer(bufnum, msg)
echo a:msg
if nr2char(getchar()) ==# 'y'
exec "silent bdelete! " . a:bufnum
endif
endfunction
"FUNCTION: NERDTreeAddNode(){{{1
function! NERDTreeAddNode()
let curDirNode = g:NERDTreeDirNode.GetSelected()
let newNodeName = input("Add a childnode\n".
\ "==========================================================\n".
\ "Enter the dir/file name to be created. Dirs end with a '/'\n" .
\ "", curDirNode.path.str() . g:NERDTreePath.Slash(), "file")
if newNodeName ==# ''
call s:echo("Node Creation Aborted.")
return
endif
try
let newPath = g:NERDTreePath.Create(newNodeName)
let parentNode = b:NERDTreeRoot.findNode(newPath.getParent())
let newTreeNode = g:NERDTreeFileNode.New(newPath)
if parentNode.isOpen || !empty(parentNode.children)
call parentNode.addChild(newTreeNode, 1)
call NERDTreeRender()
call newTreeNode.putCursorHere(1, 0)
endif
catch /^NERDTree/
call s:echoWarning("Node Not Created.")
endtry
endfunction
"FUNCTION: NERDTreeMoveNode(){{{1
function! NERDTreeMoveNode()
let curNode = g:NERDTreeFileNode.GetSelected()
let newNodePath = input("Rename the current node\n" .
\ "==========================================================\n" .
\ "Enter the new path for the node: \n" .
\ "", curNode.path.str(), "file")
if newNodePath ==# ''
call s:echo("Node Renaming Aborted.")
return
endif
try
let bufnum = bufnr(curNode.path.str())
call curNode.rename(newNodePath)
call NERDTreeRender()
"if the node is open in a buffer, ask the user if they want to
"close that buffer
if bufnum != -1
let prompt = "\nNode renamed.\n\nThe old file is open in buffer ". bufnum . (bufwinnr(bufnum) ==# -1 ? " (hidden)" : "") .". Delete this buffer? (yN)"
call s:promptToDelBuffer(bufnum, prompt)
endif
call curNode.putCursorHere(1, 0)
redraw
catch /^NERDTree/
call s:echoWarning("Node Not Renamed.")
endtry
endfunction
" FUNCTION: NERDTreeDeleteNode() {{{1
function! NERDTreeDeleteNode()
let currentNode = g:NERDTreeFileNode.GetSelected()
let confirmed = 0
if currentNode.path.isDirectory
let choice =input("Delete the current node\n" .
\ "==========================================================\n" .
\ "STOP! To delete this entire directory, type 'yes'\n" .
\ "" . currentNode.path.str() . ": ")
let confirmed = choice ==# 'yes'
else
echo "Delete the current node\n" .
\ "==========================================================\n".
\ "Are you sure you wish to delete the node:\n" .
\ "" . currentNode.path.str() . " (yN):"
let choice = nr2char(getchar())
let confirmed = choice ==# 'y'
endif
if confirmed
try
call currentNode.delete()
call NERDTreeRender()
"if the node is open in a buffer, ask the user if they want to
"close that buffer
let bufnum = bufnr(currentNode.path.str())
if buflisted(bufnum)
let prompt = "\nNode deleted.\n\nThe file is open in buffer ". bufnum . (bufwinnr(bufnum) ==# -1 ? " (hidden)" : "") .". Delete this buffer? (yN)"
call s:promptToDelBuffer(bufnum, prompt)
endif
redraw
catch /^NERDTree/
call s:echoWarning("Could not remove node")
endtry
else
call s:echo("delete aborted")
endif
endfunction
" FUNCTION: NERDTreeCopyNode() {{{1
function! NERDTreeCopyNode()
let currentNode = g:NERDTreeFileNode.GetSelected()
let newNodePath = input("Copy the current node\n" .
\ "==========================================================\n" .
\ "Enter the new path to copy the node to: \n" .
\ "", currentNode.path.str(), "file")
if newNodePath != ""
"strip trailing slash
let newNodePath = substitute(newNodePath, '\/$', '', '')
let confirmed = 1
if currentNode.path.copyingWillOverwrite(newNodePath)
call s:echo("Warning: copying may overwrite files! Continue? (yN)")
let choice = nr2char(getchar())
let confirmed = choice ==# 'y'
endif
if confirmed
try
let newNode = currentNode.copy(newNodePath)
if !empty(newNode)
call NERDTreeRender()
call newNode.putCursorHere(0, 0)
endif
catch /^NERDTree/
call s:echoWarning("Could not copy node")
endtry
endif
else
call s:echo("Copy aborted.")
endif
redraw
endfunction
function! NERDTreeQuickLook()
let treenode = g:NERDTreeFileNode.GetSelected()
if treenode != {}
call system("qlmanage -p 2>/dev/null '" . treenode.path.str() . "'")
endif
endfunction
function! NERDTreeRevealInFinder()
let treenode = g:NERDTreeFileNode.GetSelected()
if treenode != {}
let x = system("open -R '" . treenode.path.str() . "'")
endif
endfunction
function! NERDTreeExecuteFile()
let treenode = g:NERDTreeFileNode.GetSelected()
if treenode != {}
let x = system("open '" . treenode.path.str() . "'")
endif
endfunction
" vim: set sw=4 sts=4 et fdm=marker:

File diff suppressed because it is too large Load Diff

View File

@ -1,840 +0,0 @@
" Copyright (c) 1998-2006
" Michael Sharpe <feline@irendi.com>
"
" We grant permission to use, copy modify, distribute, and sell this
" software for any purpose without fee, provided that the above copyright
" notice and this text are not removed. We make no guarantee about the
" suitability of this software for any purpose and we are not liable
" for any damages resulting from its use. Further, we are under no
" obligation to maintain or extend this software. It is provided on an
" "as is" basis without any expressed or implied warranty.
" Directory & regex enhancements added by Bindu Wavell who is well known on
" vim.sf.net
"
" Patch for spaces in files/directories from Nathan Stien (also reported by
" Soeren Sonnenburg)
" Do not load a.vim if is has already been loaded.
if exists("loaded_alternateFile")
finish
endif
if (v:progname == "ex")
finish
endif
let loaded_alternateFile = 1
let alternateExtensionsDict = {}
" setup the default set of alternate extensions. The user can override in thier
" .vimrc if the defaults are not suitable. To override in a .vimrc simply set a
" g:alternateExtensions_<EXT> variable to a comma separated list of alternates,
" where <EXT> is the extension to map.
" E.g. let g:alternateExtensions_CPP = "inc,h,H,HPP,hpp"
" let g:alternateExtensions_{'aspx.cs'} = "aspx"
" This variable will be increased when an extension with greater number of dots
" is added by the AddAlternateExtensionMapping call.
let s:maxDotsInExtension = 1
" Function : AddAlternateExtensionMapping (PRIVATE)
" Purpose : simple helper function to add the default alternate extension
" mappings.
" Args : extension -- the extension to map
" alternates -- comma separated list of alternates extensions
" Returns : nothing
" Author : Michael Sharpe <feline@irendi.com>
function! <SID>AddAlternateExtensionMapping(extension, alternates)
" This code does not actually work for variables like foo{'a.b.c.d.e'}
"let varName = "g:alternateExtensions_" . a:extension
"if (!exists(varName))
" let g:alternateExtensions_{a:extension} = a:alternates
"endif
" This code handles extensions which contains a dot. exists() fails with
" such names.
"let v:errmsg = ""
" FIXME this line causes ex to return 1 instead of 0 for some reason??
"silent! echo g:alternateExtensions_{a:extension}
"if (v:errmsg != "")
"let g:alternateExtensions_{a:extension} = a:alternates
"endif
let g:alternateExtensionsDict[a:extension] = a:alternates
let dotsNumber = strlen(substitute(a:extension, "[^.]", "", "g"))
if s:maxDotsInExtension < dotsNumber
let s:maxDotsInExtension = dotsNumber
endif
endfunction
" Add all the default extensions
" Mappings for C and C++
call <SID>AddAlternateExtensionMapping('h',"c,cpp,cxx,cc,CC")
call <SID>AddAlternateExtensionMapping('H',"C,CPP,CXX,CC")
call <SID>AddAlternateExtensionMapping('hpp',"cpp,c")
call <SID>AddAlternateExtensionMapping('HPP',"CPP,C")
call <SID>AddAlternateExtensionMapping('c',"h")
call <SID>AddAlternateExtensionMapping('C',"H")
call <SID>AddAlternateExtensionMapping('cpp',"h,hpp")
call <SID>AddAlternateExtensionMapping('CPP',"H,HPP")
call <SID>AddAlternateExtensionMapping('cc',"h")
call <SID>AddAlternateExtensionMapping('CC',"H,h")
call <SID>AddAlternateExtensionMapping('cxx',"h")
call <SID>AddAlternateExtensionMapping('CXX',"H")
" Mappings for PSL7
call <SID>AddAlternateExtensionMapping('psl',"ph")
call <SID>AddAlternateExtensionMapping('ph',"psl")
" Mappings for ADA
call <SID>AddAlternateExtensionMapping('adb',"ads")
call <SID>AddAlternateExtensionMapping('ads',"adb")
" Mappings for lex and yacc files
call <SID>AddAlternateExtensionMapping('l',"y,yacc,ypp")
call <SID>AddAlternateExtensionMapping('lex',"yacc,y,ypp")
call <SID>AddAlternateExtensionMapping('lpp',"ypp,y,yacc")
call <SID>AddAlternateExtensionMapping('y',"l,lex,lpp")
call <SID>AddAlternateExtensionMapping('yacc',"lex,l,lpp")
call <SID>AddAlternateExtensionMapping('ypp',"lpp,l,lex")
" Mappings for OCaml
call <SID>AddAlternateExtensionMapping('ml',"mli")
call <SID>AddAlternateExtensionMapping('mli',"ml")
" ASP stuff
call <SID>AddAlternateExtensionMapping('aspx.cs', 'aspx')
call <SID>AddAlternateExtensionMapping('aspx.vb', 'aspx')
call <SID>AddAlternateExtensionMapping('aspx', 'aspx.cs,aspx.vb')
" Setup default search path, unless the user has specified
" a path in their [._]vimrc.
if (!exists('g:alternateSearchPath'))
let g:alternateSearchPath = 'sfr:../source,sfr:../src,sfr:../include,sfr:../inc'
endif
" If this variable is true then a.vim will not alternate to a file/buffer which
" does not exist. E.g while editing a.c and the :A will not swtich to a.h
" unless it exists.
if (!exists('g:alternateNoDefaultAlternate'))
" by default a.vim will alternate to a file which does not exist
let g:alternateNoDefaultAlternate = 0
endif
" If this variable is true then a.vim will convert the alternate filename to a
" filename relative to the current working directory.
" Feature by Nathan Huizinga
if (!exists('g:alternateRelativeFiles'))
" by default a.vim will not convert the filename to one relative to the
" current working directory
let g:alternateRelativeFiles = 0
endif
" Function : GetNthItemFromList (PRIVATE)
" Purpose : Support reading items from a comma seperated list
" Used to iterate all the extensions in an extension spec
" Used to iterate all path prefixes
" Args : list -- the list (extension spec, file paths) to iterate
" n -- the extension to get
" Returns : the nth item (extension, path) from the list (extension
" spec), or "" for failure
" Author : Michael Sharpe <feline@irendi.com>
" History : Renamed from GetNthExtensionFromSpec to GetNthItemFromList
" to reflect a more generic use of this function. -- Bindu
function! <SID>GetNthItemFromList(list, n)
let itemStart = 0
let itemEnd = -1
let pos = 0
let item = ""
let i = 0
while (i != a:n)
let itemStart = itemEnd + 1
let itemEnd = match(a:list, ",", itemStart)
let i = i + 1
if (itemEnd == -1)
if (i == a:n)
let itemEnd = strlen(a:list)
endif
break
endif
endwhile
if (itemEnd != -1)
let item = strpart(a:list, itemStart, itemEnd - itemStart)
endif
return item
endfunction
" Function : ExpandAlternatePath (PRIVATE)
" Purpose : Expand path info. A path with a prefix of "wdr:" will be
" treated as relative to the working directory (i.e. the
" directory where vim was started.) A path prefix of "abs:" will
" be treated as absolute. No prefix or "sfr:" will result in the
" path being treated as relative to the source file (see sfPath
" argument).
"
" A prefix of "reg:" will treat the pathSpec as a regular
" expression substitution that is applied to the source file
" path. The format is:
"
" reg:<sep><pattern><sep><subst><sep><flag><sep>
"
" <sep> seperator character, we often use one of [/|%#]
" <pattern> is what you are looking for
" <subst> is the output pattern
" <flag> can be g for global replace or empty
"
" EXAMPLE: 'reg:/inc/src/g/' will replace every instance
" of 'inc' with 'src' in the source file path. It is possible
" to use match variables so you could do something like:
" 'reg:|src/\([^/]*\)|inc/\1||' (see 'help :substitute',
" 'help pattern' and 'help sub-replace-special' for more details
"
" NOTE: a.vim uses ',' (comma) internally so DON'T use it
" in your regular expressions or other pathSpecs unless you update
" the rest of the a.vim code to use some other seperator.
"
" Args : pathSpec -- path component (or substitution patterns)
" sfPath -- source file path
" Returns : a path that can be used by AlternateFile()
" Author : Bindu Wavell <bindu@wavell.net>
function! <SID>ExpandAlternatePath(pathSpec, sfPath)
let prfx = strpart(a:pathSpec, 0, 4)
if (prfx == "wdr:" || prfx == "abs:")
let path = strpart(a:pathSpec, 4)
elseif (prfx == "reg:")
let re = strpart(a:pathSpec, 4)
let sep = strpart(re, 0, 1)
let patend = match(re, sep, 1)
let pat = strpart(re, 1, patend - 1)
let subend = match(re, sep, patend + 1)
let sub = strpart(re, patend+1, subend - patend - 1)
let flag = strpart(re, strlen(re) - 2)
if (flag == sep)
let flag = ''
endif
let path = substitute(a:sfPath, pat, sub, flag)
"call confirm('PAT: [' . pat . '] SUB: [' . sub . ']')
"call confirm(a:sfPath . ' => ' . path)
else
let path = a:pathSpec
if (prfx == "sfr:")
let path = strpart(path, 4)
endif
let path = a:sfPath . "/" . path
endif
return path
endfunction
" Function : FindFileInSearchPath (PRIVATE)
" Purpose : Searches for a file in the search path list
" Args : filename -- name of the file to search for
" pathList -- the path list to search
" relPathBase -- the path which relative paths are expanded from
" Returns : An expanded filename if found, the empty string otherwise
" Author : Michael Sharpe (feline@irendi.com)
" History : inline code written by Bindu Wavell originally
function! <SID>FindFileInSearchPath(fileName, pathList, relPathBase)
let filepath = ""
let m = 1
let pathListLen = strlen(a:pathList)
if (pathListLen > 0)
while (1)
let pathSpec = <SID>GetNthItemFromList(a:pathList, m)
if (pathSpec != "")
let path = <SID>ExpandAlternatePath(pathSpec, a:relPathBase)
let fullname = path . "/" . a:fileName
let foundMatch = <SID>BufferOrFileExists(fullname)
if (foundMatch)
let filepath = fullname
break
endif
else
break
endif
let m = m + 1
endwhile
endif
return filepath
endfunction
" Function : FindFileInSearchPathEx (PRIVATE)
" Purpose : Searches for a file in the search path list
" Args : filename -- name of the file to search for
" pathList -- the path list to search
" relPathBase -- the path which relative paths are expanded from
" count -- find the count'th occurence of the file on the path
" Returns : An expanded filename if found, the empty string otherwise
" Author : Michael Sharpe (feline@irendi.com)
" History : Based on <SID>FindFileInSearchPath() but with extensions
function! <SID>FindFileInSearchPathEx(fileName, pathList, relPathBase, count)
let filepath = ""
let m = 1
let spath = ""
let pathListLen = strlen(a:pathList)
if (pathListLen > 0)
while (1)
let pathSpec = <SID>GetNthItemFromList(a:pathList, m)
if (pathSpec != "")
let path = <SID>ExpandAlternatePath(pathSpec, a:relPathBase)
if (spath != "")
let spath = spath . ','
endif
let spath = spath . path
else
break
endif
let m = m + 1
endwhile
endif
if (&path != "")
if (spath != "")
let spath = spath . ','
endif
let spath = spath . &path
endif
let filepath = findfile(a:fileName, spath, a:count)
return filepath
endfunction
" Function : EnumerateFilesByExtension (PRIVATE)
" Purpose : enumerates all files by a particular list of alternate extensions.
" Args : path -- path of a file (not including the file)
" baseName -- base name of the file to be expanded
" extension -- extension whose alternates are to be enumerated
" Returns : comma separated list of files with extensions
" Author : Michael Sharpe <feline@irendi.com>
function! EnumerateFilesByExtension(path, baseName, extension)
let enumeration = ""
let extSpec = ""
let v:errmsg = ""
silent! echo g:alternateExtensions_{a:extension}
if (v:errmsg == "")
let extSpec = g:alternateExtensions_{a:extension}
endif
if (extSpec == "")
if (has_key(g:alternateExtensionsDict, a:extension))
let extSpec = g:alternateExtensionsDict[a:extension]
endif
endif
if (extSpec != "")
let n = 1
let done = 0
while (!done)
let ext = <SID>GetNthItemFromList(extSpec, n)
if (ext != "")
if (a:path != "")
let newFilename = a:path . "/" . a:baseName . "." . ext
else
let newFilename = a:baseName . "." . ext
endif
if (enumeration == "")
let enumeration = newFilename
else
let enumeration = enumeration . "," . newFilename
endif
else
let done = 1
endif
let n = n + 1
endwhile
endif
return enumeration
endfunction
" Function : EnumerateFilesByExtensionInPath (PRIVATE)
" Purpose : enumerates all files by expanding the path list and the extension
" list.
" Args : baseName -- base name of the file
" extension -- extension whose alternates are to be enumerated
" pathList -- the list of paths to enumerate
" relPath -- the path of the current file for expansion of relative
" paths in the path list.
" Returns : A comma separated list of paths with extensions
" Author : Michael Sharpe <feline@irendi.com>
function! EnumerateFilesByExtensionInPath(baseName, extension, pathList, relPathBase)
let enumeration = ""
let filepath = ""
let m = 1
let pathListLen = strlen(a:pathList)
if (pathListLen > 0)
while (1)
let pathSpec = <SID>GetNthItemFromList(a:pathList, m)
if (pathSpec != "")
let path = <SID>ExpandAlternatePath(pathSpec, a:relPathBase)
let pe = EnumerateFilesByExtension(path, a:baseName, a:extension)
if (enumeration == "")
let enumeration = pe
else
let enumeration = enumeration . "," . pe
endif
else
break
endif
let m = m + 1
endwhile
endif
return enumeration
endfunction
" Function : DetermineExtension (PRIVATE)
" Purpose : Determines the extension of a filename based on the register
" alternate extension. This allow extension which contain dots to
" be considered. E.g. foo.aspx.cs to foo.aspx where an alternate
" exists for the aspx.cs extension. Note that this will only accept
" extensions which contain less than 5 dots. This is only
" implemented in this manner for simplicity...it is doubtful that
" this will be a restriction in non-contrived situations.
" Args : The path to the file to find the extension in
" Returns : The matched extension if any
" Author : Michael Sharpe (feline@irendi.com)
" History : idea from Tom-Erik Duestad
" Notes : there is some magic occuring here. The exists() function does not
" work well when the curly brace variable has dots in it. And why
" should it, dots are not valid in variable names. But the exists
" function is wierd too. Lets say foo_c does exist. Then
" exists("foo_c.e.f") will be true...even though the variable does
" not exist. However the curly brace variables do work when the
" variable has dots in it. E.g foo_{'c'} is different from
" foo_{'c.d.e'}...and foo_{'c'} is identical to foo_c and
" foo_{'c.d.e'} is identical to foo_c.d.e right? Yes in the current
" implementation of vim. To trick vim to test for existence of such
" variables echo the curly brace variable and look for an error
" message.
function! DetermineExtension(path)
let mods = ":t"
let i = 0
while i <= s:maxDotsInExtension
let mods = mods . ":e"
let extension = fnamemodify(a:path, mods)
if (has_key(g:alternateExtensionsDict, extension))
return extension
endif
let v:errmsg = ""
silent! echo g:alternateExtensions_{extension}
if (v:errmsg == "")
return extension
endif
let i = i + 1
endwhile
return ""
endfunction
" Function : AlternateFile (PUBLIC)
" Purpose : Opens a new buffer by looking at the extension of the current
" buffer and finding the corresponding file. E.g. foo.c <--> foo.h
" Args : accepts one argument. If present it used the argument as the new
" extension.
" Returns : nothing
" Author : Michael Sharpe <feline@irendi.com>
" History : + When an alternate can't be found in the same directory as the
" source file, a search path will be traversed looking for the
" alternates.
" + Moved some code into a separate function, minor optimization
" + rework to favor files in memory based on complete enumeration of
" all files extensions and paths
function! AlternateFile(splitWindow, ...)
let extension = DetermineExtension(expand("%:p"))
let baseName = substitute(expand("%:t"), "\." . extension . '$', "", "")
let currentPath = expand("%:p:h")
if (a:0 != 0)
let newFullname = currentPath . "/" . baseName . "." . a:1
call <SID>FindOrCreateBuffer(newFullname, a:splitWindow, 0)
else
let allfiles = ""
if (extension != "")
let allfiles1 = EnumerateFilesByExtension(currentPath, baseName, extension)
let allfiles2 = EnumerateFilesByExtensionInPath(baseName, extension, g:alternateSearchPath, currentPath)
if (allfiles1 != "")
if (allfiles2 != "")
let allfiles = allfiles1 . ',' . allfiles2
else
let allfiles = allfiles1
endif
else
let allfiles = allfiles2
endif
endif
if (allfiles != "")
let bestFile = ""
let bestScore = 0
let score = 0
let n = 1
let onefile = <SID>GetNthItemFromList(allfiles, n)
let bestFile = onefile
while (onefile != "" && score < 2)
let score = <SID>BufferOrFileExists(onefile)
if (score > bestScore)
let bestScore = score
let bestFile = onefile
endif
let n = n + 1
let onefile = <SID>GetNthItemFromList(allfiles, n)
endwhile
if (bestScore == 0 && g:alternateNoDefaultAlternate == 1)
echo "No existing alternate available"
else
call <SID>FindOrCreateBuffer(bestFile, a:splitWindow, 1)
let b:AlternateAllFiles = allfiles
endif
else
echo "No alternate file/buffer available"
endif
endif
endfunction
" Function : AlternateOpenFileUnderCursor (PUBLIC)
" Purpose : Opens file under the cursor
" Args : splitWindow -- indicates how to open the file
" Returns : Nothing
" Author : Michael Sharpe (feline@irendi.com) www.irendi.com
function! AlternateOpenFileUnderCursor(splitWindow,...)
let cursorFile = (a:0 > 0) ? a:1 : expand("<cfile>")
let currentPath = expand("%:p:h")
let openCount = 1
let fileName = <SID>FindFileInSearchPathEx(cursorFile, g:alternateSearchPath, currentPath, openCount)
if (fileName != "")
call <SID>FindOrCreateBuffer(fileName, a:splitWindow, 1)
let b:openCount = openCount
let b:cursorFile = cursorFile
let b:currentPath = currentPath
else
echo "Can't find file"
endif
endfunction
" Function : AlternateOpenNextFile (PUBLIC)
" Purpose : Opens the next file corresponding to the search which found the
" current file
" Args : bang -- indicates what to do if the current file has not been
" saved
" Returns : nothing
" Author : Michael Sharpe (feline@irendi.com) www.irendi.com
function! AlternateOpenNextFile(bang)
let cursorFile = ""
if (exists("b:cursorFile"))
let cursorFile = b:cursorFile
endif
let currentPath = ""
if (exists("b:currentPath"))
let currentPath = b:currentPath
endif
let openCount = 0
if (exists("b:openCount"))
let openCount = b:openCount + 1
endif
if (cursorFile != "" && currentPath != "" && openCount != 0)
let fileName = <SID>FindFileInSearchPathEx(cursorFile, g:alternateSearchPath, currentPath, openCount)
if (fileName != "")
call <SID>FindOrCreateBuffer(fileName, "n".a:bang, 0)
let b:openCount = openCount
let b:cursorFile = cursorFile
let b:currentPath = currentPath
else
let fileName = <SID>FindFileInSearchPathEx(cursorFile, g:alternateSearchPath, currentPath, 1)
if (fileName != "")
call <SID>FindOrCreateBuffer(fileName, "n".a:bang, 0)
let b:openCount = 1
let b:cursorFile = cursorFile
let b:currentPath = currentPath
else
echo "Can't find next file"
endif
endif
endif
endfunction
comm! -nargs=? -bang IH call AlternateOpenFileUnderCursor("n<bang>", <f-args>)
comm! -nargs=? -bang IHS call AlternateOpenFileUnderCursor("h<bang>", <f-args>)
comm! -nargs=? -bang IHV call AlternateOpenFileUnderCursor("v<bang>", <f-args>)
comm! -nargs=? -bang IHT call AlternateOpenFileUnderCursor("t<bang>", <f-args>)
comm! -nargs=? -bang IHN call AlternateOpenNextFile("<bang>")
imap <Leader>ih <ESC>:IHS<CR>
nmap <Leader>ih :IHS<CR>
imap <Leader>is <ESC>:IHS<CR>:A<CR>
nmap <Leader>is :IHS<CR>:A<CR>
imap <Leader>ihn <ESC>:IHN<CR>
nmap <Leader>ihn :IHN<CR>
"function! <SID>PrintList(theList)
" let n = 1
" let oneFile = <SID>GetNthItemFromList(a:theList, n)
" while (oneFile != "")
" let n = n + 1
" let oneFile = <SID>GetNthItemFromList(a:theList, n)
" endwhile
"endfunction
" Function : NextAlternate (PUBLIC)
" Purpose : Used to cycle through any other alternate file which existed on
" the search path.
" Args : bang (IN) - used to implement the AN vs AN! functionality
" Returns : nothing
" Author : Michael Sharpe <feline@irendi.com>
function! NextAlternate(bang)
if (exists('b:AlternateAllFiles'))
let currentFile = expand("%")
let n = 1
let onefile = <SID>GetNthItemFromList(b:AlternateAllFiles, n)
while (onefile != "" && !<SID>EqualFilePaths(fnamemodify(onefile,":p"), fnamemodify(currentFile,":p")))
let n = n + 1
let onefile = <SID>GetNthItemFromList(b:AlternateAllFiles, n)
endwhile
if (onefile != "")
let stop = n
let n = n + 1
let foundAlternate = 0
let nextAlternate = ""
while (n != stop)
let nextAlternate = <SID>GetNthItemFromList(b:AlternateAllFiles, n)
if (nextAlternate == "")
let n = 1
continue
endif
let n = n + 1
if (<SID>EqualFilePaths(fnamemodify(nextAlternate, ":p"), fnamemodify(currentFile, ":p")))
continue
endif
if (filereadable(nextAlternate))
" on cygwin filereadable("foo.H") returns true if "foo.h" exists
if (has("unix") && $WINDIR != "" && fnamemodify(nextAlternate, ":p") ==? fnamemodify(currentFile, ":p"))
continue
endif
let foundAlternate = 1
break
endif
endwhile
if (foundAlternate == 1)
let s:AlternateAllFiles = b:AlternateAllFiles
"silent! execute ":e".a:bang." " . nextAlternate
call <SID>FindOrCreateBuffer(nextAlternate, "n".a:bang, 0)
let b:AlternateAllFiles = s:AlternateAllFiles
else
echo "Only this alternate file exists"
endif
else
echo "Could not find current file in alternates list"
endif
else
echo "No other alternate files exist"
endif
endfunction
comm! -nargs=? -bang A call AlternateFile("n<bang>", <f-args>)
comm! -nargs=? -bang AS call AlternateFile("h<bang>", <f-args>)
comm! -nargs=? -bang AV call AlternateFile("v<bang>", <f-args>)
comm! -nargs=? -bang AT call AlternateFile("t<bang>", <f-args>)
comm! -nargs=? -bang AN call NextAlternate("<bang>")
" Function : BufferOrFileExists (PRIVATE)
" Purpose : determines if a buffer or a readable file exists
" Args : fileName (IN) - name of the file to check
" Returns : 2 if it exists in memory, 1 if it exists, 0 otherwise
" Author : Michael Sharpe <feline@irendi.com>
" History : Updated code to handle buffernames using just the
" filename and not the path.
function! <SID>BufferOrFileExists(fileName)
let result = 0
let lastBuffer = bufnr("$")
let i = 1
while i <= lastBuffer
if <SID>EqualFilePaths(expand("#".i.":p"), a:fileName)
let result = 2
break
endif
let i = i + 1
endwhile
if (!result)
let bufName = fnamemodify(a:fileName,":t")
let memBufName = bufname(bufName)
if (memBufName != "")
let memBufBasename = fnamemodify(memBufName, ":t")
if (bufName == memBufBasename)
let result = 2
endif
endif
if (!result)
let result = bufexists(bufName) || bufexists(a:fileName) || filereadable(a:fileName)
endif
endif
if (!result)
let result = filereadable(a:fileName)
endif
return result
endfunction
" Function : FindOrCreateBuffer (PRIVATE)
" Purpose : searches the buffer list (:ls) for the specified filename. If
" found, checks the window list for the buffer. If the buffer is in
" an already open window, it switches to the window. If the buffer
" was not in a window, it switches to that buffer. If the buffer did
" not exist, it creates it.
" Args : filename (IN) -- the name of the file
" doSplit (IN) -- indicates whether the window should be split
" ("v", "h", "n", "v!", "h!", "n!", "t", "t!")
" findSimilar (IN) -- indicate weather existing buffers should be
" prefered
" Returns : nothing
" Author : Michael Sharpe <feline@irendi.com>
" History : + bufname() was not working very well with the possibly strange
" paths that can abound with the search path so updated this
" slightly. -- Bindu
" + updated window switching code to make it more efficient -- Bindu
" Allow ! to be applied to buffer/split/editing commands for more
" vim/vi like consistency
" + implemented fix from Matt Perry
function! <SID>FindOrCreateBuffer(fileName, doSplit, findSimilar)
" Check to see if the buffer is already open before re-opening it.
let FILENAME = escape(a:fileName, ' ')
let bufNr = -1
let lastBuffer = bufnr("$")
let i = 1
if (a:findSimilar)
while i <= lastBuffer
if <SID>EqualFilePaths(expand("#".i.":p"), a:fileName)
let bufNr = i
break
endif
let i = i + 1
endwhile
if (bufNr == -1)
let bufName = bufname(a:fileName)
let bufFilename = fnamemodify(a:fileName,":t")
if (bufName == "")
let bufName = bufname(bufFilename)
endif
if (bufName != "")
let tail = fnamemodify(bufName, ":t")
if (tail != bufFilename)
let bufName = ""
endif
endif
if (bufName != "")
let bufNr = bufnr(bufName)
let FILENAME = bufName
endif
endif
endif
if (g:alternateRelativeFiles == 1)
let FILENAME = fnamemodify(FILENAME, ":p:.")
endif
let splitType = a:doSplit[0]
let bang = a:doSplit[1]
if (bufNr == -1)
" Buffer did not exist....create it
let v:errmsg=""
if (splitType == "h")
silent! execute ":split".bang." " . FILENAME
elseif (splitType == "v")
silent! execute ":vsplit".bang." " . FILENAME
elseif (splitType == "t")
silent! execute ":tab split".bang." " . FILENAME
else
silent! execute ":e".bang." " . FILENAME
endif
if (v:errmsg != "")
echo v:errmsg
endif
else
" Find the correct tab corresponding to the existing buffer
let tabNr = -1
" iterate tab pages
for i in range(tabpagenr('$'))
" get the list of buffers in the tab
let tabList = tabpagebuflist(i + 1)
let idx = 0
" iterate each buffer in the list
while idx < len(tabList)
" if it matches the buffer we are looking for...
if (tabList[idx] == bufNr)
" ... save the number
let tabNr = i + 1
break
endif
let idx = idx + 1
endwhile
if (tabNr != -1)
break
endif
endfor
" switch the the tab containing the buffer
if (tabNr != -1)
execute "tabn ".tabNr
endif
" Buffer was already open......check to see if it is in a window
let bufWindow = bufwinnr(bufNr)
if (bufWindow == -1)
" Buffer was not in a window so open one
let v:errmsg=""
if (splitType == "h")
silent! execute ":sbuffer".bang." " . FILENAME
elseif (splitType == "v")
silent! execute ":vert sbuffer " . FILENAME
elseif (splitType == "t")
silent! execute ":tab sbuffer " . FILENAME
else
silent! execute ":buffer".bang." " . FILENAME
endif
if (v:errmsg != "")
echo v:errmsg
endif
else
" Buffer is already in a window so switch to the window
execute bufWindow."wincmd w"
if (bufWindow != winnr())
" something wierd happened...open the buffer
let v:errmsg=""
if (splitType == "h")
silent! execute ":split".bang." " . FILENAME
elseif (splitType == "v")
silent! execute ":vsplit".bang." " . FILENAME
elseif (splitType == "t")
silent! execute ":tab split".bang." " . FILENAME
else
silent! execute ":e".bang." " . FILENAME
endif
if (v:errmsg != "")
echo v:errmsg
endif
endif
endif
endif
endfunction
" Function : EqualFilePaths (PRIVATE)
" Purpose : Compares two paths. Do simple string comparison anywhere but on
" Windows. On Windows take into account that file paths could differ
" in usage of separators and the fact that case does not matter.
" "c:\WINDOWS" is the same path as "c:/windows". has("win32unix") Vim
" version does not count as one having Windows path rules.
" Args : path1 (IN) -- first path
" path2 (IN) -- second path
" Returns : 1 if path1 is equal to path2, 0 otherwise.
" Author : Ilya Bobir <ilya@po4ta.com>
function! <SID>EqualFilePaths(path1, path2)
if has("win16") || has("win32") || has("win64") || has("win95")
return substitute(a:path1, "\/", "\\", "g") ==? substitute(a:path2, "\/", "\\", "g")
else
return a:path1 == a:path2
endif
endfunction

View File

@ -1,524 +0,0 @@
" Buffet Plugin for VIM > 7.3 version 2.10
"
" A fast, simple and easy to use pluggin for switching and managing buffers.
"
" Usage:
"
" Copy the file buffet.vim to the plugins directory.
" The command to open the buffer list is
" :Bufferlist
"
" A horizontal window is opened with a list of buffer. the buffer numbers are
" also displayed along side. The user select a buffer by
"
" 1.Entering the buffer number using keyboard. Just start typing the number using keyboard.
" The plugin will search for the buffer with that number and will keep going to the matching
" buffers. Entered number will be shown at the top you can use backspace to edit it.When you
" are in the desired buffer, press enter or any control keys that are
" displayed at the bottom to execute any command available, on that buffer
"
" Available commands
"
" Enter(Replace current buffer)
" o - make window fill with selected buffer
" hh - (Horizontal Split)
" v - (Vertical Split)
" - - (Vertical Diff Split)
" g - (Go to buffer window if it is visible in any tab)
" d - (Delete selected buffer)
" x - (Close window)
" c - (Clear diff flags for all windows)
"
" 2.Move up or down using the navigation keys to reach the buffer line.
"
" 3.Doubleclick on a buffer line using the mouse. Will immediatly switch to
" that buffer
"
" To make this plugin really useful you have to assign a shortcut key for it,
" say you want F2 key to open the buffer list. you can add the following line in your .vimrc file.
"
" map <F2> :Bufferlist<CR>
"
" Last Change: 2012 Jan
" Maintainer: Sandeep.c.r<sandeepcr2@gmail.com>
"
"
function! s:open_new_window(dim)
exe s:currentposition. ' '.a:dim . 'new buflisttempbuffer412393'
set nonu
setlocal bt=nofile
setlocal modifiable
setlocal bt=nowrite
setlocal bufhidden=hide
setlocal noswapfile
setlocal nowrap
setlocal ft=buffet
return bufnr('%')
endfunction
function! s:open_new_vertical_window(dim)
exe a:dim . 'vnew'
set nonu
setlocal bt=nofile
setlocal bt=nowrite
setlocal bufhidden=hide
setlocal noswapfile
return bufnr('%')
endfunction
function! s:cursormove()
let s:lineonclose = line('.')
if(s:lineonclose >len(s:displayed)+1)
call cursor(2,3)
elseif(s:lineonclose ==1 )
call cursor(len(s:displayed)+1,3)
endif
endfunction
function! s:buffet_pathshorten(str)
if(s:detail == 1)
return a:str
else
return pathshorten(a:str)
endif
endfunction
function! s:display_buffer_list(gotolastbuffer)
let l:line = 2
let l:fg = synIDattr(hlID('Statement'),'fg','gui')
let l:bg = synIDattr(hlID('CursorLine'),'bg','gui')
call filter(s:bufrecent,'exists("s:bufferlistlite[v:val]") && v:val!=t:tlistbuf' )
let l:maxlen = 0
let l:headmaxlen = 0
for l:i in keys(s:bufferlistlite)
if(index(s:bufrecent,l:i)==-1)
call add(s:bufrecent,l:i)
endif
let l:temp = strlen(fnamemodify(s:bufferlistlite[l:i],':t'))
let l:headtemp = strlen(s:buffet_pathshorten(fnamemodify(s:bufferlistlite[l:i],':h')))
if(l:headtemp > l:headmaxlen)
let l:headmaxlen = l:headtemp
endif
if(l:temp > l:maxlen)
let l:maxlen = l:temp
endif
endfor
call setline(1,"Buffet-2.10 ( Enter Number to search for a buffer number )")
let s:displayed = []
let s:last_buffer_line = 0
for l:i in s:bufrecent
let l:thisbufno = str2nr(l:i)
let l:bufname = s:bufferlistlite[l:i]
let l:buftailname =fnamemodify(l:bufname,':t')
let l:bufheadlname =s:buffet_pathshorten(fnamemodify(l:bufname,':h'))
if(getbufvar(l:thisbufno,'&modified'))
let l:modifiedflag = " (+) "
else
let l:modifiedflag = " "
endif
let l:padlength = l:maxlen - strlen(l:buftailname) + 2
let l:padlengthhead= l:headmaxlen - strlen(l:bufheadlname) + 2
let l:short_file_name = repeat(' ',2-strlen(l:i)).l:i .' '. l:buftailname.repeat(' ',l:padlength) .l:modifiedflag. l:bufheadlname .repeat(' ',l:padlengthhead)
let l:padstring = repeat(' ',len(l:short_file_name))
if(exists("s:buftotabwindow[l:thisbufno]"))
let l:thistab = s:buftotabwindow[l:thisbufno][0][0]
let l:thiswindow = s:buftotabwindow[l:thisbufno][0][1]
let l:short_file_name = l:short_file_name ." Tab:".l:thistab." Window:".l:thiswindow
call add(s:displayed,[l:thisbufno,l:thistab,l:thiswindow])
if(l:thistab == s:sourcetab && l:thiswindow == s:sourcewindow)
let l:short_file_name = '>'.l:short_file_name ." <"
else
let l:short_file_name = ' '.l:short_file_name
endif
else
let l:short_file_name = ' '.l:short_file_name
call add(s:displayed,[l:thisbufno])
endif
call setline(l:line,l:short_file_name)
let l:subwindow = 1
while(exists("s:buftotabwindow[l:thisbufno][l:subwindow]"))
let l:thistab = s:buftotabwindow[l:thisbufno][l:subwindow][0]
let l:thiswindow = s:buftotabwindow[l:thisbufno][l:subwindow][1]
let l:line += 1
if(l:thistab == s:sourcetab && l:thiswindow == s:sourcewindow)
call setline(l:line,'> '.l:padstring."Tab:".l:thistab." window:".l:thiswindow." <")
else
call setline(l:line,' '.l:padstring."Tab:".l:thistab." window:".l:thiswindow)
endif
call add(s:displayed,[l:thisbufno,l:thistab,l:thiswindow])
let l:subwindow += 1
endwhile
if(s:last_buffer_line == 0)
let s:last_buffer_line = l:line+1
endif
let l:line += 1
endfor
exe "resize ".(len(s:displayed)+4)
call setline(l:line,"")
let l:line+=1
call setline(l:line,"Enter(Load buffer) | hh/v/-/c (Horizontal/Vertical/Vertical Diff Split/Clear Diff) | o(Maximize) | t(New tab) | m(Toggle detail) | g(Go to window) | d(Delete buffer) | x(Close window) ")
let l:fg = synIDattr(hlID('Statement'),'fg','Question')
exe 'highlight buffethelpline guibg=black'
exe 'highlight buffethelpline guifg=orange'
exe '2match buffethelpline /\%1l\|\%'.l:line.'l.\%>1c/'
if(a:gotolastbuffer==1)
call cursor(s:last_buffer_line,3)
else
if(s:lineonclose >len(s:displayed)+1)
let s:lineonclose -=1
endif
call cursor(s:lineonclose,3)
endif
endfunction
function! s:close()
if(exists("t:tlistbuf"))
unlet t:tlistbuf
let s:lineonclose = line('.')
:bdelete buflisttempbuffer412393
echo ''
exe s:sourcewindow. ' wincmd w'
endif
endfunction
function! s:place_sign()
setlocal cursorline
return
exec "sign unplace *"
exec "sign define lineh linehl=Search texthl=Search"
exec "sign place 10 name=lineh line=".line('.')." buffer=" . t:tlistbuf
endfunction
function! s:getallbuffers()
let l:buffers = filter(range(1,bufnr('$')), 'buflisted(v:val)')
let l:return = {}
for i in l:buffers
let l:bufname = bufname(i)
if(strlen(l:bufname)==0)
let l:bufname = "[No Name]"
endif
let l:return[i] = l:bufname
endfor
return l:return
endfunction
function! s:printmessage(msg)
setlocal modifiable
call setline(len(s:displayed)+2,a:msg)
setlocal nomodifiable
endfunction
function! s:press(num)
if(a:num==-1)
let s:keybuf = strpart(s:keybuf,0,len(s:keybuf)-1)
else
let s:keybuf = s:keybuf . a:num
endif
setlocal modifiable
call setline(1 ,'Buffet-2.10 - Searching for buffer:'.s:keybuf.' (Use backspace to edit)')
let l:index = 0
for l:i in s:displayed
if(l:i[0] == s:keybuf)
let l:index += 2
exe "normal "+l:index+ "gg"
break
endif
let l:index += 1
endfor
setlocal nomodifiable
endfunction
function! s:togglesw()
let s:currentposition = ''
call s:toggle(1)
endfunction
function! s:toggletop()
let s:currentposition = 'topleft'
call s:toggle(1)
endfunction
function! s:toggle(gotolastbuffer)
let s:keybuf = ''
if(exists("t:tlistbuf"))
call s:close()
return 0
endif
let s:bufferlistlite = s:getallbuffers()
let s:sourcebuffer = bufnr('%')
let s:sourcewindow = winnr()
let s:sourcetab = tabpagenr()
let s:buftotabwindow = {}
for l:i in range(tabpagenr('$'))
let l:windowno = 1
for l:bufno in tabpagebuflist(l:i + 1)
if(!exists("s:buftotabwindow[l:bufno]"))
let s:buftotabwindow[l:bufno] = []
endif
call add(s:buftotabwindow[l:bufno], [l:i+1,l:windowno])
let l:windowno += 1
endfor
endfor
let t:tlistbuf = s:open_new_window(len(s:bufrecent)+4)
set nodiff
set noscrollbind
let s:buflistwindow = winnr()
setlocal cursorline
call s:display_buffer_list(a:gotolastbuffer)
"call matchadd('String','[\/\\][^\/\\]*$')
setlocal nomodifiable
map <buffer> <silent> <2-leftrelease> :call <sid>loadbuffer(0)<cr>
nnoremap <buffer> <silent> <C-R> :call <sid>loadbuffer(0)<cr>
nnoremap <buffer> <silent> <C-M> :call <sid>loadbuffer(0)<cr>
nnoremap <buffer> <silent> x :call <sid>closewindow(0)<cr>
nnoremap <buffer> <silent> X :call <sid>closewindow(1)<cr>
nnoremap <buffer> <silent> c :call <sid>cleardiff()<cr>
nnoremap <buffer> <silent> C :call <sid>cleardiff()<cr>
nnoremap <buffer> <silent> d :call <sid>deletebuffer(0)<cr>
nnoremap <buffer> <silent> D :call <sid>deletebuffer(1)<cr>
nnoremap <buffer> <silent> o :call <sid>loadbuffer(1)<cr>
nnoremap <buffer> <silent> O :call <sid>loadbuffer(1)<cr>
nnoremap <buffer> <silent> g :call <sid>gotowindow()<cr>
nnoremap <buffer> <silent> G :call <sid>gotowindow()<cr>
nnoremap <buffer> <silent> s :call <sid>split('h')<cr>
nnoremap <buffer> <silent> S :call <sid>split('h')<cr>
nnoremap <buffer> <silent> t :call <sid>openintab()<cr>
nnoremap <buffer> <silent> T :call <sid>openintab()<cr>
nnoremap <buffer> <silent> hh :call <sid>split('h')<cr>
nnoremap <buffer> <silent> HH :call <sid>split('h')<cr>
nnoremap <buffer> <silent> v :call <sid>split('v')<cr>
nnoremap <buffer> <silent> V :call <sid>split('v')<cr>
nnoremap <buffer> <silent> r :call <sid>refresh()<cr>
nnoremap <buffer> <silent> 0 :call <sid>press(0)<cr>
nnoremap <buffer> <silent> 1 :call <sid>press(1)<cr>
nnoremap <buffer> <silent> 2 :call <sid>press(2)<cr>
nnoremap <buffer> <silent> 3 :call <sid>press(3)<cr>
nnoremap <buffer> <silent> 4 :call <sid>press(4)<cr>
nnoremap <buffer> <silent> 5 :call <sid>press(5)<cr>
nnoremap <buffer> <silent> 6 :call <sid>press(6)<cr>
nnoremap <buffer> <silent> 7 :call <sid>press(7)<cr>
nnoremap <buffer> <silent> 8 :call <sid>press(8)<cr>
nnoremap <buffer> <silent> 9 :call <sid>press(9)<cr>
nnoremap <buffer> <silent> - :call <sid>diff_split('v')<cr>
nnoremap <buffer> <silent> m :call <sid>toggle_detail()<cr>
nnoremap <buffer> <silent> M :call <sid>toggle_detail()<cr>
nnoremap <buffer> <silent> <BS> :call <sid>press(-1)<cr>
nnoremap <buffer> <silent> <Esc> :call <sid>close()<cr>
augroup Tlistaco1
autocmd!
au BufLeave <buffer> call <sid>close()
au CursorMoved <buffer> call <sid>cursormove()
augroup END
endfunction
function! s:toggle_detail()
let s:detail = !s:detail
setlocal modifiable
call s:display_buffer_list(0)
setlocal nomodifiable
endfunction
function! s:cleardiff()
for i in range(1,winnr('$'))
call setwinvar(i,"&diff",0)
call setwinvar(i,"&scrollbind",0)
endfor
endfunction
function! s:deletebuffer(force)
let l:llindex= line('.') - 2
if(exists("s:displayed[l:llindex]") )
let l:selectedbuffer = str2nr(s:displayed[l:llindex][0])
if(getbufvar(str2nr(l:selectedbuffer),'&modified') && a:force == 0 )
call s:printmessage("Buffer contents modified. Use 'D' to force delete.")
else
call s:toggle(0)
exe "bdelete! ".l:selectedbuffer
call s:toggle(0)
endif
else
call s:close()
endif
endfunction
function! s:openintab()
let l:llindex= line('.') - 2
if(exists("s:displayed[l:llindex]"))
exe s:buflistwindow . ' wincmd w'
let l:target = s:displayed[l:llindex][0]
call s:close()
exe "tabnew"
exe l:target. ' buf!'
else
call s:close()
endif
endfunction
function! s:closewindow(force)
let l:llindex= line('.') - 2
if(exists("s:displayed[l:llindex]"))
if(exists("s:displayed[l:llindex][1]"))
if(getbufvar(str2nr(s:displayed[l:llindex][0]),'&modified') && a:force == 0 )
call s:printmessage("Buffer contents modified. Use 'X' to force close.")
else
if(tabpagenr('$')==1 && winnr('$')==2)
call s:printmessage("Not closing last window of the last tab.")
else
exe s:buflistwindow . ' wincmd w'
call s:close()
exe "tabn" .s:displayed[l:llindex][1]
exe s:displayed[l:llindex][2]. ' wincmd w'
:q!
exe "tabn". s:sourcetab
call s:toggle(0)
endif
endif
else
call s:printmessage("Buffer not showing in any tab.")
endif
else
call s:close()
endif
endfunction
function! s:gotowindow()
let l:llindex= line('.') - 2
if(exists("s:displayed[l:llindex]"))
if(exists("s:displayed[l:llindex][1]"))
exe s:buflistwindow . ' wincmd w'
call s:close()
exe "tabn" .s:displayed[l:llindex][1]
exe s:displayed[l:llindex][2]. ' wincmd w'
else
call s:printmessage("Buffer not showing in any tab. Use Enter,v,hh,t or o to open buffer in a window.")
endif
else
call s:close()
endif
endfunction
function! s:loadbuffer(isonly)
let l:llindex= line('.') - 2
if(exists("s:displayed[l:llindex]"))
exe s:buflistwindow . ' wincmd w'
let l:target = s:displayed[l:llindex][0]
call s:close()
call s:switch_buffer(l:target)
if(a:isonly == 1 && winnr('$')>1)
exe 'only!'
endif
else
call s:close()
endif
endfunction
function! s:diff_split(mode)
let l:llindex= line('.') - 2
if(exists("s:displayed[l:llindex]"))
exe s:buflistwindow . ' wincmd w'
let l:target = s:displayed[l:llindex][0]
call s:close()
call s:diff_split_buffer(l:target,a:mode)
else
call s:close()
endif
endfunction
function! s:split(mode)
let l:llindex= line('.') - 2
if(exists("s:displayed[l:llindex]"))
exe s:buflistwindow . ' wincmd w'
let l:target = s:displayed[l:llindex][0]
call s:close()
call s:split_buffer(l:target,a:mode)
else
call s:close()
endif
endfunction
function! s:goto_buffer(bufferno)
if(exists("s:buftotabwindow[a:bufferno]"))
let l:tabno = s:buftotabwindow[a:bufferno][0]
let l:winno = s:buftotabwindow[a:bufferno][1]
exe "tabn" .l:tabno
exe l:winno. ' wincmd w'
endif
endfunction
function! s:removedifforsource()
if(exists("b:buffet_sourcewindowfordiff"))
call setwinvar(b:buffet_sourcewindowfordiff,"&diff",0)
call setwinvar(b:buffet_sourcewindowfordiff,"&scrollbind",0)
endif
endfunction
function! s:diff_split_buffer(bufferno,mode)
if(a:mode == 'v')
exe 'belowright vert '.a:bufferno. ' sbuf'
elseif(a:mode == 'h')
exe 'belowright ' .a:bufferno. ' sbuf'
endif
if(exists("s:buflinenos[a:bufferno]"))
exe "normal "+s:buflinenos[a:bufferno] + "gg"
endif
call setwinvar(s:sourcewindow,"&diff",1)
call setwinvar(s:sourcewindow,"&scrollbind",1)
let b:buffet_sourcewindowfordiff = s:sourcewindow
augroup Tlistaco2
autocmd!
au BufWinLeave <buffer> call <sid>removedifforsource()
augroup END
setlocal diff
setlocal scrollbind
endfunction
function! s:split_buffer(bufferno,mode)
if(a:mode == 'v')
exe 'belowright vert '.a:bufferno. ' sbuf'
elseif(a:mode == 'h')
exe 'belowright ' .a:bufferno. ' sbuf'
endif
if(exists("s:buflinenos[a:bufferno]"))
exe "normal "+s:buflinenos[a:bufferno] + "gg"
endif
set nodiff
set noscrollbind
endfunction
function! s:switch_buffer(bufferno)
exe a:bufferno. ' buf!'
set nodiff
set noscrollbind
if(exists("s:buflinenos[a:bufferno]"))
exe "normal "+s:buflinenos[a:bufferno] + "gg"
endif
endfunction
function! s:updaterecent()
let l:bufname = bufname("%")
let l:j = bufnr('%')
if(strlen(l:bufname) > 0 && getbufvar(l:j,'&modifiable') )
call filter(s:bufrecent, 'v:val !='. l:j)
call insert(s:bufrecent,l:j.'')
endif
endfunction
function! s:savelineno()
let s:buflinenos[bufnr('%')] = line('.')
endfunction
let s:bufrecent = []
let s:buflinenos = {}
let s:bufferlistlite = {}
let s:bufliststatus = 0
let s:keybuf = ''
let s:lineonclose = 3
let s:currentposition = ''
let s:firstrun = 1
let s:detail = 0
augroup Tlistacom
autocmd!
au BufEnter * call <sid>updaterecent()
au BufLeave * call <sid>savelineno()
augroup END
command! Bufferlist :call <sid>toggletop()
command! Bufferlistsw :call <sid>togglesw()

View File

@ -1,28 +0,0 @@
" Avoid installing twice or when in unsupported Vim version.
if exists('g:loaded_file_line') || (v:version < 700)
finish
endif
let g:loaded_file_line = 1
function! s:gotoline()
let file = bufname("%")
" Accept file:line:column: or file:line:column and file:line also
let names = matchlist( file, '\(.\{-1,}\):\(\d\+\)\(:\(\d*\):\?\)\?$')
if len(names) != 0 && filereadable(names[1])
let l:bufn = bufnr("%")
exec "keepalt edit " . names[1]
exec ":" . names[2]
exec ":bwipeout " l:bufn
if foldlevel(names[2]) > 0
exec ":foldopen!"
endif
if (names[4] != '')
exec "normal! " . names[4] . '|'
endif
endif
endfunction
autocmd! BufNewFile *:* nested call s:gotoline()

File diff suppressed because it is too large Load Diff

View File

@ -1,142 +0,0 @@
" tComment.vim -- An easily extensible & universal comment plugin
" @Author: Tom Link (micathom AT gmail com)
" @License: GPL (see http://www.gnu.org/licenses/gpl.txt)
" @Created: 27-Dez-2004.
" @Last Change: 2011-05-26.
" @Revision: 720
" GetLatestVimScripts: 1173 1 tcomment.vim
if &cp || exists('loaded_tcomment')
finish
endif
let loaded_tcomment = 205
if !exists("g:tcommentMapLeader1")
" g:tcommentMapLeader1 should be a shortcut that can be used with
" map, imap, vmap.
let g:tcommentMapLeader1 = '<c-_>'
endif
if !exists("g:tcommentMapLeader2")
" g:tcommentMapLeader2 should be a shortcut that can be used with
" map, xmap.
let g:tcommentMapLeader2 = '<Leader>_'
endif
if !exists("g:tcommentMapLeaderOp1")
let g:tcommentMapLeaderOp1 = 'gc'
endif
if !exists("g:tcommentMapLeaderOp2")
let g:tcommentMapLeaderOp2 = 'gC'
endif
" :display: :[range]TComment[!] ?ARGS...
" If there is a visual selection that begins and ends in the same line,
" then |:TCommentInline| is used instead.
" The optional range defaults to the current line. With a bang '!',
" always comment the line.
"
" ARGS... are either (see also |tcomment#Comment()|):
" 1. a list of key=value pairs
" 2. 1-2 values for: ?commentBegin, ?commentEnd
command! -bang -range -nargs=* -complete=customlist,tcomment#CompleteArgs TComment
\ keepjumps call tcomment#Comment(<line1>, <line2>, 'G', "<bang>", <f-args>)
" :display: :[range]TCommentAs[!] commenttype ?ARGS...
" TCommentAs requires g:tcomment_{filetype} to be defined.
" With a bang '!', always comment the line.
"
" ARGS... are either (see also |tcomment#Comment()|):
" 1. a list of key=value pairs
" 2. 1-2 values for: ?commentBegin, ?commentEnd
command! -bang -complete=customlist,tcomment#Complete -range -nargs=+ TCommentAs
\ call tcomment#CommentAs(<line1>, <line2>, "<bang>", <f-args>)
" :display: :[range]TCommentRight[!] ?ARGS...
" Comment the text to the right of the cursor. If a visual selection was
" made (be it block-wise or not), all lines are commented out at from
" the current cursor position downwards.
" With a bang '!', always comment the line.
"
" ARGS... are either (see also |tcomment#Comment()|):
" 1. a list of key=value pairs
" 2. 1-2 values for: ?commentBegin, ?commentEnd
command! -bang -range -nargs=* -complete=customlist,tcomment#CompleteArgs TCommentRight
\ keepjumps call tcomment#Comment(<line1>, <line2>, 'R', "<bang>", <f-args>)
" :display: :[range]TCommentBlock[!] ?ARGS...
" Comment as "block", e.g. use the {&ft}_block comment style. The
" commented text isn't indented or reformated.
" With a bang '!', always comment the line.
"
" ARGS... are either (see also |tcomment#Comment()|):
" 1. a list of key=value pairs
" 2. 1-2 values for: ?commentBegin, ?commentEnd
command! -bang -range -nargs=* -complete=customlist,tcomment#CompleteArgs TCommentBlock
\ keepjumps call tcomment#Comment(<line1>, <line2>, 'B', "<bang>", <f-args>)
" :display: :[range]TCommentInline[!] ?ARGS...
" Use the {&ft}_inline comment style.
" With a bang '!', always comment the line.
"
" ARGS... are either (see also |tcomment#Comment()|):
" 1. a list of key=value pairs
" 2. 1-2 values for: ?commentBegin, ?commentEnd
command! -bang -range -nargs=* -complete=customlist,tcomment#CompleteArgs TCommentInline
\ keepjumps call tcomment#Comment(<line1>, <line2>, 'I', "<bang>", <f-args>)
" :display: :[range]TCommentMaybeInline[!] ?ARGS...
" With a bang '!', always comment the line.
"
" ARGS... are either (see also |tcomment#Comment()|):
" 1. a list of key=value pairs
" 2. 1-2 values for: ?commentBegin, ?commentEnd
command! -bang -range -nargs=* -complete=customlist,tcomment#CompleteArgs TCommentMaybeInline
\ keepjumps call tcomment#Comment(<line1>, <line2>, 'i', "<bang>", <f-args>)
if (g:tcommentMapLeader1 != '')
exec 'noremap <silent> '. g:tcommentMapLeader1 . g:tcommentMapLeader1 .' :TComment<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader1 . g:tcommentMapLeader1 .' :TCommentMaybeInline<cr>'
exec 'inoremap <silent> '. g:tcommentMapLeader1 . g:tcommentMapLeader1 .' <c-o>:TComment<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader1 .'p m`vip:TComment<cr>``'
exec 'inoremap <silent> '. g:tcommentMapLeader1 .'p <c-o>:norm! m`vip<cr>:TComment<cr><c-o>``'
exec 'noremap '. g:tcommentMapLeader1 .'<space> :TComment '
exec 'inoremap '. g:tcommentMapLeader1 .'<space> <c-o>:TComment '
exec 'inoremap <silent> '. g:tcommentMapLeader1 .'r <c-o>:TCommentRight<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader1 .'r :TCommentRight<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader1 .'i :TCommentInline<cr>'
exec 'vnoremap <silent> '. g:tcommentMapLeader1 .'r :TCommentRight<cr>'
exec 'noremap '. g:tcommentMapLeader1 .'b :TCommentBlock<cr>'
exec 'inoremap '. g:tcommentMapLeader1 .'b <c-o>:TCommentBlock<cr>'
exec 'noremap '. g:tcommentMapLeader1 .'a :TCommentAs '
exec 'inoremap '. g:tcommentMapLeader1 .'a <c-o>:TCommentAs '
exec 'noremap '. g:tcommentMapLeader1 .'n :TCommentAs <c-r>=&ft<cr> '
exec 'inoremap '. g:tcommentMapLeader1 .'n <c-o>:TCommentAs <c-r>=&ft<cr> '
exec 'noremap '. g:tcommentMapLeader1 .'s :TCommentAs <c-r>=&ft<cr>_'
exec 'inoremap '. g:tcommentMapLeader1 .'s <c-o>:TCommentAs <c-r>=&ft<cr>_'
endif
if (g:tcommentMapLeader2 != '')
exec 'noremap <silent> '. g:tcommentMapLeader2 .'_ :TComment<cr>'
exec 'xnoremap <silent> '. g:tcommentMapLeader2 .'_ :TCommentMaybeInline<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader2 .'p vip:TComment<cr>'
exec 'noremap '. g:tcommentMapLeader2 .'<space> :TComment '
exec 'xnoremap <silent> '. g:tcommentMapLeader2 .'i :TCommentInline<cr>'
exec 'noremap <silent> '. g:tcommentMapLeader2 .'r :TCommentRight<cr>'
exec 'xnoremap <silent> '. g:tcommentMapLeader2 .'r :TCommentRight<cr>'
exec 'noremap '. g:tcommentMapLeader2 .'b :TCommentBlock<cr>'
exec 'noremap '. g:tcommentMapLeader2 .'a :TCommentAs '
exec 'noremap '. g:tcommentMapLeader2 .'n :TCommentAs <c-r>=&ft<cr> '
exec 'noremap '. g:tcommentMapLeader2 .'s :TCommentAs <c-r>=&ft<cr>_'
endif
if (g:tcommentMapLeaderOp1 != '')
exec 'nnoremap <silent> '. g:tcommentMapLeaderOp1 .' :let w:tcommentPos = getpos(".") \| set opfunc=tcomment#Operator<cr>g@'
exec 'nnoremap <silent> '. g:tcommentMapLeaderOp1 .'c :let w:tcommentPos = getpos(".") \| set opfunc=tcomment#OperatorLine<cr>g@$'
exec 'xnoremap <silent> '. g:tcommentMapLeaderOp1 .' :TCommentMaybeInline<cr>'
endif
if (g:tcommentMapLeaderOp2 != '')
exec 'nnoremap <silent> '. g:tcommentMapLeaderOp2 .' :let w:tcommentPos = getpos(".") \| set opfunc=tcomment#OperatorAnyway<cr>g@'
exec 'nnoremap <silent> '. g:tcommentMapLeaderOp2 .'c :let w:tcommentPos = getpos(".") \| set opfunc=tcomment#OperatorLineAnyway<cr>g@$'
exec 'xnoremap <silent> '. g:tcommentMapLeaderOp2 .' :TCommentMaybeInline<cr>'
endif

View File

@ -1,88 +0,0 @@
let s:tree_up_dir_line = '.. (up a dir)'
"NERDTreeFlags are syntax items that should be invisible, but give clues as to
"how things should be highlighted
syn match NERDTreeFlag #\~#
syn match NERDTreeFlag #\[RO\]#
"highlighting for the .. (up dir) line at the top of the tree
execute "syn match NERDTreeUp #\\V". s:tree_up_dir_line ."#"
"highlighting for the ~/+ symbols for the directory nodes
syn match NERDTreeClosable #\~\<#
syn match NERDTreeClosable #\~\.#
syn match NERDTreeOpenable #+\<#
syn match NERDTreeOpenable #+\.#he=e-1
"highlighting for the tree structural parts
syn match NERDTreePart #|#
syn match NERDTreePart #`#
syn match NERDTreePartFile #[|`]-#hs=s+1 contains=NERDTreePart
"quickhelp syntax elements
syn match NERDTreeHelpKey #" \{1,2\}[^ ]*:#hs=s+2,he=e-1
syn match NERDTreeHelpKey #" \{1,2\}[^ ]*,#hs=s+2,he=e-1
syn match NERDTreeHelpTitle #" .*\~#hs=s+2,he=e-1 contains=NERDTreeFlag
syn match NERDTreeToggleOn #".*(on)#hs=e-2,he=e-1 contains=NERDTreeHelpKey
syn match NERDTreeToggleOff #".*(off)#hs=e-3,he=e-1 contains=NERDTreeHelpKey
syn match NERDTreeHelpCommand #" :.\{-}\>#hs=s+3
syn match NERDTreeHelp #^".*# contains=NERDTreeHelpKey,NERDTreeHelpTitle,NERDTreeFlag,NERDTreeToggleOff,NERDTreeToggleOn,NERDTreeHelpCommand
"highlighting for readonly files
syn match NERDTreeRO #.*\[RO\]#hs=s+2 contains=NERDTreeFlag,NERDTreeBookmark,NERDTreePart,NERDTreePartFile
"highlighting for sym links
syn match NERDTreeLink #[^-| `].* -> # contains=NERDTreeBookmark,NERDTreeOpenable,NERDTreeClosable,NERDTreeDirSlash
"highlighing for directory nodes and file nodes
syn match NERDTreeDirSlash #/#
syn match NERDTreeDir #[^-| `].*/# contains=NERDTreeLink,NERDTreeDirSlash,NERDTreeOpenable,NERDTreeClosable
syn match NERDTreeExecFile #[|` ].*\*\($\| \)# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark
syn match NERDTreeFile #|-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile
syn match NERDTreeFile #`-.*# contains=NERDTreeLink,NERDTreePart,NERDTreeRO,NERDTreePartFile,NERDTreeBookmark,NERDTreeExecFile
syn match NERDTreeCWD #^[</].*$#
"highlighting for bookmarks
syn match NERDTreeBookmark # {.*}#hs=s+1
"highlighting for the bookmarks table
syn match NERDTreeBookmarksLeader #^>#
syn match NERDTreeBookmarksHeader #^>-\+Bookmarks-\+$# contains=NERDTreeBookmarksLeader
syn match NERDTreeBookmarkName #^>.\{-} #he=e-1 contains=NERDTreeBookmarksLeader
syn match NERDTreeBookmark #^>.*$# contains=NERDTreeBookmarksLeader,NERDTreeBookmarkName,NERDTreeBookmarksHeader
if exists("g:NERDChristmasTree") && g:NERDChristmasTree
hi def link NERDTreePart Special
hi def link NERDTreePartFile Type
hi def link NERDTreeFile Normal
hi def link NERDTreeExecFile Title
hi def link NERDTreeDirSlash Identifier
hi def link NERDTreeClosable Type
else
hi def link NERDTreePart Normal
hi def link NERDTreePartFile Normal
hi def link NERDTreeFile Normal
hi def link NERDTreeClosable Title
endif
hi def link NERDTreeBookmarksHeader statement
hi def link NERDTreeBookmarksLeader ignore
hi def link NERDTreeBookmarkName Identifier
hi def link NERDTreeBookmark normal
hi def link NERDTreeHelp String
hi def link NERDTreeHelpKey Identifier
hi def link NERDTreeHelpCommand Identifier
hi def link NERDTreeHelpTitle Macro
hi def link NERDTreeToggleOn Question
hi def link NERDTreeToggleOff WarningMsg
hi def link NERDTreeDir Directory
hi def link NERDTreeUp Directory
hi def link NERDTreeCWD Statement
hi def link NERDTreeLink Macro
hi def link NERDTreeOpenable Title
hi def link NERDTreeFlag ignore
hi def link NERDTreeRO WarningMsg
hi def link NERDTreeBookmark Statement
hi def link NERDTreeCurrentNode Search

View File

@ -1,6 +1,47 @@
" Vundle
filetype off " required!
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" let Vundle manage Vundle
" required!
Bundle 'gmarik/vundle'
" Rest of my bundles
" File Nav
Bundle 'kien/ctrlp.vim'
Bundle 'scrooloose/nerdtree'
Bundle 'a.vim'
Bundle 'file-line'
" Needs Vim compiled with Ruby
Bundle 'wincent/Command-T'
Bundle 'tpope/vim-fugitive'
" Buffer Nav
Bundle 'kien/tabman.vim'
Bundle 'sandeepcr529/Buffet.vim'
" Needs Vim compiled with Ruby
Bundle 'mutewinter/LustyJuggler'
" Nav in file
Bundle 'taglist.vim'
" Text Manipulation
Bundle 'tomtom/tcomment_vim'
" GUI
Bundle 'vividchalk.vim'
Bundle 'gregsexton/MatchTag'
"Allow arrow keys
set nocompatible
"Enable mouse input
set mousehide
set mouse=a
"tab functionality
"tabs inserted as 4 spaces
"backspace deletes all spaces
@ -10,14 +51,17 @@ set tabstop=4
set shiftwidth=4
set softtabstop=4
set autoindent
filetype indent on
filetype plugin indent on
set virtualedit=onemore " allow for cursor beyond last character
set scrolljump=5 " lines to scroll when cursor leaves screen
set scrolloff=3 " minimum lines to keep above and below cursor
"Enable search highlighting
set hls
"Set backup dirs
set backup
set backupdir=~/.vim/backup
set directory=~/.vim/tmp
"set theme
:colorscheme vividchalk
@ -61,6 +105,14 @@ map <S-u> <C-r>
" Buffet shortcut
nnoremap <silent> <F2> :Bufferlist<CR>
"LustyJugler settings
let g:LustyJugglerShowKeys=1 "Show numbers for Lusty Buffers
let g:LustyJugglerSuppressRubyWarning=1
"NERDTree
nnoremap <leader>nn :NERDTreeToggle<CR>
nnoremap <leader>nf :NERDTreeFind<CR>
"CTags List
nnoremap <silent> <F8> :TlistToggle<CR>
let Tlist_Exit_OnlyWindow=1
@ -78,10 +130,13 @@ inoremap <Nul> <C-n>
" Stupid shift key fixes
"cmap W w
cmap WQ wq
cmap Wq wq
"cmap Q q
cmap WQ<CR> wq<CR>
cmap Wq<CR> wq<CR>
cmap W<CR> w<CR>
cmap Q<CR> q<CR>
"Enable search highlighting
set hls
"clearing highlighted search
nmap <silent> <leader>/ :nohlsearch<CR>
@ -89,3 +144,61 @@ nmap <silent> <leader>/ :nohlsearch<CR>
cmap cwd lcd %:p:h
cmap cd. lcd %:p:h
" ---------------
" Command T and ctrlp.vim
" Snagged from mutewinter @ https://github.com/mutewinter/dot_vim
" ---------------
" Ensure Ctrl-P isn't bound by default
let g:ctrlp_map = ''
" Ensure max height isn't too large. (for performance)
let g:ctrlp_max_height = 10
let g:CommandTMaxHeight = 10
" Set the default escape keybinding to, you guessed it, escape.
let g:CommandTCancelMap = '<esc>'
" Dynamically use Command T or ctrlp.vim based on availability of Ruby.
" We do this because Command T is much faster than ctrlp.vim.
if has('ruby')
" --------
" Use Command T since we've got Ruby
" --------
" Conditional Mappings
if has('unix')
nnoremap <silent><C-t> :CommandT<CR>
else
nnoremap <silent><M-t> :CommandT<CR>
endif
" Leader Commands
nnoremap <leader>t :CommandT<CR>
else
" --------
" Use ctrlp.vim since we don't have Ruby
" --------
" Conditional Mappings
if has('unix')
let g:ctrlp_map = '<C-t>'
else
let g:ctrlp_map = '<M-t>'
endif
" Leader Commands
nnoremap <leader>t :CtrlPRoot<CR>
nnoremap <leader>b :CtrlPBuffer<CR>
endif
" Always use CtrlP for most recently used files and relative dierctory.
if has('unix')
nnoremap <silent><C-u> :CtrlPCurFile<CR>
else
nnoremap <silent><M-u> :CtrlPCurFile<CR>
endif
" Also map leader commands
nnoremap <leader>u :CtrlPCurFile<CR>
nnoremap <leader>m :CtrlPMRUFiles<CR>
nnoremap <leader>b :CtrlPBuffer<CR>