From ebf81fe2a9c11ca4bcfed3c3dc7b2f04ea0edbd2 Mon Sep 17 00:00:00 2001 From: stack Date: Fri, 12 Oct 2012 16:01:33 +0200 Subject: [PATCH] added submodules and default configuration --- .gitignore | 2 + .gitmodules | 36 + .vimrc | 222 + addons/LargeFile/archive/LargeFile.vba.gz | Bin 0 -> 2142 bytes addons/LargeFile/doc/LargeFile.txt | 55 + addons/LargeFile/doc/tags | 4 + addons/LargeFile/plugin/LargeFile.vim | 80 + addons/LargeFile/version | 1 + addons/Screen_vim__gnu_screentmux | 1 + addons/Vim-R-plugin | 1 + addons/checksyntax | 1 + addons/cscope_macros/archive/cscope_maps.vim | 165 + addons/cscope_macros/plugin/cscope_maps.vim | 165 + addons/cscope_macros/version | 1 + addons/fugitive | 1 + .../github-altercation-vim-colors-solarized | 1 + addons/gnupg/archive/gnupg.vim | 1177 +++++ addons/gnupg/plugin/gnupg.vim | 1177 +++++ addons/gnupg/version | 1 + addons/molokai/archive/molokai.vim | 211 + addons/molokai/colors/molokai.vim | 211 + addons/molokai/version | 1 + addons/snipmate | 1 + addons/snipmate-snippets | 1 + addons/surround | 1 + addons/taglist-plus/README.md | 42 + addons/taglist-plus/archive/taglist-plus.zip | Bin 0 -> 52103 bytes addons/taglist-plus/doc/taglist-plus.txt | 1499 ++++++ addons/taglist-plus/doc/tags | 62 + addons/taglist-plus/plugin/taglist-plus.vim | 4620 +++++++++++++++++ addons/taglist-plus/version | 1 + addons/tlib | 1 + addons/vim-addon-manager | 1 + addons/vim-addon-manager-known-repositories | 1 + addons/vim-addon-mw-utils | 1 + addons/xoria256/archive/xoria256.vim | 142 + addons/xoria256/colors/xoria256.vim | 142 + addons/xoria256/version | 1 + colors/earendel.vim | 159 + colors/gentooish.vim | 163 + colors/jellybeans.vim | 127 + colors/molokai.vim | 211 + colors/moria.vim | 247 + colors/sand.vim | 30 + colors/twilight.vim | 114 + colors/wombat.vim | 51 + colors/xoria256.vim | 142 + colors/zenburn.vim | 271 + spell/it.utf-8.spl | Bin 0 -> 1232149 bytes 49 files changed, 11545 insertions(+) create mode 100644 .gitignore create mode 100644 .gitmodules create mode 100644 .vimrc create mode 100644 addons/LargeFile/archive/LargeFile.vba.gz create mode 100644 addons/LargeFile/doc/LargeFile.txt create mode 100644 addons/LargeFile/doc/tags create mode 100644 addons/LargeFile/plugin/LargeFile.vim create mode 100644 addons/LargeFile/version create mode 160000 addons/Screen_vim__gnu_screentmux create mode 160000 addons/Vim-R-plugin create mode 160000 addons/checksyntax create mode 100644 addons/cscope_macros/archive/cscope_maps.vim create mode 100644 addons/cscope_macros/plugin/cscope_maps.vim create mode 100644 addons/cscope_macros/version create mode 160000 addons/fugitive create mode 160000 addons/github-altercation-vim-colors-solarized create mode 100644 addons/gnupg/archive/gnupg.vim create mode 100644 addons/gnupg/plugin/gnupg.vim create mode 100644 addons/gnupg/version create mode 100644 addons/molokai/archive/molokai.vim create mode 100644 addons/molokai/colors/molokai.vim create mode 100644 addons/molokai/version create mode 160000 addons/snipmate create mode 160000 addons/snipmate-snippets create mode 160000 addons/surround create mode 100644 addons/taglist-plus/README.md create mode 100644 addons/taglist-plus/archive/taglist-plus.zip create mode 100644 addons/taglist-plus/doc/taglist-plus.txt create mode 100644 addons/taglist-plus/doc/tags create mode 100644 addons/taglist-plus/plugin/taglist-plus.vim create mode 100644 addons/taglist-plus/version create mode 160000 addons/tlib create mode 160000 addons/vim-addon-manager create mode 160000 addons/vim-addon-manager-known-repositories create mode 160000 addons/vim-addon-mw-utils create mode 100644 addons/xoria256/archive/xoria256.vim create mode 100644 addons/xoria256/colors/xoria256.vim create mode 100644 addons/xoria256/version create mode 100644 colors/earendel.vim create mode 100644 colors/gentooish.vim create mode 100644 colors/jellybeans.vim create mode 100644 colors/molokai.vim create mode 100644 colors/moria.vim create mode 100644 colors/sand.vim create mode 100644 colors/twilight.vim create mode 100644 colors/wombat.vim create mode 100644 colors/xoria256.vim create mode 100644 colors/zenburn.vim create mode 100644 spell/it.utf-8.spl diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..afbc104 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.VimballRecord +.netrwhist diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..65c480d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,36 @@ +[submodule "addons/checksyntax"] + path = addons/checksyntax + url = git://github.com/tomtom/checksyntax_vim.git +[submodule "addons/snipmate"] + path = addons/snipmate + url = git://github.com/MarcWeber/snipmate.vim.git +[submodule "addons/snipmate-snippets"] + path = addons/snipmate-snippets + url = git://github.com/honza/snipmate-snippets.git +[submodule "addons/tlib"] + path = addons/tlib + url = git://github.com/tomtom/tlib_vim.git +[submodule "addons/vim-addon-manager"] + path = addons/vim-addon-manager + url = https://github.com/MarcWeber/vim-addon-manager.git +[submodule "addons/vim-addon-manager-known-repositories"] + path = addons/vim-addon-manager-known-repositories + url = git://github.com/MarcWeber/vim-addon-manager-known-repositories.git +[submodule "addons/vim-addon-mw-utils"] + path = addons/vim-addon-mw-utils + url = git://github.com/MarcWeber/vim-addon-mw-utils.git +[submodule "addons/fugitive"] + path = addons/fugitive + url = git://github.com/tpope/vim-fugitive +[submodule "addons/github-altercation-vim-colors-solarized"] + path = addons/github-altercation-vim-colors-solarized + url = git://github.com/altercation/vim-colors-solarized +[submodule "addons/Screen_vim__gnu_screentmux"] + path = addons/Screen_vim__gnu_screentmux + url = git://github.com/ervandew/screen +[submodule "addons/surround"] + path = addons/surround + url = git://github.com/tpope/vim-surround +[submodule "addons/Vim-R-plugin"] + path = addons/Vim-R-plugin + url = git://github.com/jcfaria/Vim-R-plugin diff --git a/.vimrc b/.vimrc new file mode 100644 index 0000000..bc78eb3 --- /dev/null +++ b/.vimrc @@ -0,0 +1,222 @@ +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" General +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +set nocompatible " get out of horrible vi-compatible mode +filetype indent plugin on | syn on +set history=1000 " How many lines of history to remember +set cf " enable error files and error jumping +set ffs=unix,dos,mac " support all three, in this order +set viminfo+=! " make sure it can save viminfo +set isk+=_,@,- " none of these should be word dividers, so make them not be +set nobackup " real man don't use backups ;) +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Theme/Colors +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +syntax on " syntax highlighting on + +set background=dark +set t_Co=256 +colorscheme desert +"colorscheme xoria256 +"let g:solarized_termcolors=256 +"colorscheme solarized + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Vim UI +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +set wildmenu " turn on wild menu +set ruler " Always show current positions along the bottom +"set number " turn on line numbers +set lz " do not redraw while running macros (much faster) (LazyRedraw) +set hid " you can change buffer without saving +set backspace=2 " make backspace work normal +set whichwrap+=<,>,h,l " backspace and cursor keys wrap to +set mouse=a " use mouse everywhere +set shortmess=atI " shortens messages to avoid 'press a key' prompt +set report=0 " tell us when anything is changed via :... +" make the splitters between windows be blank +set fillchars=vert:\ ,stl:\ ,stlnc:\ + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Visual Cues +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +set showmatch " show matching brackets +set mat=5 " how many tenths of a second to blink matching brackets for +set nohlsearch " do not highlight searched for phrases +set incsearch " BUT do highlight as you type you search phrase +set listchars=tab:\|\ ,trail:.,extends:>,precedes:<,eol:$ " what to show when I hit :set list +set so=10 " Keep 10 lines (top/bottom) for scope +set novisualbell " don't blink +set noerrorbells " no noises +"set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [ASCII=\%03.3b]\ [HEX=\%02.2B]\ [POS=%04l,%04v][%p%%]\ [LEN=%L] +set statusline=%F%m%r%h%w\ [FORMAT=%{&ff}]\ [TYPE=%Y]\ [POS=%04l,%04v][%p%%] +set laststatus=2 " always show the status line + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Text Formatting/Layout +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +set fo=tcrqn " See Help (complex) +set si " smartindent +set tabstop=4 " tab spacing (settings below are just to unify it) +set softtabstop=4 " unify +set shiftwidth=4 " unify +set expandtab " space instead of tabs please! +set nowrap " do not wrap lines +autocmd FileType c,cpp,slang set cindent +autocmd FileType c,cpp,slang set textwidth=79 + + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Folding +" Enable folding, but by default make it act like folding is off, because folding is annoying in anything but a few rare cases +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +set foldenable " Turn on folding +set foldmethod=indent " Make folding indent sensitive +set foldlevel=100 " Don't autofold anything (but I can still fold manually) +set foldopen-=search " don't open folds when you search into them +set foldopen-=undo " don't open folds when you undo stuff + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Mouse Settings +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +set mouse=a " mouse support in all modes +set mousehide " hide the mouse when typing text + +" ,p and shift-insert will paste the X buffer, even on the command line +nmap p i +imap +cmap + +" this makes the mouse paste a block of text without formatting it +" (good for code) +map "*p + +" Convenient for non italian keyboard +map ò : + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Matchit +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let b:match_ignorecase = 1 + +" make tab in v mode ident code +vmap >gv +vmap I +nmap ^i + +"Easy to access esc key +map! +map + +" paste mode - this will avoid unexpected effects when you +" cut or copy some text from one window and paste it in Vim. +set pastetoggle= + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Perl +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +let perl_extended_vars=1 " highlight advanced perl vars inside strings + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Custom Functions +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Select range, then hit :SuperRetab($width) - by p0g and FallingCow +function! SuperRetab(width) range + silent! exe a:firstline . ',' . a:lastline . 's/\v%(^ *)@<= {'. a:width .'}/\t/g' +endfunction + +"switch spellcheck languages +let g:myLangList = [ "none", "it", "en_us" ] +function! MySpellLang() +"loop through languages +if !exists( "b:myLang" ) + let b:myLang=0 +endif +let b:myLang = b:myLang + 1 +if b:myLang >= len(g:myLangList) | let b:myLang = 0 | endif + +if b:myLang== 0 | setlocal spell nospell | endif +if b:myLang== 1 | setlocal spell spelllang=it | endif +if b:myLang== 2 | setlocal spell spelllang=en_us | endif + +echo "language spell:" g:myLangList[b:myLang] +endfunction + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Mappings +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" alt-i (normal mode) inserts a single char, and then switches back to normal +map i r +map ggVG:call SuperRetab() +" encypt the file (toggle) +map ggVGg? +map :call MySpellLang() +map :TlistOpen +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Autocommands +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +autocmd BufEnter * :syntax sync fromstart " ensure every file does syntax highlighting (full) +autocmd BufNewFile *.sh call append(0, "#!/bin/bash") +autocmd BufNewFile *.pl call append(0, "#!/usr/bin/perl") +autocmd BufNewFile *.py call append(0, "#!/bin/python") + +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" Useful abbrevs +""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +iab xdate =strftime("%d/%m/%y %H:%M:%S") + +" Latex abbrevs +"iab cha \chapter{}i +"iab sub \subsection{} +"iab sec \section{} +"iab ite \item +"iab enu \begin{enumerate}\end{enumerate}O +"iab footn \footnote{} +"iab tabb \begin{tabbing}\end{tabbing}O + +""""""""""""""""""""""""""" +set titlestring=%t%(\ %M%)%(\ (%{expand(\"%:~:h\")})%)%(\ %a%)\ -\ %{v:servername} +if &term == "screen" + set t_ts=^[k + set t_fs=^[\ +endif +if &term == "screen" || &term == "xterm" + set title +endif + +" vim-addon-manager +" +fun SetupVAM() + let addons_base = expand('$HOME') . '/.vim/addons' + exec 'set runtimepath+='.addons_base.'/vim-addon-manager' + + " unix based os users may want to use this code checking out VAM + " if !isdirectory(addons_base.'/vim-addon-manager') + " exec '!p='.shellescape(addons_base).'; mkdir -p "$p" && cd "$p" && git clone --depth 1 git://github.com/MarcWeber/vim-addon-manager.git' + " endif + + " commenting try .. endtry because trace is lost if you use it. + " There should be no exception anyway + try + + let g:solarized_termcolors=256 + call vam#ActivateAddons(['github:altercation/vim-colors-solarized']) + call vam#ActivateAddons(['surround','checksyntax','snipmate','snipmate-snippets','gnupg','LargeFile','taglist-plus'], {'auto_install' : 0}) + " pluginA could be github:YourName see vam#install#RewriteName() + catch /.*/ + echoe v:exception + endtry +endf +call SetupVAM() + +let ft_addons = { + \ '^\%(R\|r\)$': [ 'Screen_vim__gnu_screentmux', 'Vim-R-plugin' ], +\ } +au FileType * for l in values(filter(copy(ft_addons), string(expand('')).' =~ v:key')) | call vam#ActivateAddons(l, {'force_loading_plugins_now':1}) | endfor +" experimental: run after gui has been started (gvim) [3] +" option1: au VimEnter * call SetupVAM() +" option2: au GUIEnter * call SetupVAM() +" See BUGS sections below [*] diff --git a/addons/LargeFile/archive/LargeFile.vba.gz b/addons/LargeFile/archive/LargeFile.vba.gz new file mode 100644 index 0000000000000000000000000000000000000000..96b9b40530a68867009136857e23038e3546ec41 GIT binary patch literal 2142 zcmV-k2%+~MiwFqI=GaI8159CZXJtldY-KKXVqpNaSo?3=$PxZo{42&R8cTwtvlQo1 zon_RCeK{W-JB^b7MS>P9aw#s%S9h0IbnzeGZ{WeDhfP^hu>l zktB4YgIL{4P0J0vj)hL7p|c6S7HP4RNiw3}^khWu;>qd6`)Fj%=0z$~CiaS?T&e7* z3!zu?7nR7#tx9{JKYyNjFAqGQn)NwdOKYesNMs~Rn+It~Hm6kFNRpwlDqB&))D$UJ zVV&z6S}Pk;|oA(a! z^Nq9@pfeUGT?bkf*34=8?BF>~X^wO9^UPS7I;S1$Jg|-*k?ne&r>V$7Q=1j!=^lN|TzGrEUcj(3^Ln8_sP@N80SH`FG&MOfKoMa=nMR^3M*#H9iOJQV4c}4(% zRmGp4Pp1PT>4B z($J$XMDX*IAf_Xl(UT|CUr8Go^}FnUFMy60UAGUX2eU)>kCWn$_!bKq&v5>iJ0cmx zd1_YV4~N4nw-R3zgCXJSBRYQc9eowYtt-whPaiX;9dx^3&b+A1_I5yz*amVGWg?XW zMuBtoDaeApe~)V6PsH3kO@ImJIC3leH1UrIj9m71O|;{*n(V)HaYKE?j)hc483ln{`w#!l=zuPDnwM9X+lW?UW#k`|~-CAP|BF`jP4I)fI{1fr0AQ!b5FwzQ3@qx~=Yqy3-o zx7r_!_GzDei9#*O2dLZB1ia5Oi%#lKYQH<}+)@4ySuUiwl^qsV2>wApw+@^5ceRzg zR=M_v;yzZUw(^j+9f~1#Dtn!T{~;ghY-nJprS1D>r#6BD;C$R9sk;Q~TC5B)_PI`D zGJp=QlC5K5u_-%7Zs&_I$AHjHt+wUd%cjoOHdD6cf9r8>zb-aXarcB1i++T95UOlV_3i&-4j`L1uI_QE{q45{|3 zt%lTR&%EKz^00SS52J3`nQiEAr3!A6P4C`F>DALH{cvz5I=T$?6(;QBuh&7n^DYvp zN;Z>|rTYEtvDYK&YnkS#0+(0U?@r!Qr1P|qvu{YILM6yUZS25%ofjL;&3sP%V8DtT zj#-;On%{e^k>g;?KlIvhkUk)RKApd%i}TlKm)B<`iXu^vgb{sr`t9)ajYK193Eesfrj78ta&_O7BdJ^xS9YfX(G^SmDq6uv2ELyAN?$5=tikmQT-m%8Nh#U=9RVXpi+R%#iI{oO=~vm@l<~^i5upz!sxHfp0#(xXw$(l^|4ZB3T}k{PGK_u3U*LQB3X+K4l|}q8MWLK*0Ic7V_=nuXBT!* zZ6YW#ce)qgAyRxW^bw$2Ww05)B-8b0|9CouXXS*%GA}L7-n<%A@*B~RTA|&CUay2v zTps~y=lX3gs_{@w=RAE2%F1-f9*iiG0vk{qwjx1Bp2~ux47m)!JMhZ3DUa&Go`dz^ zaIY$pS$)W}5bl{m!XW0rO2J`;NF>{LPF&_%=WA1ypY}2Ux(|7$*R}!V{t7eE6&Re` zPT(CeJ%IC{=r3yOOH3Y>OIuPz1p^5&#%>ib0uShL&A?1ls;qFAwVzo_zPUV|jhD)L zsX(Ev@mSGS=-s|wn7wI|>^yQXa{>@0+&~NLxNDH0=Z9T!WXd3}^aD&7E|y~j(FF?ojR5|6H&nL=QI=iSWX0#~MD2@vq1NRuRVnsIr6l7E@JpnsJj)R=5| z!r`lA{Vt@>u5b#R@1sj_!gy9IHV%t>gU2t5vkCpGxb<%Cm%?#et#3;r(IL(0H+bcs zZi|>PQxVGDzOnm8Wehh+E?u})829R>?kgvSrs=ei(?1oNk_lbMA{G$>v04GtGORPO zLeL&?h*d~T9qS2PvN$=sEV^gC;0^=*9pXE&1(gbIfWl=aF5+ UGAZWm%r^J_4Ln?7(WMjs0EEde$N&HU literal 0 HcmV?d00001 diff --git a/addons/LargeFile/doc/LargeFile.txt b/addons/LargeFile/doc/LargeFile.txt new file mode 100644 index 0000000..13ceead --- /dev/null +++ b/addons/LargeFile/doc/LargeFile.txt @@ -0,0 +1,55 @@ +*LargeFile.txt* Editing Large Files Quickly Sep 23, 2008 + +Author: Charles E. Campbell, Jr. + (remove NOSPAM from Campbell's email first) +Copyright: (c) 2004-2008 by Charles E. Campbell, Jr. *LargeFile-copyright* + The VIM LICENSE applies to LargeFile.vim + (see |copyright|) except use "LargeFile" instead of "Vim" + No warranty, express or implied. Use At-Your-Own-Risk. + +============================================================================== +1. Large File Plugin *largefile* {{{1 + +The LargeFile plugin is fairly short -- it simply sets up an |autocmd| that +checks for large files. There is one parameter: > + g:LargeFile +which, by default, is 20MB. Thus with this value of g:LargeFile, 20MByte +files and larger are considered to be "large files"; smaller ones aren't. Of +course, you as a user may set g:LargeFile to whatever you want in your +<.vimrc> (in units of MBytes). + +LargeFile.vim always assumes that when the file size is larger than what +can fit into a signed integer (2^31, ie. about 2GB) that the file is "Large". + +Basically, this autocmd simply turns off a number of features in Vim, +including event handling, undo, and syntax highlighting, in the interest of +speed and responsiveness. + +LargeFile.vim borrows from vimtip#611. + +To undo what LargeFile does, type > + :Unlarge +< +To redo what LargeFile does, type > + :Large +< +Note that LargeFile cannot alleviate hardware limitations; vim on 32-bit +machines are limited to editing 2G files. If your vim is compiled on a 64-bit +machine such that it can take advantage of the additional address space, then +presumably vim could edit up to 9.7 quadrillion byte files (not that I've ever +tried that!). + +============================================================================== +2. History *largefile-history* {{{1 + + 4 : Jan 03, 2008 * made LargeFile.vim :AutoInstall:-able by getscript + Apr 11, 2008 * (Daniel Shahaf suggested) that :Large! do the large-file + handling irregardless of file size. Implemented. + Sep 23, 2008 * if getfsize() returns -2 then the file is assumed to be + large + 3 : May 24, 2007 * Unlarge command included + * If getfsize() returns something less than -1, then it + will automatically be assumed to be a large file. + +============================================================================== +vim:tw=78:ts=8:ft=help:fdm=marker: diff --git a/addons/LargeFile/doc/tags b/addons/LargeFile/doc/tags new file mode 100644 index 0000000..9ecbdfd --- /dev/null +++ b/addons/LargeFile/doc/tags @@ -0,0 +1,4 @@ +LargeFile-copyright LargeFile.txt /*LargeFile-copyright* +LargeFile.txt LargeFile.txt /*LargeFile.txt* +largefile LargeFile.txt /*largefile* +largefile-history LargeFile.txt /*largefile-history* diff --git a/addons/LargeFile/plugin/LargeFile.vim b/addons/LargeFile/plugin/LargeFile.vim new file mode 100644 index 0000000..9f6551e --- /dev/null +++ b/addons/LargeFile/plugin/LargeFile.vim @@ -0,0 +1,80 @@ +" LargeFile: Sets up an autocmd to make editing large files work with celerity +" Author: Charles E. Campbell, Jr. +" Date: Sep 23, 2008 +" Version: 4 +" GetLatestVimScripts: 1506 1 :AutoInstall: LargeFile.vim + +" --------------------------------------------------------------------- +" Load Once: {{{1 +if exists("g:loaded_LargeFile") || &cp + finish +endif +let g:loaded_LargeFile = "v4" +let s:keepcpo = &cpo +set cpo&vim + +" --------------------------------------------------------------------- +" Commands: {{{1 +com! Unlarge call s:Unlarge() +com! -bang Large call s:LargeFile(0,expand("%")) + +" --------------------------------------------------------------------- +" Options: {{{1 +if !exists("g:LargeFile") + let g:LargeFile= 20 " in megabytes +endif + +" --------------------------------------------------------------------- +" LargeFile Autocmd: {{{1 +" for large files: turns undo, syntax highlighting, undo off etc +" (based on vimtip#611) +augroup LargeFile + au! + au BufReadPre * call LargeFile(0,expand("")) + au BufReadPost * + \ if &ch < 2 && (getfsize(expand("")) >= g:LargeFile*1024*1024 || getfsize(expand("")) == -2) + \| echomsg "***note*** handling a large file" + \| endif +augroup END + +" --------------------------------------------------------------------- +" s:LargeFile: {{{2 +fun! s:LargeFile(force,fname) +" call Dfunc("LargeFile(force=".a:force." fname<".a:fname.">)") + if a:force || getfsize(a:fname) >= g:LargeFile*1024*1024 || getfsize(a:fname) <= -2 + syn clear + let b:eikeep = &ei + let b:ulkeep = &ul + let b:bhkeep = &bh + let b:fdmkeep= &fdm + let b:swfkeep= &swf + set ei=FileType + setlocal noswf bh=unload fdm=manual ul=-1 + let fname=escape(substitute(a:fname,'\','/','g'),' ') + exe "au LargeFile BufEnter ".fname." set ul=-1" + exe "au LargeFile BufLeave ".fname." let &ul=".b:ulkeep."|set ei=".b:eikeep + exe "au LargeFile BufUnload ".fname." au! LargeFile * ". fname + echomsg "***note*** handling a large file" + endif +" call Dret("s:LargeFile") +endfun + +" --------------------------------------------------------------------- +" s:Unlarge: this function will undo what the LargeFile autocmd does {{{2 +fun! s:Unlarge() +" call Dfunc("s:Unlarge()") + if exists("b:eikeep") |let &ei = b:eikeep |endif + if exists("b:ulkeep") |let &ul = b:ulkeep |endif + if exists("b:bhkeep") |let &bh = b:bhkeep |endif + if exists("b:fdmkeep")|let &fdm = b:fdmkeep|endif + if exists("b:swfkeep")|let &swf = b:swfkeep|endif + syn on + doau FileType +" call Dret("s:Unlarge") +endfun + +" --------------------------------------------------------------------- +" Restore: {{{1 +let &cpo= s:keepcpo +unlet s:keepcpo +" vim: ts=4 fdm=marker diff --git a/addons/LargeFile/version b/addons/LargeFile/version new file mode 100644 index 0000000..b8626c4 --- /dev/null +++ b/addons/LargeFile/version @@ -0,0 +1 @@ +4 diff --git a/addons/Screen_vim__gnu_screentmux b/addons/Screen_vim__gnu_screentmux new file mode 160000 index 0000000..3120f09 --- /dev/null +++ b/addons/Screen_vim__gnu_screentmux @@ -0,0 +1 @@ +Subproject commit 3120f09f62f8924d3ab8583f02061aad9edb6460 diff --git a/addons/Vim-R-plugin b/addons/Vim-R-plugin new file mode 160000 index 0000000..d1c4e23 --- /dev/null +++ b/addons/Vim-R-plugin @@ -0,0 +1 @@ +Subproject commit d1c4e23857225aa52a407b0ccab534dc1e7c55ea diff --git a/addons/checksyntax b/addons/checksyntax new file mode 160000 index 0000000..a91faeb --- /dev/null +++ b/addons/checksyntax @@ -0,0 +1 @@ +Subproject commit a91faeb042a1a252563c3272e8caab9d62045861 diff --git a/addons/cscope_macros/archive/cscope_maps.vim b/addons/cscope_macros/archive/cscope_maps.vim new file mode 100644 index 0000000..c577b45 --- /dev/null +++ b/addons/cscope_macros/archive/cscope_maps.vim @@ -0,0 +1,165 @@ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" CSCOPE settings for vim +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" +" This file contains some boilerplate settings for vim's cscope interface, +" plus some keyboard mappings that I've found useful. +" +" USAGE: +" -- vim 6: Stick this file in your ~/.vim/plugin directory (or in a +" 'plugin' directory in some other directory that is in your +" 'runtimepath'. +" +" -- vim 5: Stick this file somewhere and 'source cscope.vim' it from +" your ~/.vimrc file (or cut and paste it into your .vimrc). +" +" NOTE: +" These key maps use multiple keystrokes (2 or 3 keys). If you find that vim +" keeps timing you out before you can complete them, try changing your timeout +" settings, as explained below. +" +" Happy cscoping, +" +" Jason Duell jduell@alumni.princeton.edu 2002/3/7 +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + + +" This tests to see if vim was configured with the '--enable-cscope' option +" when it was compiled. If it wasn't, time to recompile vim... +if has("cscope") + + """"""""""""" Standard cscope/vim boilerplate + + " use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t' + set cscopetag + + " check cscope for definition of a symbol before checking ctags: set to 1 + " if you want the reverse search order. + set csto=0 + + " add any cscope database in current directory + if filereadable("cscope.out") + cs add cscope.out + " else add the database pointed to by environment variable + elseif $CSCOPE_DB != "" + cs add $CSCOPE_DB + endif + + " show msg when any other cscope db added + set cscopeverbose + + + """"""""""""" My cscope/vim key mappings + " + " The following maps all invoke one of the following cscope search types: + " + " 's' symbol: find all references to the token under cursor + " 'g' global: find global definition(s) of the token under cursor + " 'c' calls: find all calls to the function name under cursor + " 't' text: find all instances of the text under cursor + " 'e' egrep: egrep search for the word under cursor + " 'f' file: open the filename under cursor + " 'i' includes: find files that include the filename under cursor + " 'd' called: find functions that function under cursor calls + " + " Below are three sets of the maps: one set that just jumps to your + " search result, one that splits the existing vim window horizontally and + " diplays your search result in the new window, and one that does the same + " thing, but does a vertical split instead (vim 6 only). + " + " I've used CTRL-\ and CTRL-@ as the starting keys for these maps, as it's + " unlikely that you need their default mappings (CTRL-\'s default use is + " as part of CTRL-\ CTRL-N typemap, which basically just does the same + " thing as hitting 'escape': CTRL-@ doesn't seem to have any default use). + " If you don't like using 'CTRL-@' or CTRL-\, , you can change some or all + " of these maps to use other keys. One likely candidate is 'CTRL-_' + " (which also maps to CTRL-/, which is easier to type). By default it is + " used to switch between Hebrew and English keyboard mode. + " + " All of the maps involving the macro use '^$': this is so + " that searches over '#include " return only references to + " 'time.h', and not 'sys/time.h', etc. (by default cscope will return all + " files that contain 'time.h' as part of their name). + + + " To do the first type of search, hit 'CTRL-\', followed by one of the + " cscope search types above (s,g,c,t,e,f,i,d). The result of your cscope + " search will be displayed in the current window. You can use CTRL-T to + " go back to where you were before the search. + " + + nmap s :cs find s =expand("") + nmap g :cs find g =expand("") + nmap c :cs find c =expand("") + nmap t :cs find t =expand("") + nmap e :cs find e =expand("") + nmap f :cs find f =expand("") + nmap i :cs find i ^=expand("")$ + nmap d :cs find d =expand("") + + + " Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type + " makes the vim window split horizontally, with search result displayed in + " the new window. + " + " (Note: earlier versions of vim may not have the :scs command, but it + " can be simulated roughly via: + " nmap s :cs find s =expand("") + + nmap s :scs find s =expand("") + nmap g :scs find g =expand("") + nmap c :scs find c =expand("") + nmap t :scs find t =expand("") + nmap e :scs find e =expand("") + nmap f :scs find f =expand("") + nmap i :scs find i ^=expand("")$ + nmap d :scs find d =expand("") + + + " Hitting CTRL-space *twice* before the search type does a vertical + " split instead of a horizontal one (vim 6 and up only) + " + " (Note: you may wish to put a 'set splitright' in your .vimrc + " if you prefer the new window on the right instead of the left + + nmap s :vert scs find s =expand("") + nmap g :vert scs find g =expand("") + nmap c :vert scs find c =expand("") + nmap t :vert scs find t =expand("") + nmap e :vert scs find e =expand("") + nmap f :vert scs find f =expand("") + nmap i :vert scs find i ^=expand("")$ + nmap d :vert scs find d =expand("") + + + """"""""""""" key map timeouts + " + " By default Vim will only wait 1 second for each keystroke in a mapping. + " You may find that too short with the above typemaps. If so, you should + " either turn off mapping timeouts via 'notimeout'. + " + "set notimeout + " + " Or, you can keep timeouts, by uncommenting the timeoutlen line below, + " with your own personal favorite value (in milliseconds): + " + "set timeoutlen=4000 + " + " Either way, since mapping timeout settings by default also set the + " timeouts for multicharacter 'keys codes' (like ), you should also + " set ttimeout and ttimeoutlen: otherwise, you will experience strange + " delays as vim waits for a keystroke after you hit ESC (it will be + " waiting to see if the ESC is actually part of a key code like ). + " + "set ttimeout + " + " personally, I find a tenth of a second to work well for key code + " timeouts. If you experience problems and have a slow terminal or network + " connection, set it higher. If you don't set ttimeoutlen, the value for + " timeoutlent (default: 1000 = 1 second, which is sluggish) is used. + " + "set ttimeoutlen=100 + +endif + + diff --git a/addons/cscope_macros/plugin/cscope_maps.vim b/addons/cscope_macros/plugin/cscope_maps.vim new file mode 100644 index 0000000..c577b45 --- /dev/null +++ b/addons/cscope_macros/plugin/cscope_maps.vim @@ -0,0 +1,165 @@ +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" CSCOPE settings for vim +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" +" +" This file contains some boilerplate settings for vim's cscope interface, +" plus some keyboard mappings that I've found useful. +" +" USAGE: +" -- vim 6: Stick this file in your ~/.vim/plugin directory (or in a +" 'plugin' directory in some other directory that is in your +" 'runtimepath'. +" +" -- vim 5: Stick this file somewhere and 'source cscope.vim' it from +" your ~/.vimrc file (or cut and paste it into your .vimrc). +" +" NOTE: +" These key maps use multiple keystrokes (2 or 3 keys). If you find that vim +" keeps timing you out before you can complete them, try changing your timeout +" settings, as explained below. +" +" Happy cscoping, +" +" Jason Duell jduell@alumni.princeton.edu 2002/3/7 +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + + +" This tests to see if vim was configured with the '--enable-cscope' option +" when it was compiled. If it wasn't, time to recompile vim... +if has("cscope") + + """"""""""""" Standard cscope/vim boilerplate + + " use both cscope and ctag for 'ctrl-]', ':ta', and 'vim -t' + set cscopetag + + " check cscope for definition of a symbol before checking ctags: set to 1 + " if you want the reverse search order. + set csto=0 + + " add any cscope database in current directory + if filereadable("cscope.out") + cs add cscope.out + " else add the database pointed to by environment variable + elseif $CSCOPE_DB != "" + cs add $CSCOPE_DB + endif + + " show msg when any other cscope db added + set cscopeverbose + + + """"""""""""" My cscope/vim key mappings + " + " The following maps all invoke one of the following cscope search types: + " + " 's' symbol: find all references to the token under cursor + " 'g' global: find global definition(s) of the token under cursor + " 'c' calls: find all calls to the function name under cursor + " 't' text: find all instances of the text under cursor + " 'e' egrep: egrep search for the word under cursor + " 'f' file: open the filename under cursor + " 'i' includes: find files that include the filename under cursor + " 'd' called: find functions that function under cursor calls + " + " Below are three sets of the maps: one set that just jumps to your + " search result, one that splits the existing vim window horizontally and + " diplays your search result in the new window, and one that does the same + " thing, but does a vertical split instead (vim 6 only). + " + " I've used CTRL-\ and CTRL-@ as the starting keys for these maps, as it's + " unlikely that you need their default mappings (CTRL-\'s default use is + " as part of CTRL-\ CTRL-N typemap, which basically just does the same + " thing as hitting 'escape': CTRL-@ doesn't seem to have any default use). + " If you don't like using 'CTRL-@' or CTRL-\, , you can change some or all + " of these maps to use other keys. One likely candidate is 'CTRL-_' + " (which also maps to CTRL-/, which is easier to type). By default it is + " used to switch between Hebrew and English keyboard mode. + " + " All of the maps involving the macro use '^$': this is so + " that searches over '#include " return only references to + " 'time.h', and not 'sys/time.h', etc. (by default cscope will return all + " files that contain 'time.h' as part of their name). + + + " To do the first type of search, hit 'CTRL-\', followed by one of the + " cscope search types above (s,g,c,t,e,f,i,d). The result of your cscope + " search will be displayed in the current window. You can use CTRL-T to + " go back to where you were before the search. + " + + nmap s :cs find s =expand("") + nmap g :cs find g =expand("") + nmap c :cs find c =expand("") + nmap t :cs find t =expand("") + nmap e :cs find e =expand("") + nmap f :cs find f =expand("") + nmap i :cs find i ^=expand("")$ + nmap d :cs find d =expand("") + + + " Using 'CTRL-spacebar' (intepreted as CTRL-@ by vim) then a search type + " makes the vim window split horizontally, with search result displayed in + " the new window. + " + " (Note: earlier versions of vim may not have the :scs command, but it + " can be simulated roughly via: + " nmap s :cs find s =expand("") + + nmap s :scs find s =expand("") + nmap g :scs find g =expand("") + nmap c :scs find c =expand("") + nmap t :scs find t =expand("") + nmap e :scs find e =expand("") + nmap f :scs find f =expand("") + nmap i :scs find i ^=expand("")$ + nmap d :scs find d =expand("") + + + " Hitting CTRL-space *twice* before the search type does a vertical + " split instead of a horizontal one (vim 6 and up only) + " + " (Note: you may wish to put a 'set splitright' in your .vimrc + " if you prefer the new window on the right instead of the left + + nmap s :vert scs find s =expand("") + nmap g :vert scs find g =expand("") + nmap c :vert scs find c =expand("") + nmap t :vert scs find t =expand("") + nmap e :vert scs find e =expand("") + nmap f :vert scs find f =expand("") + nmap i :vert scs find i ^=expand("")$ + nmap d :vert scs find d =expand("") + + + """"""""""""" key map timeouts + " + " By default Vim will only wait 1 second for each keystroke in a mapping. + " You may find that too short with the above typemaps. If so, you should + " either turn off mapping timeouts via 'notimeout'. + " + "set notimeout + " + " Or, you can keep timeouts, by uncommenting the timeoutlen line below, + " with your own personal favorite value (in milliseconds): + " + "set timeoutlen=4000 + " + " Either way, since mapping timeout settings by default also set the + " timeouts for multicharacter 'keys codes' (like ), you should also + " set ttimeout and ttimeoutlen: otherwise, you will experience strange + " delays as vim waits for a keystroke after you hit ESC (it will be + " waiting to see if the ESC is actually part of a key code like ). + " + "set ttimeout + " + " personally, I find a tenth of a second to work well for key code + " timeouts. If you experience problems and have a slow terminal or network + " connection, set it higher. If you don't set ttimeoutlen, the value for + " timeoutlent (default: 1000 = 1 second, which is sluggish) is used. + " + "set ttimeoutlen=100 + +endif + + diff --git a/addons/cscope_macros/version b/addons/cscope_macros/version new file mode 100644 index 0000000..d3827e7 --- /dev/null +++ b/addons/cscope_macros/version @@ -0,0 +1 @@ +1.0 diff --git a/addons/fugitive b/addons/fugitive new file mode 160000 index 0000000..f43393d --- /dev/null +++ b/addons/fugitive @@ -0,0 +1 @@ +Subproject commit f43393dd9a3bfe01c19af4d3c67e4c4782f09f34 diff --git a/addons/github-altercation-vim-colors-solarized b/addons/github-altercation-vim-colors-solarized new file mode 160000 index 0000000..528a59f --- /dev/null +++ b/addons/github-altercation-vim-colors-solarized @@ -0,0 +1 @@ +Subproject commit 528a59f26d12278698bb946f8fb82a63711eec21 diff --git a/addons/gnupg/archive/gnupg.vim b/addons/gnupg/archive/gnupg.vim new file mode 100644 index 0000000..09116d6 --- /dev/null +++ b/addons/gnupg/archive/gnupg.vim @@ -0,0 +1,1177 @@ +" Name: gnupg.vim +" Version: $Id: gnupg.vim 3026 2010-01-27 08:18:04Z mbr $ +" Author: Markus Braun +" Summary: Vim plugin for transparent editing of gpg encrypted files. +" Licence: This program is free software; you can redistribute it and/or +" modify it under the terms of the GNU General Public License. +" See http://www.gnu.org/copyleft/gpl.txt +" +" Section: Documentation {{{1 +" +" Description: {{{2 +" +" This script implements transparent editing of gpg encrypted files. The +" filename must have a ".gpg", ".pgp" or ".asc" suffix. When opening such +" a file the content is decrypted, when opening a new file the script will +" ask for the recipients of the encrypted file. The file content will be +" encrypted to all recipients before it is written. The script turns off +" viminfo and swapfile to increase security. +" +" Installation: {{{2 +" +" Copy the gnupg.vim file to the $HOME/.vim/plugin directory. +" Refer to ':help add-plugin', ':help add-global-plugin' and ':help +" runtimepath' for more details about Vim plugins. +" +" From "man 1 gpg-agent": +" +" ... +" You should always add the following lines to your .bashrc or whatever +" initialization file is used for all shell invocations: +" +" GPG_TTY=`tty` +" export GPG_TTY +" +" It is important that this environment variable always reflects the out‐ +" put of the tty command. For W32 systems this option is not required. +" ... +" +" Most distributions provide software to ease handling of gpg and gpg-agent. +" Examples are keychain or seahorse. +" +" Commands: {{{2 +" +" :GPGEditRecipients +" Opens a scratch buffer to change the list of recipients. Recipients that +" are unknown (not in your public key) are highlighted and have +" a prepended "!". Closing the buffer makes the changes permanent. +" +" :GPGViewRecipients +" Prints the list of recipients. +" +" :GPGEditOptions +" Opens a scratch buffer to change the options for encryption (symmetric, +" asymmetric, signing). Closing the buffer makes the changes permanent. +" WARNING: There is no check of the entered options, so you need to know +" what you are doing. +" +" :GPGViewOptions +" Prints the list of options. +" +" Variables: {{{2 +" +" g:GPGExecutable +" If set used as gpg executable, otherwise the system chooses what is run +" when "gpg" is called. Defaults to "gpg". +" +" g:GPGUseAgent +" If set to 0 a possible available gpg-agent won't be used. Defaults to 1. +" +" g:GPGPreferSymmetric +" If set to 1 symmetric encryption is preferred for new files. Defaults to 0. +" +" g:GPGPreferArmor +" If set to 1 armored data is preferred for new files. Defaults to 0. +" +" g:GPGPreferSign +" If set to 1 signed data is preferred for new files. Defaults to 0. +" +" g:GPGDefaultRecipients +" If set, these recipients are used as defaults when no other recipient is +" defined. This variable is a Vim list. Default is unset. +" +" Known Issues: {{{2 +" +" In some cases gvim can't decryt files + +" This is caused by the fact that a running gvim has no TTY and thus gpg is +" not able to ask for the passphrase by itself. This is a problem for Windows +" and Linux versions of gvim and could not be solved unless a "terminal +" emulation" is implemented for gvim. To circumvent this you have to use any +" combination of gpg-agent and a graphical pinentry program: +" +" - gpg-agent only: +" you need to provide the passphrase for the needed key to gpg-agent +" in a terminal before you open files with gvim which require this key. +" +" - pinentry only: +" you will get a popup window every time you open a file that needs to +" be decrypted. +" +" - gpgagent and pinentry: +" you will get a popup window the first time you open a file that +" needs to be decrypted. +" +" Credits: {{{2 +" +" - Mathieu Clabaut for inspirations through his vimspell.vim script. +" - Richard Bronosky for patch to enable ".pgp" suffix. +" - Erik Remmelzwaal for patch to enable windows support and patient beta +" testing. +" - Lars Becker for patch to make gpg2 working. +" - Thomas Arendsen Hein for patch to convert encoding of gpg output +" - Karl-Heinz Ruskowski for patch to fix unknown recipients and trust model +" and patient beta testing. +" - Giel van Schijndel for patch to get GPG_TTY dynamically. +" - Sebastian Luettich for patch to fix issue with symmetric encryption an set +" recipients. +" - Tim Swast for patch to generate signed files +" +" Section: Plugin header {{{1 + +" guard against multiple loads {{{2 +if (exists("g:loaded_gnupg") || &cp || exists("#BufReadPre#*.\(gpg\|asc\|pgp\)")) + finish +endif +let g:loaded_gnupg = "$Revision: 3026 $" + +" check for correct vim version {{{2 +if (v:version < 700) + echohl ErrorMsg | echo 'plugin gnupg.vim requires Vim version >= 7.0' | echohl None + finish +endif + +" Section: Autocmd setup {{{1 + +augroup GnuPG + autocmd! + + " initialize the internal variables + autocmd BufNewFile,BufReadPre,FileReadPre *.\(gpg\|asc\|pgp\) call s:GPGInit() + " force the user to edit the recipient list if he opens a new file and public + " keys are preferred + autocmd BufNewFile *.\(gpg\|asc\|pgp\) if (exists("g:GPGPreferSymmetric") && g:GPGPreferSymmetric == 0) | call s:GPGEditRecipients() | endif + " do the decryption + autocmd BufReadPost,FileReadPost *.\(gpg\|asc\|pgp\) call s:GPGDecrypt() + + " convert all text to encrypted text before writing + autocmd BufWritePre,FileWritePre *.\(gpg\|asc\|pgp\) call s:GPGEncrypt() + " undo the encryption so we are back in the normal text, directly + " after the file has been written. + autocmd BufWritePost,FileWritePost *.\(gpg\|asc\|pgp\) call s:GPGEncryptPost() + + " cleanup on leaving vim + autocmd VimLeave *.\(gpg\|asc\|pgp\) call s:GPGCleanup() +augroup END + +" Section: Constants {{{1 + +let s:GPGMagicString = "\t \t" + +" Section: Highlight setup {{{1 + +highlight default link GPGWarning WarningMsg +highlight default link GPGError ErrorMsg +highlight default link GPGHighlightUnknownRecipient ErrorMsg + +" Section: Functions {{{1 + +" Function: s:GPGInit() {{{2 +" +" initialize the plugin +" +function s:GPGInit() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGInit()") + + " first make sure nothing is written to ~/.viminfo while editing + " an encrypted file. + set viminfo= + + " we don't want a swap file, as it writes unencrypted data to disk + set noswapfile + + " check what gpg command to use + if (!exists("g:GPGExecutable")) + let g:GPGExecutable = "gpg --trust-model always" + endif + + " check if gpg-agent is allowed + if (!exists("g:GPGUseAgent")) + let g:GPGUseAgent = 1 + endif + + " check if symmetric encryption is preferred + if (!exists("g:GPGPreferSymmetric")) + let g:GPGPreferSymmetric = 0 + endif + + " check if armored files are preferred + if (!exists("g:GPGPreferArmor")) + let g:GPGPreferArmor = 0 + endif + + " check if signed files are preferred + if (!exists("g:GPGPreferSign")) + let g:GPGPreferSign = 0 + endif + + " start with empty default recipients if none is defined so far + if (!exists("g:GPGDefaultRecipients")) + let g:GPGDefaultRecipients = [] + endif + + " print version + call s:GPGDebug(1, "gnupg.vim ". g:loaded_gnupg) + + " determine if gnupg can use the gpg-agent + if (exists("$GPG_AGENT_INFO") && g:GPGUseAgent == 1) + if (!exists("$GPG_TTY") && !has("gui_running")) + let $GPG_TTY = system("tty") + if (v:shell_error) + let $GPG_TTY = "" + echohl GPGError + echom "The GPG_TTY is not set and no TTY could be found using the `tty` command!" + echom "gpg-agent might not work." + echohl None + endif + endif + let s:GPGCommand = g:GPGExecutable . " --use-agent" + else + let s:GPGCommand = g:GPGExecutable . " --no-use-agent" + endif + + " don't use tty in gvim + " FIXME find a better way to avoid an error. + " with this solution only --use-agent will work + if (has("gui_running")) + let s:GPGCommand = s:GPGCommand . " --no-tty" + endif + + " setup shell environment for unix and windows + let s:shellredirsave = &shellredir + let s:shellsave = &shell + if (has("unix")) + " unix specific settings + let s:shellredir = ">%s 2>&1" + let s:shell = '/bin/sh' + let s:stderrredirnull = '2>/dev/null' + let s:GPGCommand = "LANG=C LC_ALL=C " . s:GPGCommand + else + " windows specific settings + let s:shellredir = '>%s' + let s:shell = &shell + let s:stderrredirnull = '2>nul' + endif + + call s:GPGDebug(3, "shellredirsave: " . s:shellredirsave) + call s:GPGDebug(3, "shellsave: " . s:shellsave) + + call s:GPGDebug(3, "shell: " . s:shell) + call s:GPGDebug(3, "shellcmdflag: " . &shellcmdflag) + call s:GPGDebug(3, "shellxquote: " . &shellxquote) + call s:GPGDebug(3, "shellredir: " . s:shellredir) + call s:GPGDebug(3, "stderrredirnull: " . s:stderrredirnull) + + call s:GPGDebug(3, "shell implementation: " . resolve(s:shell)) + + " find the supported algorithms + let commandline = s:GPGCommand . " --version" + call s:GPGDebug(2, "command: ". commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(2, "output: ". output) + + let s:GPGPubkey = substitute(output, ".*Pubkey: \\(.\\{-}\\)\n.*", "\\1", "") + let s:GPGCipher = substitute(output, ".*Cipher: \\(.\\{-}\\)\n.*", "\\1", "") + let s:GPGHash = substitute(output, ".*Hash: \\(.\\{-}\\)\n.*", "\\1", "") + let s:GPGCompress = substitute(output, ".*Compress.\\{-}: \\(.\\{-}\\)\n.*", "\\1", "") + + call s:GPGDebug(2, "public key algorithms: " . s:GPGPubkey) + call s:GPGDebug(2, "cipher algorithms: " . s:GPGCipher) + call s:GPGDebug(2, "hashing algorithms: " . s:GPGHash) + call s:GPGDebug(2, "compression algorithms: " . s:GPGCompress) + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGInit()") +endfunction + +" Function: s:GPGCleanup() {{{2 +" +" cleanup on leaving vim +" +function s:GPGCleanup() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGCleanup()") + + " wipe out screen + new +only + redraw! + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGCleanup()") +endfunction + +" Function: s:GPGDecrypt() {{{2 +" +" decrypt the buffer and find all recipients of the encrypted file +" +function s:GPGDecrypt() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGDecrypt()") + + " switch to binary mode to read the encrypted file + set bin + + " get the filename of the current buffer + let filename = escape(expand("%:p"), '\"') + + " clear GPGEncrypted, GPGRecipients and GPGOptions + let b:GPGEncrypted = 0 + let b:GPGRecipients = [] + let b:GPGOptions = [] + + " find the recipients of the file + let commandline = s:GPGCommand . " --verbose --decrypt --list-only --dry-run --batch --no-use-agent --logger-fd 1 \"" . filename . "\"" + call s:GPGDebug(3, "command: " . commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(3, "output: ". output) + + " check if the file is symmetric/asymmetric encrypted + if (match(output, "gpg: encrypted with [[:digit:]]\\+ passphrase") >= 0) + " file is symmetric encrypted + let b:GPGEncrypted = 1 + call s:GPGDebug(1, "this file is symmetric encrypted") + + let b:GPGOptions += ["symmetric"] + + " find the used cipher algorithm + let cipher = substitute(output, ".*gpg: \\([^ ]\\+\\) encrypted data.*", "\\1", "") + if (match(s:GPGCipher, "\\<" . cipher . "\\>") >= 0) + let b:GPGOptions += ["cipher-algo " . cipher] + call s:GPGDebug(1, "cipher-algo is " . cipher) + else + echohl GPGWarning + echom "The cipher " . cipher . " is not known by the local gpg command. Using default!" + echo + echohl None + endif + elseif (match(output, "gpg: public key is [[:xdigit:]]\\{8}") >= 0) + " file is asymmetric encrypted + let b:GPGEncrypted = 1 + call s:GPGDebug(1, "this file is asymmetric encrypted") + + let b:GPGOptions += ["encrypt"] + + " find the used public keys + let start = match(output, "gpg: public key is [[:xdigit:]]\\{8}") + while (start >= 0) + let start = start + strlen("gpg: public key is ") + let recipient = strpart(output, start, 8) + call s:GPGDebug(1, "recipient is " . recipient) + let name = s:GPGNameToID(recipient) + if (strlen(name) > 0) + let b:GPGRecipients += [name] + call s:GPGDebug(1, "name of recipient is " . name) + else + let b:GPGRecipients += [recipient] + echohl GPGWarning + echom "The recipient \"" . recipient . "\" is not in your public keyring!" + echohl None + end + let start = match(output, "gpg: public key is [[:xdigit:]]\\{8}", start) + endwhile + else + " file is not encrypted + let b:GPGEncrypted = 0 + call s:GPGDebug(1, "this file is not encrypted") + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + set nobin + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") + return + endif + + " check if the message is armored + if (match(output, "gpg: armor header") >= 0) + call s:GPGDebug(1, "this file is armored") + let b:GPGOptions += ["armor"] + endif + + " finally decrypt the buffer content + " since even with the --quiet option passphrase typos will be reported, + " we must redirect stderr (using shell temporarily) + call s:GPGDebug(1, "decrypting file") + let commandline = "'[,']!" . s:GPGCommand . " --quiet --decrypt " . s:stderrredirnull + call s:GPGDebug(1, "command: " . commandline) + let &shellredir = s:shellredir + let &shell = s:shell + execute commandline + let &shellredir = s:shellredirsave + let &shell = s:shellsave + if (v:shell_error) " message could not be decrypted + silent u + echohl GPGError + let blackhole = input("Message could not be decrypted! (Press ENTER)") + echohl None + bwipeout + set nobin + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") + return + endif + + " turn off binary mode + set nobin + + " call the autocommand for the file minus .gpg$ + execute ":doautocmd BufReadPost " . escape(expand("%:r"), ' *?\"'."'") + call s:GPGDebug(2, "called autocommand for " . escape(expand("%:r"), ' *?\"'."'")) + + " refresh screen + redraw! + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") +endfunction + +" Function: s:GPGEncrypt() {{{2 +" +" encrypts the buffer to all previous recipients +" +function s:GPGEncrypt() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEncrypt()") + + " save window view + let s:GPGWindowView = winsaveview() + call s:GPGDebug(2, "saved window view " . string(s:GPGWindowView)) + + " store encoding and switch to a safe one + if (&fileencoding != &encoding) + let s:GPGEncoding = &encoding + let &encoding = &fileencoding + call s:GPGDebug(2, "encoding was \"" . s:GPGEncoding . "\", switched to \"" . &encoding . "\"") + else + let s:GPGEncoding = "" + call s:GPGDebug(2, "encoding and fileencoding are the same (\"" . &encoding . "\"), not switching") + endif + + " switch buffer to binary mode + set bin + + " guard for unencrypted files + if (!exists("b:GPGEncrypted") || b:GPGEncrypted == 0) + echohl GPGError + let blackhole = input("Message could not be encrypted! File might be empty! (Press ENTER)") + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") + return + endif + + " initialize GPGOptions if not happened before + if (!exists("b:GPGOptions") || len(b:GPGOptions) == 0) + let b:GPGOptions = [] + if (exists("g:GPGPreferSymmetric") && g:GPGPreferSymmetric == 1) + let b:GPGOptions += ["symmetric"] + let b:GPGRecipients = [] + else + let b:GPGOptions += ["encrypt"] + endif + if (exists("g:GPGPreferArmor") && g:GPGPreferArmor == 1) + let b:GPGOptions += ["armor"] + endif + if (exists("g:GPGPreferSign") && g:GPGPreferSign == 1) + let b:GPGOptions += ["sign"] + endif + call s:GPGDebug(1, "no options set, so using default options: " . string(b:GPGOptions)) + endif + + " built list of options + let options = "" + for option in b:GPGOptions + let options = options . " --" . option . " " + endfor + + " check here again if all recipients are available in the keyring + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(b:GPGRecipients) + + " check if there are unknown recipients and warn + if (len(unknownrecipients) > 0) + echohl GPGWarning + echom "Please use GPGEditRecipients to correct!!" + echo + echohl None + + " Let user know whats happend and copy known_recipients back to buffer + let dummy = input("Press ENTER to quit") + endif + + " built list of recipients + if (len(recipients) > 0) + for gpgid in recipients + let options = options . " -r " . gpgid + endfor + else + if (match(b:GPGOptions, "encrypt") >= 0) + echohl GPGError + echom "There are no recipients!!" + echom "Please use GPGEditRecipients to correct!!" + echo + echohl None + endif + endif + + " encrypt the buffer + let commandline = "'[,']!" . s:GPGCommand . " --quiet --no-encrypt-to " . options . " " . s:stderrredirnull + call s:GPGDebug(1, "command: " . commandline) + let &shellredir = s:shellredir + let &shell = s:shell + silent execute commandline + let &shellredir = s:shellredirsave + let &shell = s:shellsave + if (v:shell_error) " message could not be encrypted + " delete content of the buffer to be sure no data is written unencrypted + " content will be recovered in GPGEncryptPost() + silent normal! 1GdG + + echohl GPGError + let blackhole = input("Message could not be encrypted! File might be empty! (Press ENTER)") + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") + return + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") +endfunction + +" Function: s:GPGEncryptPost() {{{2 +" +" undo changes don by encrypt, after writing +" +function s:GPGEncryptPost() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEncryptPost()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncryptPost()") + return + endif + + " undo encryption of buffer content + silent u + + " switch back from binary mode + set nobin + + " restore encoding + if (s:GPGEncoding != "") + let &encoding = s:GPGEncoding + call s:GPGDebug(2, "restored encoding \"" . &encoding . "\"") + endif + + " restore window view + call winrestview(s:GPGWindowView) + call s:GPGDebug(2, "restored window view" . string(s:GPGWindowView)) + + " refresh screen + redraw! + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncryptPost()") +endfunction + +" Function: s:GPGViewRecipients() {{{2 +" +" echo the recipients +" +function s:GPGViewRecipients() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGViewRecipients()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewRecipients()") + return + endif + + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(b:GPGRecipients) + + echo 'This file has following recipients (Unknown recipients have a prepended "!"):' + " echo the recipients + for name in recipients + let name = s:GPGIDToName(name) + echo name + endfor + + " echo the unknown recipients + echohl GPGWarning + for name in unknownrecipients + let name = "!" . name + echo name + endfor + echohl None + + " check if there is any known recipient + if (len(recipients) == 0) + echohl GPGError + echom 'There are no known recipients!' + echohl None + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewRecipients()") +endfunction + +" Function: s:GPGEditRecipients() {{{2 +" +" create a scratch buffer with all recipients to add/remove recipients +" +function s:GPGEditRecipients() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEditRecipients()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditRecipients()") + return + endif + + " only do this if it isn't already a GPGRecipients_* buffer + if (match(bufname("%"), "^\\(GPGRecipients_\\|GPGOptions_\\)") != 0 && match(bufname("%"), "\.\\(gpg\\|asc\\|pgp\\)$") >= 0) + + " save buffer name + let buffername = bufname("%") + let editbuffername = "GPGRecipients_" . buffername + + " check if this buffer exists + if (!bufexists(editbuffername)) + " create scratch buffer + execute 'silent! split ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the recipients after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishRecipientsBuffer() + else + if (bufwinnr(editbuffername) >= 0) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(editbuffername) . "wincmd w" + else + " split scratch buffer window + execute 'silent! sbuffer ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the recipients after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishRecipientsBuffer() + endif + + " empty the buffer + silent normal! 1GdG + endif + + " Mark the buffer as a scratch buffer + setlocal buftype=acwrite + setlocal bufhidden=hide + setlocal noswapfile + setlocal nowrap + setlocal nobuflisted + setlocal nonumber + + " so we know for which other buffer this edit buffer is + let b:GPGCorrespondingTo = buffername + + " put some comments to the scratch buffer + silent put ='GPG: ----------------------------------------------------------------------' + silent put ='GPG: Please edit the list of recipients, one recipient per line.' + silent put ='GPG: Unknown recipients have a prepended \"!\".' + silent put ='GPG: Lines beginning with \"GPG:\" are removed automatically.' + silent put ='GPG: Data after recipients between and including \"(\" and \")\" is ignored.' + silent put ='GPG: Closing this buffer commits changes.' + silent put ='GPG: ----------------------------------------------------------------------' + + " get the recipients + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(getbufvar(b:GPGCorrespondingTo, "GPGRecipients")) + + " if there are no known or unknown recipients, use the default ones + if (len(recipients) == 0 && len(unknownrecipients) == 0) + if (type(g:GPGDefaultRecipients) == type([])) + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(g:GPGDefaultRecipients) + else + echohl GPGWarning + echom "g:GPGDefaultRecipients is not a Vim list, please correct this in your vimrc!" + echohl None + endif + endif + + " put the recipients in the scratch buffer + for name in recipients + let name = s:GPGIDToName(name) + silent put =name + endfor + + " put the unknown recipients in the scratch buffer + let syntaxPattern = "\\(nonexxistinwordinthisbuffer" + for name in unknownrecipients + let name = "!" . name + let syntaxPattern = syntaxPattern . "\\|" . name + silent put =name + endfor + let syntaxPattern = syntaxPattern . "\\)" + + " define highlight + if (has("syntax") && exists("g:syntax_on")) + execute 'syntax match GPGUnknownRecipient "' . syntaxPattern . '"' + highlight clear GPGUnknownRecipient + highlight link GPGUnknownRecipient GPGHighlightUnknownRecipient + + syntax match GPGComment "^GPG:.*$" + execute 'syntax match GPGComment "' . s:GPGMagicString . '.*$"' + highlight clear GPGComment + highlight link GPGComment Comment + endif + + " delete the empty first line + silent normal! 1Gdd + + " jump to the first recipient + silent normal! G + + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditRecipients()") +endfunction + +" Function: s:GPGFinishRecipientsBuffer() {{{2 +" +" create a new recipient list from RecipientsBuffer +" +function s:GPGFinishRecipientsBuffer() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGFinishRecipientsBuffer()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishRecipientsBuffer()") + return + endif + + " go to buffer before doing work + if (bufnr("%") != expand("")) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(expand("")) . "wincmd w" + endif + + " delete the autocommand + autocmd! * + + + " get the recipients from the scratch buffer + let recipients = [] + let lines = getline(1,"$") + for recipient in lines + " delete all text after magic string + let recipient = substitute(recipient, s:GPGMagicString . ".*$", "", "") + + " delete all spaces at beginning and end of the recipient + " also delete a '!' at the beginning of the recipient + let recipient = substitute(recipient, "^[[:space:]!]*\\(.\\{-}\\)[[:space:]]*$", "\\1", "") + + " delete comment lines + let recipient = substitute(recipient, "^GPG:.*$", "", "") + + " only do this if the line is not empty + if (strlen(recipient) > 0) + let gpgid = s:GPGNameToID(recipient) + if (strlen(gpgid) > 0) + if (match(recipients, gpgid) < 0) + let recipients += [gpgid] + endif + else + if (match(recipients, recipient) < 0) + let recipients += [recipient] + echohl GPGWarning + echom "The recipient \"" . recipient . "\" is not in your public keyring!" + echohl None + endif + endif + endif + endfor + + " write back the new recipient list to the corresponding buffer and mark it + " as modified. Buffer is now for sure a encrypted buffer. + call setbufvar(b:GPGCorrespondingTo, "GPGRecipients", recipients) + call setbufvar(b:GPGCorrespondingTo, "&mod", 1) + call setbufvar(b:GPGCorrespondingTo, "GPGEncrypted", 1) + + " check if there is any known recipient + if (len(recipients) == 0) + echohl GPGError + echom 'There are no known recipients!' + echohl None + endif + + " reset modified flag + set nomodified + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishRecipientsBuffer()") +endfunction + +" Function: s:GPGViewOptions() {{{2 +" +" echo the recipients +" +function s:GPGViewOptions() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGViewOptions()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewOptions()") + return + endif + + if (exists("b:GPGOptions")) + echo 'This file has following options:' + " echo the options + for option in b:GPGOptions + echo option + endfor + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewOptions()") +endfunction + +" Function: s:GPGEditOptions() {{{2 +" +" create a scratch buffer with all recipients to add/remove recipients +" +function s:GPGEditOptions() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEditOptions()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditOptions()") + return + endif + + " only do this if it isn't already a GPGOptions_* buffer + if (match(bufname("%"), "^\\(GPGRecipients_\\|GPGOptions_\\)") != 0 && match(bufname("%"), "\.\\(gpg\\|asc\\|pgp\\)$") >= 0) + + " save buffer name + let buffername = bufname("%") + let editbuffername = "GPGOptions_" . buffername + + " check if this buffer exists + if (!bufexists(editbuffername)) + " create scratch buffer + execute 'silent! split ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the options after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishOptionsBuffer() + else + if (bufwinnr(editbuffername) >= 0) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(editbuffername) . "wincmd w" + else + " split scratch buffer window + execute 'silent! sbuffer ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the options after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishOptionsBuffer() + endif + + " empty the buffer + silent normal! 1GdG + endif + + " Mark the buffer as a scratch buffer + setlocal buftype=nofile + setlocal noswapfile + setlocal nowrap + setlocal nobuflisted + setlocal nonumber + + " so we know for which other buffer this edit buffer is + let b:GPGCorrespondingTo = buffername + + " put some comments to the scratch buffer + silent put ='GPG: ----------------------------------------------------------------------' + silent put ='GPG: THERE IS NO CHECK OF THE ENTERED OPTIONS!' + silent put ='GPG: YOU NEED TO KNOW WHAT YOU ARE DOING!' + silent put ='GPG: IF IN DOUBT, QUICKLY EXIT USING :x OR :bd.' + silent put ='GPG: Please edit the list of options, one option per line.' + silent put ='GPG: Please refer to the gpg documentation for valid options.' + silent put ='GPG: Lines beginning with \"GPG:\" are removed automatically.' + silent put ='GPG: Closing this buffer commits changes.' + silent put ='GPG: ----------------------------------------------------------------------' + + " put the options in the scratch buffer + let options = getbufvar(b:GPGCorrespondingTo, "GPGOptions") + + for option in options + silent put =option + endfor + + " delete the empty first line + silent normal! 1Gdd + + " jump to the first option + silent normal! G + + " define highlight + if (has("syntax") && exists("g:syntax_on")) + syntax match GPGComment "^GPG:.*$" + highlight clear GPGComment + highlight link GPGComment Comment + endif + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditOptions()") +endfunction + +" Function: s:GPGFinishOptionsBuffer() {{{2 +" +" create a new option list from OptionsBuffer +" +function s:GPGFinishOptionsBuffer() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGFinishOptionsBuffer()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishOptionsBuffer()") + return + endif + + " go to buffer before doing work + if (bufnr("%") != expand("")) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(expand("")) . "wincmd w" + endif + + " clear options and unknownOptions + let options = [] + let unknownOptions = [] + + " delete the autocommand + autocmd! * + + " get the options from the scratch buffer + let lines = getline(1, "$") + for option in lines + " delete all spaces at beginning and end of the option + " also delete a '!' at the beginning of the option + let option = substitute(option, "^[[:space:]!]*\\(.\\{-}\\)[[:space:]]*$", "\\1", "") + " delete comment lines + let option = substitute(option, "^GPG:.*$", "", "") + + " only do this if the line is not empty + if (strlen(option) > 0 && match(options, option) < 0) + let options += [option] + endif + endfor + + " write back the new option list to the corresponding buffer and mark it + " as modified + call setbufvar(b:GPGCorrespondingTo, "GPGOptions", options) + call setbufvar(b:GPGCorrespondingTo, "&mod", 1) + + " reset modified flag + set nomodified + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishOptionsBuffer()") +endfunction + +" Function: s:GPGCheckRecipients(tocheck) {{{2 +" +" check if recipients are known +" Returns: two lists recipients and unknownrecipients +" +function s:GPGCheckRecipients(tocheck) + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGCheckRecipients()") + + let recipients = [] + let unknownrecipients = [] + + if (type(a:tocheck) == type([])) + for recipient in a:tocheck + let gpgid = s:GPGNameToID(recipient) + if (strlen(gpgid) > 0) + if (match(recipients, gpgid) < 0) + let recipients += [gpgid] + endif + else + if (match(unknownrecipients, recipient) < 0) + let unknownrecipients += [recipient] + echohl GPGWarning + echom "The recipient \"" . recipient . "\" is not in your public keyring!" + echohl None + endif + end + endfor + endif + + call s:GPGDebug(2, "recipients are: " . string(recipients)) + call s:GPGDebug(2, "unknown recipients are: " . string(unknownrecipients)) + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGCheckRecipients()") + return [ recipients, unknownrecipients ] +endfunction + +" Function: s:GPGNameToID(name) {{{2 +" +" find GPG key ID corresponding to a name +" Returns: ID for the given name +" +function s:GPGNameToID(name) + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGNameToID()") + + " ask gpg for the id for a name + let commandline = s:GPGCommand . " --quiet --with-colons --fixed-list-mode --list-keys \"" . a:name . "\"" + call s:GPGDebug(2, "command: ". commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(2, "output: ". output) + + " when called with "--with-colons" gpg encodes its output _ALWAYS_ as UTF-8, + " so convert it, if necessary + if (&encoding != "utf-8") + let output = iconv(output, "utf-8", &encoding) + endif + let lines = split(output, "\n") + + " parse the output of gpg + let pubseen = 0 + let counter = 0 + let gpgids = [] + let choices = "The name \"" . a:name . "\" is ambiguous. Please select the correct key:\n" + for line in lines + let fields = split(line, ":") + " search for the next uid + if (pubseen == 1) + if (fields[0] == "uid") + let choices = choices . " " . fields[9] . "\n" + else + let pubseen = 0 + endif + endif + + " search for the next pub + if (pubseen == 0) + if (fields[0] == "pub") + let identity = fields[4] + let gpgids += [identity] + if exists("*strftime") + let choices = choices . counter . ": ID: 0x" . identity . " created at " . strftime("%c", fields[5]) . "\n" + else + let choices = choices . counter . ": ID: 0x" . identity . "\n" + endif + let counter = counter+1 + let pubseen = 1 + endif + endif + + endfor + + " counter > 1 means we have more than one results + let answer = 0 + if (counter > 1) + let choices = choices . "Enter number: " + let answer = input(choices, "0") + while (answer == "") + let answer = input("Enter number: ", "0") + endwhile + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGIDToName()") + return get(gpgids, answer, "") +endfunction + +" Function: s:GPGIDToName(identity) {{{2 +" +" find name corresponding to a GPG key ID +" Returns: Name for the given ID +" +function s:GPGIDToName(identity) + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGIDToName()") + + " TODO is the encryption subkey really unique? + + " ask gpg for the id for a name + let commandline = s:GPGCommand . " --quiet --with-colons --fixed-list-mode --list-keys " . a:identity + call s:GPGDebug(2, "command: ". commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(2, "output: ". output) + + " when called with "--with-colons" gpg encodes its output _ALWAYS_ as UTF-8, + " so convert it, if necessary + if (&encoding != "utf-8") + let output = iconv(output, "utf-8", &encoding) + endif + let lines = split(output, "\n") + + " parse the output of gpg + let pubseen = 0 + let uid = "" + for line in lines + let fields = split(line, ":") + if (pubseen == 0) " search for the next pub + if (fields[0] == "pub") + let pubseen = 1 + endif + else " search for the next uid + if (fields[0] == "uid") + let pubseen = 0 + if exists("*strftime") + let uid = fields[9] . s:GPGMagicString . "(ID: 0x" . a:identity . " created at " . strftime("%c", fields[5]) . ")" + else + let uid = fields[9] . s:GPGMagicString . "(ID: 0x" . a:identity . ")" + endif + break + endif + endif + endfor + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGIDToName()") + return uid +endfunction + +" Function: s:GPGDebug(level, text) {{{2 +" +" output debug message, if this message has high enough importance +" only define function if GPGDebugLevel set at all +" +function s:GPGDebug(level, text) + if exists("g:GPGDebugLevel") && g:GPGDebugLevel >= a:level + if exists("g:GPGDebugLog") + execute "redir >> " . g:GPGDebugLog + echom "GnuPG: " . a:text + redir END + else + echom "GnuPG: " . a:text + endif + endif +endfunction + +" Section: Commands {{{1 + +command! GPGViewRecipients call s:GPGViewRecipients() +command! GPGEditRecipients call s:GPGEditRecipients() +command! GPGViewOptions call s:GPGViewOptions() +command! GPGEditOptions call s:GPGEditOptions() + +" Section: Menu {{{1 + +if (has("menu")) + amenu Plugin.GnuPG.View\ Recipients :GPGViewRecipients + amenu Plugin.GnuPG.Edit\ Recipients :GPGEditRecipients + amenu Plugin.GnuPG.View\ Options :GPGViewOptions + amenu Plugin.GnuPG.Edit\ Options :GPGEditOptions +endif + +" vim600: set foldmethod=marker foldlevel=0 : diff --git a/addons/gnupg/plugin/gnupg.vim b/addons/gnupg/plugin/gnupg.vim new file mode 100644 index 0000000..09116d6 --- /dev/null +++ b/addons/gnupg/plugin/gnupg.vim @@ -0,0 +1,1177 @@ +" Name: gnupg.vim +" Version: $Id: gnupg.vim 3026 2010-01-27 08:18:04Z mbr $ +" Author: Markus Braun +" Summary: Vim plugin for transparent editing of gpg encrypted files. +" Licence: This program is free software; you can redistribute it and/or +" modify it under the terms of the GNU General Public License. +" See http://www.gnu.org/copyleft/gpl.txt +" +" Section: Documentation {{{1 +" +" Description: {{{2 +" +" This script implements transparent editing of gpg encrypted files. The +" filename must have a ".gpg", ".pgp" or ".asc" suffix. When opening such +" a file the content is decrypted, when opening a new file the script will +" ask for the recipients of the encrypted file. The file content will be +" encrypted to all recipients before it is written. The script turns off +" viminfo and swapfile to increase security. +" +" Installation: {{{2 +" +" Copy the gnupg.vim file to the $HOME/.vim/plugin directory. +" Refer to ':help add-plugin', ':help add-global-plugin' and ':help +" runtimepath' for more details about Vim plugins. +" +" From "man 1 gpg-agent": +" +" ... +" You should always add the following lines to your .bashrc or whatever +" initialization file is used for all shell invocations: +" +" GPG_TTY=`tty` +" export GPG_TTY +" +" It is important that this environment variable always reflects the out‐ +" put of the tty command. For W32 systems this option is not required. +" ... +" +" Most distributions provide software to ease handling of gpg and gpg-agent. +" Examples are keychain or seahorse. +" +" Commands: {{{2 +" +" :GPGEditRecipients +" Opens a scratch buffer to change the list of recipients. Recipients that +" are unknown (not in your public key) are highlighted and have +" a prepended "!". Closing the buffer makes the changes permanent. +" +" :GPGViewRecipients +" Prints the list of recipients. +" +" :GPGEditOptions +" Opens a scratch buffer to change the options for encryption (symmetric, +" asymmetric, signing). Closing the buffer makes the changes permanent. +" WARNING: There is no check of the entered options, so you need to know +" what you are doing. +" +" :GPGViewOptions +" Prints the list of options. +" +" Variables: {{{2 +" +" g:GPGExecutable +" If set used as gpg executable, otherwise the system chooses what is run +" when "gpg" is called. Defaults to "gpg". +" +" g:GPGUseAgent +" If set to 0 a possible available gpg-agent won't be used. Defaults to 1. +" +" g:GPGPreferSymmetric +" If set to 1 symmetric encryption is preferred for new files. Defaults to 0. +" +" g:GPGPreferArmor +" If set to 1 armored data is preferred for new files. Defaults to 0. +" +" g:GPGPreferSign +" If set to 1 signed data is preferred for new files. Defaults to 0. +" +" g:GPGDefaultRecipients +" If set, these recipients are used as defaults when no other recipient is +" defined. This variable is a Vim list. Default is unset. +" +" Known Issues: {{{2 +" +" In some cases gvim can't decryt files + +" This is caused by the fact that a running gvim has no TTY and thus gpg is +" not able to ask for the passphrase by itself. This is a problem for Windows +" and Linux versions of gvim and could not be solved unless a "terminal +" emulation" is implemented for gvim. To circumvent this you have to use any +" combination of gpg-agent and a graphical pinentry program: +" +" - gpg-agent only: +" you need to provide the passphrase for the needed key to gpg-agent +" in a terminal before you open files with gvim which require this key. +" +" - pinentry only: +" you will get a popup window every time you open a file that needs to +" be decrypted. +" +" - gpgagent and pinentry: +" you will get a popup window the first time you open a file that +" needs to be decrypted. +" +" Credits: {{{2 +" +" - Mathieu Clabaut for inspirations through his vimspell.vim script. +" - Richard Bronosky for patch to enable ".pgp" suffix. +" - Erik Remmelzwaal for patch to enable windows support and patient beta +" testing. +" - Lars Becker for patch to make gpg2 working. +" - Thomas Arendsen Hein for patch to convert encoding of gpg output +" - Karl-Heinz Ruskowski for patch to fix unknown recipients and trust model +" and patient beta testing. +" - Giel van Schijndel for patch to get GPG_TTY dynamically. +" - Sebastian Luettich for patch to fix issue with symmetric encryption an set +" recipients. +" - Tim Swast for patch to generate signed files +" +" Section: Plugin header {{{1 + +" guard against multiple loads {{{2 +if (exists("g:loaded_gnupg") || &cp || exists("#BufReadPre#*.\(gpg\|asc\|pgp\)")) + finish +endif +let g:loaded_gnupg = "$Revision: 3026 $" + +" check for correct vim version {{{2 +if (v:version < 700) + echohl ErrorMsg | echo 'plugin gnupg.vim requires Vim version >= 7.0' | echohl None + finish +endif + +" Section: Autocmd setup {{{1 + +augroup GnuPG + autocmd! + + " initialize the internal variables + autocmd BufNewFile,BufReadPre,FileReadPre *.\(gpg\|asc\|pgp\) call s:GPGInit() + " force the user to edit the recipient list if he opens a new file and public + " keys are preferred + autocmd BufNewFile *.\(gpg\|asc\|pgp\) if (exists("g:GPGPreferSymmetric") && g:GPGPreferSymmetric == 0) | call s:GPGEditRecipients() | endif + " do the decryption + autocmd BufReadPost,FileReadPost *.\(gpg\|asc\|pgp\) call s:GPGDecrypt() + + " convert all text to encrypted text before writing + autocmd BufWritePre,FileWritePre *.\(gpg\|asc\|pgp\) call s:GPGEncrypt() + " undo the encryption so we are back in the normal text, directly + " after the file has been written. + autocmd BufWritePost,FileWritePost *.\(gpg\|asc\|pgp\) call s:GPGEncryptPost() + + " cleanup on leaving vim + autocmd VimLeave *.\(gpg\|asc\|pgp\) call s:GPGCleanup() +augroup END + +" Section: Constants {{{1 + +let s:GPGMagicString = "\t \t" + +" Section: Highlight setup {{{1 + +highlight default link GPGWarning WarningMsg +highlight default link GPGError ErrorMsg +highlight default link GPGHighlightUnknownRecipient ErrorMsg + +" Section: Functions {{{1 + +" Function: s:GPGInit() {{{2 +" +" initialize the plugin +" +function s:GPGInit() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGInit()") + + " first make sure nothing is written to ~/.viminfo while editing + " an encrypted file. + set viminfo= + + " we don't want a swap file, as it writes unencrypted data to disk + set noswapfile + + " check what gpg command to use + if (!exists("g:GPGExecutable")) + let g:GPGExecutable = "gpg --trust-model always" + endif + + " check if gpg-agent is allowed + if (!exists("g:GPGUseAgent")) + let g:GPGUseAgent = 1 + endif + + " check if symmetric encryption is preferred + if (!exists("g:GPGPreferSymmetric")) + let g:GPGPreferSymmetric = 0 + endif + + " check if armored files are preferred + if (!exists("g:GPGPreferArmor")) + let g:GPGPreferArmor = 0 + endif + + " check if signed files are preferred + if (!exists("g:GPGPreferSign")) + let g:GPGPreferSign = 0 + endif + + " start with empty default recipients if none is defined so far + if (!exists("g:GPGDefaultRecipients")) + let g:GPGDefaultRecipients = [] + endif + + " print version + call s:GPGDebug(1, "gnupg.vim ". g:loaded_gnupg) + + " determine if gnupg can use the gpg-agent + if (exists("$GPG_AGENT_INFO") && g:GPGUseAgent == 1) + if (!exists("$GPG_TTY") && !has("gui_running")) + let $GPG_TTY = system("tty") + if (v:shell_error) + let $GPG_TTY = "" + echohl GPGError + echom "The GPG_TTY is not set and no TTY could be found using the `tty` command!" + echom "gpg-agent might not work." + echohl None + endif + endif + let s:GPGCommand = g:GPGExecutable . " --use-agent" + else + let s:GPGCommand = g:GPGExecutable . " --no-use-agent" + endif + + " don't use tty in gvim + " FIXME find a better way to avoid an error. + " with this solution only --use-agent will work + if (has("gui_running")) + let s:GPGCommand = s:GPGCommand . " --no-tty" + endif + + " setup shell environment for unix and windows + let s:shellredirsave = &shellredir + let s:shellsave = &shell + if (has("unix")) + " unix specific settings + let s:shellredir = ">%s 2>&1" + let s:shell = '/bin/sh' + let s:stderrredirnull = '2>/dev/null' + let s:GPGCommand = "LANG=C LC_ALL=C " . s:GPGCommand + else + " windows specific settings + let s:shellredir = '>%s' + let s:shell = &shell + let s:stderrredirnull = '2>nul' + endif + + call s:GPGDebug(3, "shellredirsave: " . s:shellredirsave) + call s:GPGDebug(3, "shellsave: " . s:shellsave) + + call s:GPGDebug(3, "shell: " . s:shell) + call s:GPGDebug(3, "shellcmdflag: " . &shellcmdflag) + call s:GPGDebug(3, "shellxquote: " . &shellxquote) + call s:GPGDebug(3, "shellredir: " . s:shellredir) + call s:GPGDebug(3, "stderrredirnull: " . s:stderrredirnull) + + call s:GPGDebug(3, "shell implementation: " . resolve(s:shell)) + + " find the supported algorithms + let commandline = s:GPGCommand . " --version" + call s:GPGDebug(2, "command: ". commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(2, "output: ". output) + + let s:GPGPubkey = substitute(output, ".*Pubkey: \\(.\\{-}\\)\n.*", "\\1", "") + let s:GPGCipher = substitute(output, ".*Cipher: \\(.\\{-}\\)\n.*", "\\1", "") + let s:GPGHash = substitute(output, ".*Hash: \\(.\\{-}\\)\n.*", "\\1", "") + let s:GPGCompress = substitute(output, ".*Compress.\\{-}: \\(.\\{-}\\)\n.*", "\\1", "") + + call s:GPGDebug(2, "public key algorithms: " . s:GPGPubkey) + call s:GPGDebug(2, "cipher algorithms: " . s:GPGCipher) + call s:GPGDebug(2, "hashing algorithms: " . s:GPGHash) + call s:GPGDebug(2, "compression algorithms: " . s:GPGCompress) + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGInit()") +endfunction + +" Function: s:GPGCleanup() {{{2 +" +" cleanup on leaving vim +" +function s:GPGCleanup() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGCleanup()") + + " wipe out screen + new +only + redraw! + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGCleanup()") +endfunction + +" Function: s:GPGDecrypt() {{{2 +" +" decrypt the buffer and find all recipients of the encrypted file +" +function s:GPGDecrypt() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGDecrypt()") + + " switch to binary mode to read the encrypted file + set bin + + " get the filename of the current buffer + let filename = escape(expand("%:p"), '\"') + + " clear GPGEncrypted, GPGRecipients and GPGOptions + let b:GPGEncrypted = 0 + let b:GPGRecipients = [] + let b:GPGOptions = [] + + " find the recipients of the file + let commandline = s:GPGCommand . " --verbose --decrypt --list-only --dry-run --batch --no-use-agent --logger-fd 1 \"" . filename . "\"" + call s:GPGDebug(3, "command: " . commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(3, "output: ". output) + + " check if the file is symmetric/asymmetric encrypted + if (match(output, "gpg: encrypted with [[:digit:]]\\+ passphrase") >= 0) + " file is symmetric encrypted + let b:GPGEncrypted = 1 + call s:GPGDebug(1, "this file is symmetric encrypted") + + let b:GPGOptions += ["symmetric"] + + " find the used cipher algorithm + let cipher = substitute(output, ".*gpg: \\([^ ]\\+\\) encrypted data.*", "\\1", "") + if (match(s:GPGCipher, "\\<" . cipher . "\\>") >= 0) + let b:GPGOptions += ["cipher-algo " . cipher] + call s:GPGDebug(1, "cipher-algo is " . cipher) + else + echohl GPGWarning + echom "The cipher " . cipher . " is not known by the local gpg command. Using default!" + echo + echohl None + endif + elseif (match(output, "gpg: public key is [[:xdigit:]]\\{8}") >= 0) + " file is asymmetric encrypted + let b:GPGEncrypted = 1 + call s:GPGDebug(1, "this file is asymmetric encrypted") + + let b:GPGOptions += ["encrypt"] + + " find the used public keys + let start = match(output, "gpg: public key is [[:xdigit:]]\\{8}") + while (start >= 0) + let start = start + strlen("gpg: public key is ") + let recipient = strpart(output, start, 8) + call s:GPGDebug(1, "recipient is " . recipient) + let name = s:GPGNameToID(recipient) + if (strlen(name) > 0) + let b:GPGRecipients += [name] + call s:GPGDebug(1, "name of recipient is " . name) + else + let b:GPGRecipients += [recipient] + echohl GPGWarning + echom "The recipient \"" . recipient . "\" is not in your public keyring!" + echohl None + end + let start = match(output, "gpg: public key is [[:xdigit:]]\\{8}", start) + endwhile + else + " file is not encrypted + let b:GPGEncrypted = 0 + call s:GPGDebug(1, "this file is not encrypted") + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + set nobin + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") + return + endif + + " check if the message is armored + if (match(output, "gpg: armor header") >= 0) + call s:GPGDebug(1, "this file is armored") + let b:GPGOptions += ["armor"] + endif + + " finally decrypt the buffer content + " since even with the --quiet option passphrase typos will be reported, + " we must redirect stderr (using shell temporarily) + call s:GPGDebug(1, "decrypting file") + let commandline = "'[,']!" . s:GPGCommand . " --quiet --decrypt " . s:stderrredirnull + call s:GPGDebug(1, "command: " . commandline) + let &shellredir = s:shellredir + let &shell = s:shell + execute commandline + let &shellredir = s:shellredirsave + let &shell = s:shellsave + if (v:shell_error) " message could not be decrypted + silent u + echohl GPGError + let blackhole = input("Message could not be decrypted! (Press ENTER)") + echohl None + bwipeout + set nobin + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") + return + endif + + " turn off binary mode + set nobin + + " call the autocommand for the file minus .gpg$ + execute ":doautocmd BufReadPost " . escape(expand("%:r"), ' *?\"'."'") + call s:GPGDebug(2, "called autocommand for " . escape(expand("%:r"), ' *?\"'."'")) + + " refresh screen + redraw! + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGDecrypt()") +endfunction + +" Function: s:GPGEncrypt() {{{2 +" +" encrypts the buffer to all previous recipients +" +function s:GPGEncrypt() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEncrypt()") + + " save window view + let s:GPGWindowView = winsaveview() + call s:GPGDebug(2, "saved window view " . string(s:GPGWindowView)) + + " store encoding and switch to a safe one + if (&fileencoding != &encoding) + let s:GPGEncoding = &encoding + let &encoding = &fileencoding + call s:GPGDebug(2, "encoding was \"" . s:GPGEncoding . "\", switched to \"" . &encoding . "\"") + else + let s:GPGEncoding = "" + call s:GPGDebug(2, "encoding and fileencoding are the same (\"" . &encoding . "\"), not switching") + endif + + " switch buffer to binary mode + set bin + + " guard for unencrypted files + if (!exists("b:GPGEncrypted") || b:GPGEncrypted == 0) + echohl GPGError + let blackhole = input("Message could not be encrypted! File might be empty! (Press ENTER)") + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") + return + endif + + " initialize GPGOptions if not happened before + if (!exists("b:GPGOptions") || len(b:GPGOptions) == 0) + let b:GPGOptions = [] + if (exists("g:GPGPreferSymmetric") && g:GPGPreferSymmetric == 1) + let b:GPGOptions += ["symmetric"] + let b:GPGRecipients = [] + else + let b:GPGOptions += ["encrypt"] + endif + if (exists("g:GPGPreferArmor") && g:GPGPreferArmor == 1) + let b:GPGOptions += ["armor"] + endif + if (exists("g:GPGPreferSign") && g:GPGPreferSign == 1) + let b:GPGOptions += ["sign"] + endif + call s:GPGDebug(1, "no options set, so using default options: " . string(b:GPGOptions)) + endif + + " built list of options + let options = "" + for option in b:GPGOptions + let options = options . " --" . option . " " + endfor + + " check here again if all recipients are available in the keyring + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(b:GPGRecipients) + + " check if there are unknown recipients and warn + if (len(unknownrecipients) > 0) + echohl GPGWarning + echom "Please use GPGEditRecipients to correct!!" + echo + echohl None + + " Let user know whats happend and copy known_recipients back to buffer + let dummy = input("Press ENTER to quit") + endif + + " built list of recipients + if (len(recipients) > 0) + for gpgid in recipients + let options = options . " -r " . gpgid + endfor + else + if (match(b:GPGOptions, "encrypt") >= 0) + echohl GPGError + echom "There are no recipients!!" + echom "Please use GPGEditRecipients to correct!!" + echo + echohl None + endif + endif + + " encrypt the buffer + let commandline = "'[,']!" . s:GPGCommand . " --quiet --no-encrypt-to " . options . " " . s:stderrredirnull + call s:GPGDebug(1, "command: " . commandline) + let &shellredir = s:shellredir + let &shell = s:shell + silent execute commandline + let &shellredir = s:shellredirsave + let &shell = s:shellsave + if (v:shell_error) " message could not be encrypted + " delete content of the buffer to be sure no data is written unencrypted + " content will be recovered in GPGEncryptPost() + silent normal! 1GdG + + echohl GPGError + let blackhole = input("Message could not be encrypted! File might be empty! (Press ENTER)") + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") + return + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncrypt()") +endfunction + +" Function: s:GPGEncryptPost() {{{2 +" +" undo changes don by encrypt, after writing +" +function s:GPGEncryptPost() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEncryptPost()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncryptPost()") + return + endif + + " undo encryption of buffer content + silent u + + " switch back from binary mode + set nobin + + " restore encoding + if (s:GPGEncoding != "") + let &encoding = s:GPGEncoding + call s:GPGDebug(2, "restored encoding \"" . &encoding . "\"") + endif + + " restore window view + call winrestview(s:GPGWindowView) + call s:GPGDebug(2, "restored window view" . string(s:GPGWindowView)) + + " refresh screen + redraw! + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEncryptPost()") +endfunction + +" Function: s:GPGViewRecipients() {{{2 +" +" echo the recipients +" +function s:GPGViewRecipients() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGViewRecipients()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewRecipients()") + return + endif + + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(b:GPGRecipients) + + echo 'This file has following recipients (Unknown recipients have a prepended "!"):' + " echo the recipients + for name in recipients + let name = s:GPGIDToName(name) + echo name + endfor + + " echo the unknown recipients + echohl GPGWarning + for name in unknownrecipients + let name = "!" . name + echo name + endfor + echohl None + + " check if there is any known recipient + if (len(recipients) == 0) + echohl GPGError + echom 'There are no known recipients!' + echohl None + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewRecipients()") +endfunction + +" Function: s:GPGEditRecipients() {{{2 +" +" create a scratch buffer with all recipients to add/remove recipients +" +function s:GPGEditRecipients() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEditRecipients()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditRecipients()") + return + endif + + " only do this if it isn't already a GPGRecipients_* buffer + if (match(bufname("%"), "^\\(GPGRecipients_\\|GPGOptions_\\)") != 0 && match(bufname("%"), "\.\\(gpg\\|asc\\|pgp\\)$") >= 0) + + " save buffer name + let buffername = bufname("%") + let editbuffername = "GPGRecipients_" . buffername + + " check if this buffer exists + if (!bufexists(editbuffername)) + " create scratch buffer + execute 'silent! split ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the recipients after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishRecipientsBuffer() + else + if (bufwinnr(editbuffername) >= 0) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(editbuffername) . "wincmd w" + else + " split scratch buffer window + execute 'silent! sbuffer ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the recipients after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishRecipientsBuffer() + endif + + " empty the buffer + silent normal! 1GdG + endif + + " Mark the buffer as a scratch buffer + setlocal buftype=acwrite + setlocal bufhidden=hide + setlocal noswapfile + setlocal nowrap + setlocal nobuflisted + setlocal nonumber + + " so we know for which other buffer this edit buffer is + let b:GPGCorrespondingTo = buffername + + " put some comments to the scratch buffer + silent put ='GPG: ----------------------------------------------------------------------' + silent put ='GPG: Please edit the list of recipients, one recipient per line.' + silent put ='GPG: Unknown recipients have a prepended \"!\".' + silent put ='GPG: Lines beginning with \"GPG:\" are removed automatically.' + silent put ='GPG: Data after recipients between and including \"(\" and \")\" is ignored.' + silent put ='GPG: Closing this buffer commits changes.' + silent put ='GPG: ----------------------------------------------------------------------' + + " get the recipients + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(getbufvar(b:GPGCorrespondingTo, "GPGRecipients")) + + " if there are no known or unknown recipients, use the default ones + if (len(recipients) == 0 && len(unknownrecipients) == 0) + if (type(g:GPGDefaultRecipients) == type([])) + let [ recipients, unknownrecipients ] = s:GPGCheckRecipients(g:GPGDefaultRecipients) + else + echohl GPGWarning + echom "g:GPGDefaultRecipients is not a Vim list, please correct this in your vimrc!" + echohl None + endif + endif + + " put the recipients in the scratch buffer + for name in recipients + let name = s:GPGIDToName(name) + silent put =name + endfor + + " put the unknown recipients in the scratch buffer + let syntaxPattern = "\\(nonexxistinwordinthisbuffer" + for name in unknownrecipients + let name = "!" . name + let syntaxPattern = syntaxPattern . "\\|" . name + silent put =name + endfor + let syntaxPattern = syntaxPattern . "\\)" + + " define highlight + if (has("syntax") && exists("g:syntax_on")) + execute 'syntax match GPGUnknownRecipient "' . syntaxPattern . '"' + highlight clear GPGUnknownRecipient + highlight link GPGUnknownRecipient GPGHighlightUnknownRecipient + + syntax match GPGComment "^GPG:.*$" + execute 'syntax match GPGComment "' . s:GPGMagicString . '.*$"' + highlight clear GPGComment + highlight link GPGComment Comment + endif + + " delete the empty first line + silent normal! 1Gdd + + " jump to the first recipient + silent normal! G + + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditRecipients()") +endfunction + +" Function: s:GPGFinishRecipientsBuffer() {{{2 +" +" create a new recipient list from RecipientsBuffer +" +function s:GPGFinishRecipientsBuffer() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGFinishRecipientsBuffer()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishRecipientsBuffer()") + return + endif + + " go to buffer before doing work + if (bufnr("%") != expand("")) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(expand("")) . "wincmd w" + endif + + " delete the autocommand + autocmd! * + + + " get the recipients from the scratch buffer + let recipients = [] + let lines = getline(1,"$") + for recipient in lines + " delete all text after magic string + let recipient = substitute(recipient, s:GPGMagicString . ".*$", "", "") + + " delete all spaces at beginning and end of the recipient + " also delete a '!' at the beginning of the recipient + let recipient = substitute(recipient, "^[[:space:]!]*\\(.\\{-}\\)[[:space:]]*$", "\\1", "") + + " delete comment lines + let recipient = substitute(recipient, "^GPG:.*$", "", "") + + " only do this if the line is not empty + if (strlen(recipient) > 0) + let gpgid = s:GPGNameToID(recipient) + if (strlen(gpgid) > 0) + if (match(recipients, gpgid) < 0) + let recipients += [gpgid] + endif + else + if (match(recipients, recipient) < 0) + let recipients += [recipient] + echohl GPGWarning + echom "The recipient \"" . recipient . "\" is not in your public keyring!" + echohl None + endif + endif + endif + endfor + + " write back the new recipient list to the corresponding buffer and mark it + " as modified. Buffer is now for sure a encrypted buffer. + call setbufvar(b:GPGCorrespondingTo, "GPGRecipients", recipients) + call setbufvar(b:GPGCorrespondingTo, "&mod", 1) + call setbufvar(b:GPGCorrespondingTo, "GPGEncrypted", 1) + + " check if there is any known recipient + if (len(recipients) == 0) + echohl GPGError + echom 'There are no known recipients!' + echohl None + endif + + " reset modified flag + set nomodified + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishRecipientsBuffer()") +endfunction + +" Function: s:GPGViewOptions() {{{2 +" +" echo the recipients +" +function s:GPGViewOptions() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGViewOptions()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewOptions()") + return + endif + + if (exists("b:GPGOptions")) + echo 'This file has following options:' + " echo the options + for option in b:GPGOptions + echo option + endfor + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGViewOptions()") +endfunction + +" Function: s:GPGEditOptions() {{{2 +" +" create a scratch buffer with all recipients to add/remove recipients +" +function s:GPGEditOptions() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGEditOptions()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditOptions()") + return + endif + + " only do this if it isn't already a GPGOptions_* buffer + if (match(bufname("%"), "^\\(GPGRecipients_\\|GPGOptions_\\)") != 0 && match(bufname("%"), "\.\\(gpg\\|asc\\|pgp\\)$") >= 0) + + " save buffer name + let buffername = bufname("%") + let editbuffername = "GPGOptions_" . buffername + + " check if this buffer exists + if (!bufexists(editbuffername)) + " create scratch buffer + execute 'silent! split ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the options after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishOptionsBuffer() + else + if (bufwinnr(editbuffername) >= 0) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(editbuffername) . "wincmd w" + else + " split scratch buffer window + execute 'silent! sbuffer ' . escape(editbuffername, ' *?\"'."'") + + " add a autocommand to regenerate the options after a write + autocmd BufHidden,BufUnload,BufWriteCmd call s:GPGFinishOptionsBuffer() + endif + + " empty the buffer + silent normal! 1GdG + endif + + " Mark the buffer as a scratch buffer + setlocal buftype=nofile + setlocal noswapfile + setlocal nowrap + setlocal nobuflisted + setlocal nonumber + + " so we know for which other buffer this edit buffer is + let b:GPGCorrespondingTo = buffername + + " put some comments to the scratch buffer + silent put ='GPG: ----------------------------------------------------------------------' + silent put ='GPG: THERE IS NO CHECK OF THE ENTERED OPTIONS!' + silent put ='GPG: YOU NEED TO KNOW WHAT YOU ARE DOING!' + silent put ='GPG: IF IN DOUBT, QUICKLY EXIT USING :x OR :bd.' + silent put ='GPG: Please edit the list of options, one option per line.' + silent put ='GPG: Please refer to the gpg documentation for valid options.' + silent put ='GPG: Lines beginning with \"GPG:\" are removed automatically.' + silent put ='GPG: Closing this buffer commits changes.' + silent put ='GPG: ----------------------------------------------------------------------' + + " put the options in the scratch buffer + let options = getbufvar(b:GPGCorrespondingTo, "GPGOptions") + + for option in options + silent put =option + endfor + + " delete the empty first line + silent normal! 1Gdd + + " jump to the first option + silent normal! G + + " define highlight + if (has("syntax") && exists("g:syntax_on")) + syntax match GPGComment "^GPG:.*$" + highlight clear GPGComment + highlight link GPGComment Comment + endif + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGEditOptions()") +endfunction + +" Function: s:GPGFinishOptionsBuffer() {{{2 +" +" create a new option list from OptionsBuffer +" +function s:GPGFinishOptionsBuffer() + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGFinishOptionsBuffer()") + + " guard for unencrypted files + if (exists("b:GPGEncrypted") && b:GPGEncrypted == 0) + echohl GPGWarning + echom "File is not encrypted, all GPG functions disabled!" + echohl None + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishOptionsBuffer()") + return + endif + + " go to buffer before doing work + if (bufnr("%") != expand("")) + " switch to scratch buffer window + execute 'silent! ' . bufwinnr(expand("")) . "wincmd w" + endif + + " clear options and unknownOptions + let options = [] + let unknownOptions = [] + + " delete the autocommand + autocmd! * + + " get the options from the scratch buffer + let lines = getline(1, "$") + for option in lines + " delete all spaces at beginning and end of the option + " also delete a '!' at the beginning of the option + let option = substitute(option, "^[[:space:]!]*\\(.\\{-}\\)[[:space:]]*$", "\\1", "") + " delete comment lines + let option = substitute(option, "^GPG:.*$", "", "") + + " only do this if the line is not empty + if (strlen(option) > 0 && match(options, option) < 0) + let options += [option] + endif + endfor + + " write back the new option list to the corresponding buffer and mark it + " as modified + call setbufvar(b:GPGCorrespondingTo, "GPGOptions", options) + call setbufvar(b:GPGCorrespondingTo, "&mod", 1) + + " reset modified flag + set nomodified + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGFinishOptionsBuffer()") +endfunction + +" Function: s:GPGCheckRecipients(tocheck) {{{2 +" +" check if recipients are known +" Returns: two lists recipients and unknownrecipients +" +function s:GPGCheckRecipients(tocheck) + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGCheckRecipients()") + + let recipients = [] + let unknownrecipients = [] + + if (type(a:tocheck) == type([])) + for recipient in a:tocheck + let gpgid = s:GPGNameToID(recipient) + if (strlen(gpgid) > 0) + if (match(recipients, gpgid) < 0) + let recipients += [gpgid] + endif + else + if (match(unknownrecipients, recipient) < 0) + let unknownrecipients += [recipient] + echohl GPGWarning + echom "The recipient \"" . recipient . "\" is not in your public keyring!" + echohl None + endif + end + endfor + endif + + call s:GPGDebug(2, "recipients are: " . string(recipients)) + call s:GPGDebug(2, "unknown recipients are: " . string(unknownrecipients)) + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGCheckRecipients()") + return [ recipients, unknownrecipients ] +endfunction + +" Function: s:GPGNameToID(name) {{{2 +" +" find GPG key ID corresponding to a name +" Returns: ID for the given name +" +function s:GPGNameToID(name) + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGNameToID()") + + " ask gpg for the id for a name + let commandline = s:GPGCommand . " --quiet --with-colons --fixed-list-mode --list-keys \"" . a:name . "\"" + call s:GPGDebug(2, "command: ". commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(2, "output: ". output) + + " when called with "--with-colons" gpg encodes its output _ALWAYS_ as UTF-8, + " so convert it, if necessary + if (&encoding != "utf-8") + let output = iconv(output, "utf-8", &encoding) + endif + let lines = split(output, "\n") + + " parse the output of gpg + let pubseen = 0 + let counter = 0 + let gpgids = [] + let choices = "The name \"" . a:name . "\" is ambiguous. Please select the correct key:\n" + for line in lines + let fields = split(line, ":") + " search for the next uid + if (pubseen == 1) + if (fields[0] == "uid") + let choices = choices . " " . fields[9] . "\n" + else + let pubseen = 0 + endif + endif + + " search for the next pub + if (pubseen == 0) + if (fields[0] == "pub") + let identity = fields[4] + let gpgids += [identity] + if exists("*strftime") + let choices = choices . counter . ": ID: 0x" . identity . " created at " . strftime("%c", fields[5]) . "\n" + else + let choices = choices . counter . ": ID: 0x" . identity . "\n" + endif + let counter = counter+1 + let pubseen = 1 + endif + endif + + endfor + + " counter > 1 means we have more than one results + let answer = 0 + if (counter > 1) + let choices = choices . "Enter number: " + let answer = input(choices, "0") + while (answer == "") + let answer = input("Enter number: ", "0") + endwhile + endif + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGIDToName()") + return get(gpgids, answer, "") +endfunction + +" Function: s:GPGIDToName(identity) {{{2 +" +" find name corresponding to a GPG key ID +" Returns: Name for the given ID +" +function s:GPGIDToName(identity) + call s:GPGDebug(3, ">>>>>>>> Entering s:GPGIDToName()") + + " TODO is the encryption subkey really unique? + + " ask gpg for the id for a name + let commandline = s:GPGCommand . " --quiet --with-colons --fixed-list-mode --list-keys " . a:identity + call s:GPGDebug(2, "command: ". commandline) + let &shellredir = s:shellredir + let &shell = s:shell + let output = system(commandline) + let &shellredir = s:shellredirsave + let &shell = s:shellsave + call s:GPGDebug(2, "output: ". output) + + " when called with "--with-colons" gpg encodes its output _ALWAYS_ as UTF-8, + " so convert it, if necessary + if (&encoding != "utf-8") + let output = iconv(output, "utf-8", &encoding) + endif + let lines = split(output, "\n") + + " parse the output of gpg + let pubseen = 0 + let uid = "" + for line in lines + let fields = split(line, ":") + if (pubseen == 0) " search for the next pub + if (fields[0] == "pub") + let pubseen = 1 + endif + else " search for the next uid + if (fields[0] == "uid") + let pubseen = 0 + if exists("*strftime") + let uid = fields[9] . s:GPGMagicString . "(ID: 0x" . a:identity . " created at " . strftime("%c", fields[5]) . ")" + else + let uid = fields[9] . s:GPGMagicString . "(ID: 0x" . a:identity . ")" + endif + break + endif + endif + endfor + + call s:GPGDebug(3, "<<<<<<<< Leaving s:GPGIDToName()") + return uid +endfunction + +" Function: s:GPGDebug(level, text) {{{2 +" +" output debug message, if this message has high enough importance +" only define function if GPGDebugLevel set at all +" +function s:GPGDebug(level, text) + if exists("g:GPGDebugLevel") && g:GPGDebugLevel >= a:level + if exists("g:GPGDebugLog") + execute "redir >> " . g:GPGDebugLog + echom "GnuPG: " . a:text + redir END + else + echom "GnuPG: " . a:text + endif + endif +endfunction + +" Section: Commands {{{1 + +command! GPGViewRecipients call s:GPGViewRecipients() +command! GPGEditRecipients call s:GPGEditRecipients() +command! GPGViewOptions call s:GPGViewOptions() +command! GPGEditOptions call s:GPGEditOptions() + +" Section: Menu {{{1 + +if (has("menu")) + amenu Plugin.GnuPG.View\ Recipients :GPGViewRecipients + amenu Plugin.GnuPG.Edit\ Recipients :GPGEditRecipients + amenu Plugin.GnuPG.View\ Options :GPGViewOptions + amenu Plugin.GnuPG.Edit\ Options :GPGEditOptions +endif + +" vim600: set foldmethod=marker foldlevel=0 : diff --git a/addons/gnupg/version b/addons/gnupg/version new file mode 100644 index 0000000..95a3b3e --- /dev/null +++ b/addons/gnupg/version @@ -0,0 +1 @@ +3026 diff --git a/addons/molokai/archive/molokai.vim b/addons/molokai/archive/molokai.vim new file mode 100644 index 0000000..aae9420 --- /dev/null +++ b/addons/molokai/archive/molokai.vim @@ -0,0 +1,211 @@ +" Vim color file +" +" Author: Tomas Restrepo +" +" Note: Based on the monokai theme for textmate +" by Wimer Hazenberg and its darker variant +" by Hamish Stuart Macpherson +" + +hi clear + +set background=dark +if version > 580 + " no guarantees for version 5.8 and below, but this makes it stop + " complaining + hi clear + if exists("syntax_on") + syntax reset + endif +endif +let g:colors_name="molokai" + +if exists("g:molokai_original") + let s:molokai_original = g:molokai_original +else + let s:molokai_original = 0 +endif + + +hi Boolean guifg=#AE81FF +hi Character guifg=#E6DB74 +hi Number guifg=#AE81FF +hi String guifg=#E6DB74 +hi Conditional guifg=#F92672 gui=bold +hi Constant guifg=#AE81FF gui=bold +hi Cursor guifg=#000000 guibg=#F8F8F0 +hi Debug guifg=#BCA3A3 gui=bold +hi Define guifg=#66D9EF +hi Delimiter guifg=#8F8F8F +hi DiffAdd guibg=#13354A +hi DiffChange guifg=#89807D guibg=#4C4745 +hi DiffDelete guifg=#960050 guibg=#1E0010 +hi DiffText guibg=#4C4745 gui=italic,bold + +hi Directory guifg=#A6E22E gui=bold +hi Error guifg=#960050 guibg=#1E0010 +hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold +hi Exception guifg=#A6E22E gui=bold +hi Float guifg=#AE81FF +hi FoldColumn guifg=#465457 guibg=#000000 +hi Folded guifg=#465457 guibg=#000000 +hi Function guifg=#A6E22E +hi Identifier guifg=#FD971F +hi Ignore guifg=#808080 guibg=bg +hi IncSearch guifg=#C4BE89 guibg=#000000 + +hi Keyword guifg=#F92672 gui=bold +hi Label guifg=#E6DB74 gui=none +hi Macro guifg=#C4BE89 gui=italic +hi SpecialKey guifg=#66D9EF gui=italic + +hi MatchParen guifg=#000000 guibg=#FD971F gui=bold +hi ModeMsg guifg=#E6DB74 +hi MoreMsg guifg=#E6DB74 +hi Operator guifg=#F92672 + +" complete menu +hi Pmenu guifg=#66D9EF guibg=#000000 +hi PmenuSel guibg=#808080 +hi PmenuSbar guibg=#080808 +hi PmenuThumb guifg=#66D9EF + +hi PreCondit guifg=#A6E22E gui=bold +hi PreProc guifg=#A6E22E +hi Question guifg=#66D9EF +hi Repeat guifg=#F92672 gui=bold +hi Search guifg=#FFFFFF guibg=#455354 +" marks column +hi SignColumn guifg=#A6E22E guibg=#232526 +hi SpecialChar guifg=#F92672 gui=bold +hi SpecialComment guifg=#465457 gui=bold +hi Special guifg=#66D9EF guibg=bg gui=italic +hi SpecialKey guifg=#888A85 gui=italic +if has("spell") + hi SpellBad guisp=#FF0000 gui=undercurl + hi SpellCap guisp=#7070F0 gui=undercurl + hi SpellLocal guisp=#70F0F0 gui=undercurl + hi SpellRare guisp=#FFFFFF gui=undercurl +endif +hi Statement guifg=#F92672 gui=bold +hi StatusLine guifg=#455354 guibg=fg +hi StatusLineNC guifg=#808080 guibg=#080808 +hi StorageClass guifg=#FD971F gui=italic +hi Structure guifg=#66D9EF +hi Tag guifg=#F92672 gui=italic +hi Title guifg=#ef5939 +hi Todo guifg=#FFFFFF guibg=bg gui=bold + +hi Typedef guifg=#66D9EF +hi Type guifg=#66D9EF gui=none +hi Underlined guifg=#808080 gui=underline + +hi VertSplit guifg=#808080 guibg=#080808 gui=bold +hi VisualNOS guibg=#403D3D +hi Visual guibg=#403D3D +hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold +hi WildMenu guifg=#66D9EF guibg=#000000 + +if s:molokai_original == 1 + hi Normal guifg=#F8F8F2 guibg=#272822 + hi Comment guifg=#75715E + hi CursorLine guibg=#3E3D32 + hi CursorColumn guibg=#3E3D32 + hi LineNr guifg=#BCBCBC guibg=#3B3A32 + hi NonText guifg=#BCBCBC guibg=#3B3A32 +else + hi Normal guifg=#F8F8F2 guibg=#1B1D1E + hi Comment guifg=#465457 + hi CursorLine guibg=#293739 + hi CursorColumn guibg=#293739 + hi LineNr guifg=#BCBCBC guibg=#232526 + hi NonText guifg=#BCBCBC guibg=#232526 +end + +" +" Support for 256-color terminal +" +if &t_Co > 255 + hi Boolean ctermfg=135 + hi Character ctermfg=144 + hi Number ctermfg=135 + hi String ctermfg=144 + hi Conditional ctermfg=161 cterm=bold + hi Constant ctermfg=135 cterm=bold + hi Cursor ctermfg=16 ctermbg=253 + hi Debug ctermfg=225 cterm=bold + hi Define ctermfg=81 + hi Delimiter ctermfg=241 + + hi DiffAdd ctermbg=24 + hi DiffChange ctermfg=181 ctermbg=239 + hi DiffDelete ctermfg=162 ctermbg=53 + hi DiffText ctermbg=102 cterm=bold + + hi Directory ctermfg=118 cterm=bold + hi Error ctermfg=219 ctermbg=89 + hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold + hi Exception ctermfg=118 cterm=bold + hi Float ctermfg=135 + hi FoldColumn ctermfg=67 ctermbg=16 + hi Folded ctermfg=67 ctermbg=16 + hi Function ctermfg=118 + hi Identifier ctermfg=208 + hi Ignore ctermfg=244 ctermbg=232 + hi IncSearch ctermfg=193 ctermbg=16 + + hi Keyword ctermfg=161 cterm=bold + hi Label ctermfg=229 cterm=none + hi Macro ctermfg=193 + hi SpecialKey ctermfg=81 + + hi MatchParen ctermfg=16 ctermbg=208 cterm=bold + hi ModeMsg ctermfg=229 + hi MoreMsg ctermfg=229 + hi Operator ctermfg=161 + + " complete menu + hi Pmenu ctermfg=81 ctermbg=16 + hi PmenuSel ctermbg=244 + hi PmenuSbar ctermbg=232 + hi PmenuThumb ctermfg=81 + + hi PreCondit ctermfg=118 cterm=bold + hi PreProc ctermfg=118 + hi Question ctermfg=81 + hi Repeat ctermfg=161 cterm=bold + hi Search ctermfg=253 ctermbg=66 + + " marks column + hi SignColumn ctermfg=118 ctermbg=235 + hi SpecialChar ctermfg=161 cterm=bold + hi SpecialComment ctermfg=245 cterm=bold + hi Special ctermfg=81 ctermbg=232 + hi SpecialKey ctermfg=245 + + hi Statement ctermfg=161 cterm=bold + hi StatusLine ctermfg=238 ctermbg=253 + hi StatusLineNC ctermfg=244 ctermbg=232 + hi StorageClass ctermfg=208 + hi Structure ctermfg=81 + hi Tag ctermfg=161 + hi Title ctermfg=166 + hi Todo ctermfg=231 ctermbg=232 cterm=bold + + hi Typedef ctermfg=81 + hi Type ctermfg=81 cterm=none + hi Underlined ctermfg=244 cterm=underline + + hi VertSplit ctermfg=244 ctermbg=232 cterm=bold + hi VisualNOS ctermbg=238 + hi Visual ctermbg=235 + hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold + hi WildMenu ctermfg=81 ctermbg=16 + + hi Normal ctermfg=252 ctermbg=233 + hi Comment ctermfg=59 + hi CursorLine ctermbg=234 cterm=none + hi CursorColumn ctermbg=234 + hi LineNr ctermfg=250 ctermbg=234 + hi NonText ctermfg=250 ctermbg=234 +end diff --git a/addons/molokai/colors/molokai.vim b/addons/molokai/colors/molokai.vim new file mode 100644 index 0000000..aae9420 --- /dev/null +++ b/addons/molokai/colors/molokai.vim @@ -0,0 +1,211 @@ +" Vim color file +" +" Author: Tomas Restrepo +" +" Note: Based on the monokai theme for textmate +" by Wimer Hazenberg and its darker variant +" by Hamish Stuart Macpherson +" + +hi clear + +set background=dark +if version > 580 + " no guarantees for version 5.8 and below, but this makes it stop + " complaining + hi clear + if exists("syntax_on") + syntax reset + endif +endif +let g:colors_name="molokai" + +if exists("g:molokai_original") + let s:molokai_original = g:molokai_original +else + let s:molokai_original = 0 +endif + + +hi Boolean guifg=#AE81FF +hi Character guifg=#E6DB74 +hi Number guifg=#AE81FF +hi String guifg=#E6DB74 +hi Conditional guifg=#F92672 gui=bold +hi Constant guifg=#AE81FF gui=bold +hi Cursor guifg=#000000 guibg=#F8F8F0 +hi Debug guifg=#BCA3A3 gui=bold +hi Define guifg=#66D9EF +hi Delimiter guifg=#8F8F8F +hi DiffAdd guibg=#13354A +hi DiffChange guifg=#89807D guibg=#4C4745 +hi DiffDelete guifg=#960050 guibg=#1E0010 +hi DiffText guibg=#4C4745 gui=italic,bold + +hi Directory guifg=#A6E22E gui=bold +hi Error guifg=#960050 guibg=#1E0010 +hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold +hi Exception guifg=#A6E22E gui=bold +hi Float guifg=#AE81FF +hi FoldColumn guifg=#465457 guibg=#000000 +hi Folded guifg=#465457 guibg=#000000 +hi Function guifg=#A6E22E +hi Identifier guifg=#FD971F +hi Ignore guifg=#808080 guibg=bg +hi IncSearch guifg=#C4BE89 guibg=#000000 + +hi Keyword guifg=#F92672 gui=bold +hi Label guifg=#E6DB74 gui=none +hi Macro guifg=#C4BE89 gui=italic +hi SpecialKey guifg=#66D9EF gui=italic + +hi MatchParen guifg=#000000 guibg=#FD971F gui=bold +hi ModeMsg guifg=#E6DB74 +hi MoreMsg guifg=#E6DB74 +hi Operator guifg=#F92672 + +" complete menu +hi Pmenu guifg=#66D9EF guibg=#000000 +hi PmenuSel guibg=#808080 +hi PmenuSbar guibg=#080808 +hi PmenuThumb guifg=#66D9EF + +hi PreCondit guifg=#A6E22E gui=bold +hi PreProc guifg=#A6E22E +hi Question guifg=#66D9EF +hi Repeat guifg=#F92672 gui=bold +hi Search guifg=#FFFFFF guibg=#455354 +" marks column +hi SignColumn guifg=#A6E22E guibg=#232526 +hi SpecialChar guifg=#F92672 gui=bold +hi SpecialComment guifg=#465457 gui=bold +hi Special guifg=#66D9EF guibg=bg gui=italic +hi SpecialKey guifg=#888A85 gui=italic +if has("spell") + hi SpellBad guisp=#FF0000 gui=undercurl + hi SpellCap guisp=#7070F0 gui=undercurl + hi SpellLocal guisp=#70F0F0 gui=undercurl + hi SpellRare guisp=#FFFFFF gui=undercurl +endif +hi Statement guifg=#F92672 gui=bold +hi StatusLine guifg=#455354 guibg=fg +hi StatusLineNC guifg=#808080 guibg=#080808 +hi StorageClass guifg=#FD971F gui=italic +hi Structure guifg=#66D9EF +hi Tag guifg=#F92672 gui=italic +hi Title guifg=#ef5939 +hi Todo guifg=#FFFFFF guibg=bg gui=bold + +hi Typedef guifg=#66D9EF +hi Type guifg=#66D9EF gui=none +hi Underlined guifg=#808080 gui=underline + +hi VertSplit guifg=#808080 guibg=#080808 gui=bold +hi VisualNOS guibg=#403D3D +hi Visual guibg=#403D3D +hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold +hi WildMenu guifg=#66D9EF guibg=#000000 + +if s:molokai_original == 1 + hi Normal guifg=#F8F8F2 guibg=#272822 + hi Comment guifg=#75715E + hi CursorLine guibg=#3E3D32 + hi CursorColumn guibg=#3E3D32 + hi LineNr guifg=#BCBCBC guibg=#3B3A32 + hi NonText guifg=#BCBCBC guibg=#3B3A32 +else + hi Normal guifg=#F8F8F2 guibg=#1B1D1E + hi Comment guifg=#465457 + hi CursorLine guibg=#293739 + hi CursorColumn guibg=#293739 + hi LineNr guifg=#BCBCBC guibg=#232526 + hi NonText guifg=#BCBCBC guibg=#232526 +end + +" +" Support for 256-color terminal +" +if &t_Co > 255 + hi Boolean ctermfg=135 + hi Character ctermfg=144 + hi Number ctermfg=135 + hi String ctermfg=144 + hi Conditional ctermfg=161 cterm=bold + hi Constant ctermfg=135 cterm=bold + hi Cursor ctermfg=16 ctermbg=253 + hi Debug ctermfg=225 cterm=bold + hi Define ctermfg=81 + hi Delimiter ctermfg=241 + + hi DiffAdd ctermbg=24 + hi DiffChange ctermfg=181 ctermbg=239 + hi DiffDelete ctermfg=162 ctermbg=53 + hi DiffText ctermbg=102 cterm=bold + + hi Directory ctermfg=118 cterm=bold + hi Error ctermfg=219 ctermbg=89 + hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold + hi Exception ctermfg=118 cterm=bold + hi Float ctermfg=135 + hi FoldColumn ctermfg=67 ctermbg=16 + hi Folded ctermfg=67 ctermbg=16 + hi Function ctermfg=118 + hi Identifier ctermfg=208 + hi Ignore ctermfg=244 ctermbg=232 + hi IncSearch ctermfg=193 ctermbg=16 + + hi Keyword ctermfg=161 cterm=bold + hi Label ctermfg=229 cterm=none + hi Macro ctermfg=193 + hi SpecialKey ctermfg=81 + + hi MatchParen ctermfg=16 ctermbg=208 cterm=bold + hi ModeMsg ctermfg=229 + hi MoreMsg ctermfg=229 + hi Operator ctermfg=161 + + " complete menu + hi Pmenu ctermfg=81 ctermbg=16 + hi PmenuSel ctermbg=244 + hi PmenuSbar ctermbg=232 + hi PmenuThumb ctermfg=81 + + hi PreCondit ctermfg=118 cterm=bold + hi PreProc ctermfg=118 + hi Question ctermfg=81 + hi Repeat ctermfg=161 cterm=bold + hi Search ctermfg=253 ctermbg=66 + + " marks column + hi SignColumn ctermfg=118 ctermbg=235 + hi SpecialChar ctermfg=161 cterm=bold + hi SpecialComment ctermfg=245 cterm=bold + hi Special ctermfg=81 ctermbg=232 + hi SpecialKey ctermfg=245 + + hi Statement ctermfg=161 cterm=bold + hi StatusLine ctermfg=238 ctermbg=253 + hi StatusLineNC ctermfg=244 ctermbg=232 + hi StorageClass ctermfg=208 + hi Structure ctermfg=81 + hi Tag ctermfg=161 + hi Title ctermfg=166 + hi Todo ctermfg=231 ctermbg=232 cterm=bold + + hi Typedef ctermfg=81 + hi Type ctermfg=81 cterm=none + hi Underlined ctermfg=244 cterm=underline + + hi VertSplit ctermfg=244 ctermbg=232 cterm=bold + hi VisualNOS ctermbg=238 + hi Visual ctermbg=235 + hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold + hi WildMenu ctermfg=81 ctermbg=16 + + hi Normal ctermfg=252 ctermbg=233 + hi Comment ctermfg=59 + hi CursorLine ctermbg=234 cterm=none + hi CursorColumn ctermbg=234 + hi LineNr ctermfg=250 ctermbg=234 + hi NonText ctermfg=250 ctermbg=234 +end diff --git a/addons/molokai/version b/addons/molokai/version new file mode 100644 index 0000000..b123147 --- /dev/null +++ b/addons/molokai/version @@ -0,0 +1 @@ +1.1 \ No newline at end of file diff --git a/addons/snipmate b/addons/snipmate new file mode 160000 index 0000000..4c6655a --- /dev/null +++ b/addons/snipmate @@ -0,0 +1 @@ +Subproject commit 4c6655a22f56269a236eead281cdd510aeff19d3 diff --git a/addons/snipmate-snippets b/addons/snipmate-snippets new file mode 160000 index 0000000..b1c30e0 --- /dev/null +++ b/addons/snipmate-snippets @@ -0,0 +1 @@ +Subproject commit b1c30e017ef5c703e36ca7a79e102507a042b5a5 diff --git a/addons/surround b/addons/surround new file mode 160000 index 0000000..1a73f60 --- /dev/null +++ b/addons/surround @@ -0,0 +1 @@ +Subproject commit 1a73f607f8f5477d6942df2eb6e7245c4864f4d3 diff --git a/addons/taglist-plus/README.md b/addons/taglist-plus/README.md new file mode 100644 index 0000000..e883760 --- /dev/null +++ b/addons/taglist-plus/README.md @@ -0,0 +1,42 @@ +taglist-plus.vim +================ + +This is a fork of the popular taglist.vim plugin. + +Taglist-plus provides excellent Javascript support via jsctags. See [here][1] +for examples. + +This plugin can also be obtained through [vim.org][2]. + +Installation +------------ + +Unzip the plugin files to your `.vim` directory. + +For great Javascript support, jsctags is required as well. + +jsctags can be obtained via [github][4]. It requires a recent version of +node.js -- the default one provided in Maverick Meerkat won't cut it. You can +[build it from source][6] or get it via [this PPA][5]. + +If you're going the PPA route, you'll need to map `nodejs` to `node`. Here are +the commands: +
+sudo add-apt-repository ppa:richarvey/nodester
+sudo apt-get update
+sudo apt-get install nodejs
+sudo ln -s /usr/bin/nodejs /usr/local/bin/node
+
+ +Usage +----- + +`:TlistToggle` brings up the taglist window. More commands can be found via +`:help taglist-commands`. + +[1]:http://discontinuously.com/2011/03/vim-support-javascript-taglist-plus/ +[2]:https://github.com/int3/vim-taglist-plus +[3]:http://www.vim.org/scripts/script.php?script_id=3504 +[4]:https://github.com/mozilla/doctorjs +[5]:https://launchpad.net/~richarvey/+archive/nodester +[6]:http://nodejs.org/#download diff --git a/addons/taglist-plus/archive/taglist-plus.zip b/addons/taglist-plus/archive/taglist-plus.zip new file mode 100644 index 0000000000000000000000000000000000000000..2c876cf51da74d24932e9c79eab00625b4a549f8 GIT binary patch literal 52103 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 + http://ctags.sourceforge.net +< +The taglist plugin doesn't use or create a tags file and there is no need to +create a tags file to use this plugin. The taglist plugin will not work with +the GNU ctags or the Unix ctags utility. + +This plugin relies on the Vim "filetype" detection mechanism to determine the +type of the current file. You have to turn on the Vim filetype detection by +adding the following line to your .vimrc file: +> + filetype on +< +The taglist plugin will not work if you run Vim in the restricted mode (using +the -Z command-line argument). + +The taglist plugin uses the Vim system() function to invoke the exuberant +ctags utility. If Vim is compiled without the system() function then you +cannot use the taglist plugin. Some of the Linux distributions (Suse) compile +Vim without the system() function for security reasons. + +============================================================================== + *taglist-install* +3. Installation~ + +1. Download the taglist.zip file and unzip the files to the $HOME/.vim or the + $HOME/vimfiles or the $VIM/vimfiles directory. After this step, you should + have the following two files (the directory structure should be preserved): + + plugin/taglist.vim - main taglist plugin file + doc/taglist.txt - documentation (help) file + + Refer to the |add-plugin|and |'runtimepath'| Vim help pages for more + details about installing Vim plugins. +2. Change to the $HOME/.vim/doc or $HOME/vimfiles/doc or $VIM/vimfiles/doc + directory, start Vim and run the ":helptags ." command to process the + taglist help file. Without this step, you cannot jump to the taglist help + topics. +3. If the exuberant ctags utility is not present in one of the directories in + the PATH environment variable, then set the 'Tlist_Ctags_Cmd' variable to + point to the location of the exuberant ctags utility (not to the directory) + in the .vimrc file. +4. If you are running a terminal/console version of Vim and the terminal + doesn't support changing the window width then set the + 'Tlist_Inc_Winwidth' variable to 0 in the .vimrc file. +5. Restart Vim. +6. You can now use the ":TlistToggle" command to open/close the taglist + window. You can use the ":help taglist" command to get more information + about using the taglist plugin. + +To uninstall the taglist plugin, remove the plugin/taglist.vim and +doc/taglist.txt files from the $HOME/.vim or $HOME/vimfiles directory. + +============================================================================== + *taglist-using* +4. Usage~ + +The taglist plugin can be used in several different ways. + +1. You can keep the taglist window open during the entire editing session. On + opening the taglist window, the tags defined in all the files in the Vim + buffer list will be displayed in the taglist window. As you edit files, the + tags defined in them will be added to the taglist window. You can select a + tag from the taglist window and jump to it. The current tag will be + highlighted in the taglist window. You can close the taglist window when + you no longer need the window. +2. You can configure the taglist plugin to process the tags defined in all the + edited files always. In this configuration, even if the taglist window is + closed and the taglist menu is not displayed, the taglist plugin will + processes the tags defined in newly edited files. You can then open the + taglist window only when you need to select a tag and then automatically + close the taglist window after selecting the tag. +3. You can configure the taglist plugin to display only the tags defined in + the current file in the taglist window. By default, the taglist plugin + displays the tags defined in all the files in the Vim buffer list. As you + switch between files, the taglist window will be refreshed to display only + the tags defined in the current file. +4. In GUI Vim, you can use the Tags pull-down and popup menu created by the + taglist plugin to display the tags defined in the current file and select a + tag to jump to it. You can use the menu without opening the taglist window. + By default, the Tags menu is disabled. +5. You can configure the taglist plugin to display the name of the current tag + in the Vim window status line or in the Vim window title bar. For this to + work without the taglist window or menu, you need to configure the taglist + plugin to process the tags defined in a file always. +6. You can save the tags defined in multiple files to a taglist session file + and load it when needed. You can also configure the taglist plugin to not + update the taglist window when editing new files. You can then manually add + files to the taglist window. + +Opening the taglist window~ +You can open the taglist window using the ":TlistOpen" or the ":TlistToggle" +commands. The ":TlistOpen" command opens the taglist window and jumps to it. +The ":TlistToggle" command opens or closes (toggle) the taglist window and the +cursor remains in the current window. If the 'Tlist_GainFocus_On_ToggleOpen' +variable is set to 1, then the ":TlistToggle" command opens the taglist window +and moves the cursor to the taglist window. + +You can map a key to invoke these commands. For example, the following command +creates a normal mode mapping for the key to toggle the taglist window. +> + nnoremap :TlistToggle +< +Add the above mapping to your ~/.vimrc or $HOME/_vimrc file. + +To automatically open the taglist window on Vim startup, set the +'Tlist_Auto_Open' variable to 1. + +You can also open the taglist window on startup using the following command +line: +> + $ vim +TlistOpen +< +Closing the taglist window~ +You can close the taglist window from the taglist window by pressing 'q' or +using the Vim ":q" command. You can also use any of the Vim window commands to +close the taglist window. Invoking the ":TlistToggle" command when the taglist +window is opened, closes the taglist window. You can also use the +":TlistClose" command to close the taglist window. + +To automatically close the taglist window when a tag or file is selected, you +can set the 'Tlist_Close_On_Select' variable to 1. To exit Vim when only the +taglist window is present, set the 'Tlist_Exit_OnlyWindow' variable to 1. + +Jumping to a tag or a file~ +You can select a tag in the taglist window either by pressing the key +or by double clicking the tag name using the mouse. To jump to a tag on a +single mouse click set the 'Tlist_Use_SingleClick' variable to 1. + +If the selected file is already opened in a window, then the cursor is moved +to that window. If the file is not currently opened in a window then the file +is opened in the window used by the taglist plugin to show the previously +selected file. If there are no usable windows, then the file is opened in a +new window. The file is not opened in special windows like the quickfix +window, preview window and windows containing buffer with the 'buftype' option +set. + +To jump to the tag in a new window, press the 'o' key. To open the file in the +previous window (Ctrl-W_p) use the 'P' key. You can press the 'p' key to jump +to the tag but still keep the cursor in the taglist window (preview). + +To open the selected file in a tab, use the 't' key. If the file is already +present in a tab then the cursor is moved to that tab otherwise the file is +opened in a new tab. To jump to a tag in a new tab press Ctrl-t. The taglist +window is automatically opened in the newly created tab. + +Instead of jumping to a tag, you can open a file by pressing the key +or by double clicking the file name using the mouse. + +In the taglist window, you can use the [[ or key to jump to the +beginning of the previous file. You can use the ]] or key to jump to the +beginning of the next file. When you reach the first or last file, the search +wraps around and the jumps to the next/previous file. + +Highlighting the current tag~ +The taglist plugin automatically highlights the name of the current tag in the +taglist window. The Vim |CursorHold| autocmd event is used for this. If the +current tag name is not visible in the taglist window, then the taglist window +contents are scrolled to make that tag name visible. You can also use the +":TlistHighlightTag" command to force the highlighting of the current tag. + +The tag name is highlighted if no activity is performed for |'updatetime'| +milliseconds. The default value for this Vim option is 4 seconds. To avoid +unexpected problems, you should not set the |'updatetime'| option to a very +low value. + +To disable the automatic highlighting of the current tag name in the taglist +window, set the 'Tlist_Auto_Highlight_Tag' variable to zero. + +When entering a Vim buffer/window, the taglist plugin automatically highlights +the current tag in that buffer/window. If you like to disable the automatic +highlighting of the current tag when entering a buffer, set the +'Tlist_Highlight_Tag_On_BufEnter' variable to zero. + +Adding files to the taglist~ +When the taglist window is opened, all the files in the Vim buffer list are +processed and the supported files are added to the taglist. When you edit a +file in Vim, the taglist plugin automatically processes this file and adds it +to the taglist. If you close the taglist window, the tag information in the +taglist is retained. + +To process files even when the taglist window is not open, set the +'Tlist_Process_File_Always' variable to 1. + +You can manually add multiple files to the taglist without opening them using +the ":TlistAddFiles" and the ":TlistAddFilesRecursive" commands. + +For example, to add all the C files in the /my/project/dir directory to the +taglist, you can use the following command: +> + :TlistAddFiles /my/project/dir/*.c +< +Note that when adding several files with a large number of tags or a large +number of files, it will take several seconds to several minutes for the +taglist plugin to process all the files. You should not interrupt the taglist +plugin by pressing . + +You can recursively add multiple files from a directory tree using the +":TlistAddFilesRecursive" command: +> + :TlistAddFilesRecursive /my/project/dir *.c +< +This command takes two arguments. The first argument specifies the directory +from which to recursively add the files. The second optional argument +specifies the wildcard matching pattern for selecting the files to add. The +default pattern is * and all the files are added. + +Displaying tags for only one file~ +The taglist window displays the tags for all the files in the Vim buffer list +and all the manually added files. To display the tags for only the current +active buffer, set the 'Tlist_Show_One_File' variable to 1. + +Removing files from the taglist~ +You can remove a file from the taglist window, by pressing the 'd' key when the +cursor is on one of the tags listed for the file in the taglist window. The +removed file will no longer be displayed in the taglist window in the current +Vim session. To again display the tags for the file, open the file in a Vim +window and then use the ":TlistUpdate" command or use ":TlistAddFiles" command +to add the file to the taglist. + +When a buffer is removed from the Vim buffer list using the ":bdelete" or the +":bwipeout" command, the taglist is updated to remove the stored information +for this buffer. + +Updating the tags displayed for a file~ +The taglist plugin keeps track of the modification time of a file. When the +modification time changes (the file is modified), the taglist plugin +automatically updates the tags listed for that file. The modification time of +a file is checked when you enter a window containing that file or when you +load that file. + +You can also update or refresh the tags displayed for a file by pressing the +"u" key in the taglist window. If an existing file is modified, after the file +is saved, the taglist plugin automatically updates the tags displayed for the +file. + +You can also use the ":TlistUpdate" command to update the tags for the current +buffer after you made some changes to it. You should save the modified buffer +before you update the taglist window. Otherwise the listed tags will not +include the new tags created in the buffer. + +If you have deleted the tags displayed for a file in the taglist window using +the 'd' key, you can again display the tags for that file using the +":TlistUpdate" command. + +Controlling the taglist updates~ +To disable the automatic processing of new files or modified files, you can +set the 'Tlist_Auto_Update' variable to zero. When this variable is set to +zero, the taglist is updated only when you use the ":TlistUpdate" command or +the ":TlistAddFiles" or the ":TlistAddFilesRecursive" commands. You can use +this option to control which files are added to the taglist. + +You can use the ":TlistLock" command to lock the taglist contents. After this +command is executed, new files are not automatically added to the taglist. +When the taglist is locked, you can use the ":TlistUpdate" command to add the +current file or the ":TlistAddFiles" or ":TlistAddFilesRecursive" commands to +add new files to the taglist. To unlock the taglist, use the ":TlistUnlock" +command. + +Displaying the tag prototype~ +To display the prototype of the tag under the cursor in the taglist window, +press the space bar. If you place the cursor on a tag name in the taglist +window, then the tag prototype is displayed at the Vim status line after +|'updatetime'| milliseconds. The default value for the |'updatetime'| Vim +option is 4 seconds. + +You can get the name and prototype of a tag without opening the taglist window +and the taglist menu using the ":TlistShowTag" and the ":TlistShowPrototype" +commands. These commands will work only if the current file is already present +in the taglist. To use these commands without opening the taglist window, set +the 'Tlist_Process_File_Always' variable to 1. + +You can use the ":TlistShowTag" command to display the name of the tag at or +before the specified line number in the specified file. If the file name and +line number are not supplied, then this command will display the name of the +current tag. For example, +> + :TlistShowTag + :TlistShowTag myfile.java 100 +< +You can use the ":TlistShowPrototype" command to display the prototype of the +tag at or before the specified line number in the specified file. If the file +name and the line number are not supplied, then this command will display the +prototype of the current tag. For example, +> + :TlistShowPrototype + :TlistShowPrototype myfile.c 50 +< +In the taglist window, when the mouse is moved over a tag name, the tag +prototype is displayed in a balloon. This works only in GUI versions where +balloon evaluation is supported. + +Taglist window contents~ +The taglist window contains the tags defined in various files in the taglist +grouped by the filename and by the tag type (variable, function, class, etc.). +For tags with scope information (like class members, structures inside +structures, etc.), the scope information is displayed in square brackets "[]" +after the tag name. + +The contents of the taglist buffer/window are managed by the taglist plugin. +The |'filetype'| for the taglist buffer is set to 'taglist'. The Vim +|'modifiable'| option is turned off for the taglist buffer. You should not +manually edit the taglist buffer, by setting the |'modifiable'| flag. If you +manually edit the taglist buffer contents, then the taglist plugin will be out +of sync with the taglist buffer contents and the plugin will no longer work +correctly. To redisplay the taglist buffer contents again, close the taglist +window and reopen it. + +Opening and closing the tag and file tree~ +In the taglist window, the tag names are displayed as a foldable tree using +the Vim folding support. You can collapse the tree using the '-' key or using +the Vim |zc| fold command. You can open the tree using the '+' key or using +the Vim |zo| fold command. You can open all the folds using the '*' key or +using the Vim |zR| fold command. You can also use the mouse to open/close the +folds. You can close all the folds using the '=' key. You should not manually +create or delete the folds in the taglist window. + +To automatically close the fold for the inactive files/buffers and open only +the fold for the current buffer in the taglist window, set the +'Tlist_File_Fold_Auto_Close' variable to 1. + +Sorting the tags for a file~ +The tags displayed in the taglist window can be sorted either by their name or +by their chronological order. The default sorting method is by the order in +which the tags appear in a file. You can change the default sort method by +setting the 'Tlist_Sort_Type' variable to either "name" or "order". You can +sort the tags by their name by pressing the "s" key in the taglist window. You +can again sort the tags by their chronological order using the "s" key. Each +file in the taglist window can be sorted using different order. + +Zooming in and out of the taglist window~ +You can press the 'x' key in the taglist window to maximize the taglist +window width/height. The window will be maximized to the maximum possible +width/height without closing the other existing windows. You can again press +'x' to restore the taglist window to the default width/height. + + *taglist-session* +Taglist Session~ +A taglist session refers to the group of files and their tags stored in the +taglist in a Vim session. + +You can save and restore a taglist session (and all the displayed tags) using +the ":TlistSessionSave" and ":TlistSessionLoad" commands. + +To save the information about the tags and files in the taglist to a file, use +the ":TlistSessionSave" command and specify the filename: +> + :TlistSessionSave +< +To load a saved taglist session, use the ":TlistSessionLoad" command: > + + :TlistSessionLoad +< +When you load a taglist session file, the tags stored in the file will be +added to the tags already stored in the taglist. + +The taglist session feature can be used to save the tags for large files or a +group of frequently used files (like a project). By using the taglist session +file, you can minimize the amount to time it takes to load/refresh the taglist +for multiple files. + +You can create more than one taglist session file for multiple groups of +files. + +Displaying the tag name in the Vim status line or the window title bar~ +You can use the Tlist_Get_Tagname_By_Line() function provided by the taglist +plugin to display the current tag name in the Vim status line or the window +title bar. Similarly, you can use the Tlist_Get_Tag_Prototype_By_Line() +function to display the current tag prototype in the Vim status line or the +window title bar. + +For example, the following command can be used to display the current tag name +in the status line: +> + :set statusline=%<%f%=%([%{Tlist_Get_Tagname_By_Line()}]%) +< +The following command can be used to display the current tag name in the +window title bar: +> + :set title titlestring=%<%f\ %([%{Tlist_Get_Tagname_By_Line()}]%) +< +Note that the current tag name can be displayed only after the file is +processed by the taglist plugin. For this, you have to either set the +'Tlist_Process_File_Always' variable to 1 or open the taglist window or use +the taglist menu. For more information about configuring the Vim status line, +refer to the documentation for the Vim |'statusline'| option. + +Changing the taglist window highlighting~ +The following Vim highlight groups are defined and used to highlight the +various entities in the taglist window: + + TagListTagName - Used for tag names + TagListTagScope - Used for tag scope + TagListTitle - Used for tag titles + TagListComment - Used for comments + TagListFileName - Used for filenames + +By default, these highlight groups are linked to the standard Vim highlight +groups. If you want to change the colors used for these highlight groups, +prefix the highlight group name with 'My' and define it in your .vimrc or +.gvimrc file: MyTagListTagName, MyTagListTagScope, MyTagListTitle, +MyTagListComment and MyTagListFileName. For example, to change the colors +used for tag names, you can use the following command: +> + :highlight MyTagListTagName guifg=blue ctermfg=blue +< +Controlling the taglist window~ +To use a horizontally split taglist window, instead of a vertically split +window, set the 'Tlist_Use_Horiz_Window' variable to 1. + +To use a vertically split taglist window on the rightmost side of the Vim +window, set the 'Tlist_Use_Right_Window' variable to 1. + +You can specify the width of the vertically split taglist window, by setting +the 'Tlist_WinWidth' variable. You can specify the height of the horizontally +split taglist window, by setting the 'Tlist_WinHeight' variable. + +When opening a vertically split taglist window, the Vim window width is +increased to accommodate the new taglist window. When the taglist window is +closed, the Vim window is reduced. To disable this, set the +'Tlist_Inc_Winwidth' variable to zero. + +To reduce the number of empty lines in the taglist window, set the +'Tlist_Compact_Format' variable to 1. + +To not display the Vim fold column in the taglist window, set the +'Tlist_Enable_Fold_Column' variable to zero. + +To display the tag prototypes instead of the tag names in the taglist window, +set the 'Tlist_Display_Prototype' variable to 1. + +To not display the scope of the tags next to the tag names, set the +'Tlist_Display_Tag_Scope' variable to zero. + + *taglist-keys* +Taglist window key list~ +The following table lists the description of the keys that can be used +in the taglist window. + + Key Description~ + + Jump to the location where the tag under cursor is + defined. + o Jump to the location where the tag under cursor is + defined in a new window. + P Jump to the tag in the previous (Ctrl-W_p) window. + p Display the tag definition in the file window and + keep the cursor in the taglist window itself. + t Jump to the tag in a new tab. If the file is already + opened in a tab, move to that tab. + Ctrl-t Jump to the tag in a new tab. + Display the prototype of the tag under the cursor. + For file names, display the full path to the file, + file type and the number of tags. For tag types, display the + tag type and the number of tags. + u Update the tags listed in the taglist window + s Change the sort order of the tags (by name or by order) + d Remove the tags for the file under the cursor + x Zoom-in or Zoom-out the taglist window + + Open a fold + - Close a fold + * Open all folds + = Close all folds + [[ Jump to the beginning of the previous file + Jump to the beginning of the previous file + ]] Jump to the beginning of the next file + Jump to the beginning of the next file + q Close the taglist window + Display help + +The above keys will work in both the normal mode and the insert mode. + + *taglist-menu* +Taglist menu~ +When using GUI Vim, the taglist plugin can display the tags defined in the +current file in the drop-down menu and the popup menu. By default, this +feature is turned off. To turn on this feature, set the 'Tlist_Show_Menu' +variable to 1. + +You can jump to a tag by selecting the tag name from the menu. You can use the +taglist menu independent of the taglist window i.e. you don't need to open the +taglist window to get the taglist menu. + +When you switch between files/buffers, the taglist menu is automatically +updated to display the tags defined in the current file/buffer. + +The tags are grouped by their type (variables, functions, classes, methods, +etc.) and displayed as a separate sub-menu for each type. If all the tags +defined in a file are of the same type (e.g. functions), then the sub-menu is +not used. + +If the number of items in a tag type submenu exceeds the value specified by +the 'Tlist_Max_Submenu_Items' variable, then the submenu will be split into +multiple submenus. The default setting for 'Tlist_Max_Submenu_Items' is 25. +The first and last tag names in the submenu are used to form the submenu name. +The menu items are prefixed by alpha-numeric characters for easy selection by +keyboard. + +If the popup menu support is enabled (the |'mousemodel'| option contains +"popup"), then the tags menu is added to the popup menu. You can access +the popup menu by right clicking on the GUI window. + +You can regenerate the tags menu by selecting the 'Tags->Refresh menu' entry. +You can sort the tags listed in the menu either by name or by order by +selecting the 'Tags->Sort menu by->Name/Order' menu entry. + +You can tear-off the Tags menu and keep it on the side of the Vim window +for quickly locating the tags. + +Using the taglist plugin with the winmanager plugin~ +You can use the taglist plugin with the winmanager plugin. This will allow you +to use the file explorer, buffer explorer and the taglist plugin at the same +time in different windows. To use the taglist plugin with the winmanager +plugin, set 'TagList' in the 'winManagerWindowLayout' variable. For example, +to use the file explorer plugin and the taglist plugin at the same time, use +the following setting: > + + let winManagerWindowLayout = 'FileExplorer|TagList' +< +Getting help~ +If you have installed the taglist help file (this file), then you can use the +Vim ":help taglist-" command to get help on the various taglist +topics. + +You can press the key in the taglist window to display the help +information about using the taglist window. If you again press the key, +the help information is removed from the taglist window. + + *taglist-debug* +Debugging the taglist plugin~ +You can use the ":TlistDebug" command to enable logging of the debug messages +from the taglist plugin. To display the logged debug messages, you can use the +":TlistMessages" command. To disable the logging of the debug messages, use +the ":TlistUndebug" command. + +You can specify a file name to the ":TlistDebug" command to log the debug +messages to a file. Otherwise, the debug messages are stored in a script-local +variable. In the later case, to minimize memory usage, only the last 3000 +characters from the debug messages are stored. + +============================================================================== + *taglist-options* +5. Options~ + +A number of Vim variables control the behavior of the taglist plugin. These +variables are initialized to a default value. By changing these variables you +can change the behavior of the taglist plugin. You need to change these +settings only if you want to change the behavior of the taglist plugin. You +should use the |:let| command in your .vimrc file to change the setting of any +of these variables. + +The configurable taglist variables are listed below. For a detailed +description of these variables refer to the text below this table. + +|'Tlist_Auto_Highlight_Tag'| Automatically highlight the current tag in the + taglist. +|'Tlist_Auto_Open'| Open the taglist window when Vim starts. +|'Tlist_Auto_Update'| Automatically update the taglist to include + newly edited files. +|'Tlist_Close_On_Select'| Close the taglist window when a file or tag is + selected. +|'Tlist_Compact_Format'| Remove extra information and blank lines from + the taglist window. +|'Tlist_Ctags_Cmd'| Specifies the path to the ctags utility. +|'Tlist_Display_Prototype'| Show prototypes and not tags in the taglist + window. +|'Tlist_Display_Tag_Scope'| Show tag scope next to the tag name. +|'Tlist_Enable_Fold_Column'| Show the fold indicator column in the taglist + window. +|'Tlist_Exit_OnlyWindow'| Close Vim if the taglist is the only window. +|'Tlist_File_Fold_Auto_Close'| Close tag folds for inactive buffers. +|'Tlist_GainFocus_On_ToggleOpen'| + Jump to taglist window on open. +|'Tlist_Highlight_Tag_On_BufEnter'| + On entering a buffer, automatically highlight + the current tag. +|'Tlist_Inc_Winwidth'| Increase the Vim window width to accommodate + the taglist window. +|'Tlist_Max_Submenu_Items'| Maximum number of items in a tags sub-menu. +|'Tlist_Max_Tag_Length'| Maximum tag length used in a tag menu entry. +|'Tlist_Process_File_Always'| Process files even when the taglist window is + closed. +|'Tlist_Show_Menu'| Display the tags menu. +|'Tlist_Show_One_File'| Show tags for the current buffer only. +|'Tlist_Sort_Type'| Sort method used for arranging the tags. +|'Tlist_Use_Horiz_Window'| Use a horizontally split window for the + taglist window. +|'Tlist_Use_Right_Window'| Place the taglist window on the right side. +|'Tlist_Use_SingleClick'| Single click on a tag jumps to it. +|'Tlist_WinHeight'| Horizontally split taglist window height. +|'Tlist_WinWidth'| Vertically split taglist window width. +|'Tlist_javascript_Hide_Extras'| Hide extra tag data produced by jsctags. + + *'Tlist_Auto_Highlight_Tag'* +Tlist_Auto_Highlight_Tag~ +The taglist plugin will automatically highlight the current tag in the taglist +window. If you want to disable this, then you can set the +'Tlist_Auto_Highlight_Tag' variable to zero. Note that even though the current +tag highlighting is disabled, the tags for a new file will still be added to +the taglist window. +> + let Tlist_Auto_Highlight_Tag = 0 +< +With the above variable set to 1, you can use the ":TlistHighlightTag" command +to highlight the current tag. + + *'Tlist_Auto_Open'* +Tlist_Auto_Open~ +To automatically open the taglist window, when you start Vim, you can set the +'Tlist_Auto_Open' variable to 1. By default, this variable is set to zero and +the taglist window will not be opened automatically on Vim startup. +> + let Tlist_Auto_Open = 1 +< +The taglist window is opened only when a supported type of file is opened on +Vim startup. For example, if you open text files, then the taglist window will +not be opened. + + *'Tlist_Auto_Update'* +Tlist_Auto_Update~ +When a new file is edited, the tags defined in the file are automatically +processed and added to the taglist. To stop adding new files to the taglist, +set the 'Tlist_Auto_Update' variable to zero. By default, this variable is set +to 1. +> + let Tlist_Auto_Update = 0 +< +With the above variable set to 1, you can use the ":TlistUpdate" command to +add the tags defined in the current file to the taglist. + + *'Tlist_Close_On_Select'* +Tlist_Close_On_Select~ +If you want to close the taglist window when a file or tag is selected, then +set the 'Tlist_Close_On_Select' variable to 1. By default, this variable is +set zero and when you select a tag or file from the taglist window, the window +is not closed. +> + let Tlist_Close_On_Select = 1 +< + *'Tlist_Compact_Format'* +Tlist_Compact_Format~ +By default, empty lines are used to separate different tag types displayed for +a file and the tags displayed for different files in the taglist window. If +you want to display as many tags as possible in the taglist window, you can +set the 'Tlist_Compact_Format' variable to 1 to get a compact display. +> + let Tlist_Compact_Format = 1 +< + *'Tlist_Ctags_Cmd'* +Tlist_Ctags_Cmd~ +The 'Tlist_Ctags_Cmd' variable specifies the location (path) of the exuberant +ctags utility. If exuberant ctags is present in any one of the directories in +the PATH environment variable, then there is no need to set this variable. + +The exuberant ctags tool can be installed under different names. When the +taglist plugin starts up, if the 'Tlist_Ctags_Cmd' variable is not set, it +checks for the names exuberant-ctags, exctags, ctags, ctags.exe and tags in +the PATH environment variable. If any one of the named executable is found, +then the Tlist_Ctags_Cmd variable is set to that name. + +If exuberant ctags is not present in one of the directories specified in the +PATH environment variable, then set this variable to point to the location of +the ctags utility in your system. Note that this variable should point to the +fully qualified exuberant ctags location and NOT to the directory in which +exuberant ctags is installed. If the exuberant ctags tool is not found in +either PATH or in the specified location, then the taglist plugin will not be +loaded. Examples: +> + let Tlist_Ctags_Cmd = 'd:\tools\ctags.exe' + let Tlist_Ctags_Cmd = '/usr/local/bin/ctags' +< + *'Tlist_Display_Prototype'* +Tlist_Display_Prototype~ +By default, only the tag name will be displayed in the taglist window. If you +like to see tag prototypes instead of names, set the 'Tlist_Display_Prototype' +variable to 1. By default, this variable is set to zero and only tag names +will be displayed. +> + let Tlist_Display_Prototype = 1 +< + *'Tlist_Display_Tag_Scope'* +Tlist_Display_Tag_Scope~ +By default, the scope of a tag (like a C++ class) will be displayed in +square brackets next to the tag name. If you don't want the tag scopes +to be displayed, then set the 'Tlist_Display_Tag_Scope' to zero. By default, +this variable is set to 1 and the tag scopes will be displayed. +> + let Tlist_Display_Tag_Scope = 0 +< + *'Tlist_Enable_Fold_Column'* +Tlist_Enable_Fold_Column~ +By default, the Vim fold column is enabled and displayed in the taglist +window. If you wish to disable this (for example, when you are working with a +narrow Vim window or terminal), you can set the 'Tlist_Enable_Fold_Column' +variable to zero. +> + let Tlist_Enable_Fold_Column = 1 +< + *'Tlist_Exit_OnlyWindow'* +Tlist_Exit_OnlyWindow~ +If you want to exit Vim if only the taglist window is currently opened, then +set the 'Tlist_Exit_OnlyWindow' variable to 1. By default, this variable is +set to zero and the Vim instance will not be closed if only the taglist window +is present. +> + let Tlist_Exit_OnlyWindow = 1 +< + *'Tlist_File_Fold_Auto_Close'* +Tlist_File_Fold_Auto_Close~ +By default, the tags tree displayed in the taglist window for all the files is +opened. You can close/fold the tags tree for the files manually. To +automatically close the tags tree for inactive files, you can set the +'Tlist_File_Fold_Auto_Close' variable to 1. When this variable is set to 1, +the tags tree for the current buffer is automatically opened and for all the +other buffers is closed. +> + let Tlist_File_Fold_Auto_Close = 1 +< + *'Tlist_GainFocus_On_ToggleOpen'* +Tlist_GainFocus_On_ToggleOpen~ +When the taglist window is opened using the ':TlistToggle' command, this +option controls whether the cursor is moved to the taglist window or remains +in the current window. By default, this option is set to 0 and the cursor +remains in the current window. When this variable is set to 1, the cursor +moves to the taglist window after opening the taglist window. +> + let Tlist_GainFocus_On_ToggleOpen = 1 +< + *'Tlist_Highlight_Tag_On_BufEnter'* +Tlist_Highlight_Tag_On_BufEnter~ +When you enter a Vim buffer/window, the current tag in that buffer/window is +automatically highlighted in the taglist window. If the current tag name is +not visible in the taglist window, then the taglist window contents are +scrolled to make that tag name visible. If you like to disable the automatic +highlighting of the current tag when entering a buffer, you can set the +'Tlist_Highlight_Tag_On_BufEnter' variable to zero. The default setting for +this variable is 1. +> + let Tlist_Highlight_Tag_On_BufEnter = 0 +< + *'Tlist_Inc_Winwidth'* +Tlist_Inc_Winwidth~ +By default, when the width of the window is less than 100 and a new taglist +window is opened vertically, then the window width is increased by the value +set in the 'Tlist_WinWidth' variable to accommodate the new window. The value +of this variable is used only if you are using a vertically split taglist +window. + +If your terminal doesn't support changing the window width from Vim (older +version of xterm running in a Unix system) or if you see any weird problems in +the screen due to the change in the window width or if you prefer not to +adjust the window width then set the 'Tlist_Inc_Winwidth' variable to zero. +CAUTION: If you are using the MS-Windows version of Vim in a MS-DOS command +window then you must set this variable to zero, otherwise the system may hang +due to a Vim limitation (explained in :help win32-problems) +> + let Tlist_Inc_Winwidth = 0 +< + *'Tlist_Max_Submenu_Items'* +Tlist_Max_Submenu_Items~ +If a file contains too many tags of a particular type (function, variable, +class, etc.), greater than that specified by the 'Tlist_Max_Submenu_Items' +variable, then the menu for that tag type will be split into multiple +sub-menus. The default setting for the 'Tlist_Max_Submenu_Items' variable is +25. This can be changed by setting the 'Tlist_Max_Submenu_Items' variable: +> + let Tlist_Max_Submenu_Items = 20 +< +The name of the submenu is formed using the names of the first and the last +tag entries in that submenu. + + *'Tlist_Max_Tag_Length'* +Tlist_Max_Tag_Length~ +Only the first 'Tlist_Max_Tag_Length' characters from the tag names will be +used to form the tag type submenu name. The default value for this variable is +10. Change the 'Tlist_Max_Tag_Length' setting if you want to include more or +less characters: +> + let Tlist_Max_Tag_Length = 10 +< + *'Tlist_Process_File_Always'* +Tlist_Process_File_Always~ +By default, the taglist plugin will generate and process the tags defined in +the newly opened files only when the taglist window is opened or when the +taglist menu is enabled. When the taglist window is closed, the taglist plugin +will stop processing the tags for newly opened files. + +You can set the 'Tlist_Process_File_Always' variable to 1 to generate the list +of tags for new files even when the taglist window is closed and the taglist +menu is disabled. +> + let Tlist_Process_File_Always = 1 +< +To use the ":TlistShowTag" and the ":TlistShowPrototype" commands without the +taglist window and the taglist menu, you should set this variable to 1. + + *'Tlist_Show_Menu'* +Tlist_Show_Menu~ +When using GUI Vim, you can display the tags defined in the current file in a +menu named "Tags". By default, this feature is turned off. To turn on this +feature, set the 'Tlist_Show_Menu' variable to 1: +> + let Tlist_Show_Menu = 1 +< + *'Tlist_Show_One_File'* +Tlist_Show_One_File~ +By default, the taglist plugin will display the tags defined in all the loaded +buffers in the taglist window. If you prefer to display the tags defined only +in the current buffer, then you can set the 'Tlist_Show_One_File' to 1. When +this variable is set to 1, as you switch between buffers, the taglist window +will be refreshed to display the tags for the current buffer and the tags for +the previous buffer will be removed. +> + let Tlist_Show_One_File = 1 +< + *'Tlist_Sort_Type'* +Tlist_Sort_Type~ +The 'Tlist_Sort_Type' variable specifies the sort order for the tags in the +taglist window. The tags can be sorted either alphabetically by their name or +by the order of their appearance in the file (chronological order). By +default, the tag names will be listed by the order in which they are defined +in the file. You can change the sort type (from name to order or from order to +name) by pressing the "s" key in the taglist window. You can also change the +default sort order by setting 'Tlist_Sort_Type' to "name" or "order": +> + let Tlist_Sort_Type = "name" +< + *'Tlist_Use_Horiz_Window'* +Tlist_Use_Horiz_Window~ +Be default, the tag names are displayed in a vertically split window. If you +prefer a horizontally split window, then set the 'Tlist_Use_Horiz_Window' +variable to 1. If you are running MS-Windows version of Vim in a MS-DOS +command window, then you should use a horizontally split window instead of a +vertically split window. Also, if you are using an older version of xterm in a +Unix system that doesn't support changing the xterm window width, you should +use a horizontally split window. +> + let Tlist_Use_Horiz_Window = 1 +< + *'Tlist_Use_Right_Window'* +Tlist_Use_Right_Window~ +By default, the vertically split taglist window will appear on the left hand +side. If you prefer to open the window on the right hand side, you can set the +'Tlist_Use_Right_Window' variable to 1: +> + let Tlist_Use_Right_Window = 1 +< + *'Tlist_Use_SingleClick'* +Tlist_Use_SingleClick~ +By default, when you double click on the tag name using the left mouse +button, the cursor will be positioned at the definition of the tag. You +can set the 'Tlist_Use_SingleClick' variable to 1 to jump to a tag when +you single click on the tag name using the mouse. By default this variable +is set to zero. +> + let Tlist_Use_SingleClick = 1 +< +Due to a bug in Vim, if you set 'Tlist_Use_SingleClick' to 1 and try to resize +the taglist window using the mouse, then Vim will crash. This problem is fixed +in Vim 6.3 and above. In the meantime, instead of resizing the taglist window +using the mouse, you can use normal Vim window resizing commands to resize the +taglist window. + + *'Tlist_WinHeight'* +Tlist_WinHeight~ +The default height of the horizontally split taglist window is 10. This can be +changed by modifying the 'Tlist_WinHeight' variable: +> + let Tlist_WinHeight = 20 +< +The |'winfixheight'| option is set for the taglist window, to maintain the +height of the taglist window, when new Vim windows are opened and existing +windows are closed. + + *'Tlist_WinWidth'* +Tlist_WinWidth~ +The default width of the vertically split taglist window is 30. This can be +changed by modifying the 'Tlist_WinWidth' variable: +> + let Tlist_WinWidth = 20 +< +Setting Tlist_WinWidth to 'auto' causes the taglist window to resize +automatically to fit the contents. + +Note that the value of the |'winwidth'| option setting determines the minimum +width of the current window. If you set the 'Tlist_WinWidth' variable to a +value less than that of the |'winwidth'| option setting, then Vim will use the +value of the |'winwidth'| option. + +When new Vim windows are opened and existing windows are closed, the taglist +plugin will try to maintain the width of the taglist window to the size +specified by the 'Tlist_WinWidth' variable. + + *'Tlist_javascript_Hide_Extras'* +Tlist_javascript_Hide_Extras~ + +To hide the type inference data generated by jsctags, modify this variable: + + let Tlist_javascript_Hide_Extras = ['type'] + +Note that 'javascript' here is not capitalized! + +============================================================================== + *taglist-commands* +6. Commands~ + +The taglist plugin provides the following ex-mode commands: + +|:TlistAddFiles| Add multiple files to the taglist. +|:TlistAddFilesRecursive| + Add files recursively to the taglist. +|:TlistClose| Close the taglist window. +|:TlistDebug| Start logging of taglist debug messages. +|:TlistLock| Stop adding new files to the taglist. +|:TlistMessages| Display the logged taglist plugin debug messages. +|:TlistOpen| Open and jump to the taglist window. +|:TlistSessionSave| Save the information about files and tags in the + taglist to a session file. +|:TlistSessionLoad| Load the information about files and tags stored + in a session file to taglist. +|:TlistShowPrototype| Display the prototype of the tag at or before the + specified line number. +|:TlistShowTag| Display the name of the tag defined at or before the + specified line number. +|:TlistHighlightTag| Highlight the current tag in the taglist window. +|:TlistToggle| Open or close (toggle) the taglist window. +|:TlistUndebug| Stop logging of taglist debug messages. +|:TlistUnlock| Start adding new files to the taglist. +|:TlistUpdate| Update the tags for the current buffer. + + *:TlistAddFiles* +:TlistAddFiles {file(s)} [file(s) ...] + Add one or more specified files to the taglist. You can + specify multiple filenames using wildcards. To specify a + file name with space character, you should escape the space + character with a backslash. + Examples: +> + :TlistAddFiles *.c *.cpp + :TlistAddFiles file1.html file2.html +< + If you specify a large number of files, then it will take some + time for the taglist plugin to process all of them. The + specified files will not be edited in a Vim window and will + not be added to the Vim buffer list. + + *:TlistAddFilesRecursive* +:TlistAddFilesRecursive {directory} [ {pattern} ] + Add files matching {pattern} recursively from the specified + {directory} to the taglist. If {pattern} is not specified, + then '*' is assumed. To specify the current directory, use "." + for {directory}. To specify a directory name with space + character, you should escape the space character with a + backslash. + Examples: +> + :TlistAddFilesRecursive myproject *.java + :TlistAddFilesRecursive smallproject +< + If large number of files are present in the specified + directory tree, then it will take some time for the taglist + plugin to process all of them. + + *:TlistClose* +:TlistClose Close the taglist window. This command can be used from any + one of the Vim windows. + + *:TlistDebug* +:TlistDebug [filename] + Start logging of debug messages from the taglist plugin. + If {filename} is specified, then the debug messages are stored + in the specified file. Otherwise, the debug messages are + stored in a script local variable. If the file {filename} is + already present, then it is overwritten. + + *:TlistLock* +:TlistLock + Lock the taglist and don't process new files. After this + command is executed, newly edited files will not be added to + the taglist. + + *:TlistMessages* +:TlistMessages + Display the logged debug messages from the taglist plugin + in a window. This command works only when logging to a + script-local variable. + + *:TlistOpen* +:TlistOpen Open and jump to the taglist window. Creates the taglist + window, if the window is not opened currently. After executing + this command, the cursor is moved to the taglist window. When + the taglist window is opened for the first time, all the files + in the buffer list are processed and the tags defined in them + are displayed in the taglist window. + + *:TlistSessionSave* +:TlistSessionSave {filename} + Saves the information about files and tags in the taglist to + the specified file. This command can be used to save and + restore the taglist contents across Vim sessions. + + *:TlistSessionLoad* +:TlistSessionLoad {filename} + Load the information about files and tags stored in the + specified session file to the taglist. + + *:TlistShowPrototype* +:TlistShowPrototype [filename] [linenumber] + Display the prototype of the tag at or before the specified + line number. If the file name and the line number are not + specified, then the current file name and line number are + used. A tag spans multiple lines starting from the line where + it is defined to the line before the next tag. This command + displays the prototype for the tag for any line number in this + range. + + *:TlistShowTag* +:TlistShowTag [filename] [linenumber] + Display the name of the tag defined at or before the specified + line number. If the file name and the line number are not + specified, then the current file name and line number are + used. A tag spans multiple lines starting from the line where + it is defined to the line before the next tag. This command + displays the tag name for any line number in this range. + + *:TlistHighlightTag* +:TlistHighlightTag + Highlight the current tag in the taglist window. By default, + the taglist plugin periodically updates the taglist window to + highlight the current tag. This command can be used to force + the taglist plugin to highlight the current tag. + + *:TlistToggle* +:TlistToggle Open or close (toggle) the taglist window. Opens the taglist + window, if the window is not opened currently. Closes the + taglist window, if the taglist window is already opened. When + the taglist window is opened for the first time, all the files + in the buffer list are processed and the tags are displayed in + the taglist window. After executing this command, the cursor + is not moved from the current window to the taglist window. + + *:TlistUndebug* +:TlistUndebug + Stop logging of debug messages from the taglist plugin. + + *:TlistUnlock* +:TlistUnlock + Unlock the taglist and start processing newly edited files. + + *:TlistUpdate* +:TlistUpdate Update the tags information for the current buffer. This + command can be used to re-process the current file/buffer and + get the tags information. As the taglist plugin uses the file + saved in the disk (instead of the file displayed in a Vim + buffer), you should save a modified buffer before you update + the taglist. Otherwise the listed tags will not include the + new tags created in the buffer. You can use this command even + when the taglist window is not opened. + +============================================================================== + *taglist-functions* +7. Global functions~ + +The taglist plugin provides several global functions that can be used from +other Vim plugins to interact with the taglist plugin. These functions are +described below. + +|Tlist_Update_File_Tags()| Update the tags for the specified file +|Tlist_Get_Tag_Prototype_By_Line()| Return the prototype of the tag at or + before the specified line number in the + specified file. +|Tlist_Get_Tagname_By_Line()| Return the name of the tag at or + before the specified line number in + the specified file. +|Tlist_Set_App()| Set the name of the application + controlling the taglist window. + + *Tlist_Update_File_Tags()* +Tlist_Update_File_Tags({filename}, {filetype}) + Update the tags for the file {filename}. The second argument + specifies the Vim filetype for the file. If the taglist plugin + has not processed the file previously, then the exuberant + ctags tool is invoked to generate the tags for the file. + + *Tlist_Get_Tag_Prototype_By_Line()* +Tlist_Get_Tag_Prototype_By_Line([{filename}, {linenumber}]) + Return the prototype of the tag at or before the specified + line number in the specified file. If the filename and line + number are not specified, then the current buffer name and the + current line number are used. + + *Tlist_Get_Tagname_By_Line()* +Tlist_Get_Tagname_By_Line([{filename}, {linenumber}]) + Return the name of the tag at or before the specified line + number in the specified file. If the filename and line number + are not specified, then the current buffer name and the + current line number are used. + + *Tlist_Set_App()* +Tlist_Set_App({appname}) + Set the name of the plugin that controls the taglist plugin + window and buffer. This can be used to integrate the taglist + plugin with other Vim plugins. + + For example, the winmanager plugin and the Cream package use + this function and specify the appname as "winmanager" and + "cream" respectively. + + By default, the taglist plugin is a stand-alone plugin and + controls the taglist window and buffer. If the taglist window + is controlled by an external plugin, then the appname should + be set appropriately. + +============================================================================== + *taglist-extend* +8. Extending~ + +The taglist plugin supports all the languages supported by the exuberant ctags +tool, which includes the following languages: Assembly, ASP, Awk, Beta, C, +C++, C#, Cobol, Eiffel, Erlang, Fortran, HTML, Java, Javascript, Lisp, Lua, +Make, Pascal, Perl, PHP, Python, Rexx, Ruby, Scheme, Shell, Slang, SML, Sql, +TCL, Verilog, Vim and Yacc. + +You can extend the taglist plugin to add support for new languages and also +modify the support for the above listed languages. + +You should NOT make modifications to the taglist plugin script file to add +support for new languages. You will lose these changes when you upgrade to the +next version of the taglist plugin. Instead you should follow the below +described instructions to extend the taglist plugin. + +You can extend the taglist plugin by setting variables in the .vimrc or _vimrc +file. The name of these variables depends on the language name and is +described below. + +Modifying support for an existing language~ +To modify the support for an already supported language, you have to set the +tlist_xxx_settings variable in the ~/.vimrc or $HOME/_vimrc file. Replace xxx +with the Vim filetype name for the language file. For example, to modify the +support for the perl language files, you have to set the tlist_perl_settings +variable. To modify the support for java files, you have to set the +tlist_java_settings variable. + +To determine the filetype name used by Vim for a file, use the following +command in the buffer containing the file: + + :set filetype + +The above command will display the Vim filetype for the current buffer. + +The format of the value set in the tlist_xxx_settings variable is + + ;flag1:name1;flag2:name2;flag3:name3 + +The different fields in the value are separated by the ';' character. + +The first field 'language_name' is the name used by exuberant ctags to refer +to this language file. This name can be different from the file type name used +by Vim. For example, for C++, the language name used by ctags is 'c++' but the +filetype name used by Vim is 'cpp'. To get the list of language names +supported by exuberant ctags, use the following command: + + $ ctags --list-maps=all + +The remaining fields follow the format "flag:name". The sub-field 'flag' is +the language specific flag used by exuberant ctags to generate the +corresponding tags. For example, for the C language, to list only the +functions, the 'f' flag is used. To get the list of flags supported by +exuberant ctags for the various languages use the following command: + + $ ctags --list-kinds=all + +The sub-field 'name' specifies the title text to use for displaying the tags +of a particular type. For example, 'name' can be set to 'functions'. This +field can be set to any text string name. + +For example, to list only the classes and functions defined in a C++ language +file, add the following line to your .vimrc file: + + let tlist_cpp_settings = 'c++;c:class;f:function' + +In the above setting, 'cpp' is the Vim filetype name and 'c++' is the name +used by the exuberant ctags tool. 'c' and 'f' are the flags passed to +exuberant ctags to list C++ classes and functions and 'class' is the title +used for the class tags and 'function' is the title used for the function tags +in the taglist window. + +For example, to display only functions defined in a C file and to use "My +Functions" as the title for the function tags, use + + let tlist_c_settings = 'c;f:My Functions' + +When you set the tlist_xxx_settings variable, you will override the default +setting used by the taglist plugin for the 'xxx' language. You cannot add to +the default options used by the taglist plugin for a particular file type. To +add to the options used by the taglist plugin for a language, copy the option +values from the taglist plugin file to your .vimrc file and modify it. + +Adding support for a new language~ +If you want to add support for a new language to the taglist plugin, you need +to first extend the exuberant ctags tool. For more information about extending +exuberant ctags, visit the following page: + + http://ctags.sourceforge.net/EXTENDING.html + +To add support for a new language, set the tlist_xxx_settings variable in the +~/.vimrc file appropriately as described above. Replace 'xxx' in the variable +name with the Vim filetype name for the new language. + +For example, to extend the taglist plugin to support the latex language, you +can use the following line (assuming, you have already extended exuberant +ctags to support the latex language): + + let tlist_tex_settings='latex;b:bibitem;c:command;l:label' + +With the above line, when you edit files of filetype "tex" in Vim, the taglist +plugin will invoke the exuberant ctags tool passing the "latex" filetype and +the flags b, c and l to generate the tags. The text heading 'bibitem', +'command' and 'label' will be used in the taglist window for the tags which +are generated for the flags b, c and l respectively. + +============================================================================== + *taglist-faq* +9. Frequently Asked Questions~ + +Q. The taglist plugin doesn't work. The taglist window is empty and the tags + defined in a file are not displayed. +A. Are you using Vim version 6.0 and above? The taglist plugin relies on the + features supported by Vim version 6.0 and above. You can use the following + command to get the Vim version: +> + $ vim --version +< + Are you using exuberant ctags version 5.0 and above? The taglist plugin + relies on the features supported by exuberant ctags and will not work with + GNU ctags or the Unix ctags utility. You can use the following command to + determine whether the ctags installed in your system is exuberant ctags: +> + $ ctags --version +< + Is exuberant ctags present in one of the directories in your PATH? If not, + you need to set the Tlist_Ctags_Cmd variable to point to the location of + exuberant ctags. Use the following Vim command to verify that this is setup + correctly: +> + :echo system(Tlist_Ctags_Cmd . ' --version') +< + The above command should display the version information for exuberant + ctags. + + Did you turn on the Vim filetype detection? The taglist plugin relies on + the filetype detected by Vim and passes the filetype to the exuberant ctags + utility to parse the tags. Check the output of the following Vim command: +> + :filetype +< + The output of the above command should contain "filetype detection:ON". + To turn on the filetype detection, add the following line to the .vimrc or + _vimrc file: +> + filetype on +< + Is your version of Vim compiled with the support for the system() function? + The following Vim command should display 1: +> + :echo exists('*system') +< + In some Linux distributions (particularly Suse Linux), the default Vim + installation is built without the support for the system() function. The + taglist plugin uses the system() function to invoke the exuberant ctags + utility. You need to rebuild Vim after enabling the support for the + system() function. If you use the default build options, the system() + function will be supported. + + Do you have the |'shellslash'| option set? You can try disabling the + |'shellslash'| option. When the taglist plugin invokes the exuberant ctags + utility with the path to the file, if the incorrect slashes are used, then + you will see errors. + + Check the shell related Vim options values using the following command: +> + :set shell? shellcmdflag? shellpipe? + :set shellquote? shellredir? shellxquote? +< + If these options are set in your .vimrc or _vimrc file, try removing those + lines. + + Are you using a Unix shell in a MS-Windows environment? For example, + the Unix shell from the MKS-toolkit. Do you have the SHELL environment + set to point to this shell? You can try resetting the SHELL environment + variable. + + If you are using a Unix shell on MS-Windows, you should try to use + exuberant ctags that is compiled for Unix-like environments so that + exuberant ctags will understand path names with forward slash characters. + + Is your filetype supported by the exuberant ctags utility? The file types + supported by the exuberant ctags utility are listed in the ctags help. If a + file type is not supported, you have to extend exuberant ctags. You can use + the following command to list the filetypes supported by exuberant ctags: +> + ctags --list-languages +< + Run the following command from the shell prompt and check whether the tags + defined in your file are listed in the output from exuberant ctags: +> + ctags -f - --format=2 --excmd=pattern --fields=nks +< + If you see your tags in the output from the above command, then the + exuberant ctags utility is properly parsing your file. + + Do you have the .ctags or _ctags or the ctags.cnf file in your home + directory for specifying default options or for extending exuberant ctags? + If you do have this file, check the options in this file and make sure + these options are not interfering with the operation of the taglist plugin. + + If you are using MS-Windows, check the value of the TEMP and TMP + environment variables. If these environment variables are set to a path + with space characters in the name, then try using the DOS 8.3 short name + for the path or set them to a path without the space characters in the + name. For example, if the temporary directory name is "C:\Documents and + Settings\xyz\Local Settings\Temp", then try setting the TEMP variable to + the following: +> + set TEMP=C:\DOCUMEN~1\xyz\LOCALS~1\Temp +< + If exuberant ctags is installed in a directory with space characters in the + name, then try adding the directory to the PATH environment variable or try + setting the 'Tlist_Ctags_Cmd' variable to the shortest path name to ctags + or try copying the exuberant ctags to a path without space characters in + the name. For example, if exuberant ctags is installed in the directory + "C:\Program Files\Ctags", then try setting the 'Tlist_Ctags_Cmd' variable + as below: +> + let Tlist_Ctags_Cmd='C:\Progra~1\Ctags\ctags.exe' +< + If you are using a cygwin compiled version of exuberant ctags on MS-Windows, + make sure that either you have the cygwin compiled sort utility installed + and available in your PATH or compile exuberant ctags with internal sort + support. Otherwise, when exuberant ctags sorts the tags output by invoking + the sort utility, it may end up invoking the MS-Windows version of + sort.exe, thereby resulting in failure. + +Q. When I try to open the taglist window, I am seeing the following error + message. How do I fix this problem? + + Taglist: Failed to generate tags for /my/path/to/file + ctags: illegal option -- -^@usage: ctags [-BFadtuwvx] [-f tagsfile] file ... + +A. The taglist plugin will work only with the exuberant ctags tool. You + cannot use the GNU ctags or the Unix ctags program with the taglist plugin. + You will see an error message similar to the one shown above, if you try + use a non-exuberant ctags program with Vim. To fix this problem, either add + the exuberant ctags tool location to the PATH environment variable or set + the 'Tlist_Ctags_Cmd' variable. + +Q. A file has more than one tag with the same name. When I select a tag name + from the taglist window, the cursor is positioned at the incorrect tag + location. +A. The taglist plugin uses the search pattern generated by the exuberant ctags + utility to position the cursor at the location of a tag definition. If a + file has more than one tag with the same name and same prototype, then the + search pattern will be the same. In this case, when searching for the tag + pattern, the cursor may be positioned at the incorrect location. + +Q. I have made some modifications to my file and introduced new + functions/classes/variables. I have not yet saved my file. The taglist + plugin is not displaying the new tags when I update the taglist window. +A. The exuberant ctags utility will process only files that are present in the + disk. To list the tags defined in a file, you have to save the file and + then update the taglist window. + +Q. I have created a ctags file using the exuberant ctags utility for my source + tree. How do I configure the taglist plugin to use this tags file? +A. The taglist plugin doesn't use a tags file stored in disk. For every opened + file, the taglist plugin invokes the exuberant ctags utility to get the + list of tags dynamically. The Vim system() function is used to invoke + exuberant ctags and get the ctags output. This function internally uses a + temporary file to store the output. This file is deleted after the output + from the command is read. So you will never see the file that contains the + output of exuberant ctags. + +Q. When I set the |'updatetime'| option to a low value (less than 1000) and if + I keep pressing a key with the taglist window open, the current buffer + contents are changed. Why is this? +A. The taglist plugin uses the |CursorHold| autocmd to highlight the current + tag. The CursorHold autocmd triggers for every |'updatetime'| milliseconds. + If the |'updatetime'| option is set to a low value, then the CursorHold + autocmd will be triggered frequently. As the taglist plugin changes + the focus to the taglist window to highlight the current tag, this could + interfere with the key movement resulting in changing the contents of + the current buffer. The workaround for this problem is to not set the + |'updatetime'| option to a low value. + +============================================================================== + *taglist-license* +10. License~ +Permission is hereby granted to use and distribute the taglist plugin, with or +without modifications, provided that this copyright notice is copied with it. +Like anything else that's free, taglist.vim is provided *as is* and comes with +no warranty of any kind, either expressed or implied. In no event will the +copyright holder be liable for any damamges resulting from the use of this +software. + +============================================================================== + *taglist-todo* +11. Todo~ + +1. Group tags according to the scope and display them. For example, + group all the tags belonging to a C++/Java class +2. Support for displaying tags in a modified (not-yet-saved) file. +3. Automatically open the taglist window only for selected filetypes. + For other filetypes, close the taglist window. +4. When using the shell from the MKS toolkit, the taglist plugin + doesn't work. +5. The taglist plugin doesn't work with files edited remotely using the + netrw plugin. The exuberant ctags utility cannot process files over + scp/rcp/ftp, etc. + +============================================================================== + +vim:tw=78:ts=8:noet:ft=help: diff --git a/addons/taglist-plus/doc/tags b/addons/taglist-plus/doc/tags new file mode 100644 index 0000000..d032f28 --- /dev/null +++ b/addons/taglist-plus/doc/tags @@ -0,0 +1,62 @@ +'Tlist_Auto_Highlight_Tag' taglist-plus.txt /*'Tlist_Auto_Highlight_Tag'* +'Tlist_Auto_Open' taglist-plus.txt /*'Tlist_Auto_Open'* +'Tlist_Auto_Update' taglist-plus.txt /*'Tlist_Auto_Update'* +'Tlist_Close_On_Select' taglist-plus.txt /*'Tlist_Close_On_Select'* +'Tlist_Compact_Format' taglist-plus.txt /*'Tlist_Compact_Format'* +'Tlist_Ctags_Cmd' taglist-plus.txt /*'Tlist_Ctags_Cmd'* +'Tlist_Display_Prototype' taglist-plus.txt /*'Tlist_Display_Prototype'* +'Tlist_Display_Tag_Scope' taglist-plus.txt /*'Tlist_Display_Tag_Scope'* +'Tlist_Enable_Fold_Column' taglist-plus.txt /*'Tlist_Enable_Fold_Column'* +'Tlist_Exit_OnlyWindow' taglist-plus.txt /*'Tlist_Exit_OnlyWindow'* +'Tlist_File_Fold_Auto_Close' taglist-plus.txt /*'Tlist_File_Fold_Auto_Close'* +'Tlist_GainFocus_On_ToggleOpen' taglist-plus.txt /*'Tlist_GainFocus_On_ToggleOpen'* +'Tlist_Highlight_Tag_On_BufEnter' taglist-plus.txt /*'Tlist_Highlight_Tag_On_BufEnter'* +'Tlist_Inc_Winwidth' taglist-plus.txt /*'Tlist_Inc_Winwidth'* +'Tlist_Max_Submenu_Items' taglist-plus.txt /*'Tlist_Max_Submenu_Items'* +'Tlist_Max_Tag_Length' taglist-plus.txt /*'Tlist_Max_Tag_Length'* +'Tlist_Process_File_Always' taglist-plus.txt /*'Tlist_Process_File_Always'* +'Tlist_Show_Menu' taglist-plus.txt /*'Tlist_Show_Menu'* +'Tlist_Show_One_File' taglist-plus.txt /*'Tlist_Show_One_File'* +'Tlist_Sort_Type' taglist-plus.txt /*'Tlist_Sort_Type'* +'Tlist_Use_Horiz_Window' taglist-plus.txt /*'Tlist_Use_Horiz_Window'* +'Tlist_Use_Right_Window' taglist-plus.txt /*'Tlist_Use_Right_Window'* +'Tlist_Use_SingleClick' taglist-plus.txt /*'Tlist_Use_SingleClick'* +'Tlist_WinHeight' taglist-plus.txt /*'Tlist_WinHeight'* +'Tlist_WinWidth' taglist-plus.txt /*'Tlist_WinWidth'* +'Tlist_javascript_Hide_Extras' taglist-plus.txt /*'Tlist_javascript_Hide_Extras'* +:TlistAddFiles taglist-plus.txt /*:TlistAddFiles* +:TlistAddFilesRecursive taglist-plus.txt /*:TlistAddFilesRecursive* +:TlistClose taglist-plus.txt /*:TlistClose* +:TlistDebug taglist-plus.txt /*:TlistDebug* +:TlistHighlightTag taglist-plus.txt /*:TlistHighlightTag* +:TlistLock taglist-plus.txt /*:TlistLock* +:TlistMessages taglist-plus.txt /*:TlistMessages* +:TlistOpen taglist-plus.txt /*:TlistOpen* +:TlistSessionLoad taglist-plus.txt /*:TlistSessionLoad* +:TlistSessionSave taglist-plus.txt /*:TlistSessionSave* +:TlistShowPrototype taglist-plus.txt /*:TlistShowPrototype* +:TlistShowTag taglist-plus.txt /*:TlistShowTag* +:TlistToggle taglist-plus.txt /*:TlistToggle* +:TlistUndebug taglist-plus.txt /*:TlistUndebug* +:TlistUnlock taglist-plus.txt /*:TlistUnlock* +:TlistUpdate taglist-plus.txt /*:TlistUpdate* +Tlist_Get_Tag_Prototype_By_Line() taglist-plus.txt /*Tlist_Get_Tag_Prototype_By_Line()* +Tlist_Get_Tagname_By_Line() taglist-plus.txt /*Tlist_Get_Tagname_By_Line()* +Tlist_Set_App() taglist-plus.txt /*Tlist_Set_App()* +Tlist_Update_File_Tags() taglist-plus.txt /*Tlist_Update_File_Tags()* +taglist-commands taglist-plus.txt /*taglist-commands* +taglist-debug taglist-plus.txt /*taglist-debug* +taglist-extend taglist-plus.txt /*taglist-extend* +taglist-faq taglist-plus.txt /*taglist-faq* +taglist-functions taglist-plus.txt /*taglist-functions* +taglist-install taglist-plus.txt /*taglist-install* +taglist-intro taglist-plus.txt /*taglist-intro* +taglist-keys taglist-plus.txt /*taglist-keys* +taglist-license taglist-plus.txt /*taglist-license* +taglist-menu taglist-plus.txt /*taglist-menu* +taglist-options taglist-plus.txt /*taglist-options* +taglist-plus.txt taglist-plus.txt /*taglist-plus.txt* +taglist-requirements taglist-plus.txt /*taglist-requirements* +taglist-session taglist-plus.txt /*taglist-session* +taglist-todo taglist-plus.txt /*taglist-todo* +taglist-using taglist-plus.txt /*taglist-using* diff --git a/addons/taglist-plus/plugin/taglist-plus.vim b/addons/taglist-plus/plugin/taglist-plus.vim new file mode 100644 index 0000000..98f02a2 --- /dev/null +++ b/addons/taglist-plus/plugin/taglist-plus.vim @@ -0,0 +1,4620 @@ +" File: taglist-plus.vim +" Authors: Jezreel Ng (jezreel AT gmail DOT com) +" Yegappan Lakshmanan (yegappan AT yahoo DOT com) +" Version: 1.0 + "Last Modified: March 16, 2011 + "Copyright: Copyright (C) 2011 Jezeel Ng +" Copyright (C) 2002-2007 Yegappan Lakshmanan +" Permission is hereby granted to use and distribute this code, +" with or without modifications, provided that this copyright +" notice is copied with it. Like anything else that's free, +" taglist.vim is provided *as is* and comes with no warranty of any +" kind, either expressed or implied. In no event will the copyright +" holder be liable for any damamges resulting from the use of this +" software. +" +" For more information about using this plugin, after installing the +" taglist plugin, use the ":help taglist" command. +" +" Installation +" ------------ +" 1. Download the taglist.zip file and unzip the files to the $HOME/.vim +" or the $HOME/vimfiles or the $VIM/vimfiles directory. This should +" unzip the following two files (the directory structure should be +" preserved): +" +" plugin/taglist-plus.vim - main taglist plugin file +" doc/taglist-plus.txt - documentation (help) file +" +" Refer to the 'add-plugin', 'add-global-plugin' and 'runtimepath' +" Vim help pages for more details about installing Vim plugins. +" 2. Change to the $HOME/.vim/doc or $HOME/vimfiles/doc or +" $VIM/vimfiles/doc directory, start Vim and run the ":helptags ." +" command to process the taglist help file. +" 3. If the exuberant ctags utility is not present in your PATH, then set the +" Tlist_Ctags_Cmd variable to point to the location of the exuberant ctags +" utility (not to the directory) in the .vimrc file. +" 4. If you are running a terminal/console version of Vim and the +" terminal doesn't support changing the window width then set the +" 'Tlist_Inc_Winwidth' variable to 0 in the .vimrc file. +" 5. Restart Vim. +" 6. You can now use the ":TlistToggle" command to open/close the taglist +" window. You can use the ":help taglist" command to get more +" information about using the taglist plugin. +" +" ****************** Do not modify after this line ************************ + +" Line continuation used here +let s:cpo_save = &cpo +set cpo&vim + +if !exists('loaded_taglist') + " First time loading the taglist plugin + " + " To speed up the loading of Vim, the taglist plugin uses autoload + " mechanism to load the taglist functions. + " Only define the configuration variables, user commands and some + " auto-commands and finish sourcing the file + + " The taglist plugin requires the built-in Vim system() function. If this + " function is not available, then don't load the plugin. + if !exists('*system') + echomsg 'Taglist: Vim system() built-in function is not available. ' . + \ 'Plugin is not loaded.' + let loaded_taglist = 'no' + let &cpo = s:cpo_save + finish + endif + + " Location of the exuberant ctags tool + if !exists('Tlist_Ctags_Cmd') + if executable('exuberant-ctags') + " On Debian Linux, exuberant ctags is installed + " as exuberant-ctags + let Tlist_Ctags_Cmd = 'exuberant-ctags' + elseif executable('exctags') + " On Free-BSD, exuberant ctags is installed as exctags + let Tlist_Ctags_Cmd = 'exctags' + elseif executable('ctags') + let Tlist_Ctags_Cmd = 'ctags' + elseif executable('ctags.exe') + let Tlist_Ctags_Cmd = 'ctags.exe' + elseif executable('tags') + let Tlist_Ctags_Cmd = 'tags' + else + echomsg 'Taglist: Exuberant ctags (http://ctags.sf.net) ' . + \ 'not found in PATH. Plugin is not loaded.' + " Skip loading the plugin + let loaded_taglist = 'no' + let &cpo = s:cpo_save + finish + endif + endif + + + " Automatically open the taglist window on Vim startup + if !exists('Tlist_Auto_Open') + let Tlist_Auto_Open = 0 + endif + + " When the taglist window is toggle opened, move the cursor to the + " taglist window + if !exists('Tlist_GainFocus_On_ToggleOpen') + let Tlist_GainFocus_On_ToggleOpen = 0 + endif + + " Process files even when the taglist window is not open + if !exists('Tlist_Process_File_Always') + let Tlist_Process_File_Always = 0 + endif + + if !exists('Tlist_Show_Menu') + let Tlist_Show_Menu = 0 + endif + + " Tag listing sort type - 'name' or 'order' + if !exists('Tlist_Sort_Type') + let Tlist_Sort_Type = 'order' + endif + + " Tag listing window split (horizontal/vertical) control + if !exists('Tlist_Use_Horiz_Window') + let Tlist_Use_Horiz_Window = 0 + endif + + " Open the vertically split taglist window on the left or on the right + " side. This setting is relevant only if Tlist_Use_Horiz_Window is set to + " zero (i.e. only for vertically split windows) + if !exists('Tlist_Use_Right_Window') + let Tlist_Use_Right_Window = 0 + endif + + " Increase Vim window width to display vertically split taglist window. + " For MS-Windows version of Vim running in a MS-DOS window, this must be + " set to 0 otherwise the system may hang due to a Vim limitation. + if !exists('Tlist_Inc_Winwidth') + if (has('win16') || has('win95')) && !has('gui_running') + let Tlist_Inc_Winwidth = 0 + else + let Tlist_Inc_Winwidth = 1 + endif + endif + + " Vertically split taglist window width setting + if !exists('Tlist_WinWidth') + let Tlist_WinWidth = 30 + let s:auto_width = 0 + elseif Tlist_WinWidth == 'auto' + let Tlist_WinWidth = 30 + let s:auto_width = 1 + endif + + " Horizontally split taglist window height setting + if !exists('Tlist_WinHeight') + let Tlist_WinHeight = 10 + endif + + " Display tag prototypes or tag names in the taglist window + if !exists('Tlist_Display_Prototype') + let Tlist_Display_Prototype = 0 + endif + + " Display tag scopes in the taglist window + if !exists('Tlist_Display_Tag_Scope') + let Tlist_Display_Tag_Scope = 1 + endif + + " Use single left mouse click to jump to a tag. By default this is disabled. + " Only double click using the mouse will be processed. + if !exists('Tlist_Use_SingleClick') + let Tlist_Use_SingleClick = 0 + endif + + " Control whether additional help is displayed as part of the taglist or + " not. Also, controls whether empty lines are used to separate the tag + " tree. + if !exists('Tlist_Compact_Format') + let Tlist_Compact_Format = 0 + endif + + " Exit Vim if only the taglist window is currently open. By default, this is + " set to zero. + if !exists('Tlist_Exit_OnlyWindow') + let Tlist_Exit_OnlyWindow = 0 + endif + + " Automatically close the folds for the non-active files in the taglist + " window + if !exists('Tlist_File_Fold_Auto_Close') + let Tlist_File_Fold_Auto_Close = 0 + endif + + " Close the taglist window when a tag is selected + if !exists('Tlist_Close_On_Select') + let Tlist_Close_On_Select = 0 + endif + + " Automatically update the taglist window to display tags for newly + " edited files + if !exists('Tlist_Auto_Update') + let Tlist_Auto_Update = 1 + endif + + " Automatically highlight the current tag + if !exists('Tlist_Auto_Highlight_Tag') + let Tlist_Auto_Highlight_Tag = 1 + endif + + " Automatically highlight the current tag on entering a buffer + if !exists('Tlist_Highlight_Tag_On_BufEnter') + let Tlist_Highlight_Tag_On_BufEnter = 1 + endif + + " Enable fold column to display the folding for the tag tree + if !exists('Tlist_Enable_Fold_Column') + let Tlist_Enable_Fold_Column = 1 + endif + + " Display the tags for only one file in the taglist window + if !exists('Tlist_Show_One_File') + let Tlist_Show_One_File = 0 + endif + + if !exists('Tlist_Max_Submenu_Items') + let Tlist_Max_Submenu_Items = 20 + endif + + if !exists('Tlist_Max_Tag_Length') + let Tlist_Max_Tag_Length = 10 + endif + + " Do not change the name of the taglist title variable. The winmanager + " plugin relies on this name to determine the title for the taglist + " plugin. + let TagList_title = "__Tag_List__" + + " Taglist debug messages + let s:tlist_msg = '' + + " Define the taglist autocommand to automatically open the taglist window + " on Vim startup + if g:Tlist_Auto_Open + autocmd VimEnter * nested call s:Tlist_Window_Check_Auto_Open() + endif + + " Refresh the taglist + if g:Tlist_Process_File_Always + autocmd BufEnter * call s:Tlist_Refresh() + endif + + if g:Tlist_Show_Menu + autocmd GUIEnter * call s:Tlist_Menu_Init() + endif + + " When the taglist buffer is created when loading a Vim session file, + " the taglist buffer needs to be initialized. The BufFilePost event + " is used to handle this case. + autocmd BufFilePost __Tag_List__ call s:Tlist_Vim_Session_Load() + + " Define the user commands to manage the taglist window + command! -nargs=0 -bar TlistToggle call s:Tlist_Window_Toggle() + command! -nargs=0 -bar TlistOpen call s:Tlist_Window_Open() + " For backwards compatiblity define the Tlist command + command! -nargs=0 -bar Tlist TlistToggle + command! -nargs=+ -complete=file TlistAddFiles + \ call s:Tlist_Add_Files() + command! -nargs=+ -complete=dir TlistAddFilesRecursive + \ call s:Tlist_Add_Files_Recursive() + command! -nargs=0 -bar TlistClose call s:Tlist_Window_Close() + command! -nargs=0 -bar TlistUpdate call s:Tlist_Update_Current_File() + command! -nargs=0 -bar TlistHighlightTag call s:Tlist_Window_Highlight_Tag( + \ fnamemodify(bufname('%'), ':p'), line('.'), 2, 1) + " For backwards compatiblity define the TlistSync command + command! -nargs=0 -bar TlistSync TlistHighlightTag + command! -nargs=* -complete=buffer TlistShowPrototype + \ echo Tlist_Get_Tag_Prototype_By_Line() + command! -nargs=* -complete=buffer TlistShowTag + \ echo Tlist_Get_Tagname_By_Line() + command! -nargs=* -complete=file TlistSessionLoad + \ call s:Tlist_Session_Load() + command! -nargs=* -complete=file TlistSessionSave + \ call s:Tlist_Session_Save() + command! -bar TlistLock let Tlist_Auto_Update=0 + command! -bar TlistUnlock let Tlist_Auto_Update=1 + + " Commands for enabling/disabling debug and to display debug messages + command! -nargs=? -complete=file -bar TlistDebug + \ call s:Tlist_Debug_Enable() + command! -nargs=0 -bar TlistUndebug call s:Tlist_Debug_Disable() + command! -nargs=0 -bar TlistMessages call s:Tlist_Debug_Show() + + " Define autocommands to autoload the taglist plugin when needed. + + " Trick to get the current script ID + map xx xx + let s:tlist_sid = substitute(maparg('xx'), '\(\d\+_\)xx$', + \ '\1', '') + unmap xx + + exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_* source ' . + \ escape(expand(''), ' ') + exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_Window_* source ' . + \ escape(expand(''), ' ') + exe 'autocmd FuncUndefined *' . s:tlist_sid . 'Tlist_Menu_* source ' . + \ escape(expand(''), ' ') + exe 'autocmd FuncUndefined Tlist_* source ' . + \ escape(expand(''), ' ') + exe 'autocmd FuncUndefined TagList_* source ' . + \ escape(expand(''), ' ') + + let loaded_taglist = 'fast_load_done' + + if g:Tlist_Show_Menu && has('gui_running') + call s:Tlist_Menu_Init() + endif + + " restore 'cpo' + let &cpo = s:cpo_save + finish +endif + +if !exists('s:tlist_sid') + " Two or more versions of taglist plugin are installed. Don't + " load this version of the plugin. + finish +endif + +unlet! s:tlist_sid + +if loaded_taglist != 'fast_load_done' + " restore 'cpo' + let &cpo = s:cpo_save + finish +endif + +" Taglist plugin functionality is available +let loaded_taglist = 'available' + +"------------------- end of user configurable options -------------------- + +" Default language specific settings for supported file types and tag types +" +" Variable name format: +" +" s:tlist_def_{vim_ftype}_settings +" +" vim_ftype - Filetype detected by Vim +" +" Value format: +" +" ;:;:;... +" +" ctags_ftype - File type supported by exuberant ctags +" flag - Flag supported by exuberant ctags to generate a tag type +" name - Name of the tag type used in the taglist window to display the +" tags of this type +" + +" assembly language +let s:tlist_def_asm_settings = 'asm;d:define;l:label;m:macro;t:type' + +" aspperl language +let s:tlist_def_aspperl_settings = 'asp;f:function;s:sub;v:variable' + +" aspvbs language +let s:tlist_def_aspvbs_settings = 'asp;f:function;s:sub;v:variable' + +" awk language +let s:tlist_def_awk_settings = 'awk;f:function' + +" beta language +let s:tlist_def_beta_settings = 'beta;f:fragment;s:slot;v:pattern' + +" c language +let s:tlist_def_c_settings = 'c;d:macro;g:enum;s:struct;u:union;t:typedef;' . + \ 'v:variable;f:function' + +" c++ language +let s:tlist_def_cpp_settings = 'c++;n:namespace;v:variable;d:macro;t:typedef;' . + \ 'c:class;g:enum;s:struct;u:union;f:function' + +" c# language +let s:tlist_def_cs_settings = 'c#;d:macro;t:typedef;n:namespace;c:class;' . + \ 'E:event;g:enum;s:struct;i:interface;' . + \ 'p:properties;m:method' + +" cobol language +let s:tlist_def_cobol_settings = 'cobol;d:data;f:file;g:group;p:paragraph;' . + \ 'P:program;s:section' + +" eiffel language +let s:tlist_def_eiffel_settings = 'eiffel;c:class;f:feature' + +" erlang language +let s:tlist_def_erlang_settings = 'erlang;d:macro;r:record;m:module;f:function' + +" expect (same as tcl) language +let s:tlist_def_expect_settings = 'tcl;c:class;f:method;p:procedure' + +" fortran language +let s:tlist_def_fortran_settings = 'fortran;p:program;b:block data;' . + \ 'c:common;e:entry;i:interface;k:type;l:label;m:module;' . + \ 'n:namelist;t:derived;v:variable;f:function;s:subroutine' + +" HTML language +let s:tlist_def_html_settings = 'html;a:anchor;f:javascript function' + +" java language +let s:tlist_def_java_settings = 'java;p:package;c:class;i:interface;' . + \ 'f:field;m:method' + +" javascript language +let s:tlist_def_javascript_settings = 'javascript;f:function;v:variable' +if !exists('Tlist_javascript_Ctags_Cmd') && executable('jsctags') + let Tlist_javascript_Ctags_Cmd = 'jsctags' +endif +let Tlist_javascript_Ctags_Allowed_Flags = ['-f', '--sort'] + +" lisp language +let s:tlist_def_lisp_settings = 'lisp;f:function' + +" lua language +let s:tlist_def_lua_settings = 'lua;f:function' + +" makefiles +let s:tlist_def_make_settings = 'make;m:macro' + +" pascal language +let s:tlist_def_pascal_settings = 'pascal;f:function;p:procedure' + +" perl language +let s:tlist_def_perl_settings = 'perl;c:constant;l:label;p:package;s:subroutine' + +" php language +let s:tlist_def_php_settings = 'php;c:class;d:constant;v:variable;f:function' + +" python language +let s:tlist_def_python_settings = 'python;c:class;m:member;f:function' + +" rexx language +let s:tlist_def_rexx_settings = 'rexx;s:subroutine' + +" ruby language +let s:tlist_def_ruby_settings = 'ruby;c:class;f:method;F:function;' . + \ 'm:singleton method' + +" scheme language +let s:tlist_def_scheme_settings = 'scheme;s:set;f:function' + +" shell language +let s:tlist_def_sh_settings = 'sh;f:function' + +" C shell language +let s:tlist_def_csh_settings = 'sh;f:function' + +" Z shell language +let s:tlist_def_zsh_settings = 'sh;f:function' + +" slang language +let s:tlist_def_slang_settings = 'slang;n:namespace;f:function' + +" sml language +let s:tlist_def_sml_settings = 'sml;e:exception;c:functor;s:signature;' . + \ 'r:structure;t:type;v:value;f:function' + +" sql language +let s:tlist_def_sql_settings = 'sql;c:cursor;F:field;P:package;r:record;' . + \ 's:subtype;t:table;T:trigger;v:variable;f:function;p:procedure' + +" tcl language +let s:tlist_def_tcl_settings = 'tcl;c:class;f:method;m:method;p:procedure' + +" vera language +let s:tlist_def_vera_settings = 'vera;c:class;d:macro;e:enumerator;' . + \ 'f:function;g:enum;m:member;p:program;' . + \ 'P:prototype;t:task;T:typedef;v:variable;' . + \ 'x:externvar' + +"verilog language +let s:tlist_def_verilog_settings = 'verilog;m:module;c:constant;P:parameter;' . + \ 'e:event;r:register;t:task;w:write;p:port;v:variable;f:function' + +" vim language +let s:tlist_def_vim_settings = 'vim;a:autocmds;v:variable;f:function' + +" yacc language +let s:tlist_def_yacc_settings = 'yacc;l:label' + +"------------------- end of language specific options -------------------- + +" Vim window size is changed by the taglist plugin or not +let s:tlist_winsize_chgd = -1 +" Taglist window is maximized or not +let s:tlist_win_maximized = 0 +" Name of files in the taglist +let s:tlist_file_names='' +" Number of files in the taglist +let s:tlist_file_count = 0 +" Number of filetypes supported by taglist +let s:tlist_ftype_count = 0 +" Is taglist part of other plugins like winmanager or cream? +let s:tlist_app_name = "none" +" Are we displaying brief help text +let s:tlist_brief_help = 1 +" List of files removed on user request +let s:tlist_removed_flist = "" +" Index of current file displayed in the taglist window +let s:tlist_cur_file_idx = -1 +" Taglist menu is empty or not +let s:tlist_menu_empty = 1 + +" An autocommand is used to refresh the taglist window when entering any +" buffer. We don't want to refresh the taglist window if we are entering the +" file window from one of the taglist functions. The 'Tlist_Skip_Refresh' +" variable is used to skip the refresh of the taglist window and is set +" and cleared appropriately. +let s:Tlist_Skip_Refresh = 0 + +" Tlist_Window_Display_Help() +function! s:Tlist_Window_Display_Help() + if s:tlist_app_name == "winmanager" + " To handle a bug in the winmanager plugin, add a space at the + " last line + call setline('$', ' ') + endif + + if s:tlist_brief_help + " Add the brief help + call append(0, '" Press to display help text') + else + " Add the extensive help + call append(0, '" : Jump to tag definition') + call append(1, '" o : Jump to tag definition in new window') + call append(2, '" p : Preview the tag definition') + call append(3, '" : Display tag prototype') + call append(4, '" u : Update tag list') + call append(5, '" s : Select sort field') + call append(6, '" d : Remove file from taglist') + call append(7, '" x : Zoom-out/Zoom-in taglist window') + call append(8, '" m : Toggle display of more tag info') + call append(9, '" + : Open a fold') + call append(10, '" - : Close a fold') + call append(11, '" * : Open all folds') + call append(12, '" = : Close all folds') + call append(13, '" [[ : Move to the start of previous file') + call append(14, '" ]] : Move to the start of next file') + call append(15, '" q : Close the taglist window') + call append(16, '" : Remove help text') + endif +endfunction + +" Tlist_Window_Toggle_Help_Text() +" Toggle taglist plugin help text between the full version and the brief +" version +function! s:Tlist_Window_Toggle_Help_Text() + if g:Tlist_Compact_Format + " In compact display mode, do not display help + return + endif + + " Include the empty line displayed after the help text + let brief_help_size = 1 + let full_help_size = 16 + + setlocal modifiable + + " Set report option to a huge value to prevent informational messages + " while deleting the lines + let old_report = &report + set report=99999 + + " Remove the currently highlighted tag. Otherwise, the help text + " might be highlighted by mistake + match none + + " Toggle between brief and full help text + if s:tlist_brief_help + let s:tlist_brief_help = 0 + + " Remove the previous help + exe '1,' . brief_help_size . ' delete _' + + " Adjust the start/end line numbers for the files + call s:Tlist_Window_Update_Line_Offsets(0, 1, full_help_size - brief_help_size) + else + let s:tlist_brief_help = 1 + + " Remove the previous help + exe '1,' . full_help_size . ' delete _' + + " Adjust the start/end line numbers for the files + call s:Tlist_Window_Update_Line_Offsets(0, 0, full_help_size - brief_help_size) + endif + + call s:Tlist_Window_Display_Help() + + " Restore the report option + let &report = old_report + + setlocal nomodifiable +endfunction + +" Taglist debug support +let s:tlist_debug = 0 + +" File for storing the debug messages +let s:tlist_debug_file = '' + +" Tlist_Debug_Enable +" Enable logging of taglist debug messages. +function! s:Tlist_Debug_Enable(...) + let s:tlist_debug = 1 + + " Check whether a valid file name is supplied. + if a:1 != '' + let s:tlist_debug_file = fnamemodify(a:1, ':p') + + " Empty the log file + exe 'redir! > ' . s:tlist_debug_file + redir END + + " Check whether the log file is present/created + if !filewritable(s:tlist_debug_file) + call s:Tlist_Warning_Msg('Taglist: Unable to create log file ' + \ . s:tlist_debug_file) + let s:tlist_debug_file = '' + endif + endif +endfunction + +" Tlist_Debug_Disable +" Disable logging of taglist debug messages. +function! s:Tlist_Debug_Disable(...) + let s:tlist_debug = 0 + let s:tlist_debug_file = '' +endfunction + +" Tlist_Debug_Show +" Display the taglist debug messages in a new window +function! s:Tlist_Debug_Show() + if s:tlist_msg == '' + call s:Tlist_Warning_Msg('Taglist: No debug messages') + return + endif + + " Open a new window to display the taglist debug messages + new taglist_debug.txt + " Delete all the lines (if the buffer already exists) + silent! %delete _ + " Add the messages + silent! put =s:tlist_msg + " Move the cursor to the first line + normal! gg +endfunction + +" Tlist_Log_Msg +" Log the supplied debug message along with the time +function! s:Tlist_Log_Msg(msg) + if s:tlist_debug + if s:tlist_debug_file != '' + exe 'redir >> ' . s:tlist_debug_file + silent echon strftime('%H:%M:%S') . ': ' . a:msg . "\n" + redir END + else + " Log the message into a variable + " Retain only the last 3000 characters + let len = strlen(s:tlist_msg) + if len > 3000 + let s:tlist_msg = strpart(s:tlist_msg, len - 3000) + endif + let s:tlist_msg = s:tlist_msg . strftime('%H:%M:%S') . ': ' . + \ a:msg . "\n" + endif + endif +endfunction + +" Tlist_Warning_Msg() +" Display a message using WarningMsg highlight group +function! s:Tlist_Warning_Msg(msg) + echohl WarningMsg + echomsg a:msg + echohl None +endfunction + +" Last returned file index for file name lookup. +" Used to speed up file lookup +let s:tlist_file_name_idx_cache = -1 + +" Tlist_Get_File_Index() +" Return the index of the specified filename +function! s:Tlist_Get_File_Index(fname) + if s:tlist_file_count == 0 || a:fname == '' + return -1 + endif + + " If the new filename is same as the last accessed filename, then + " return that index + if s:tlist_file_name_idx_cache != -1 && + \ s:tlist_file_name_idx_cache < s:tlist_file_count + if s:tlist_{s:tlist_file_name_idx_cache}_filename == a:fname + " Same as the last accessed file + return s:tlist_file_name_idx_cache + endif + endif + + " First, check whether the filename is present + let s_fname = a:fname . "\n" + let i = stridx(s:tlist_file_names, s_fname) + if i == -1 + let s:tlist_file_name_idx_cache = -1 + return -1 + endif + + " Second, compute the file name index + let nl_txt = substitute(strpart(s:tlist_file_names, 0, i), "[^\n]", '', 'g') + let s:tlist_file_name_idx_cache = strlen(nl_txt) + return s:tlist_file_name_idx_cache +endfunction + +" Last returned file index for line number lookup. +" Used to speed up file lookup +let s:tlist_file_lnum_idx_cache = -1 + +" Tlist_Window_Get_File_Index_By_Linenum() +" Return the index of the filename present in the specified line number +" Line number refers to the line number in the taglist window +function! s:Tlist_Window_Get_File_Index_By_Linenum(lnum) + call s:Tlist_Log_Msg('Tlist_Window_Get_File_Index_By_Linenum (' . a:lnum . ')') + + " First try to see whether the new line number is within the range + " of the last returned file + if s:tlist_file_lnum_idx_cache != -1 && + \ s:tlist_file_lnum_idx_cache < s:tlist_file_count + if a:lnum >= s:tlist_{s:tlist_file_lnum_idx_cache}_start && + \ a:lnum <= s:tlist_{s:tlist_file_lnum_idx_cache}_end + return s:tlist_file_lnum_idx_cache + endif + endif + + let fidx = -1 + + if g:Tlist_Show_One_File + " Displaying only one file in the taglist window. Check whether + " the line is within the tags displayed for that file + if s:tlist_cur_file_idx != -1 + if a:lnum >= s:tlist_{s:tlist_cur_file_idx}_start + \ && a:lnum <= s:tlist_{s:tlist_cur_file_idx}_end + let fidx = s:tlist_cur_file_idx + endif + + endif + else + " Do a binary search in the taglist + let left = 0 + let right = s:tlist_file_count - 1 + + while left < right + let mid = (left + right) / 2 + + if a:lnum >= s:tlist_{mid}_start && a:lnum <= s:tlist_{mid}_end + let s:tlist_file_lnum_idx_cache = mid + return mid + endif + + if a:lnum < s:tlist_{mid}_start + let right = mid - 1 + else + let left = mid + 1 + endif + endwhile + + if left >= 0 && left < s:tlist_file_count + \ && a:lnum >= s:tlist_{left}_start + \ && a:lnum <= s:tlist_{left}_end + let fidx = left + endif + endif + + let s:tlist_file_lnum_idx_cache = fidx + + return fidx +endfunction + +" Tlist_Exe_Cmd_No_Acmds +" Execute the specified Ex command after disabling autocommands +function! s:Tlist_Exe_Cmd_No_Acmds(cmd) + let old_eventignore = &eventignore + set eventignore=all + exe a:cmd + let &eventignore = old_eventignore +endfunction + +" Tlist_Skip_File() +" Check whether tag listing is supported for the specified file +function! s:Tlist_Skip_File(filename, ftype) + " Skip buffers with no names and buffers with filetype not set + if a:filename == '' || a:ftype == '' + return 1 + endif + + " Skip files which are not supported by exuberant ctags + " First check whether default settings for this filetype are available. + " If it is not available, then check whether user specified settings are + " available. If both are not available, then don't list the tags for this + " filetype + let var = 's:tlist_def_' . a:ftype . '_settings' + if !exists(var) + let var = 'g:tlist_' . a:ftype . '_settings' + if !exists(var) + return 1 + endif + endif + + " Skip files which are not readable or files which are not yet stored + " to the disk + if !filereadable(a:filename) + return 1 + endif + + return 0 +endfunction + +" Tlist_User_Removed_File +" Returns 1 if a file is removed by a user from the taglist +function! s:Tlist_User_Removed_File(filename) + return stridx(s:tlist_removed_flist, a:filename . "\n") != -1 +endfunction + +" Tlist_Update_Remove_List +" Update the list of user removed files from the taglist +" add == 1, add the file to the removed list +" add == 0, delete the file from the removed list +function! s:Tlist_Update_Remove_List(filename, add) + if a:add + let s:tlist_removed_flist = s:tlist_removed_flist . a:filename . "\n" + else + let idx = stridx(s:tlist_removed_flist, a:filename . "\n") + let text_before = strpart(s:tlist_removed_flist, 0, idx) + let rem_text = strpart(s:tlist_removed_flist, idx) + let next_idx = stridx(rem_text, "\n") + let text_after = strpart(rem_text, next_idx + 1) + + let s:tlist_removed_flist = text_before . text_after + endif +endfunction + +" Tlist_FileType_Init +" Initialize the ctags arguments and tag variable for the specified +" file type +function! s:Tlist_FileType_Init(ftype) + call s:Tlist_Log_Msg('Tlist_FileType_Init (' . a:ftype . ')') + " If the user didn't specify any settings, then use the default + " ctags args. Otherwise, use the settings specified by the user + let var = 'g:tlist_' . a:ftype . '_settings' + if exists(var) + " User specified ctags arguments + let settings = {var} . ';' + else + " Default ctags arguments + let var = 's:tlist_def_' . a:ftype . '_settings' + if !exists(var) + " No default settings for this file type. This filetype is + " not supported + return 0 + endif + let settings = s:tlist_def_{a:ftype}_settings . ';' + endif + + let msg = 'Taglist: Invalid ctags option setting - ' . settings + + " Format of the option that specifies the filetype and ctags arugments: + " + " ;flag1:name1;flag2:name2;flag3:name3 + " + + " Extract the file type to pass to ctags. This may be different from the + " file type detected by Vim + let pos = stridx(settings, ';') + if pos == -1 + call s:Tlist_Warning_Msg(msg) + return 0 + endif + let ctags_ftype = strpart(settings, 0, pos) + if ctags_ftype == '' + call s:Tlist_Warning_Msg(msg) + return 0 + endif + " Make sure a valid filetype is supplied. If the user didn't specify a + " valid filetype, then the ctags option settings may be treated as the + " filetype + if ctags_ftype =~ ':' + call s:Tlist_Warning_Msg(msg) + return 0 + endif + + " Remove the file type from settings + let settings = strpart(settings, pos + 1) + if settings == '' + call s:Tlist_Warning_Msg(msg) + return 0 + endif + + " Process all the specified ctags flags. The format is + " flag1:name1;flag2:name2;flag3:name3 + let ctags_flags = '' + let cnt = 0 + while settings != '' + " Extract the flag + let pos = stridx(settings, ':') + if pos == -1 + call s:Tlist_Warning_Msg(msg) + return 0 + endif + let flag = strpart(settings, 0, pos) + if flag == '' + call s:Tlist_Warning_Msg(msg) + return 0 + endif + " Remove the flag from settings + let settings = strpart(settings, pos + 1) + + " Extract the tag type name + let pos = stridx(settings, ';') + if pos == -1 + call s:Tlist_Warning_Msg(msg) + return 0 + endif + let name = strpart(settings, 0, pos) + if name == '' + call s:Tlist_Warning_Msg(msg) + return 0 + endif + let settings = strpart(settings, pos + 1) + + let cnt = cnt + 1 + + let s:tlist_{a:ftype}_{cnt}_name = flag + let s:tlist_{a:ftype}_{cnt}_fullname = name + let ctags_flags = ctags_flags . flag + endwhile + + let s:tlist_{a:ftype}_ctags_args = { '--language-force=': ctags_ftype, + \ '--'.ctags_ftype.'-types=': ctags_flags } + let s:tlist_{a:ftype}_count = cnt + let s:tlist_{a:ftype}_ctags_flags = ctags_flags + + " Save the filetype name + let s:tlist_ftype_{s:tlist_ftype_count}_name = a:ftype + let s:tlist_ftype_count = s:tlist_ftype_count + 1 + + return 1 +endfunction + +" Tlist_Detect_Filetype +" Determine the filetype for the specified file using the filetypedetect +" autocmd. +function! s:Tlist_Detect_Filetype(fname) + " Ignore the filetype autocommands + let old_eventignore = &eventignore + set eventignore=FileType + + " Save the 'filetype', as this will be changed temporarily + let old_filetype = &filetype + + " Run the filetypedetect group of autocommands to determine + " the filetype + exe 'doautocmd filetypedetect BufRead ' . a:fname + + " Save the detected filetype + let ftype = &filetype + + " Restore the previous state + let &filetype = old_filetype + let &eventignore = old_eventignore + + return ftype +endfunction + +" Tlist_Get_Buffer_Filetype +" Get the filetype for the specified buffer +function! s:Tlist_Get_Buffer_Filetype(bnum) + let buf_ft = getbufvar(a:bnum, '&filetype') + + if bufloaded(a:bnum) + " For loaded buffers, the 'filetype' is already determined + return buf_ft + endif + + " For unloaded buffers, if the 'filetype' option is set, return it + if buf_ft != '' + return buf_ft + endif + + " Skip non-existent buffers + if !bufexists(a:bnum) + return '' + endif + + " For buffers whose filetype is not yet determined, try to determine + " the filetype + let bname = bufname(a:bnum) + + return s:Tlist_Detect_Filetype(bname) +endfunction + +" Tlist_Discard_TagInfo +" Discard the stored tag information for a file +function! s:Tlist_Discard_TagInfo(fidx) + call s:Tlist_Log_Msg('Tlist_Discard_TagInfo (' . + \ s:tlist_{a:fidx}_filename . ')') + let ftype = s:tlist_{a:fidx}_filetype + + " Discard information about the tags defined in the file + let i = 1 + while i <= s:tlist_{a:fidx}_tag_count + let fidx_i = 's:tlist_' . a:fidx . '_' . i + unlet! {fidx_i}_tag + unlet! {fidx_i}_tag_name + unlet! {fidx_i}_tag_type + unlet! {fidx_i}_ttype_idx + unlet! {fidx_i}_tag_proto + unlet! {fidx_i}_tag_searchpat + unlet! {fidx_i}_tag_linenum + let i = i + 1 + endwhile + + let s:tlist_{a:fidx}_tag_count = 0 + + " Discard information about tag type groups + let i = 1 + while i <= s:tlist_{ftype}_count + let ttype = s:tlist_{ftype}_{i}_name + if s:tlist_{a:fidx}_{ttype} != '' + let fidx_ttype = 's:tlist_' . a:fidx . '_' . ttype + let {fidx_ttype} = '' + let {fidx_ttype}_offset = 0 + let cnt = {fidx_ttype}_count + let {fidx_ttype}_count = 0 + let j = 1 + while j <= cnt + unlet! {fidx_ttype}_{j} + let j = j + 1 + endwhile + endif + let i = i + 1 + endwhile + + " Discard the stored menu command also + let s:tlist_{a:fidx}_menu_cmd = '' +endfunction + +" Tlist_Window_Update_Line_Offsets +" Update the line offsets for tags for files starting from start_idx +" and displayed in the taglist window by the specified offset +function! s:Tlist_Window_Update_Line_Offsets(start_idx, increment, offset) + let i = a:start_idx + + while i < s:tlist_file_count + if s:tlist_{i}_visible + " Update the start/end line number only if the file is visible + if a:increment + let s:tlist_{i}_start = s:tlist_{i}_start + a:offset + let s:tlist_{i}_end = s:tlist_{i}_end + a:offset + else + let s:tlist_{i}_start = s:tlist_{i}_start - a:offset + let s:tlist_{i}_end = s:tlist_{i}_end - a:offset + endif + endif + let i = i + 1 + endwhile +endfunction + +" Tlist_Discard_FileInfo +" Discard the stored information for a file +function! s:Tlist_Discard_FileInfo(fidx) + call s:Tlist_Log_Msg('Tlist_Discard_FileInfo (' . + \ s:tlist_{a:fidx}_filename . ')') + call s:Tlist_Discard_TagInfo(a:fidx) + + let ftype = s:tlist_{a:fidx}_filetype + + let i = 1 + while i <= s:tlist_{ftype}_count + let ttype = s:tlist_{ftype}_{i}_name + unlet! s:tlist_{a:fidx}_{ttype} + unlet! s:tlist_{a:fidx}_{ttype}_offset + unlet! s:tlist_{a:fidx}_{ttype}_count + let i = i + 1 + endwhile + + unlet! s:tlist_{a:fidx}_filename + unlet! s:tlist_{a:fidx}_sort_type + unlet! s:tlist_{a:fidx}_filetype + unlet! s:tlist_{a:fidx}_mtime + unlet! s:tlist_{a:fidx}_start + unlet! s:tlist_{a:fidx}_end + unlet! s:tlist_{a:fidx}_valid + unlet! s:tlist_{a:fidx}_visible + unlet! s:tlist_{a:fidx}_tag_count + unlet! s:tlist_{a:fidx}_menu_cmd +endfunction + +" Tlist_Window_Remove_File_From_Display +" Remove the specified file from display +function! s:Tlist_Window_Remove_File_From_Display(fidx) + call s:Tlist_Log_Msg('Tlist_Window_Remove_File_From_Display (' . + \ s:tlist_{a:fidx}_filename . ')') + " If the file is not visible then no need to remove it + if !s:tlist_{a:fidx}_visible + return + endif + + " Remove the tags displayed for the specified file from the window + let start = s:tlist_{a:fidx}_start + " Include the empty line after the last line also + if g:Tlist_Compact_Format + let end = s:tlist_{a:fidx}_end + else + let end = s:tlist_{a:fidx}_end + 1 + endif + + setlocal modifiable + exe 'silent! ' . start . ',' . end . 'delete _' + setlocal nomodifiable + + " Correct the start and end line offsets for all the files following + " this file, as the tags for this file are removed + call s:Tlist_Window_Update_Line_Offsets(a:fidx + 1, 0, end - start + 1) +endfunction + +" Tlist_Remove_File +" Remove the file under the cursor or the specified file index +" user_request - User requested to remove the file from taglist +function! s:Tlist_Remove_File(file_idx, user_request) + let fidx = a:file_idx + + if fidx == -1 + let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) + if fidx == -1 + return + endif + endif + call s:Tlist_Log_Msg('Tlist_Remove_File (' . + \ s:tlist_{fidx}_filename . ', ' . a:user_request . ')') + + let save_winnr = winnr() + let winnum = bufwinnr(g:TagList_title) + if winnum != -1 + " Taglist window is open, remove the file from display + + if save_winnr != winnum + let old_eventignore = &eventignore + set eventignore=all + exe winnum . 'wincmd w' + endif + + call s:Tlist_Window_Remove_File_From_Display(fidx) + + if save_winnr != winnum + exe save_winnr . 'wincmd w' + let &eventignore = old_eventignore + endif + endif + + let fname = s:tlist_{fidx}_filename + + if a:user_request + " As the user requested to remove the file from taglist, + " add it to the removed list + call s:Tlist_Update_Remove_List(fname, 1) + endif + + " Remove the file name from the taglist list of filenames + let idx = stridx(s:tlist_file_names, fname . "\n") + let text_before = strpart(s:tlist_file_names, 0, idx) + let rem_text = strpart(s:tlist_file_names, idx) + let next_idx = stridx(rem_text, "\n") + let text_after = strpart(rem_text, next_idx + 1) + let s:tlist_file_names = text_before . text_after + + call s:Tlist_Discard_FileInfo(fidx) + + " Shift all the file variables by one index + let i = fidx + 1 + + while i < s:tlist_file_count + let j = i - 1 + + let s:tlist_{j}_filename = s:tlist_{i}_filename + let s:tlist_{j}_sort_type = s:tlist_{i}_sort_type + let s:tlist_{j}_filetype = s:tlist_{i}_filetype + let s:tlist_{j}_mtime = s:tlist_{i}_mtime + let s:tlist_{j}_start = s:tlist_{i}_start + let s:tlist_{j}_end = s:tlist_{i}_end + let s:tlist_{j}_valid = s:tlist_{i}_valid + let s:tlist_{j}_visible = s:tlist_{i}_visible + let s:tlist_{j}_tag_count = s:tlist_{i}_tag_count + let s:tlist_{j}_menu_cmd = s:tlist_{i}_menu_cmd + + let k = 1 + while k <= s:tlist_{j}_tag_count + let s:tlist_{j}_{k}_tag = s:tlist_{i}_{k}_tag + let s:tlist_{j}_{k}_tag_name = s:tlist_{i}_{k}_tag_name + let s:tlist_{j}_{k}_tag_type = s:Tlist_Get_Tag_Type_By_Tag(i, k) + let s:tlist_{j}_{k}_ttype_idx = s:tlist_{i}_{k}_ttype_idx + let s:tlist_{j}_{k}_tag_proto = s:Tlist_Get_Tag_Prototype(i, k) + let s:tlist_{j}_{k}_tag_searchpat = s:Tlist_Get_Tag_SearchPat(i, k) + let s:tlist_{j}_{k}_tag_linenum = s:Tlist_Get_Tag_Linenum(i, k) + let k = k + 1 + endwhile + + let ftype = s:tlist_{i}_filetype + + let k = 1 + while k <= s:tlist_{ftype}_count + let ttype = s:tlist_{ftype}_{k}_name + let s:tlist_{j}_{ttype} = s:tlist_{i}_{ttype} + let s:tlist_{j}_{ttype}_offset = s:tlist_{i}_{ttype}_offset + let s:tlist_{j}_{ttype}_count = s:tlist_{i}_{ttype}_count + if s:tlist_{j}_{ttype} != '' + let l = 1 + while l <= s:tlist_{j}_{ttype}_count + let s:tlist_{j}_{ttype}_{l} = s:tlist_{i}_{ttype}_{l} + let l = l + 1 + endwhile + endif + let k = k + 1 + endwhile + + " As the file and tag information is copied to the new index, + " discard the previous information + call s:Tlist_Discard_FileInfo(i) + + let i = i + 1 + endwhile + + " Reduce the number of files displayed + let s:tlist_file_count = s:tlist_file_count - 1 + + if g:Tlist_Show_One_File + " If the tags for only one file is displayed and if we just + " now removed that file, then invalidate the current file idx + if s:tlist_cur_file_idx == fidx + let s:tlist_cur_file_idx = -1 + endif + endif +endfunction + +" Tlist_Window_Goto_Window +" Goto the taglist window +function! s:Tlist_Window_Goto_Window() + let winnum = bufwinnr(g:TagList_title) + if winnum != -1 + if winnr() != winnum + call s:Tlist_Exe_Cmd_No_Acmds(winnum . 'wincmd w') + endif + endif +endfunction + +" Tlist_Window_Create +" Create a new taglist window. If it is already open, jump to it +function! s:Tlist_Window_Create() + call s:Tlist_Log_Msg('Tlist_Window_Create()') + " If the window is open, jump to it + let winnum = bufwinnr(g:TagList_title) + if winnum != -1 + " Jump to the existing window + if winnr() != winnum + exe winnum . 'wincmd w' + endif + return + endif + + " If used with winmanager don't open windows. Winmanager will handle + " the window/buffer management + if s:tlist_app_name == "winmanager" + return + endif + + " Create a new window. If user prefers a horizontal window, then open + " a horizontally split window. Otherwise open a vertically split + " window + if g:Tlist_Use_Horiz_Window + " Open a horizontally split window + let win_dir = 'botright' + " Horizontal window height + let win_size = g:Tlist_WinHeight + else + if s:tlist_winsize_chgd == -1 + " Open a vertically split window. Increase the window size, if + " needed, to accomodate the new window + if g:Tlist_Inc_Winwidth && + \ &columns < (80 + g:Tlist_WinWidth) + " Save the original window position + let s:tlist_pre_winx = getwinposx() + let s:tlist_pre_winy = getwinposy() + + " one extra column is needed to include the vertical split + let &columns= &columns + g:Tlist_WinWidth + 1 + + let s:tlist_winsize_chgd = 1 + else + let s:tlist_winsize_chgd = 0 + endif + endif + + if g:Tlist_Use_Right_Window + " Open the window at the rightmost place + let win_dir = 'botright vertical' + else + " Open the window at the leftmost place + let win_dir = 'topleft vertical' + endif + let win_size = g:Tlist_WinWidth + endif + + " If the tag listing temporary buffer already exists, then reuse it. + " Otherwise create a new buffer + let bufnum = bufnr(g:TagList_title) + if bufnum == -1 + " Create a new buffer + let wcmd = g:TagList_title + else + " Edit the existing buffer + let wcmd = '+buffer' . bufnum + endif + + " Create the taglist window + exe 'silent! ' . win_dir . ' ' . win_size . 'split ' . wcmd + + " Save the new window position + let s:tlist_winx = getwinposx() + let s:tlist_winy = getwinposy() + + " Initialize the taglist window + call s:Tlist_Window_Init() +endfunction + +" Tlist_Window_Zoom +" Zoom (maximize/minimize) the taglist window +function! s:Tlist_Window_Zoom() + if s:tlist_win_maximized + " Restore the window back to the previous size + if g:Tlist_Use_Horiz_Window + exe 'resize ' . g:Tlist_WinHeight + else + exe 'vert resize ' . g:Tlist_WinWidth + endif + let s:tlist_win_maximized = 0 + else + " Set the window size to the maximum possible without closing other + " windows + if g:Tlist_Use_Horiz_Window + resize + else + vert resize + endif + let s:tlist_win_maximized = 1 + endif +endfunction + +" Tlist_Ballon_Expr +" When the mouse cursor is over a tag in the taglist window, display the +" tag prototype (balloon) +function! Tlist_Ballon_Expr() + " Get the file index + let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(v:beval_lnum) + if fidx == -1 + return '' + endif + + " Get the tag output line for the current tag + let tidx = s:Tlist_Window_Get_Tag_Index(fidx, v:beval_lnum) + if tidx == 0 + return '' + endif + + " Get the tag search pattern and display it + return s:Tlist_Get_Tag_Prototype(fidx, tidx) +endfunction + +" Tlist_Window_Check_Width +" Check the width of the taglist window. For horizontally split windows, the +" 'winfixheight' option is used to fix the height of the window. For +" vertically split windows, Vim doesn't support the 'winfixwidth' option. So +" need to handle window width changes from this function. +function! s:Tlist_Window_Check_Width() + let tlist_winnr = bufwinnr(g:TagList_title) + if tlist_winnr == -1 + return + endif + + let width = winwidth(tlist_winnr) + if width != g:Tlist_WinWidth + call s:Tlist_Log_Msg("Tlist_Window_Check_Width: Changing window " . + \ "width from " . width . " to " . g:Tlist_WinWidth) + let save_winnr = winnr() + if save_winnr != tlist_winnr + call s:Tlist_Exe_Cmd_No_Acmds(tlist_winnr . 'wincmd w') + endif + exe 'vert resize ' . g:Tlist_WinWidth + if save_winnr != tlist_winnr + call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') + endif + endif +endfunction + +" Tlist_Window_Exit_Only_Window +" If the 'Tlist_Exit_OnlyWindow' option is set, then exit Vim if only the +" taglist window is present. +function! s:Tlist_Window_Exit_Only_Window() + " Before quitting Vim, delete the taglist buffer so that + " the '0 mark is correctly set to the previous buffer. + if v:version < 700 + if winbufnr(2) == -1 + bdelete + quit + endif + else + if winbufnr(2) == -1 + if tabpagenr('$') == 1 + " Only one tag page is present + bdelete + quit + else + " More than one tab page is present. Close only the current + " tab page + close + endif + endif + endif +endfunction + +" Tlist_Window_Init +" Set the default options for the taglist window +function! s:Tlist_Window_Init() + call s:Tlist_Log_Msg('Tlist_Window_Init()') + + " The 'readonly' option should not be set for the taglist buffer. + " If Vim is started as "view/gview" or if the ":view" command is + " used, then the 'readonly' option is set for all the buffers. + " Unset it for the taglist buffer + setlocal noreadonly + + " Set the taglist buffer filetype to taglist + setlocal filetype=taglist + + " Define taglist window element highlighting + syntax match TagListComment '^" .*' + syntax match TagListFileName '^[^" ].*$' + syntax match TagListTitle '^ \S.*$' + syntax region TagListTagScope1 start='\[' end='\]' contains=TagListTagScope1 nextgroup=TagListTagScope2 skipwhite + syntax region TagListTagScope2 start='\[' end='\]' contained contains=TaglistTagScope2 + + " Define the highlighting only if colors are supported + if has('gui_running') || &t_Co > 2 + " Colors to highlight various taglist window elements + " If user defined highlighting group exists, then use them. + " Otherwise, use default highlight groups. + if hlexists('MyTagListTagName') + highlight link TagListTagName MyTagListTagName + else + highlight default link TagListTagName Search + endif + " Colors to highlight comments and titles + if hlexists('MyTagListComment') + highlight link TagListComment MyTagListComment + else + highlight clear TagListComment + highlight default link TagListComment Comment + endif + if hlexists('MyTagListTitle') + highlight link TagListTitle MyTagListTitle + else + highlight clear TagListTitle + highlight default link TagListTitle Title + endif + if hlexists('MyTagListFileName') + highlight link TagListFileName MyTagListFileName + else + highlight clear TagListFileName + highlight default TagListFileName guibg=Grey ctermbg=darkgray + \ guifg=white ctermfg=white + endif + if hlexists('MyTagListTagScope') + highlight link TagListTagScope1 MyTagListTagScope + else + highlight clear TagListTagScope1 + highlight clear TagListTagScope2 + highlight default link TagListTagScope1 Identifier + highlight default link TagListTagScope2 Keyword + endif + else + highlight default TagListTagName term=reverse cterm=reverse + endif + + " Folding related settings + setlocal foldenable + setlocal foldminlines=0 + setlocal foldmethod=manual + setlocal foldlevel=9999 + if g:Tlist_Enable_Fold_Column + setlocal foldcolumn=3 + else + setlocal foldcolumn=0 + endif + setlocal foldtext=v:folddashes.getline(v:foldstart) + + if s:tlist_app_name != "winmanager" + " Mark buffer as scratch + silent! setlocal buftype=nofile + if s:tlist_app_name == "none" + silent! setlocal bufhidden=delete + endif + silent! setlocal noswapfile + " Due to a bug in Vim 6.0, the winbufnr() function fails for unlisted + " buffers. So if the taglist buffer is unlisted, multiple taglist + " windows will be opened. This bug is fixed in Vim 6.1 and above + if v:version >= 601 + silent! setlocal nobuflisted + endif + endif + + silent! setlocal nowrap + + " If the 'number' option is set in the source window, it will affect the + " taglist window. So forcefully disable 'number' option for the taglist + " window + silent! setlocal nonumber + + " Use fixed height when horizontally split window is used + if g:Tlist_Use_Horiz_Window + if v:version >= 602 + set winfixheight + endif + endif + if !g:Tlist_Use_Horiz_Window && v:version >= 700 + set winfixwidth + endif + + " Setup balloon evaluation to display tag prototype + if v:version >= 700 && has('balloon_eval') + setlocal balloonexpr=Tlist_Ballon_Expr() + set ballooneval + endif + + " Setup the cpoptions properly for the maps to work + let old_cpoptions = &cpoptions + set cpoptions&vim + + " Create buffer local mappings for jumping to the tags and sorting the list + nnoremap + \ :call Tlist_Window_Jump_To_Tag('useopen') + " If more languages are required, generate this from a list of options + nnoremap m + \ :call Tlist_Window_Toggle_Extra('javascript', 'type') + nnoremap o + \ :call Tlist_Window_Jump_To_Tag('newwin') + nnoremap p + \ :call Tlist_Window_Jump_To_Tag('preview') + nnoremap P + \ :call Tlist_Window_Jump_To_Tag('prevwin') + if v:version >= 700 + nnoremap t + \ :call Tlist_Window_Jump_To_Tag('checktab') + nnoremap + \ :call Tlist_Window_Jump_To_Tag('newtab') + endif + nnoremap <2-LeftMouse> + \ :call Tlist_Window_Jump_To_Tag('useopen') + nnoremap s + \ :call Tlist_Change_Sort('cmd', 'toggle', '') + nnoremap + :silent! foldopen + nnoremap - :silent! foldclose + nnoremap * :silent! %foldopen! + nnoremap = :silent! %foldclose + nnoremap :silent! foldopen + nnoremap :silent! foldclose + nnoremap :silent! %foldopen! + nnoremap :call Tlist_Window_Show_Info() + nnoremap u :call Tlist_Window_Update_File() + nnoremap d :call Tlist_Remove_File(-1, 1) + nnoremap x :call Tlist_Window_Zoom() + nnoremap [[ :call Tlist_Window_Move_To_File(-1) + nnoremap :call Tlist_Window_Move_To_File(-1) + nnoremap ]] :call Tlist_Window_Move_To_File(1) + nnoremap :call Tlist_Window_Move_To_File(1) + nnoremap :call Tlist_Window_Toggle_Help_Text() + nnoremap q :close + + " Insert mode mappings + inoremap + \ :call Tlist_Window_Jump_To_Tag('useopen') + " Windows needs return + inoremap + \ :call Tlist_Window_Jump_To_Tag('useopen') + inoremap o + \ :call Tlist_Window_Jump_To_Tag('newwin') + inoremap p + \ :call Tlist_Window_Jump_To_Tag('preview') + inoremap P + \ :call Tlist_Window_Jump_To_Tag('prevwin') + if v:version >= 700 + inoremap t + \ :call Tlist_Window_Jump_To_Tag('checktab') + inoremap + \ :call Tlist_Window_Jump_To_Tag('newtab') + endif + inoremap <2-LeftMouse> + \ :call Tlist_Window_Jump_To_Tag('useopen') + inoremap s + \ :call Tlist_Change_Sort('cmd', 'toggle', '') + inoremap + :silent! foldopen + inoremap - :silent! foldclose + inoremap * :silent! %foldopen! + inoremap = :silent! %foldclose + inoremap :silent! foldopen + inoremap :silent! foldclose + inoremap :silent! %foldopen! + inoremap :call + \ Tlist_Window_Show_Info() + inoremap u + \ :call Tlist_Window_Update_File() + inoremap d :call Tlist_Remove_File(-1, 1) + inoremap x :call Tlist_Window_Zoom() + inoremap [[ :call Tlist_Window_Move_To_File(-1) + inoremap :call Tlist_Window_Move_To_File(-1) + inoremap ]] :call Tlist_Window_Move_To_File(1) + inoremap :call Tlist_Window_Move_To_File(1) + inoremap :call Tlist_Window_Toggle_Help_Text() + inoremap q :close + + " Map single left mouse click if the user wants this functionality + if g:Tlist_Use_SingleClick == 1 + " Contributed by Bindu Wavell + " attempt to perform single click mapping, it would be much + " nicer if we could nnoremap ... however vim does + " not fire the when you use the mouse + " to enter a buffer. + let clickmap = ':if bufname("%") =~ "__Tag_List__" ' . + \ 'call Tlist_Window_Jump_To_Tag("useopen") ' . + \ ' endif ' + if maparg('', 'n') == '' + " no mapping for leftmouse + exe ':nnoremap ' . clickmap + else + " we have a mapping + let mapcmd = ':nnoremap ' + let mapcmd = mapcmd . substitute(substitute( + \ maparg('', 'n'), '|', '', 'g'), + \ '\c^', '', '') + let mapcmd = mapcmd . clickmap + exe mapcmd + endif + endif + + " Define the taglist autocommands + augroup TagListAutoCmds + autocmd! + " Display the tag prototype for the tag under the cursor. + autocmd CursorHold __Tag_List__ call s:Tlist_Window_Show_Info() + " Highlight the current tag periodically + autocmd CursorHold * silent call s:Tlist_Window_Highlight_Tag( + \ fnamemodify(bufname('%'), ':p'), line('.'), 1, 0) + + " Adjust the Vim window width when taglist window is closed + autocmd BufUnload __Tag_List__ call s:Tlist_Post_Close_Cleanup() + " Close the fold for this buffer when leaving the buffer + if g:Tlist_File_Fold_Auto_Close + autocmd BufEnter * silent + \ call s:Tlist_Window_Open_File_Fold(expand('')) + endif + " Exit Vim itself if only the taglist window is present (optional) + if g:Tlist_Exit_OnlyWindow + autocmd BufEnter __Tag_List__ nested + \ call s:Tlist_Window_Exit_Only_Window() + endif + if s:tlist_app_name != "winmanager" && + \ !g:Tlist_Process_File_Always && + \ (!has('gui_running') || !g:Tlist_Show_Menu) + " Auto refresh the taglist window + autocmd BufEnter * call s:Tlist_Refresh() + endif + + if !g:Tlist_Use_Horiz_Window + if v:version < 700 + autocmd WinEnter * call s:Tlist_Window_Check_Width() + endif + endif + if v:version >= 700 + autocmd TabEnter * silent call s:Tlist_Refresh_Folds() + endif + augroup end + + " Restore the previous cpoptions settings + let &cpoptions = old_cpoptions +endfunction + +" Tlist_Window_Refresh +" Display the tags for all the files in the taglist window +function! s:Tlist_Window_Refresh() + call s:Tlist_Log_Msg('Tlist_Window_Refresh()') + " Set report option to a huge value to prevent informational messages + " while deleting the lines + let old_report = &report + set report=99999 + + " Mark the buffer as modifiable + setlocal modifiable + + " Delete the contents of the buffer to the black-hole register + silent! %delete _ + + " As we have cleared the taglist window, mark all the files + " as not visible + let i = 0 + while i < s:tlist_file_count + let s:tlist_{i}_visible = 0 + let i = i + 1 + endwhile + + if g:Tlist_Compact_Format == 0 + " Display help in non-compact mode + call s:Tlist_Window_Display_Help() + endif + + " Mark the buffer as not modifiable + setlocal nomodifiable + + " Restore the report option + let &report = old_report + + " If the tags for only one file should be displayed in the taglist + " window, then no need to add the tags here. The bufenter autocommand + " will add the tags for that file. + if g:Tlist_Show_One_File + return + endif + + " List all the tags for the previously processed files + " Do this only if taglist is configured to display tags for more than + " one file. Otherwise, when Tlist_Show_One_File is configured, + " tags for the wrong file will be displayed. + let i = 0 + while i < s:tlist_file_count + call s:Tlist_Window_Refresh_File(s:tlist_{i}_filename, + \ s:tlist_{i}_filetype) + let i = i + 1 + endwhile + + if g:Tlist_Auto_Update + " Add and list the tags for all buffers in the Vim buffer list + let i = 1 + let last_bufnum = bufnr('$') + while i <= last_bufnum + if buflisted(i) + let fname = fnamemodify(bufname(i), ':p') + let ftype = s:Tlist_Get_Buffer_Filetype(i) + " If the file doesn't support tag listing, skip it + if !s:Tlist_Skip_File(fname, ftype) + call s:Tlist_Window_Refresh_File(fname, ftype) + endif + endif + let i = i + 1 + endwhile + endif + + " If Tlist_File_Fold_Auto_Close option is set, then close all the folds + if g:Tlist_File_Fold_Auto_Close + " Close all the folds + silent! %foldclose + endif + + if !g:Tlist_Use_Horiz_Window && s:auto_width + exe 'vertical resize '.g:Tlist_WinWidth + endif + + " Move the cursor to the top of the taglist window + normal! gg +endfunction + +" Tlist_Post_Close_Cleanup() +" Close the taglist window and adjust the Vim window width +function! s:Tlist_Post_Close_Cleanup() + call s:Tlist_Log_Msg('Tlist_Post_Close_Cleanup()') + " Mark all the files as not visible + let i = 0 + while i < s:tlist_file_count + let s:tlist_{i}_visible = 0 + let i = i + 1 + endwhile + + " Remove the taglist autocommands + silent! autocmd! TagListAutoCmds + + " Clear all the highlights + match none + + silent! syntax clear TagListTitle + silent! syntax clear TagListComment + silent! syntax clear TagListTagScope + + " Remove the left mouse click mapping if it was setup initially + if g:Tlist_Use_SingleClick + if hasmapto('') + nunmap + endif + endif + + if s:tlist_app_name != "winmanager" + if g:Tlist_Use_Horiz_Window || g:Tlist_Inc_Winwidth == 0 || + \ s:tlist_winsize_chgd != 1 || + \ &columns < (80 + g:Tlist_WinWidth) + " No need to adjust window width if using horizontally split taglist + " window or if columns is less than 101 or if the user chose not to + " adjust the window width + else + " If the user didn't manually move the window, then restore the window + " position to the pre-taglist position + if s:tlist_pre_winx != -1 && s:tlist_pre_winy != -1 && + \ getwinposx() == s:tlist_winx && + \ getwinposy() == s:tlist_winy + exe 'winpos ' . s:tlist_pre_winx . ' ' . s:tlist_pre_winy + endif + + " Adjust the Vim window width + let &columns= &columns - (g:Tlist_WinWidth + 1) + endif + endif + + let s:tlist_winsize_chgd = -1 + + " Reset taglist state variables + if s:tlist_app_name == "winmanager" + let s:tlist_app_name = "none" + endif + let s:tlist_window_initialized = 0 +endfunction + +" Tlist_Window_Refresh_File() +" List the tags defined in the specified file in a Vim window +function! s:Tlist_Window_Refresh_File(filename, ftype) + call s:Tlist_Log_Msg('Tlist_Window_Refresh_File (' . a:filename . ')') + " First check whether the file already exists + let fidx = s:Tlist_Get_File_Index(a:filename) + if fidx != -1 + let file_listed = 1 + else + let file_listed = 0 + endif + + if !file_listed + " Check whether this file is removed based on user request + " If it is, then don't display the tags for this file + if s:Tlist_User_Removed_File(a:filename) + return + endif + endif + + if file_listed && s:tlist_{fidx}_visible + " Check whether the file tags are currently valid + if s:tlist_{fidx}_valid + " Goto the first line in the file + exe s:tlist_{fidx}_start + + " If the line is inside a fold, open the fold + if foldclosed('.') != -1 + exe "silent! " . s:tlist_{fidx}_start . "," . + \ s:tlist_{fidx}_end . "foldopen!" + endif + return + endif + + " Discard and remove the tags for this file from display + call s:Tlist_Discard_TagInfo(fidx) + call s:Tlist_Window_Remove_File_From_Display(fidx) + endif + + " Process and generate a list of tags defined in the file + if !file_listed || !s:tlist_{fidx}_valid + let ret_fidx = s:Tlist_Process_File(a:filename, a:ftype) + if ret_fidx == -1 + return + endif + let fidx = ret_fidx + endif + + " Set report option to a huge value to prevent informational messages + " while adding lines to the taglist window + let old_report = &report + set report=99999 + + if g:Tlist_Show_One_File + " Remove the previous file + if s:tlist_cur_file_idx != -1 + call s:Tlist_Window_Remove_File_From_Display(s:tlist_cur_file_idx) + let s:tlist_{s:tlist_cur_file_idx}_visible = 0 + let s:tlist_{s:tlist_cur_file_idx}_start = 0 + let s:tlist_{s:tlist_cur_file_idx}_end = 0 + endif + let s:tlist_cur_file_idx = fidx + endif + + " Mark the buffer as modifiable + setlocal modifiable + + " Add new files to the end of the window. For existing files, add them at + " the same line where they were previously present. If the file is not + " visible, then add it at the end + if s:tlist_{fidx}_start == 0 || !s:tlist_{fidx}_visible + if g:Tlist_Compact_Format + let s:tlist_{fidx}_start = line('$') + else + let s:tlist_{fidx}_start = line('$') + 1 + endif + endif + + let s:tlist_{fidx}_visible = 1 + + " Goto the line where this file should be placed + if g:Tlist_Compact_Format + exe s:tlist_{fidx}_start + else + exe s:tlist_{fidx}_start - 1 + endif + + let txt = fnamemodify(s:tlist_{fidx}_filename, ':t') . ' (' . + \ fnamemodify(s:tlist_{fidx}_filename, ':p:h') . ')' + if g:Tlist_Compact_Format == 0 + silent! put =txt + else + silent! put! =txt + " Move to the next line + exe line('.') + 1 + endif + let file_start = s:tlist_{fidx}_start + + " Add the tag names grouped by tag type to the buffer with a title + let i = 1 + let ttype_cnt = s:tlist_{a:ftype}_count + while i <= ttype_cnt + let ttype = s:tlist_{a:ftype}_{i}_name + " Add the tag type only if there are tags for that type + let fidx_ttype = 's:tlist_' . fidx . '_' . ttype + let ttype_txt = {fidx_ttype} + if ttype_txt != '' + let txt = ' ' . s:tlist_{a:ftype}_{i}_fullname + if g:Tlist_Compact_Format == 0 + let ttype_start_lnum = line('.') + 1 + silent! put =txt + else + let ttype_start_lnum = line('.') + silent! put! =txt + endif + silent! put =ttype_txt + + let {fidx_ttype}_offset = ttype_start_lnum - file_start + + " create a fold for this tag type + let fold_start = ttype_start_lnum + let fold_end = fold_start + {fidx_ttype}_count + exe fold_start . ',' . fold_end . 'fold' + + " Adjust the cursor position + if g:Tlist_Compact_Format == 0 + exe ttype_start_lnum + {fidx_ttype}_count + else + exe ttype_start_lnum + {fidx_ttype}_count + 1 + endif + + if g:Tlist_Compact_Format == 0 + " Separate the tag types by a empty line + silent! put ='' + endif + endif + let i = i + 1 + endwhile + + if s:tlist_{fidx}_tag_count == 0 + if g:Tlist_Compact_Format == 0 + silent! put ='' + endif + endif + + let s:tlist_{fidx}_end = line('.') - 1 + + " Create a fold for the entire file + exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'fold' + exe 'silent! ' . s:tlist_{fidx}_start . ',' . + \ s:tlist_{fidx}_end . 'foldopen!' + + " Goto the starting line for this file, + exe s:tlist_{fidx}_start + + if s:tlist_app_name == "winmanager" + " To handle a bug in the winmanager plugin, add a space at the + " last line + call setline('$', ' ') + endif + + " Mark the buffer as not modifiable + setlocal nomodifiable + + " Restore the report option + let &report = old_report + + " Update the start and end line numbers for all the files following this + " file + let start = s:tlist_{fidx}_start + " include the empty line after the last line + if g:Tlist_Compact_Format + let end = s:tlist_{fidx}_end + else + let end = s:tlist_{fidx}_end + 1 + endif + call s:Tlist_Window_Update_Line_Offsets(fidx + 1, 1, end - start + 1) + + if !g:Tlist_Use_Horiz_Window && s:auto_width + exe 'vertical resize '.g:Tlist_WinWidth + endif + + " Now that we have updated the taglist window, update the tags + " menu (if present) + if g:Tlist_Show_Menu + call s:Tlist_Menu_Update_File(1) + endif +endfunction + +" Tlist_Init_File +" Initialize the variables for a new file +function! s:Tlist_Init_File(filename, ftype) + call s:Tlist_Log_Msg('Tlist_Init_File (' . a:filename . ')') + " Add new files at the end of the list + let fidx = s:tlist_file_count + let s:tlist_file_count = s:tlist_file_count + 1 + " Add the new file name to the taglist list of file names + let s:tlist_file_names = s:tlist_file_names . a:filename . "\n" + + " Initialize the file variables + let s:tlist_{fidx}_filename = a:filename + let s:tlist_{fidx}_sort_type = g:Tlist_Sort_Type + let s:tlist_{fidx}_filetype = a:ftype + let s:tlist_{fidx}_mtime = -1 + let s:tlist_{fidx}_start = 0 + let s:tlist_{fidx}_end = 0 + let s:tlist_{fidx}_valid = 0 + let s:tlist_{fidx}_visible = 0 + let s:tlist_{fidx}_tag_count = 0 + let s:tlist_{fidx}_menu_cmd = '' + + " Initialize the tag type variables + let i = 1 + while i <= s:tlist_{a:ftype}_count + let ttype = s:tlist_{a:ftype}_{i}_name + let s:tlist_{fidx}_{ttype} = '' + let s:tlist_{fidx}_{ttype}_offset = 0 + let s:tlist_{fidx}_{ttype}_count = 0 + let i = i + 1 + endwhile + + return fidx +endfunction + +" Tlist_Get_Tag_Type_By_Tag +" Return the tag type for the specified tag index +function! s:Tlist_Get_Tag_Type_By_Tag(fidx, tidx) + let ttype_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_type' + + " Already parsed and have the tag name + if exists(ttype_var) + return {ttype_var} + endif + + let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag + let {ttype_var} = s:Tlist_Extract_Tagtype(tag_line) + + return {ttype_var} +endfunction + +" Tlist_Get_Tag_Prototype +function! s:Tlist_Get_Tag_Prototype(fidx, tidx) + let tproto_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_proto' + + " Already parsed and have the tag prototype + if exists(tproto_var) + return {tproto_var} + endif + + " Parse and extract the tag prototype + let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag + let start = stridx(tag_line, '/^') + 2 + let end = stridx(tag_line, '/;"' . "\t") + if tag_line[end - 1] == '$' + let end = end -1 + endif + let tag_proto = strpart(tag_line, start, end - start) + let {tproto_var} = substitute(tag_proto, '\s*', '', '') + + return {tproto_var} +endfunction + +" Tlist_Get_Tag_SearchPat +function! s:Tlist_Get_Tag_SearchPat(fidx, tidx) + let tpat_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_searchpat' + + " Already parsed and have the tag search pattern + if exists(tpat_var) + return {tpat_var} + endif + + " Parse and extract the tag search pattern + let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag + let start = stridx(tag_line, '/^') + 2 + let end = stridx(tag_line, '/;"' . "\t") + if tag_line[end - 1] == '$' + let end = end -1 + endif + let {tpat_var} = '\V\^' . strpart(tag_line, start, end - start) . + \ (tag_line[end] == '$' ? '\$' : '') + + return {tpat_var} +endfunction + +" Tlist_Get_Tag_Linenum +" Return the tag line number, given the tag index +function! s:Tlist_Get_Tag_Linenum(fidx, tidx) + let tline_var = 's:tlist_' . a:fidx . '_' . a:tidx . '_tag_linenum' + + " Already parsed and have the tag line number + if exists(tline_var) + return {tline_var} + endif + + " Parse and extract the tag line number + let tag_line = s:tlist_{a:fidx}_{a:tidx}_tag + let start = match(tag_line, 'line\(no\)\?:') + let start = stridx(tag_line, ':', start) + 1 + let end = stridx(tag_line, "\t", start) + + if end < start + let {tline_var} = strpart(tag_line, start) + 0 + else + let {tline_var} = strpart(tag_line, start, end - start) + 0 + endif + + return {tline_var} +endfunction + +" Tlist_Parse_Tagline +" Parse a tag line from the ctags output. Separate the tag output based on the +" tag type and store it in the tag type variable. +" The format of each line in the ctags output is: +" +" tag_namefile_nameex_cmd;"extension_fields +" +function! s:Tlist_Parse_Tagline(tag_line,ftype) + if a:tag_line == '' + " Skip empty lines + return + endif + + " Extract the tag type + let ttype = s:Tlist_Extract_Tagtype(a:tag_line) + + " Make sure the tag type is a valid and supported one + if ttype == '' || stridx(s:ctags_flags, ttype) == -1 + " Line is not in proper tags format or Tag type is not supported + return + endif + + " Update the total tag count + let s:tidx = s:tidx + 1 + + " The following variables are used to optimize this code. Vim is slow in + " using curly brace names. To reduce the amount of processing needed, the + " curly brace variables are pre-processed here + let fidx_tidx = 's:tlist_' . s:fidx . '_' . s:tidx + let fidx_ttype = 's:tlist_' . s:fidx . '_' . ttype + + " Update the count of this tag type + let ttype_idx = {fidx_ttype}_count + 1 + let {fidx_ttype}_count = ttype_idx + + " Store the ctags output for this tag + let {fidx_tidx}_tag = a:tag_line + + " Store the tag index and the tag type index (back pointers) + let {fidx_ttype}_{ttype_idx} = s:tidx + let {fidx_tidx}_ttype_idx = ttype_idx + + " Extract the tag name + let tag_name = strpart(a:tag_line, 0, stridx(a:tag_line, "\t")) + + " Extract the tag scope/prototype + if g:Tlist_Display_Prototype + let ttxt = ' ' . s:Tlist_Get_Tag_Prototype(s:fidx, s:tidx) + else + let ttxt = ' ' . tag_name + + " Add the tag scope, if it is available and is configured. Tag + " scope is the last field after the 'line:\t' field + if g:Tlist_Display_Tag_Scope + let ttxt .= s:Tlist_Get_Scope_String(a:tag_line, a:ftype) + endif + endif + + if !g:Tlist_Use_Horiz_Window && s:auto_width + " Add 3 for the fold columns + let g:Tlist_WinWidth = max([g:Tlist_WinWidth, strlen(ttxt)+3]) + endif + + " Add this tag to the tag type variable + let {fidx_ttype} = {fidx_ttype} . ttxt . "\n" + + " Save the tag name + let {fidx_tidx}_tag_name = tag_name +endfunction + +function! s:Tlist_Get_Scope_String(tag_line, ftype) + let ttxt = '' + let tag_scopes = s:Tlist_Extract_Tag_Scope(a:tag_line) + for [extradata_name, extradata_content] in items(tag_scopes) + if !exists('g:Tlist_{a:ftype}_Hide_Extras') || match(g:Tlist_{a:ftype}_Hide_Extras, extradata_name) == -1 + let ttxt = ttxt . ' [' . extradata_content . ']' + endif + endfor + return ttxt +endfunction + +" Tlist_Process_File +" Get the list of tags defined in the specified file and store them +" in Vim variables. Returns the file index where the tags are stored. +function! s:Tlist_Process_File(filename, ftype) + call s:Tlist_Log_Msg('Tlist_Process_File (' . a:filename . ', ' . + \ a:ftype . ')') + " Check whether this file is supported + if s:Tlist_Skip_File(a:filename, a:ftype) + return -1 + endif + + " If the tag types for this filetype are not yet created, then create + " them now + let var = 's:tlist_' . a:ftype . '_count' + if !exists(var) + if s:Tlist_FileType_Init(a:ftype) == 0 + return -1 + endif + endif + + " If this file is already processed, then use the cached values + let fidx = s:Tlist_Get_File_Index(a:filename) + if fidx == -1 + " First time, this file is loaded + let fidx = s:Tlist_Init_File(a:filename, a:ftype) + else + " File was previously processed. Discard the tag information + call s:Tlist_Discard_TagInfo(fidx) + endif + + let s:tlist_{fidx}_valid = 1 + + " Exuberant ctags arguments to generate a tag list + let ctags_args = { '-f': ' -', '--format=': '2', '--excmd=': 'pattern', '--fields=': 'nks' } + + " Form the ctags argument depending on the sort type + if s:tlist_{fidx}_sort_type == 'name' + let ctags_args['--sort'] = '=yes' + else + let ctags_args['--sort'] = '=no' + endif + + " Add the filetype specific arguments + call extend(ctags_args, s:tlist_{a:ftype}_ctags_args) + + " Ctags command to produce output with regexp for locating the tags + if exists('g:Tlist_{a:ftype}_Ctags_Cmd') + let ctags_cmd = g:Tlist_{a:ftype}_Ctags_Cmd + let ctags_args = filter(ctags_args, 'match(g:Tlist_javascript_Ctags_Allowed_Flags, "^".v:key."$") != -1') + else + let ctags_cmd = g:Tlist_Ctags_Cmd + endif + let ctags_cmd = ctags_cmd . ' ' . join(values(map(ctags_args, 'v:key . v:val'))) + let ctags_cmd = ctags_cmd . ' "' . a:filename . '"' + + if &shellxquote == '"' + " Double-quotes within double-quotes will not work in the + " command-line.If the 'shellxquote' option is set to double-quotes, + " then escape the double-quotes in the ctags command-line. + let ctags_cmd = escape(ctags_cmd, '"') + endif + + " In Windows 95, if not using cygwin, disable the 'shellslash' + " option. Otherwise, this will cause problems when running the + " ctags command. + if has('win95') && !has('win32unix') + let old_shellslash = &shellslash + set noshellslash + endif + + if has('win32') && !has('win32unix') && !has('win95') + \ && (&shell =~ 'cmd.exe') + " Windows does not correctly deal with commands that have more than 1 + " set of double quotes. It will strip them all resulting in: + " 'C:\Program' is not recognized as an internal or external command + " operable program or batch file. To work around this, place the + " command inside a batch file and call the batch file. + " Do this only on Win2K, WinXP and above. + " Contributed by: David Fishburn. + let s:taglist_tempfile = fnamemodify(tempname(), ':h') . + \ '\taglist.cmd' + exe 'redir! > ' . s:taglist_tempfile + silent echo ctags_cmd + redir END + + call s:Tlist_Log_Msg('Cmd inside batch file: ' . ctags_cmd) + let ctags_cmd = '"' . s:taglist_tempfile . '"' + endif + + call s:Tlist_Log_Msg('Cmd: ' . ctags_cmd) + + " Run ctags and get the tag list + let cmd_output = system(ctags_cmd) + + " Restore the value of the 'shellslash' option. + if has('win95') && !has('win32unix') + let &shellslash = old_shellslash + endif + + if exists('s:taglist_tempfile') + " Delete the temporary cmd file created on MS-Windows + call delete(s:taglist_tempfile) + endif + + " Handle errors + if v:shell_error + let msg = "Taglist: Failed to generate tags for " . a:filename + call s:Tlist_Warning_Msg(msg) + if cmd_output != '' + call s:Tlist_Warning_Msg(cmd_output) + endif + return fidx + endif + + " Store the modification time for the file + let s:tlist_{fidx}_mtime = getftime(a:filename) + + " No tags for current file + if cmd_output == '' + call s:Tlist_Log_Msg('No tags defined in ' . a:filename) + return fidx + endif + + call s:Tlist_Log_Msg('Generated tags information for ' . a:filename) + + if v:version > 601 + " The following script local variables are used by the + " Tlist_Parse_Tagline() function. + let s:ctags_flags = s:tlist_{a:ftype}_ctags_flags + let s:fidx = fidx + let s:tidx = 0 + + " Tlist_Parse_Tagline will adjust this accordingly + if !g:Tlist_Use_Horiz_Window && s:auto_width + let g:Tlist_WinWidth = 0 + endif + + " Process the ctags output one line at a time. The substitute() + " command is used to parse the tag lines instead of using the + " matchstr()/stridx()/strpart() functions for performance reason + call substitute(cmd_output, "\\([^\n]\\+\\)\n", + \ '\=s:Tlist_Parse_Tagline(submatch(1),a:ftype)', 'g') + + " Save the number of tags for this file + let s:tlist_{fidx}_tag_count = s:tidx + + " The following script local variables are no longer needed + unlet! s:ctags_flags + unlet! s:tidx + unlet! s:fidx + else + " Due to a bug in Vim earlier than version 6.1, + " we cannot use substitute() to parse the ctags output. + " Instead the slow str*() functions are used + let ctags_flags = s:tlist_{a:ftype}_ctags_flags + let tidx = 0 + + while cmd_output != '' + " Extract one line at a time + let idx = stridx(cmd_output, "\n") + let one_line = strpart(cmd_output, 0, idx) + " Remove the line from the tags output + let cmd_output = strpart(cmd_output, idx + 1) + + if one_line == '' + " Line is not in proper tags format + continue + endif + + " Extract the tag type + let ttype = s:Tlist_Extract_Tagtype(one_line) + + " Make sure the tag type is a valid and supported one + if ttype == '' || stridx(ctags_flags, ttype) == -1 + " Line is not in proper tags format or Tag type is not + " supported + continue + endif + + " Update the total tag count + let tidx = tidx + 1 + + " The following variables are used to optimize this code. Vim is + " slow in using curly brace names. To reduce the amount of + " processing needed, the curly brace variables are pre-processed + " here + let fidx_tidx = 's:tlist_' . fidx . '_' . tidx + let fidx_ttype = 's:tlist_' . fidx . '_' . ttype + + " Update the count of this tag type + let ttype_idx = {fidx_ttype}_count + 1 + let {fidx_ttype}_count = ttype_idx + + " Store the ctags output for this tag + let {fidx_tidx}_tag = one_line + + " Store the tag index and the tag type index (back pointers) + let {fidx_ttype}_{ttype_idx} = tidx + let {fidx_tidx}_ttype_idx = ttype_idx + + " Extract the tag name + let tag_name = strpart(one_line, 0, stridx(one_line, "\t")) + + " Extract the tag scope/prototype + if g:Tlist_Display_Prototype + let ttxt = ' ' . s:Tlist_Get_Tag_Prototype(fidx, tidx) + else + let ttxt = ' ' . tag_name + + " Add the tag scope, if it is available and is configured. Tag + " scope is the last field after the 'line:\t' field + if g:Tlist_Display_Tag_Scope + let ttxt .= s:Tlist_Get_Scope_String(a:tag_line, a:ftype) + endif + endif + + " Add this tag to the tag type variable + let {fidx_ttype} = {fidx_ttype} . ttxt . "\n" + + " Save the tag name + let {fidx_tidx}_tag_name = tag_name + endwhile + + " Save the number of tags for this file + let s:tlist_{fidx}_tag_count = tidx + endif + + call s:Tlist_Log_Msg('Processed ' . s:tlist_{fidx}_tag_count . + \ ' tags in ' . a:filename) + + return fidx +endfunction + +" Tlist_Update_File +" Update the tags for a file (if needed) +function! Tlist_Update_File(filename, ftype) + call s:Tlist_Log_Msg('Tlist_Update_File (' . a:filename . ')') + " If the file doesn't support tag listing, skip it + if s:Tlist_Skip_File(a:filename, a:ftype) + return + endif + + " Convert the file name to a full path + let fname = fnamemodify(a:filename, ':p') + + " First check whether the file already exists + let fidx = s:Tlist_Get_File_Index(fname) + + if fidx != -1 && s:tlist_{fidx}_valid + " File exists and the tags are valid + " Check whether the file was modified after the last tags update + " If it is modified, then update the tags + if s:tlist_{fidx}_mtime == getftime(fname) + return + endif + else + " If the tags were removed previously based on a user request, + " as we are going to update the tags (based on the user request), + " remove the filename from the deleted list + call s:Tlist_Update_Remove_List(fname, 0) + endif + + " If the taglist window is opened, update it + let winnum = bufwinnr(g:TagList_title) + if winnum == -1 + " Taglist window is not present. Just update the taglist + " and return + call s:Tlist_Process_File(fname, a:ftype) + else + if g:Tlist_Show_One_File && s:tlist_cur_file_idx != -1 + " If tags for only one file are displayed and we are not + " updating the tags for that file, then no need to + " refresh the taglist window. Otherwise, the taglist + " window should be updated. + if s:tlist_{s:tlist_cur_file_idx}_filename != fname + call s:Tlist_Process_File(fname, a:ftype) + return + endif + endif + + " Save the current window number + let save_winnr = winnr() + + " Goto the taglist window + call s:Tlist_Window_Goto_Window() + + " Save the cursor position + let save_line = line('.') + let save_col = col('.') + + " Update the taglist window + call s:Tlist_Window_Refresh_File(fname, a:ftype) + + " Restore the cursor position + if v:version >= 601 + call cursor(save_line, save_col) + else + exe save_line + exe 'normal! ' . save_col . '|' + endif + + if winnr() != save_winnr + " Go back to the original window + call s:Tlist_Exe_Cmd_No_Acmds(save_winnr . 'wincmd w') + endif + endif + + " Update the taglist menu + if g:Tlist_Show_Menu + call s:Tlist_Menu_Update_File(1) + endif +endfunction + +" Tlist_Window_Close +" Close the taglist window +function! s:Tlist_Window_Close() + call s:Tlist_Log_Msg('Tlist_Window_Close()') + " Make sure the taglist window exists + let winnum = bufwinnr(g:TagList_title) + if winnum == -1 + call s:Tlist_Warning_Msg('Error: Taglist window is not open') + return + endif + + if winnr() == winnum + " Already in the taglist window. Close it and return. + " Store the buffer that was selected prior to the taglist buffer + let prev_buf = bufnr('#') + if winbufnr(2) != -1 + " If a window other than the taglist window is open, + " then only close the taglist window. + close + call s:Tlist_Exe_Cmd_No_Acmds(bufwinnr(prev_buf) . 'wincmd w') + endif + else + " Goto the taglist window, close it and then come back to the + " original window + let curbufnr = bufnr('%') + exe winnum . 'wincmd w' + close + " Need to jump back to the original window only if we are not + " already in that window + let winnum = bufwinnr(curbufnr) + if winnr() != winnum + exe winnum . 'wincmd w' + endif + endif +endfunction + +" Tlist_Window_Mark_File_Window +" Mark the current window as the file window to use when jumping to a tag. +" Only if the current window is a non-plugin, non-preview and non-taglist +" window +function! s:Tlist_Window_Mark_File_Window() + if getbufvar('%', '&buftype') == '' && !&previewwindow + let w:tlist_file_window = "yes" + endif +endfunction + +" Tlist_Window_Open +" Open and refresh the taglist window +function! s:Tlist_Window_Open() + call s:Tlist_Log_Msg('Tlist_Window_Open()') + " If the window is open, jump to it + let winnum = bufwinnr(g:TagList_title) + if winnum != -1 + " Jump to the existing window + if winnr() != winnum + exe winnum . 'wincmd w' + endif + return + endif + + if s:tlist_app_name == "winmanager" + " Taglist plugin is no longer part of the winmanager app + let s:tlist_app_name = "none" + endif + + " Get the filename and filetype for the specified buffer + let curbuf_name = fnamemodify(bufname('%'), ':p') + let curbuf_ftype = s:Tlist_Get_Buffer_Filetype('%') + let cur_lnum = line('.') + + " Mark the current window as the desired window to open a file when a tag + " is selected. + call s:Tlist_Window_Mark_File_Window() + + " Open the taglist window + call s:Tlist_Window_Create() + + call s:Tlist_Window_Refresh() + + if g:Tlist_Show_One_File + " Add only the current buffer and file + " + " If the file doesn't support tag listing, skip it + if !s:Tlist_Skip_File(curbuf_name, curbuf_ftype) + call s:Tlist_Window_Refresh_File(curbuf_name, curbuf_ftype) + endif + endif + + if g:Tlist_File_Fold_Auto_Close + " Open the fold for the current file, as all the folds in + " the taglist window are closed + let fidx = s:Tlist_Get_File_Index(curbuf_name) + if fidx != -1 + exe "silent! " . s:tlist_{fidx}_start . "," . + \ s:tlist_{fidx}_end . "foldopen!" + endif + endif + + " Highlight the current tag + call s:Tlist_Window_Highlight_Tag(curbuf_name, cur_lnum, 1, 1) +endfunction + +" Tlist_Window_Toggle() +" Open or close a taglist window +function! s:Tlist_Window_Toggle() + call s:Tlist_Log_Msg('Tlist_Window_Toggle()') + " If taglist window is open then close it. + let winnum = bufwinnr(g:TagList_title) + if winnum != -1 + call s:Tlist_Window_Close() + return + endif + + " Store the current buffer + let current_buf = winbufnr(0) + call s:Tlist_Window_Open() + + " Go back to the original window, if Tlist_GainFocus_On_ToggleOpen is not + " set + if !g:Tlist_GainFocus_On_ToggleOpen + let prev_win = bufwinnr(current_buf) + call s:Tlist_Exe_Cmd_No_Acmds(prev_win . 'wincmd w') + endif + + " Update the taglist menu + if g:Tlist_Show_Menu + call s:Tlist_Menu_Update_File(0) + endif +endfunction + +" Tlist_Process_Filelist +" Process multiple files. Each filename is separated by "\n" +" Returns the number of processed files +function! s:Tlist_Process_Filelist(file_names) + let flist = a:file_names + + " Enable lazy screen updates + let old_lazyredraw = &lazyredraw + set lazyredraw + + " Keep track of the number of processed files + let fcnt = 0 + + " Process one file at a time + while flist != '' + let nl_idx = stridx(flist, "\n") + let one_file = strpart(flist, 0, nl_idx) + + " Remove the filename from the list + let flist = strpart(flist, nl_idx + 1) + + if one_file == '' + continue + endif + + " Skip directories + if isdirectory(one_file) + continue + endif + + let ftype = s:Tlist_Detect_Filetype(one_file) + + echon "\r " + echon "\rProcessing tags for " . fnamemodify(one_file, ':p:t') + + let fcnt = fcnt + 1 + + call Tlist_Update_File(one_file, ftype) + endwhile + + " Clear the displayed informational messages + echon "\r " + + " Restore the previous state + let &lazyredraw = old_lazyredraw + + return fcnt +endfunction + +" Tlist_Process_Dir +" Process the files in a directory matching the specified pattern +function! s:Tlist_Process_Dir(dir_name, pat) + let flist = glob(a:dir_name . '/' . a:pat) . "\n" + + let fcnt = s:Tlist_Process_Filelist(flist) + + let len = strlen(a:dir_name) + if a:dir_name[len - 1] == '\' || a:dir_name[len - 1] == '/' + let glob_expr = a:dir_name . '*' + else + let glob_expr = a:dir_name . '/*' + endif + let all_files = glob(glob_expr) . "\n" + + while all_files != '' + let nl_idx = stridx(all_files, "\n") + let one_file = strpart(all_files, 0, nl_idx) + + let all_files = strpart(all_files, nl_idx + 1) + if one_file == '' + continue + endif + + " Skip non-directory names + if !isdirectory(one_file) + continue + endif + + echon "\r " + echon "\rProcessing files in directory " . fnamemodify(one_file, ':t') + let fcnt = fcnt + s:Tlist_Process_Dir(one_file, a:pat) + endwhile + + return fcnt +endfunction + +" Tlist_Add_Files_Recursive +" Add files recursively from a directory +function! s:Tlist_Add_Files_Recursive(dir, ...) + let dir_name = fnamemodify(a:dir, ':p') + if !isdirectory(dir_name) + call s:Tlist_Warning_Msg('Error: ' . dir_name . ' is not a directory') + return + endif + + if a:0 == 1 + " User specified file pattern + let pat = a:1 + else + " Default file pattern + let pat = '*' + endif + + echon "\r " + echon "\rProcessing files in directory " . fnamemodify(dir_name, ':t') + let fcnt = s:Tlist_Process_Dir(dir_name, pat) + + echon "\rAdded " . fcnt . " files to the taglist" +endfunction + +" Tlist_Add_Files +" Add the specified list of files to the taglist +function! s:Tlist_Add_Files(...) + let flist = '' + let i = 1 + + " Get all the files matching the file patterns supplied as argument + while i <= a:0 + let flist = flist . glob(a:{i}) . "\n" + let i = i + 1 + endwhile + + if flist == '' + call s:Tlist_Warning_Msg('Error: No matching files are found') + return + endif + + let fcnt = s:Tlist_Process_Filelist(flist) + echon "\rAdded " . fcnt . " files to the taglist" +endfunction + +" Tlist_Extract_Tagtype +" Extract the tag type from the tag text +function! s:Tlist_Extract_Tagtype(tag_line) + " The tag type is after the tag prototype field. The prototype field + " ends with the /;"\t string. We add 4 at the end to skip the characters + " in this special string.. + let start = strridx(a:tag_line, '/;"' . "\t") + 4 + let end = match(a:tag_line, 'line\(no\)\?:') - 1 + let ttype = strpart(a:tag_line, start, end - start) + + return ttype +endfunction + +" Tlist_Extract_Tag_Scope +" Extract the tag scope from the tag text +function! s:Tlist_Extract_Tag_Scope(tag_line) + let start = match(a:tag_line, 'line\(no\)\?:') + let end = stridx(a:tag_line, "\t", start) + if end <= start + return {} + endif + + let tag_extras = {} + + let tag_extra = strpart(a:tag_line, end + 1) + while tag_extra != '' + let tag_extra_separator_start = stridx(tag_extra, ':') + let tag_extra_content_start = tag_extra_separator_start + 1 + let tag_extra_content_end = stridx(tag_extra, "\t") + if tag_extra_content_end == -1 + let tag_extra_content_end = strlen(tag_extra) + endif + let tag_extra_name = strpart(tag_extra, 0, tag_extra_separator_start) + let tag_extra_content = strpart(tag_extra, tag_extra_content_start, tag_extra_content_end - tag_extra_content_start) + let tag_extras[tag_extra_name] = tag_extra_content + let tag_extra = strpart(tag_extra, tag_extra_content_end + 1) + endwhile + + return tag_extras +endfunction + +function! s:Tlist_Window_Toggle_Extra(ftype, extra_name) + if !exists('g:Tlist_{a:ftype}_Hide_Extras') + return + endif + let index = index(g:Tlist_{a:ftype}_Hide_Extras, a:extra_name) + if index == -1 + call add(g:Tlist_{a:ftype}_Hide_Extras, a:extra_name) + else + unlet g:Tlist_{a:ftype}_Hide_Extras[index] + endif + if s:auto_width + let g:Tlist_WinWidth = 30 + endif + + let cur_lnum = line('.') + let cur_col = col('.') + call s:Tlist_Window_Update_File() + call s:Tlist_Window_Check_Width() + call cursor(cur_lnum, cur_col) +endfunction + +" Tlist_Refresh() +" Refresh the taglist +function! s:Tlist_Refresh() + call s:Tlist_Log_Msg('Tlist_Refresh (Skip_Refresh = ' . + \ s:Tlist_Skip_Refresh . ', ' . bufname('%') . ')') + " If we are entering the buffer from one of the taglist functions, then + " no need to refresh the taglist window again. + if s:Tlist_Skip_Refresh + " We still need to update the taglist menu + if g:Tlist_Show_Menu + call s:Tlist_Menu_Update_File(0) + endif + return + endif + + " If part of the winmanager plugin and not configured to process + " tags always and not configured to display the tags menu, then return + if (s:tlist_app_name == 'winmanager') && !g:Tlist_Process_File_Always + \ && !g:Tlist_Show_Menu + return + endif + + " Skip buffers with 'buftype' set to nofile, nowrite, quickfix or help + if &buftype != '' + return + endif + + let filename = fnamemodify(bufname('%'), ':p') + let ftype = s:Tlist_Get_Buffer_Filetype('%') + + " If the file doesn't support tag listing, skip it + if s:Tlist_Skip_File(filename, ftype) + return + endif + + let tlist_win = bufwinnr(g:TagList_title) + + " If the taglist window is not opened and not configured to process + " tags always and not displaying the tags menu, then return + if tlist_win == -1 && !g:Tlist_Process_File_Always && !g:Tlist_Show_Menu + return + endif + + let fidx = s:Tlist_Get_File_Index(filename) + if fidx == -1 + " Check whether this file is removed based on user request + " If it is, then don't display the tags for this file + if s:Tlist_User_Removed_File(filename) + return + endif + + " If the taglist should not be auto updated, then return + if !g:Tlist_Auto_Update + return + endif + endif + + let cur_lnum = line('.') + + if fidx == -1 + " Update the tags for the file + let fidx = s:Tlist_Process_File(filename, ftype) + else + let mtime = getftime(filename) + if s:tlist_{fidx}_mtime != mtime + " Invalidate the tags listed for this file + let s:tlist_{fidx}_valid = 0 + + " Update the taglist and the window + call Tlist_Update_File(filename, ftype) + + " Store the new file modification time + let s:tlist_{fidx}_mtime = mtime + endif + endif + + " Update the taglist window + if tlist_win != -1 + " Disable screen updates + let old_lazyredraw = &lazyredraw + set nolazyredraw + + " Save the current window number + let save_winnr = winnr() + + " Goto the taglist window + call s:Tlist_Window_Goto_Window() + + if !g:Tlist_Auto_Highlight_Tag || !g:Tlist_Highlight_Tag_On_BufEnter + " Save the cursor position + let save_line = line('.') + let save_col = col('.') + endif + + " Update the taglist window + call s:Tlist_Window_Refresh_File(filename, ftype) + + " Open the fold for the file + exe "silent! " . s:tlist_{fidx}_start . "," . + \ s:tlist_{fidx}_end . "foldopen!" + + if g:Tlist_Highlight_Tag_On_BufEnter && g:Tlist_Auto_Highlight_Tag + if g:Tlist_Show_One_File && s:tlist_cur_file_idx != fidx + " If displaying tags for only one file in the taglist + " window and about to display the tags for a new file, + " then center the current tag line for the new file + let center_tag_line = 1 + else + let center_tag_line = 0 + endif + + " Highlight the current tag + call s:Tlist_Window_Highlight_Tag(filename, cur_lnum, 1, center_tag_line) + else + " Restore the cursor position + if v:version >= 601 + call cursor(save_line, save_col) + else + exe save_line + exe 'normal! ' . save_col . '|' + endif + endif + + " Jump back to the original window + if save_winnr != winnr() + call s:Tlist_Exe_Cmd_No_Acmds(save_winnr . 'wincmd w') + endif + + " Restore screen updates + let &lazyredraw = old_lazyredraw + endif + + " Update the taglist menu + if g:Tlist_Show_Menu + call s:Tlist_Menu_Update_File(0) + endif +endfunction + +" Tlist_Change_Sort() +" Change the sort order of the tag listing +" caller == 'cmd', command used in the taglist window +" caller == 'menu', taglist menu +" action == 'toggle', toggle sort from name to order and vice versa +" action == 'set', set the sort order to sort_type +function! s:Tlist_Change_Sort(caller, action, sort_type) + call s:Tlist_Log_Msg('Tlist_Change_Sort (caller = ' . a:caller . + \ ', action = ' . a:action . ', sort_type = ' . a:sort_type . ')') + if a:caller == 'cmd' + let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) + if fidx == -1 + return + endif + + " Remove the previous highlighting + match none + elseif a:caller == 'menu' + let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p')) + if fidx == -1 + return + endif + endif + + if a:action == 'toggle' + let sort_type = s:tlist_{fidx}_sort_type + + " Toggle the sort order from 'name' to 'order' and vice versa + if sort_type == 'name' + let s:tlist_{fidx}_sort_type = 'order' + else + let s:tlist_{fidx}_sort_type = 'name' + endif + else + let s:tlist_{fidx}_sort_type = a:sort_type + endif + + " Invalidate the tags listed for this file + let s:tlist_{fidx}_valid = 0 + + if a:caller == 'cmd' + " Save the current line for later restoration + let curline = '\V\^' . getline('.') . '\$' + + call s:Tlist_Window_Refresh_File(s:tlist_{fidx}_filename, + \ s:tlist_{fidx}_filetype) + + exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'foldopen!' + + " Go back to the cursor line before the tag list is sorted + call search(curline, 'w') + + call s:Tlist_Menu_Update_File(1) + else + call s:Tlist_Menu_Remove_File() + + call s:Tlist_Refresh() + endif +endfunction + +" Tlist_Update_Current_File() +" Update taglist for the current buffer by regenerating the tag list +" Contributed by WEN Guopeng. +function! s:Tlist_Update_Current_File() + call s:Tlist_Log_Msg('Tlist_Update_Current_File()') + if winnr() == bufwinnr(g:TagList_title) + " In the taglist window. Update the current file + call s:Tlist_Window_Update_File() + else + " Not in the taglist window. Update the current buffer + let filename = fnamemodify(bufname('%'), ':p') + let fidx = s:Tlist_Get_File_Index(filename) + if fidx != -1 + let s:tlist_{fidx}_valid = 0 + endif + let ft = s:Tlist_Get_Buffer_Filetype('%') + call Tlist_Update_File(filename, ft) + endif +endfunction + +" Tlist_Window_Update_File() +" Update the tags displayed in the taglist window +function! s:Tlist_Window_Update_File() + call s:Tlist_Log_Msg('Tlist_Window_Update_File()') + let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) + if fidx == -1 + return + endif + + " Remove the previous highlighting + match none + + " Save the current line for later restoration + let curline = '\V\^' . getline('.') . '\$' + + let s:tlist_{fidx}_valid = 0 + + " Update the taglist window + call s:Tlist_Window_Refresh_File(s:tlist_{fidx}_filename, + \ s:tlist_{fidx}_filetype) + + exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'foldopen!' + + " Go back to the tag line before the list is updated + call search(curline, 'w') +endfunction + +" Tlist_Window_Get_Tag_Type_By_Linenum() +" Return the tag type index for the specified line in the taglist window +function! s:Tlist_Window_Get_Tag_Type_By_Linenum(fidx, lnum) + let ftype = s:tlist_{a:fidx}_filetype + + " Determine to which tag type the current line number belongs to using the + " tag type start line number and the number of tags in a tag type + let i = 1 + while i <= s:tlist_{ftype}_count + let ttype = s:tlist_{ftype}_{i}_name + let start_lnum = + \ s:tlist_{a:fidx}_start + s:tlist_{a:fidx}_{ttype}_offset + let end = start_lnum + s:tlist_{a:fidx}_{ttype}_count + if a:lnum >= start_lnum && a:lnum <= end + break + endif + let i = i + 1 + endwhile + + " Current line doesn't belong to any of the displayed tag types + if i > s:tlist_{ftype}_count + return '' + endif + + return ttype +endfunction + +" Tlist_Window_Get_Tag_Index() +" Return the tag index for the specified line in the taglist window +function! s:Tlist_Window_Get_Tag_Index(fidx, lnum) + let ttype = s:Tlist_Window_Get_Tag_Type_By_Linenum(a:fidx, a:lnum) + + " Current line doesn't belong to any of the displayed tag types + if ttype == '' + return 0 + endif + + " Compute the index into the displayed tags for the tag type + let ttype_lnum = s:tlist_{a:fidx}_start + s:tlist_{a:fidx}_{ttype}_offset + let tidx = a:lnum - ttype_lnum + if tidx == 0 + return 0 + endif + + " Get the corresponding tag line and return it + return s:tlist_{a:fidx}_{ttype}_{tidx} +endfunction + +" Tlist_Window_Highlight_Line +" Highlight the current line +function! s:Tlist_Window_Highlight_Line() + " Clear previously selected name + match none + + " Highlight the current line + if g:Tlist_Display_Prototype == 0 + let pat = '/\%' . line('.') . 'l\s\+\zs.*/' + else + let pat = '/\%' . line('.') . 'l.*/' + endif + + exe 'match TagListTagName ' . pat +endfunction + +" Tlist_Window_Open_File +" Open the specified file in either a new window or an existing window +" and place the cursor at the specified tag pattern +function! s:Tlist_Window_Open_File(win_ctrl, filename, tagpat) + call s:Tlist_Log_Msg('Tlist_Window_Open_File (' . a:filename . ',' . + \ a:win_ctrl . ')') + let prev_Tlist_Skip_Refresh = s:Tlist_Skip_Refresh + let s:Tlist_Skip_Refresh = 1 + + if s:tlist_app_name == "winmanager" + " Let the winmanager edit the file + call WinManagerFileEdit(a:filename, a:win_ctrl == 'newwin') + else + + if a:win_ctrl == 'newtab' + " Create a new tab + exe 'tabnew ' . escape(a:filename, ' ') + " Open the taglist window in the new tab + call s:Tlist_Window_Open() + endif + + if a:win_ctrl == 'checktab' + " Check whether the file is present in any of the tabs. + " If the file is present in the current tab, then use the + " current tab. + if bufwinnr(a:filename) != -1 + let file_present_in_tab = 1 + let i = tabpagenr() + else + let i = 1 + let bnum = bufnr(a:filename) + let file_present_in_tab = 0 + while i <= tabpagenr('$') + if index(tabpagebuflist(i), bnum) != -1 + let file_present_in_tab = 1 + break + endif + let i += 1 + endwhile + endif + + if file_present_in_tab + " Goto the tab containing the file + exe 'tabnext ' . i + else + " Open a new tab + exe 'tabnew ' . escape(a:filename, ' ') + + " Open the taglist window + call s:Tlist_Window_Open() + endif + endif + + let winnum = -1 + if a:win_ctrl == 'prevwin' + " Open the file in the previous window, if it is usable + let cur_win = winnr() + wincmd p + if &buftype == '' && !&previewwindow + exe "edit " . escape(a:filename, ' ') + let winnum = winnr() + else + " Previous window is not usable + exe cur_win . 'wincmd w' + endif + endif + + " Goto the window containing the file. If the window is not there, open a + " new window + if winnum == -1 + let winnum = bufwinnr(a:filename) + endif + + if winnum == -1 + " Locate the previously used window for opening a file + let fwin_num = 0 + let first_usable_win = 0 + + let i = 1 + let bnum = winbufnr(i) + while bnum != -1 + if getwinvar(i, 'tlist_file_window') == 'yes' + let fwin_num = i + break + endif + if first_usable_win == 0 && + \ getbufvar(bnum, '&buftype') == '' && + \ !getwinvar(i, '&previewwindow') + " First non-taglist, non-plugin and non-preview window + let first_usable_win = i + endif + let i = i + 1 + let bnum = winbufnr(i) + endwhile + + " If a previously used window is not found, then use the first + " non-taglist window + if fwin_num == 0 + let fwin_num = first_usable_win + endif + + if fwin_num != 0 + " Jump to the file window + exe fwin_num . "wincmd w" + + " If the user asked to jump to the tag in a new window, then split + " the existing window into two. + if a:win_ctrl == 'newwin' + split + endif + exe "edit " . escape(a:filename, ' ') + else + " Open a new window + if g:Tlist_Use_Horiz_Window + exe 'leftabove split ' . escape(a:filename, ' ') + else + if winbufnr(2) == -1 + " Only the taglist window is present + if g:Tlist_Use_Right_Window + exe 'leftabove vertical split ' . + \ escape(a:filename, ' ') + else + exe 'rightbelow vertical split ' . + \ escape(a:filename, ' ') + endif + + " Go to the taglist window to change the window size to + " the user configured value + call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') + if g:Tlist_Use_Horiz_Window + exe 'resize ' . g:Tlist_WinHeight + else + exe 'vertical resize ' . g:Tlist_WinWidth + endif + " Go back to the file window + call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') + else + " A plugin or help window is also present + wincmd w + exe 'leftabove split ' . escape(a:filename, ' ') + endif + endif + endif + " Mark the window, so that it can be reused. + call s:Tlist_Window_Mark_File_Window() + else + if v:version >= 700 + " If the file is opened in more than one window, then check + " whether the last accessed window has the selected file. + " If it does, then use that window. + let lastwin_bufnum = winbufnr(winnr('#')) + if bufnr(a:filename) == lastwin_bufnum + let winnum = winnr('#') + endif + endif + exe winnum . 'wincmd w' + + " If the user asked to jump to the tag in a new window, then split the + " existing window into two. + if a:win_ctrl == 'newwin' + split + endif + endif + endif + + " Jump to the tag + if a:tagpat != '' + " Add the current cursor position to the jump list, so that user can + " jump back using the ' and ` marks. + mark ' + silent call search(a:tagpat, 'w') + + " Bring the line to the middle of the window + normal! z. + + " If the line is inside a fold, open the fold + if foldclosed('.') != -1 + .foldopen + endif + endif + + " If the user selects to preview the tag then jump back to the + " taglist window + if a:win_ctrl == 'preview' + " Go back to the taglist window + let winnum = bufwinnr(g:TagList_title) + exe winnum . 'wincmd w' + else + " If the user has selected to close the taglist window, when a + " tag is selected, close the taglist window + if g:Tlist_Close_On_Select + call s:Tlist_Window_Goto_Window() + close + + " Go back to the window displaying the selected file + let wnum = bufwinnr(a:filename) + if wnum != -1 && wnum != winnr() + call s:Tlist_Exe_Cmd_No_Acmds(wnum . 'wincmd w') + endif + endif + endif + + let s:Tlist_Skip_Refresh = prev_Tlist_Skip_Refresh +endfunction + +" Tlist_Window_Jump_To_Tag() +" Jump to the location of the current tag +" win_ctrl == useopen - Reuse the existing file window +" win_ctrl == newwin - Open a new window +" win_ctrl == preview - Preview the tag +" win_ctrl == prevwin - Open in previous window +" win_ctrl == newtab - Open in new tab +function! s:Tlist_Window_Jump_To_Tag(win_ctrl) + call s:Tlist_Log_Msg('Tlist_Window_Jump_To_Tag(' . a:win_ctrl . ')') + " Do not process comment lines and empty lines + let curline = getline('.') + if curline =~ '^\s*$' || curline[0] == '"' + return + endif + + " If inside a closed fold, then use the first line of the fold + " and jump to the file. + let lnum = foldclosed('.') + if lnum == -1 + " Jump to the selected tag or file + let lnum = line('.') + else + " Open the closed fold + .foldopen! + endif + + let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(lnum) + if fidx == -1 + return + endif + + " Get the tag output for the current tag + let tidx = s:Tlist_Window_Get_Tag_Index(fidx, lnum) + if tidx != 0 + let tagpat = s:Tlist_Get_Tag_SearchPat(fidx, tidx) + + " Highlight the tagline + call s:Tlist_Window_Highlight_Line() + else + " Selected a line which is not a tag name. Just edit the file + let tagpat = '' + endif + + call s:Tlist_Window_Open_File(a:win_ctrl, s:tlist_{fidx}_filename, tagpat) +endfunction + +" Tlist_Window_Show_Info() +" Display information about the entry under the cursor +function! s:Tlist_Window_Show_Info() + call s:Tlist_Log_Msg('Tlist_Window_Show_Info()') + + " Clear the previously displayed line + echo + + " Do not process comment lines and empty lines + let curline = getline('.') + if curline =~ '^\s*$' || curline[0] == '"' + return + endif + + " If inside a fold, then don't display the prototype + if foldclosed('.') != -1 + return + endif + + let lnum = line('.') + + " Get the file index + let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(lnum) + if fidx == -1 + return + endif + + if lnum == s:tlist_{fidx}_start + " Cursor is on a file name + let fname = s:tlist_{fidx}_filename + if strlen(fname) > 50 + let fname = fnamemodify(fname, ':t') + endif + echo fname . ', Filetype=' . s:tlist_{fidx}_filetype . + \ ', Tag count=' . s:tlist_{fidx}_tag_count + return + endif + + " Get the tag output line for the current tag + let tidx = s:Tlist_Window_Get_Tag_Index(fidx, lnum) + if tidx == 0 + " Cursor is on a tag type + let ttype = s:Tlist_Window_Get_Tag_Type_By_Linenum(fidx, lnum) + if ttype == '' + return + endif + + let ttype_name = '' + + let ftype = s:tlist_{fidx}_filetype + let i = 1 + while i <= s:tlist_{ftype}_count + if ttype == s:tlist_{ftype}_{i}_name + let ttype_name = s:tlist_{ftype}_{i}_fullname + break + endif + let i = i + 1 + endwhile + + echo 'Tag type=' . ttype_name . + \ ', Tag count=' . s:tlist_{fidx}_{ttype}_count + return + endif + + " Get the tag search pattern and display it + echo s:Tlist_Get_Tag_Prototype(fidx, tidx) +endfunction + +" Tlist_Find_Nearest_Tag_Idx +" Find the tag idx nearest to the supplied line number +" Returns -1, if a tag couldn't be found for the specified line number +function! s:Tlist_Find_Nearest_Tag_Idx(fidx, linenum) + let sort_type = s:tlist_{a:fidx}_sort_type + + let left = 1 + let right = s:tlist_{a:fidx}_tag_count + + if sort_type == 'order' + " Tags sorted by order, use a binary search. + " The idea behind this function is taken from the ctags.vim script (by + " Alexey Marinichev) available at the Vim online website. + + " If the current line is the less than the first tag, then no need to + " search + let first_lnum = s:Tlist_Get_Tag_Linenum(a:fidx, 1) + + if a:linenum < first_lnum + return -1 + endif + + while left < right + let middle = (right + left + 1) / 2 + let middle_lnum = s:Tlist_Get_Tag_Linenum(a:fidx, middle) + + if middle_lnum == a:linenum + let left = middle + break + endif + + if middle_lnum > a:linenum + let right = middle - 1 + else + let left = middle + endif + endwhile + else + " Tags sorted by name, use a linear search. (contributed by Dave + " Eggum). + " Look for a tag with a line number less than or equal to the supplied + " line number. If multiple tags are found, then use the tag with the + " line number closest to the supplied line number. IOW, use the tag + " with the highest line number. + let closest_lnum = 0 + let final_left = 0 + while left <= right + let lnum = s:Tlist_Get_Tag_Linenum(a:fidx, left) + + if lnum < a:linenum && lnum > closest_lnum + let closest_lnum = lnum + let final_left = left + elseif lnum == a:linenum + let closest_lnum = lnum + let final_left = left + break + else + let left = left + 1 + endif + endwhile + if closest_lnum == 0 + return -1 + endif + if left >= right + let left = final_left + endif + endif + + return left +endfunction + +" Tlist_Window_Highlight_Tag() +" Highlight the current tag +" cntx == 1, Called by the taglist plugin itself +" cntx == 2, Forced by the user through the TlistHighlightTag command +" center = 1, move the tag line to the center of the taglist window +function! s:Tlist_Window_Highlight_Tag(filename, cur_lnum, cntx, center) + " Highlight the current tag only if the user configured the + " taglist plugin to do so or if the user explictly invoked the + " command to highlight the current tag. + if !g:Tlist_Auto_Highlight_Tag && a:cntx == 1 + return + endif + + if a:filename == '' + return + endif + + " Make sure the taglist window is present + let winnum = bufwinnr(g:TagList_title) + if winnum == -1 + call s:Tlist_Warning_Msg('Error: Taglist window is not open') + return + endif + + let fidx = s:Tlist_Get_File_Index(a:filename) + if fidx == -1 + return + endif + + " If the file is currently not displayed in the taglist window, then retrn + if !s:tlist_{fidx}_visible + return + endif + + " If there are no tags for this file, then no need to proceed further + if s:tlist_{fidx}_tag_count == 0 + return + endif + + " Ignore all autocommands + let old_ei = &eventignore + set eventignore=all + + " Save the original window number + let org_winnr = winnr() + + if org_winnr == winnum + let in_taglist_window = 1 + else + let in_taglist_window = 0 + endif + + " Go to the taglist window + if !in_taglist_window + exe winnum . 'wincmd w' + endif + + " Clear previously selected name + match none + + let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, a:cur_lnum) + if tidx == -1 + " Make sure the current tag line is visible in the taglist window. + " Calling the winline() function makes the line visible. Don't know + " of a better way to achieve this. + let lnum = line('.') + + if lnum < s:tlist_{fidx}_start || lnum > s:tlist_{fidx}_end + " Move the cursor to the beginning of the file + exe s:tlist_{fidx}_start + endif + + if foldclosed('.') != -1 + .foldopen + endif + + call winline() + + if !in_taglist_window + exe org_winnr . 'wincmd w' + endif + + " Restore the autocommands + let &eventignore = old_ei + return + endif + + " Extract the tag type + let ttype = s:Tlist_Get_Tag_Type_By_Tag(fidx, tidx) + + " Compute the line number + " Start of file + Start of tag type + offset + let lnum = s:tlist_{fidx}_start + s:tlist_{fidx}_{ttype}_offset + + \ s:tlist_{fidx}_{tidx}_ttype_idx + + " Goto the line containing the tag + exe lnum + + " Open the fold + if foldclosed('.') != -1 + .foldopen + endif + + if a:center + " Move the tag line to the center of the taglist window + normal! z. + else + " Make sure the current tag line is visible in the taglist window. + " Calling the winline() function makes the line visible. Don't know + " of a better way to achieve this. + call winline() + endif + + " Highlight the tag name + call s:Tlist_Window_Highlight_Line() + + " Go back to the original window + if !in_taglist_window + exe org_winnr . 'wincmd w' + endif + + " Restore the autocommands + let &eventignore = old_ei + return +endfunction + +" Tlist_Get_Tag_Prototype_By_Line +" Get the prototype for the tag on or before the specified line number in the +" current buffer +function! Tlist_Get_Tag_Prototype_By_Line(...) + if a:0 == 0 + " Arguments are not supplied. Use the current buffer name + " and line number + let filename = bufname('%') + let linenr = line('.') + elseif a:0 == 2 + " Filename and line number are specified + let filename = a:1 + let linenr = a:2 + if linenr !~ '\d\+' + " Invalid line number + return "" + endif + else + " Sufficient arguments are not supplied + let msg = 'Usage: Tlist_Get_Tag_Prototype_By_Line ' . + \ '' + call s:Tlist_Warning_Msg(msg) + return "" + endif + + " Expand the file to a fully qualified name + let filename = fnamemodify(filename, ':p') + if filename == '' + return "" + endif + + let fidx = s:Tlist_Get_File_Index(filename) + if fidx == -1 + return "" + endif + + " If there are no tags for this file, then no need to proceed further + if s:tlist_{fidx}_tag_count == 0 + return "" + endif + + " Get the tag text using the line number + let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, linenr) + if tidx == -1 + return "" + endif + + return s:Tlist_Get_Tag_Prototype(fidx, tidx) +endfunction + +" Tlist_Get_Tagname_By_Line +" Get the tag name on or before the specified line number in the +" current buffer +function! Tlist_Get_Tagname_By_Line(...) + if a:0 == 0 + " Arguments are not supplied. Use the current buffer name + " and line number + let filename = bufname('%') + let linenr = line('.') + elseif a:0 == 2 + " Filename and line number are specified + let filename = a:1 + let linenr = a:2 + if linenr !~ '\d\+' + " Invalid line number + return "" + endif + else + " Sufficient arguments are not supplied + let msg = 'Usage: Tlist_Get_Tagname_By_Line ' + call s:Tlist_Warning_Msg(msg) + return "" + endif + + " Make sure the current file has a name + let filename = fnamemodify(filename, ':p') + if filename == '' + return "" + endif + + let fidx = s:Tlist_Get_File_Index(filename) + if fidx == -1 + return "" + endif + + " If there are no tags for this file, then no need to proceed further + if s:tlist_{fidx}_tag_count == 0 + return "" + endif + + " Get the tag name using the line number + let tidx = s:Tlist_Find_Nearest_Tag_Idx(fidx, linenr) + if tidx == -1 + return "" + endif + + return s:tlist_{fidx}_{tidx}_tag_name +endfunction + +" Tlist_Window_Move_To_File +" Move the cursor to the beginning of the current file or the next file +" or the previous file in the taglist window +" dir == -1, move to start of current or previous function +" dir == 1, move to start of next function +function! s:Tlist_Window_Move_To_File(dir) + if foldlevel('.') == 0 + " Cursor is on a non-folded line (it is not in any of the files) + " Move it to a folded line + if a:dir == -1 + normal! zk + else + " While moving down to the start of the next fold, + " no need to do go to the start of the next file. + normal! zj + return + endif + endif + + let fidx = s:Tlist_Window_Get_File_Index_By_Linenum(line('.')) + if fidx == -1 + return + endif + + let cur_lnum = line('.') + + if a:dir == -1 + if cur_lnum > s:tlist_{fidx}_start + " Move to the beginning of the current file + exe s:tlist_{fidx}_start + return + endif + + if fidx != 0 + " Move to the beginning of the previous file + let fidx = fidx - 1 + else + " Cursor is at the first file, wrap around to the last file + let fidx = s:tlist_file_count - 1 + endif + + exe s:tlist_{fidx}_start + return + else + " Move to the beginning of the next file + let fidx = fidx + 1 + + if fidx >= s:tlist_file_count + " Cursor is at the last file, wrap around to the first file + let fidx = 0 + endif + + if s:tlist_{fidx}_start != 0 + exe s:tlist_{fidx}_start + endif + return + endif +endfunction + +" Tlist_Session_Load +" Load a taglist session (information about all the displayed files +" and the tags) from the specified file +function! s:Tlist_Session_Load(...) + if a:0 == 0 || a:1 == '' + call s:Tlist_Warning_Msg('Usage: TlistSessionLoad ') + return + endif + + let sessionfile = a:1 + + if !filereadable(sessionfile) + let msg = 'Taglist: Error - Unable to open file ' . sessionfile + call s:Tlist_Warning_Msg(msg) + return + endif + + " Mark the current window as the file window + call s:Tlist_Window_Mark_File_Window() + + " Source the session file + exe 'source ' . sessionfile + + let new_file_count = g:tlist_file_count + unlet! g:tlist_file_count + + let i = 0 + while i < new_file_count + let ftype = g:tlist_{i}_filetype + unlet! g:tlist_{i}_filetype + + if !exists('s:tlist_' . ftype . '_count') + if s:Tlist_FileType_Init(ftype) == 0 + let i = i + 1 + continue + endif + endif + + let fname = g:tlist_{i}_filename + unlet! g:tlist_{i}_filename + + let fidx = s:Tlist_Get_File_Index(fname) + if fidx != -1 + let s:tlist_{fidx}_visible = 0 + let i = i + 1 + continue + else + " As we are loading the tags from the session file, if this + " file was previously deleted by the user, now we need to + " add it back. So remove the file from the deleted list. + call s:Tlist_Update_Remove_List(fname, 0) + endif + + let fidx = s:Tlist_Init_File(fname, ftype) + + let s:tlist_{fidx}_filename = fname + + let s:tlist_{fidx}_sort_type = g:tlist_{i}_sort_type + unlet! g:tlist_{i}_sort_type + + let s:tlist_{fidx}_filetype = ftype + let s:tlist_{fidx}_mtime = getftime(fname) + + let s:tlist_{fidx}_start = 0 + let s:tlist_{fidx}_end = 0 + + let s:tlist_{fidx}_valid = 1 + + let s:tlist_{fidx}_tag_count = g:tlist_{i}_tag_count + unlet! g:tlist_{i}_tag_count + + let j = 1 + while j <= s:tlist_{fidx}_tag_count + let s:tlist_{fidx}_{j}_tag = g:tlist_{i}_{j}_tag + let s:tlist_{fidx}_{j}_tag_name = g:tlist_{i}_{j}_tag_name + let s:tlist_{fidx}_{j}_ttype_idx = g:tlist_{i}_{j}_ttype_idx + unlet! g:tlist_{i}_{j}_tag + unlet! g:tlist_{i}_{j}_tag_name + unlet! g:tlist_{i}_{j}_ttype_idx + let j = j + 1 + endwhile + + let j = 1 + while j <= s:tlist_{ftype}_count + let ttype = s:tlist_{ftype}_{j}_name + + if exists('g:tlist_' . i . '_' . ttype) + let s:tlist_{fidx}_{ttype} = g:tlist_{i}_{ttype} + unlet! g:tlist_{i}_{ttype} + let s:tlist_{fidx}_{ttype}_offset = 0 + let s:tlist_{fidx}_{ttype}_count = g:tlist_{i}_{ttype}_count + unlet! g:tlist_{i}_{ttype}_count + + let k = 1 + while k <= s:tlist_{fidx}_{ttype}_count + let s:tlist_{fidx}_{ttype}_{k} = g:tlist_{i}_{ttype}_{k} + unlet! g:tlist_{i}_{ttype}_{k} + let k = k + 1 + endwhile + else + let s:tlist_{fidx}_{ttype} = '' + let s:tlist_{fidx}_{ttype}_offset = 0 + let s:tlist_{fidx}_{ttype}_count = 0 + endif + + let j = j + 1 + endwhile + + let i = i + 1 + endwhile + + " If the taglist window is open, then update it + let winnum = bufwinnr(g:TagList_title) + if winnum != -1 + let save_winnr = winnr() + + " Goto the taglist window + call s:Tlist_Window_Goto_Window() + + " Refresh the taglist window + call s:Tlist_Window_Refresh() + + " Go back to the original window + if save_winnr != winnr() + call s:Tlist_Exe_Cmd_No_Acmds('wincmd p') + endif + endif +endfunction + +" Tlist_Session_Save +" Save a taglist session (information about all the displayed files +" and the tags) into the specified file +function! s:Tlist_Session_Save(...) + if a:0 == 0 || a:1 == '' + call s:Tlist_Warning_Msg('Usage: TlistSessionSave ') + return + endif + + let sessionfile = a:1 + + if s:tlist_file_count == 0 + " There is nothing to save + call s:Tlist_Warning_Msg('Warning: Taglist is empty. Nothing to save.') + return + endif + + if filereadable(sessionfile) + let ans = input('Do you want to overwrite ' . sessionfile . ' (Y/N)?') + if ans !=? 'y' + return + endif + + echo "\n" + endif + + let old_verbose = &verbose + set verbose&vim + + exe 'redir! > ' . sessionfile + + silent! echo '" Taglist session file. This file is auto-generated.' + silent! echo '" File information' + silent! echo 'let tlist_file_count = ' . s:tlist_file_count + + let i = 0 + + while i < s:tlist_file_count + " Store information about the file + silent! echo 'let tlist_' . i . "_filename = '" . + \ s:tlist_{i}_filename . "'" + silent! echo 'let tlist_' . i . '_sort_type = "' . + \ s:tlist_{i}_sort_type . '"' + silent! echo 'let tlist_' . i . '_filetype = "' . + \ s:tlist_{i}_filetype . '"' + silent! echo 'let tlist_' . i . '_tag_count = ' . + \ s:tlist_{i}_tag_count + " Store information about all the tags + let j = 1 + while j <= s:tlist_{i}_tag_count + let txt = escape(s:tlist_{i}_{j}_tag, '"\\') + silent! echo 'let tlist_' . i . '_' . j . '_tag = "' . txt . '"' + silent! echo 'let tlist_' . i . '_' . j . '_tag_name = "' . + \ s:tlist_{i}_{j}_tag_name . '"' + silent! echo 'let tlist_' . i . '_' . j . '_ttype_idx' . ' = ' . + \ s:tlist_{i}_{j}_ttype_idx + let j = j + 1 + endwhile + + " Store information about all the tags grouped by their type + let ftype = s:tlist_{i}_filetype + let j = 1 + while j <= s:tlist_{ftype}_count + let ttype = s:tlist_{ftype}_{j}_name + if s:tlist_{i}_{ttype}_count != 0 + let txt = escape(s:tlist_{i}_{ttype}, '"\') + let txt = substitute(txt, "\n", "\\\\n", 'g') + silent! echo 'let tlist_' . i . '_' . ttype . ' = "' . + \ txt . '"' + silent! echo 'let tlist_' . i . '_' . ttype . '_count = ' . + \ s:tlist_{i}_{ttype}_count + let k = 1 + while k <= s:tlist_{i}_{ttype}_count + silent! echo 'let tlist_' . i . '_' . ttype . '_' . k . + \ ' = ' . s:tlist_{i}_{ttype}_{k} + let k = k + 1 + endwhile + endif + let j = j + 1 + endwhile + + silent! echo + + let i = i + 1 + endwhile + + redir END + + let &verbose = old_verbose +endfunction + +" Tlist_Buffer_Removed +" A buffer is removed from the Vim buffer list. Remove the tags defined +" for that file +function! s:Tlist_Buffer_Removed(filename) + call s:Tlist_Log_Msg('Tlist_Buffer_Removed (' . a:filename . ')') + + " Make sure a valid filename is supplied + if a:filename == '' + return + endif + + " Get tag list index of the specified file + let fidx = s:Tlist_Get_File_Index(a:filename) + if fidx == -1 + " File not present in the taglist + return + endif + + " Remove the file from the list + call s:Tlist_Remove_File(fidx, 0) +endfunction + +" When a buffer is deleted, remove the file from the taglist +autocmd BufDelete * silent call s:Tlist_Buffer_Removed(expand(':p')) + +" Tlist_Window_Open_File_Fold +" Open the fold for the specified file and close the fold for all the +" other files +function! s:Tlist_Window_Open_File_Fold(acmd_bufnr) + call s:Tlist_Log_Msg('Tlist_Window_Open_File_Fold (' . a:acmd_bufnr . ')') + + " Make sure the taglist window is present + let winnum = bufwinnr(g:TagList_title) + if winnum == -1 + call s:Tlist_Warning_Msg('Taglist: Error - Taglist window is not open') + return + endif + + " Save the original window number + let org_winnr = winnr() + if org_winnr == winnum + let in_taglist_window = 1 + else + let in_taglist_window = 0 + endif + + if in_taglist_window + " When entering the taglist window, no need to update the folds + return + endif + + " Go to the taglist window + if !in_taglist_window + call s:Tlist_Exe_Cmd_No_Acmds(winnum . 'wincmd w') + endif + + " Close all the folds + silent! %foldclose + + " Get tag list index of the specified file + let fname = fnamemodify(bufname(a:acmd_bufnr + 0), ':p') + if filereadable(fname) + let fidx = s:Tlist_Get_File_Index(fname) + if fidx != -1 + " Open the fold for the file + exe "silent! " . s:tlist_{fidx}_start . "," . + \ s:tlist_{fidx}_end . "foldopen" + endif + endif + + " Go back to the original window + if !in_taglist_window + call s:Tlist_Exe_Cmd_No_Acmds(org_winnr . 'wincmd w') + endif +endfunction + +" Tlist_Window_Check_Auto_Open +" Open the taglist window automatically on Vim startup. +" Open the window only when files present in any of the Vim windows support +" tags. +function! s:Tlist_Window_Check_Auto_Open() + let open_window = 0 + + let i = 1 + let buf_num = winbufnr(i) + while buf_num != -1 + let filename = fnamemodify(bufname(buf_num), ':p') + let ft = s:Tlist_Get_Buffer_Filetype(buf_num) + if !s:Tlist_Skip_File(filename, ft) + let open_window = 1 + break + endif + let i = i + 1 + let buf_num = winbufnr(i) + endwhile + + if open_window + call s:Tlist_Window_Toggle() + endif +endfunction + +" Tlist_Refresh_Folds +" Remove and create the folds for all the files displayed in the taglist +" window. Used after entering a tab. If this is not done, then the folds +" are not properly created for taglist windows displayed in multiple tabs. +function! s:Tlist_Refresh_Folds() + let winnum = bufwinnr(g:TagList_title) + if winnum == -1 + return + endif + + let save_wnum = winnr() + exe winnum . 'wincmd w' + + " First remove all the existing folds + normal! zE + + " Create the folds for each in the tag list + let fidx = 0 + while fidx < s:tlist_file_count + let ftype = s:tlist_{fidx}_filetype + + " Create the folds for each tag type in a file + let j = 1 + while j <= s:tlist_{ftype}_count + let ttype = s:tlist_{ftype}_{j}_name + if s:tlist_{fidx}_{ttype}_count + let s = s:tlist_{fidx}_start + s:tlist_{fidx}_{ttype}_offset + let e = s + s:tlist_{fidx}_{ttype}_count + exe s . ',' . e . 'fold' + endif + let j = j + 1 + endwhile + + exe s:tlist_{fidx}_start . ',' . s:tlist_{fidx}_end . 'fold' + exe 'silent! ' . s:tlist_{fidx}_start . ',' . + \ s:tlist_{fidx}_end . 'foldopen!' + let fidx = fidx + 1 + endwhile + + exe save_wnum . 'wincmd w' +endfunction + +function! s:Tlist_Menu_Add_Base_Menu() + call s:Tlist_Log_Msg('Adding the base menu') + + " Add the menu + anoremenu T&ags.Refresh\ menu :call Tlist_Menu_Refresh() + anoremenu T&ags.Sort\ menu\ by.Name + \ :call Tlist_Change_Sort('menu', 'set', 'name') + anoremenu T&ags.Sort\ menu\ by.Order + \ :call Tlist_Change_Sort('menu', 'set', 'order') + anoremenu T&ags.-SEP1- : + + if &mousemodel =~ 'popup' + anoremenu PopUp.T&ags.Refresh\ menu + \ :call Tlist_Menu_Refresh() + anoremenu PopUp.T&ags.Sort\ menu\ by.Name + \ :call Tlist_Change_Sort('menu', 'set', 'name') + anoremenu PopUp.T&ags.Sort\ menu\ by.Order + \ :call Tlist_Change_Sort('menu', 'set', 'order') + anoremenu PopUp.T&ags.-SEP1- : + endif +endfunction + +let s:menu_char_prefix = + \ '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' + +" Tlist_Menu_Get_Tag_Type_Cmd +" Get the menu command for the specified tag type +" fidx - File type index +" ftype - File Type +" add_ttype_name - To add or not to add the tag type name to the menu entries +" ttype_idx - Tag type index +function! s:Tlist_Menu_Get_Tag_Type_Cmd(fidx, ftype, add_ttype_name, ttype_idx) + " Curly brace variable name optimization + let ftype_ttype_idx = a:ftype . '_' . a:ttype_idx + + let ttype = s:tlist_{ftype_ttype_idx}_name + if a:add_ttype_name + " If the tag type name contains space characters, escape it. This + " will be used to create the menu entries. + let ttype_fullname = escape(s:tlist_{ftype_ttype_idx}_fullname, ' ') + endif + + " Curly brace variable name optimization + let fidx_ttype = a:fidx . '_' . ttype + + " Number of tag entries for this tag type + let tcnt = s:tlist_{fidx_ttype}_count + if tcnt == 0 " No entries for this tag type + return '' + endif + + let mcmd = '' + + " Create the menu items for the tags. + " Depending on the number of tags of this type, split the menu into + " multiple sub-menus, if needed. + if tcnt > g:Tlist_Max_Submenu_Items + let j = 1 + while j <= tcnt + let final_index = j + g:Tlist_Max_Submenu_Items - 1 + if final_index > tcnt + let final_index = tcnt + endif + + " Extract the first and last tag name and form the + " sub-menu name + let tidx = s:tlist_{fidx_ttype}_{j} + let first_tag = s:tlist_{a:fidx}_{tidx}_tag_name + + let tidx = s:tlist_{fidx_ttype}_{final_index} + let last_tag = s:tlist_{a:fidx}_{tidx}_tag_name + + " Truncate the names, if they are greater than the + " max length + let first_tag = strpart(first_tag, 0, g:Tlist_Max_Tag_Length) + let last_tag = strpart(last_tag, 0, g:Tlist_Max_Tag_Length) + + " Form the menu command prefix + let m_prefix = 'anoremenu T\&ags.' + if a:add_ttype_name + let m_prefix = m_prefix . ttype_fullname . '.' + endif + let m_prefix = m_prefix . first_tag . '\.\.\.' . last_tag . '.' + + " Character prefix used to number the menu items (hotkey) + let m_prefix_idx = 0 + + while j <= final_index + let tidx = s:tlist_{fidx_ttype}_{j} + + let tname = s:tlist_{a:fidx}_{tidx}_tag_name + + let mcmd = mcmd . m_prefix . '\&' . + \ s:menu_char_prefix[m_prefix_idx] . '\.' . + \ tname . ' :call Tlist_Menu_Jump_To_Tag(' . + \ tidx . ')|' + + let m_prefix_idx = m_prefix_idx + 1 + let j = j + 1 + endwhile + endwhile + else + " Character prefix used to number the menu items (hotkey) + let m_prefix_idx = 0 + + let m_prefix = 'anoremenu T\&ags.' + if a:add_ttype_name + let m_prefix = m_prefix . ttype_fullname . '.' + endif + let j = 1 + while j <= tcnt + let tidx = s:tlist_{fidx_ttype}_{j} + + let tname = s:tlist_{a:fidx}_{tidx}_tag_name + + let mcmd = mcmd . m_prefix . '\&' . + \ s:menu_char_prefix[m_prefix_idx] . '\.' . + \ tname . ' :call Tlist_Menu_Jump_To_Tag(' . tidx + \ . ')|' + + let m_prefix_idx = m_prefix_idx + 1 + let j = j + 1 + endwhile + endif + + return mcmd +endfunction + +" Update the taglist menu with the tags for the specified file +function! s:Tlist_Menu_File_Refresh(fidx) + call s:Tlist_Log_Msg('Refreshing the tag menu for ' . s:tlist_{a:fidx}_filename) + " The 'B' flag is needed in the 'cpoptions' option + let old_cpoptions = &cpoptions + set cpoptions&vim + + exe s:tlist_{a:fidx}_menu_cmd + + " Update the popup menu (if enabled) + if &mousemodel =~ 'popup' + let cmd = substitute(s:tlist_{a:fidx}_menu_cmd, ' T\\&ags\.', + \ ' PopUp.T\\\&ags.', "g") + exe cmd + endif + + " The taglist menu is not empty now + let s:tlist_menu_empty = 0 + + " Restore the 'cpoptions' settings + let &cpoptions = old_cpoptions +endfunction + +" Tlist_Menu_Update_File +" Add the taglist menu +function! s:Tlist_Menu_Update_File(clear_menu) + if !has('gui_running') + " Not running in GUI mode + return + endif + + call s:Tlist_Log_Msg('Updating the tag menu, clear_menu = ' . a:clear_menu) + + " Remove the tags menu + if a:clear_menu + call s:Tlist_Menu_Remove_File() + + endif + + " Skip buffers with 'buftype' set to nofile, nowrite, quickfix or help + if &buftype != '' + return + endif + + let filename = fnamemodify(bufname('%'), ':p') + let ftype = s:Tlist_Get_Buffer_Filetype('%') + + " If the file doesn't support tag listing, skip it + if s:Tlist_Skip_File(filename, ftype) + return + endif + + let fidx = s:Tlist_Get_File_Index(filename) + if fidx == -1 || !s:tlist_{fidx}_valid + " Check whether this file is removed based on user request + " If it is, then don't display the tags for this file + if s:Tlist_User_Removed_File(filename) + return + endif + + " Process the tags for the file + let fidx = s:Tlist_Process_File(filename, ftype) + if fidx == -1 + return + endif + endif + + let fname = escape(fnamemodify(bufname('%'), ':t'), '.') + if fname != '' + exe 'anoremenu T&ags.' . fname . ' ' + anoremenu T&ags.-SEP2- : + endif + + if !s:tlist_{fidx}_tag_count + return + endif + + if s:tlist_{fidx}_menu_cmd != '' + " Update the menu with the cached command + call s:Tlist_Menu_File_Refresh(fidx) + + return + endif + + " We are going to add entries to the tags menu, so the menu won't be + " empty + let s:tlist_menu_empty = 0 + + let cmd = '' + + " Determine whether the tag type name needs to be added to the menu + " If more than one tag type is present in the taglisting for a file, + " then the tag type name needs to be present + let add_ttype_name = -1 + let i = 1 + while i <= s:tlist_{ftype}_count && add_ttype_name < 1 + let ttype = s:tlist_{ftype}_{i}_name + if s:tlist_{fidx}_{ttype}_count + let add_ttype_name = add_ttype_name + 1 + endif + let i = i + 1 + endwhile + + " Process the tags by the tag type and get the menu command + let i = 1 + while i <= s:tlist_{ftype}_count + let mcmd = s:Tlist_Menu_Get_Tag_Type_Cmd(fidx, ftype, add_ttype_name, i) + if mcmd != '' + let cmd = cmd . mcmd + endif + + let i = i + 1 + endwhile + + " Cache the menu command for reuse + let s:tlist_{fidx}_menu_cmd = cmd + + " Update the menu + call s:Tlist_Menu_File_Refresh(fidx) +endfunction + +" Tlist_Menu_Remove_File +" Remove the tags displayed in the tags menu +function! s:Tlist_Menu_Remove_File() + if !has('gui_running') || s:tlist_menu_empty + return + endif + + call s:Tlist_Log_Msg('Removing the tags menu for a file') + + " Cleanup the Tags menu + silent! unmenu T&ags + if &mousemodel =~ 'popup' + silent! unmenu PopUp.T&ags + endif + + " Add a dummy menu item to retain teared off menu + noremenu T&ags.Dummy l + + silent! unmenu! T&ags + if &mousemodel =~ 'popup' + silent! unmenu! PopUp.T&ags + endif + + call s:Tlist_Menu_Add_Base_Menu() + + " Remove the dummy menu item + unmenu T&ags.Dummy + + let s:tlist_menu_empty = 1 +endfunction + +" Tlist_Menu_Refresh +" Refresh the taglist menu +function! s:Tlist_Menu_Refresh() + call s:Tlist_Log_Msg('Refreshing the tags menu') + let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p')) + if fidx != -1 + " Invalidate the cached menu command + let s:tlist_{fidx}_menu_cmd = '' + endif + + " Update the taglist, menu and window + call s:Tlist_Update_Current_File() +endfunction + +" Tlist_Menu_Jump_To_Tag +" Jump to the selected tag +function! s:Tlist_Menu_Jump_To_Tag(tidx) + let fidx = s:Tlist_Get_File_Index(fnamemodify(bufname('%'), ':p')) + if fidx == -1 + return + endif + + let tagpat = s:Tlist_Get_Tag_SearchPat(fidx, a:tidx) + if tagpat == '' + return + endif + + " Add the current cursor position to the jump list, so that user can + " jump back using the ' and ` marks. + mark ' + + silent call search(tagpat, 'w') + + " Bring the line to the middle of the window + normal! z. + + " If the line is inside a fold, open the fold + if foldclosed('.') != -1 + .foldopen + endif +endfunction + +" Tlist_Menu_Init +" Initialize the taglist menu +function! s:Tlist_Menu_Init() + call s:Tlist_Menu_Add_Base_Menu() + + " Automatically add the tags defined in the current file to the menu + augroup TagListMenuCmds + autocmd! + + if !g:Tlist_Process_File_Always + autocmd BufEnter * call s:Tlist_Refresh() + endif + autocmd BufLeave * call s:Tlist_Menu_Remove_File() + augroup end + + call s:Tlist_Menu_Update_File(0) +endfunction + +" Tlist_Vim_Session_Load +" Initialize the taglist window/buffer, which is created when loading +" a Vim session file. +function! s:Tlist_Vim_Session_Load() + call s:Tlist_Log_Msg('Tlist_Vim_Session_Load') + + " Initialize the taglist window + call s:Tlist_Window_Init() + + " Refresh the taglist window + call s:Tlist_Window_Refresh() +endfunction + +" Tlist_Set_App +" Set the name of the external plugin/application to which taglist +" belongs. +" Taglist plugin is part of another plugin like cream or winmanager. +function! Tlist_Set_App(name) + if a:name == "" + return + endif + + let s:tlist_app_name = a:name +endfunction + +" Winmanager integration + +" Initialization required for integration with winmanager +function! TagList_Start() + " If current buffer is not taglist buffer, then don't proceed + if bufname('%') != '__Tag_List__' + return + endif + + call Tlist_Set_App('winmanager') + + " Get the current filename from the winmanager plugin + let bufnum = WinManagerGetLastEditedFile() + if bufnum != -1 + let filename = fnamemodify(bufname(bufnum), ':p') + let ftype = s:Tlist_Get_Buffer_Filetype(bufnum) + endif + + " Initialize the taglist window, if it is not already initialized + if !exists('s:tlist_window_initialized') || !s:tlist_window_initialized + call s:Tlist_Window_Init() + call s:Tlist_Window_Refresh() + let s:tlist_window_initialized = 1 + endif + + " Update the taglist window + if bufnum != -1 + if !s:Tlist_Skip_File(filename, ftype) && g:Tlist_Auto_Update + call s:Tlist_Window_Refresh_File(filename, ftype) + endif + endif +endfunction + +function! TagList_IsValid() + return 0 +endfunction + +function! TagList_WrapUp() + return 0 +endfunction + +" restore 'cpo' +let &cpo = s:cpo_save +unlet s:cpo_save + diff --git a/addons/taglist-plus/version b/addons/taglist-plus/version new file mode 100644 index 0000000..524cb55 --- /dev/null +++ b/addons/taglist-plus/version @@ -0,0 +1 @@ +1.1.1 diff --git a/addons/tlib b/addons/tlib new file mode 160000 index 0000000..992c218 --- /dev/null +++ b/addons/tlib @@ -0,0 +1 @@ +Subproject commit 992c21804d003faffcaec0014a5f61e2ce76f57e diff --git a/addons/vim-addon-manager b/addons/vim-addon-manager new file mode 160000 index 0000000..4b14491 --- /dev/null +++ b/addons/vim-addon-manager @@ -0,0 +1 @@ +Subproject commit 4b144911640d8e01a618d90df45422067f2d8481 diff --git a/addons/vim-addon-manager-known-repositories b/addons/vim-addon-manager-known-repositories new file mode 160000 index 0000000..942bc28 --- /dev/null +++ b/addons/vim-addon-manager-known-repositories @@ -0,0 +1 @@ +Subproject commit 942bc285696f6f2cbda9a2b7c2ddd755fdcff592 diff --git a/addons/vim-addon-mw-utils b/addons/vim-addon-mw-utils new file mode 160000 index 0000000..a1b611a --- /dev/null +++ b/addons/vim-addon-mw-utils @@ -0,0 +1 @@ +Subproject commit a1b611ab22745f8b877d8de4f09985a0ddf3acfd diff --git a/addons/xoria256/archive/xoria256.vim b/addons/xoria256/archive/xoria256.vim new file mode 100644 index 0000000..7d1010b --- /dev/null +++ b/addons/xoria256/archive/xoria256.vim @@ -0,0 +1,142 @@ +" Vim color file +" +" Name: xoria256.vim +" Version: 1.5 +" Maintainer: Dmitriy Y. Zotikov (xio) +" +" Should work in recent 256 color terminals. 88-color terms like urxvt are +" NOT supported. +" +" Don't forget to install 'ncurses-term' and set TERM to xterm-256color or +" similar value. +" +" Color numbers (0-255) see: +" http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html +" +" For a specific filetype highlighting rules issue :syntax list when a file of +" that type is opened. + +" Initialization {{{ +if &t_Co != 256 && ! has("gui_running") + echomsg "" + echomsg "err: please use GUI or a 256-color terminal (so that t_Co=256 could be set)" + echomsg "" + finish +endif + +set background=dark + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "xoria256" +"}}} +" Colours {{{1 +"" General {{{2 +hi Normal ctermfg=252 guifg=#d0d0d0 ctermbg=234 guibg=#1c1c1c cterm=none gui=none +hi Cursor ctermbg=214 guibg=#ffaf00 +hi CursorColumn ctermbg=238 guibg=#444444 +hi CursorLine ctermbg=237 guibg=#3a3a3a cterm=none gui=none +hi Error ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000 +hi ErrorMsg ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000 +hi FoldColumn ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 +hi Folded ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87 +hi IncSearch ctermfg=0 guifg=#000000 ctermbg=223 guibg=#ffdfaf cterm=none gui=none +hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 +hi MatchParen ctermfg=188 guifg=#dfdfdf ctermbg=68 guibg=#5f87df cterm=bold gui=bold +" TODO +" hi MoreMsg +hi NonText ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 cterm=bold gui=bold +hi Pmenu ctermfg=0 guifg=#000000 ctermbg=250 guibg=#bcbcbc +hi PmenuSel ctermfg=255 guifg=#eeeeee ctermbg=243 guibg=#767676 +hi PmenuSbar ctermbg=252 guibg=#d0d0d0 +hi PmenuThumb ctermfg=243 guifg=#767676 +hi Search ctermfg=0 guifg=#000000 ctermbg=149 guibg=#afdf5f +hi SignColumn ctermfg=248 guifg=#a8a8a8 +hi SpecialKey ctermfg=77 guifg=#5fdf5f +hi SpellBad ctermfg=160 guifg=fg ctermbg=bg cterm=underline guisp=#df0000 +hi SpellCap ctermfg=189 guifg=#dfdfff ctermbg=bg guibg=bg cterm=underline gui=underline +hi SpellRare ctermfg=168 guifg=#df5f87 ctermbg=bg guibg=bg cterm=underline gui=underline +hi SpellLocal ctermfg=98 guifg=#875fdf ctermbg=bg guibg=bg cterm=underline gui=underline +hi StatusLine ctermfg=15 guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold +hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none +hi TabLine ctermfg=fg guifg=fg ctermbg=242 guibg=#666666 cterm=none gui=none +hi TabLineFill ctermfg=fg guifg=fg ctermbg=237 guibg=#3a3a3a cterm=none gui=none +" FIXME +hi Title ctermfg=225 guifg=#ffdfff +hi Todo ctermfg=0 guifg=#000000 ctermbg=184 guibg=#dfdf00 +hi Underlined ctermfg=39 guifg=#00afff cterm=underline gui=underline +hi VertSplit ctermfg=237 guifg=#3a3a3a ctermbg=237 guibg=#3a3a3a cterm=none gui=none +" hi VIsualNOS ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff cterm=none gui=none +" hi Visual ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff +hi Visual ctermfg=255 guifg=#eeeeee ctermbg=96 guibg=#875f87 +" hi Visual ctermfg=255 guifg=#eeeeee ctermbg=24 guibg=#005f87 +hi VisualNOS ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87 +hi WildMenu ctermfg=0 guifg=#000000 ctermbg=150 guibg=#afdf87 cterm=bold gui=bold + +"" Syntax highlighting {{{2 +hi Comment ctermfg=244 guifg=#808080 +hi Constant ctermfg=229 guifg=#ffffaf +hi Identifier ctermfg=182 guifg=#dfafdf cterm=none +hi Ignore ctermfg=238 guifg=#444444 +hi Number ctermfg=180 guifg=#dfaf87 +hi PreProc ctermfg=150 guifg=#afdf87 +hi Special ctermfg=174 guifg=#df8787 +hi Statement ctermfg=110 guifg=#87afdf cterm=none gui=none +hi Type ctermfg=146 guifg=#afafdf cterm=none gui=none + +"" Special {{{2 +""" .diff {{{3 +hi diffAdded ctermfg=150 guifg=#afdf87 +hi diffRemoved ctermfg=174 guifg=#df8787 +""" vimdiff {{{3 +hi diffAdd ctermfg=bg guifg=bg ctermbg=151 guibg=#afdfaf +"hi diffDelete ctermfg=bg guifg=bg ctermbg=186 guibg=#dfdf87 cterm=none gui=none +hi diffDelete ctermfg=bg guifg=bg ctermbg=246 guibg=#949494 cterm=none gui=none +hi diffChange ctermfg=bg guifg=bg ctermbg=181 guibg=#dfafaf +hi diffText ctermfg=bg guifg=bg ctermbg=174 guibg=#df8787 cterm=none gui=none +""" HTML {{{3 +" hi htmlTag ctermfg=146 guifg=#afafdf +" hi htmlEndTag ctermfg=146 guifg=#afafdf +hi htmlTag ctermfg=244 +hi htmlEndTag ctermfg=244 +hi htmlArg ctermfg=182 guifg=#dfafdf +hi htmlValue ctermfg=187 guifg=#dfdfaf +hi htmlTitle ctermfg=254 ctermbg=95 +" hi htmlArg ctermfg=146 +" hi htmlTagName ctermfg=146 +" hi htmlString ctermfg=187 +""" django {{{3 +hi djangoVarBlock ctermfg=180 +hi djangoTagBlock ctermfg=150 +hi djangoStatement ctermfg=146 +hi djangoFilter ctermfg=174 +""" python {{{3 +hi pythonExceptions ctermfg=174 +""" NERDTree {{{3 +hi Directory ctermfg=110 guifg=#87afdf +hi treeCWD ctermfg=180 guifg=#dfaf87 +hi treeClosable ctermfg=174 guifg=#df8787 +hi treeOpenable ctermfg=150 guifg=#afdf87 +hi treePart ctermfg=244 guifg=#808080 +hi treeDirSlash ctermfg=244 guifg=#808080 +hi treeLink ctermfg=182 guifg=#dfafdf + +""" VimDebug {{{3 +" FIXME +" you may want to set SignColumn highlight in your .vimrc +" :help sign +" :help SignColumn + +" hi currentLine term=reverse cterm=reverse gui=reverse +" hi breakPoint term=NONE cterm=NONE gui=NONE +" hi empty term=NONE cterm=NONE gui=NONE + +" sign define currentLine linehl=currentLine +" sign define breakPoint linehl=breakPoint text=>> +" sign define both linehl=currentLine text=>> +" sign define empty linehl=empty + diff --git a/addons/xoria256/colors/xoria256.vim b/addons/xoria256/colors/xoria256.vim new file mode 100644 index 0000000..7d1010b --- /dev/null +++ b/addons/xoria256/colors/xoria256.vim @@ -0,0 +1,142 @@ +" Vim color file +" +" Name: xoria256.vim +" Version: 1.5 +" Maintainer: Dmitriy Y. Zotikov (xio) +" +" Should work in recent 256 color terminals. 88-color terms like urxvt are +" NOT supported. +" +" Don't forget to install 'ncurses-term' and set TERM to xterm-256color or +" similar value. +" +" Color numbers (0-255) see: +" http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html +" +" For a specific filetype highlighting rules issue :syntax list when a file of +" that type is opened. + +" Initialization {{{ +if &t_Co != 256 && ! has("gui_running") + echomsg "" + echomsg "err: please use GUI or a 256-color terminal (so that t_Co=256 could be set)" + echomsg "" + finish +endif + +set background=dark + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "xoria256" +"}}} +" Colours {{{1 +"" General {{{2 +hi Normal ctermfg=252 guifg=#d0d0d0 ctermbg=234 guibg=#1c1c1c cterm=none gui=none +hi Cursor ctermbg=214 guibg=#ffaf00 +hi CursorColumn ctermbg=238 guibg=#444444 +hi CursorLine ctermbg=237 guibg=#3a3a3a cterm=none gui=none +hi Error ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000 +hi ErrorMsg ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000 +hi FoldColumn ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 +hi Folded ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87 +hi IncSearch ctermfg=0 guifg=#000000 ctermbg=223 guibg=#ffdfaf cterm=none gui=none +hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 +hi MatchParen ctermfg=188 guifg=#dfdfdf ctermbg=68 guibg=#5f87df cterm=bold gui=bold +" TODO +" hi MoreMsg +hi NonText ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 cterm=bold gui=bold +hi Pmenu ctermfg=0 guifg=#000000 ctermbg=250 guibg=#bcbcbc +hi PmenuSel ctermfg=255 guifg=#eeeeee ctermbg=243 guibg=#767676 +hi PmenuSbar ctermbg=252 guibg=#d0d0d0 +hi PmenuThumb ctermfg=243 guifg=#767676 +hi Search ctermfg=0 guifg=#000000 ctermbg=149 guibg=#afdf5f +hi SignColumn ctermfg=248 guifg=#a8a8a8 +hi SpecialKey ctermfg=77 guifg=#5fdf5f +hi SpellBad ctermfg=160 guifg=fg ctermbg=bg cterm=underline guisp=#df0000 +hi SpellCap ctermfg=189 guifg=#dfdfff ctermbg=bg guibg=bg cterm=underline gui=underline +hi SpellRare ctermfg=168 guifg=#df5f87 ctermbg=bg guibg=bg cterm=underline gui=underline +hi SpellLocal ctermfg=98 guifg=#875fdf ctermbg=bg guibg=bg cterm=underline gui=underline +hi StatusLine ctermfg=15 guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold +hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none +hi TabLine ctermfg=fg guifg=fg ctermbg=242 guibg=#666666 cterm=none gui=none +hi TabLineFill ctermfg=fg guifg=fg ctermbg=237 guibg=#3a3a3a cterm=none gui=none +" FIXME +hi Title ctermfg=225 guifg=#ffdfff +hi Todo ctermfg=0 guifg=#000000 ctermbg=184 guibg=#dfdf00 +hi Underlined ctermfg=39 guifg=#00afff cterm=underline gui=underline +hi VertSplit ctermfg=237 guifg=#3a3a3a ctermbg=237 guibg=#3a3a3a cterm=none gui=none +" hi VIsualNOS ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff cterm=none gui=none +" hi Visual ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff +hi Visual ctermfg=255 guifg=#eeeeee ctermbg=96 guibg=#875f87 +" hi Visual ctermfg=255 guifg=#eeeeee ctermbg=24 guibg=#005f87 +hi VisualNOS ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87 +hi WildMenu ctermfg=0 guifg=#000000 ctermbg=150 guibg=#afdf87 cterm=bold gui=bold + +"" Syntax highlighting {{{2 +hi Comment ctermfg=244 guifg=#808080 +hi Constant ctermfg=229 guifg=#ffffaf +hi Identifier ctermfg=182 guifg=#dfafdf cterm=none +hi Ignore ctermfg=238 guifg=#444444 +hi Number ctermfg=180 guifg=#dfaf87 +hi PreProc ctermfg=150 guifg=#afdf87 +hi Special ctermfg=174 guifg=#df8787 +hi Statement ctermfg=110 guifg=#87afdf cterm=none gui=none +hi Type ctermfg=146 guifg=#afafdf cterm=none gui=none + +"" Special {{{2 +""" .diff {{{3 +hi diffAdded ctermfg=150 guifg=#afdf87 +hi diffRemoved ctermfg=174 guifg=#df8787 +""" vimdiff {{{3 +hi diffAdd ctermfg=bg guifg=bg ctermbg=151 guibg=#afdfaf +"hi diffDelete ctermfg=bg guifg=bg ctermbg=186 guibg=#dfdf87 cterm=none gui=none +hi diffDelete ctermfg=bg guifg=bg ctermbg=246 guibg=#949494 cterm=none gui=none +hi diffChange ctermfg=bg guifg=bg ctermbg=181 guibg=#dfafaf +hi diffText ctermfg=bg guifg=bg ctermbg=174 guibg=#df8787 cterm=none gui=none +""" HTML {{{3 +" hi htmlTag ctermfg=146 guifg=#afafdf +" hi htmlEndTag ctermfg=146 guifg=#afafdf +hi htmlTag ctermfg=244 +hi htmlEndTag ctermfg=244 +hi htmlArg ctermfg=182 guifg=#dfafdf +hi htmlValue ctermfg=187 guifg=#dfdfaf +hi htmlTitle ctermfg=254 ctermbg=95 +" hi htmlArg ctermfg=146 +" hi htmlTagName ctermfg=146 +" hi htmlString ctermfg=187 +""" django {{{3 +hi djangoVarBlock ctermfg=180 +hi djangoTagBlock ctermfg=150 +hi djangoStatement ctermfg=146 +hi djangoFilter ctermfg=174 +""" python {{{3 +hi pythonExceptions ctermfg=174 +""" NERDTree {{{3 +hi Directory ctermfg=110 guifg=#87afdf +hi treeCWD ctermfg=180 guifg=#dfaf87 +hi treeClosable ctermfg=174 guifg=#df8787 +hi treeOpenable ctermfg=150 guifg=#afdf87 +hi treePart ctermfg=244 guifg=#808080 +hi treeDirSlash ctermfg=244 guifg=#808080 +hi treeLink ctermfg=182 guifg=#dfafdf + +""" VimDebug {{{3 +" FIXME +" you may want to set SignColumn highlight in your .vimrc +" :help sign +" :help SignColumn + +" hi currentLine term=reverse cterm=reverse gui=reverse +" hi breakPoint term=NONE cterm=NONE gui=NONE +" hi empty term=NONE cterm=NONE gui=NONE + +" sign define currentLine linehl=currentLine +" sign define breakPoint linehl=breakPoint text=>> +" sign define both linehl=currentLine text=>> +" sign define empty linehl=empty + diff --git a/addons/xoria256/version b/addons/xoria256/version new file mode 100644 index 0000000..400122e --- /dev/null +++ b/addons/xoria256/version @@ -0,0 +1 @@ +1.5 \ No newline at end of file diff --git a/colors/earendel.vim b/colors/earendel.vim new file mode 100644 index 0000000..52aa178 --- /dev/null +++ b/colors/earendel.vim @@ -0,0 +1,159 @@ +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "earendel" + +execute "command! -nargs=1 Colo set background=" + +if &background == "light" + hi Normal ctermbg=15 ctermfg=0 guibg=#ffffff guifg=#000000 gui=none + + hi Cursor guibg=#000000 guifg=#ffffff gui=none + hi CursorColumn ctermbg=7 ctermfg=fg guibg=#dfdfdf gui=none + hi CursorLine ctermbg=7 ctermfg=fg guibg=#dfdfdf gui=none + hi DiffAdd guibg=#bae981 guifg=fg gui=none + hi DiffChange guibg=#8495e6 guifg=fg gui=none + hi DiffDelete guibg=#ff95a5 guifg=fg gui=none + hi DiffText guibg=#b9c2f0 guifg=fg gui=bold + hi Directory guibg=bg guifg=#272fc2 gui=none + hi ErrorMsg guibg=#ca001f guifg=#ffffff gui=bold + hi FoldColumn ctermbg=bg guibg=bg guifg=#656565 gui=none + hi Folded guibg=#cacaca guifg=#324263 gui=bold + hi IncSearch guibg=#f7b69d gui=none + hi LineNr guibg=bg guifg=#656565 gui=none + hi ModeMsg ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=bold + hi MoreMsg guibg=bg guifg=#4a4a4a gui=bold + hi NonText ctermfg=8 guibg=bg guifg=#656565 gui=bold + hi Pmenu guibg=#aab8d5 guifg=fg gui=none + hi PmenuSbar guibg=#6a83b5 guifg=fg gui=none + hi PmenuSel guibg=#fee06b guifg=fg gui=none + hi PmenuThumb guibg=#c7cfe2 guifg=fg gui=none + hi Question guibg=bg guifg=#4a4a4a gui=bold + hi Search guibg=#fee481 gui=none + hi SignColumn ctermbg=bg guibg=bg guifg=#656565 gui=none + hi SpecialKey guibg=bg guifg=#844631 gui=none + hi StatusLine ctermbg=0 ctermfg=15 guibg=#96aad3 guifg=fg gui=bold + hi StatusLineNC ctermbg=7 ctermfg=fg guibg=#bcc7de guifg=#384547 gui=none + if has("spell") + hi SpellBad guisp=#ca001f gui=undercurl + hi SpellCap guisp=#272fc2 gui=undercurl + hi SpellLocal guisp=#0f8674 gui=undercurl + hi SpellRare guisp=#d16c7a gui=undercurl + endif + hi TabLine guibg=#d4d4d4 guifg=fg gui=underline + hi TabLineFill guibg=#d4d4d4 guifg=fg gui=underline + hi TabLineSel guibg=bg guifg=fg gui=bold + hi Title guifg=fg gui=bold + hi VertSplit ctermbg=7 ctermfg=fg guibg=#bcc7de guifg=#384547 gui=none + if version >= 700 + hi Visual ctermbg=7 ctermfg=fg guibg=#b5c5e6 gui=none + else + hi Visual ctermbg=7 ctermfg=fg guibg=#b5c5e6 guifg=fg gui=none + endif + hi VisualNOS ctermbg=8 ctermfg=fg guibg=bg guifg=#4069bf gui=bold,underline + hi WarningMsg guibg=bg guifg=#ca001f gui=bold + hi WildMenu guibg=#fedc56 guifg=fg gui=bold + + hi Comment guibg=bg guifg=#558817 gui=none + hi Constant guibg=bg guifg=#a8660d gui=none + hi Error guibg=bg guifg=#bf001d gui=none + hi Identifier guibg=bg guifg=#0e7c6b gui=none + hi Ignore guibg=bg guifg=bg gui=none + hi lCursor guibg=#79bf21 guifg=#ffffff gui=none + hi MatchParen guibg=#0f8674 guifg=#ffffff gui=none + hi PreProc guibg=bg guifg=#a33243 gui=none + hi Special guibg=bg guifg=#844631 gui=none + hi Statement guibg=bg guifg=#2239a8 gui=bold + hi Todo guibg=#fedc56 guifg=#512b1e gui=bold + hi Type guibg=bg guifg=#1d318d gui=bold + hi Underlined ctermbg=bg ctermfg=fg guibg=bg guifg=#272fc2 gui=underline + + hi htmlBold ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=bold + hi htmlBoldItalic ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=bold,italic + hi htmlBoldUnderline ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=bold,underline + hi htmlBoldUnderlineItalic ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=bold,underline,italic + hi htmlItalic ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=italic + hi htmlUnderline ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=underline + hi htmlUnderlineItalic ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=underline,italic +else + hi Normal ctermbg=0 ctermfg=7 guibg=#181818 guifg=#cacaca gui=none + + hi Cursor guibg=#e5e5e5 guifg=#000000 gui=none + hi CursorColumn ctermbg=8 ctermfg=15 guibg=#404040 gui=none + hi CursorLine ctermbg=8 ctermfg=15 guibg=#404040 gui=none + hi DiffAdd guibg=#558817 guifg=#dadada gui=none + hi DiffChange guibg=#1b2e85 guifg=#dadada gui=none + hi DiffDelete guibg=#9f0018 guifg=#dadada gui=none + hi DiffText guibg=#2540ba guifg=#dadada gui=bold + hi Directory guibg=bg guifg=#8c91e8 gui=none + hi ErrorMsg guibg=#ca001f guifg=#e5e5e5 gui=bold + hi FoldColumn ctermbg=bg guibg=bg guifg=#9a9a9a gui=none + hi Folded guibg=#555555 guifg=#bfcadf gui=bold + hi IncSearch guibg=#a7380e guifg=#dadada gui=none + hi LineNr guibg=bg guifg=#9a9a9a gui=none + hi ModeMsg ctermbg=bg ctermfg=fg guibg=bg guifg=fg gui=bold + hi MoreMsg guibg=bg guifg=#b5b5b5 gui=bold + hi NonText ctermfg=8 guibg=bg guifg=#9a9a9a gui=bold + hi Pmenu guibg=#3d5078 guifg=#dadada gui=none + hi PmenuSbar guibg=#324263 guifg=#dadada gui=none + hi PmenuSel guibg=#f3c201 guifg=#000000 gui=none + hi PmenuThumb guibg=#5c77ad guifg=#dadada gui=none + hi Question guibg=bg guifg=#b5b5b5 gui=bold + hi Search guibg=#947601 guifg=#dadada gui=none + hi SignColumn ctermbg=bg guibg=bg guifg=#9a9a9a gui=none + hi SpecialKey guibg=bg guifg=#d3a901 gui=none + hi StatusLine ctermbg=7 ctermfg=0 guibg=#41609e guifg=#e5e5e5 gui=bold + hi StatusLineNC ctermbg=7 ctermfg=0 guibg=#35466a guifg=#afbacf gui=none + if has("spell") + hi SpellBad guisp=#ea0023 gui=undercurl + hi SpellCap guisp=#8c91e8 gui=undercurl + hi SpellLocal guisp=#16c9ae gui=undercurl + hi SpellRare guisp=#e09ea8 gui=undercurl + endif + hi TabLine guibg=#4a4a4a guifg=#e5e5e5 gui=underline + hi TabLineFill guibg=#4a4a4a guifg=#e5e5e5 gui=underline + hi TabLineSel guibg=bg guifg=#e5e5e5 gui=bold + hi Title ctermbg=bg ctermfg=15 guifg=#e5e5e5 gui=bold + hi VertSplit ctermbg=7 ctermfg=0 guibg=#35466a guifg=#afbacf gui=none + if version >= 700 + hi Visual ctermbg=7 ctermfg=0 guibg=#274278 gui=none + else + hi Visual ctermbg=7 ctermfg=0 guibg=#274278 guifg=fg gui=none + endif + hi VisualNOS ctermbg=8 ctermfg=0 guibg=bg guifg=#5c77ad gui=bold,underline + hi WarningMsg guibg=bg guifg=#ea0023 gui=bold + hi WildMenu guibg=#fbca01 guifg=#000000 gui=bold + + hi Comment guibg=bg guifg=#77be21 gui=none + hi Constant guibg=bg guifg=#dc8511 gui=none + hi Error guibg=bg guifg=#ea0023 gui=none + hi Identifier guibg=bg guifg=#16c9ae gui=none + hi Ignore guibg=bg guifg=bg gui=none + hi lCursor guibg=#c4ec93 guifg=#000000 gui=none + hi MatchParen guibg=#17d2b7 guifg=#000000 gui=none + hi PreProc guibg=bg guifg=#e09ea8 gui=none + hi Special guibg=bg guifg=#d3a901 gui=none + hi Statement guibg=bg guifg=#a7b4ed gui=bold + hi Todo guibg=#fedc56 guifg=#512b1e gui=bold + hi Type guibg=bg guifg=#95a4ea gui=bold + hi Underlined ctermbg=bg ctermfg=15 guibg=bg guifg=#8c91e8 gui=underline + + hi htmlBold ctermbg=bg ctermfg=15 guibg=bg guifg=fg gui=bold + hi htmlBoldItalic ctermbg=bg ctermfg=15 guibg=bg guifg=fg gui=bold,italic + hi htmlBoldUnderline ctermbg=bg ctermfg=15 guibg=bg guifg=fg gui=bold,underline + hi htmlBoldUnderlineItalic ctermbg=bg ctermfg=15 guibg=bg guifg=fg gui=bold,underline,italic + hi htmlItalic ctermbg=bg ctermfg=15 guibg=bg guifg=fg gui=italic + hi htmlUnderline ctermbg=bg ctermfg=15 guibg=bg guifg=fg gui=underline + hi htmlUnderlineItalic ctermbg=bg ctermfg=15 guibg=bg guifg=fg gui=underline,italic +endif + +hi! default link bbcodeBold htmlBold +hi! default link bbcodeBoldItalic htmlBoldItalic +hi! default link bbcodeBoldItalicUnderline htmlBoldUnderlineItalic +hi! default link bbcodeBoldUnderline htmlBoldUnderline +hi! default link bbcodeItalic htmlItalic +hi! default link bbcodeItalicUnderline htmlUnderlineItalic +hi! default link bbcodeUnderline htmlUnderline diff --git a/colors/gentooish.vim b/colors/gentooish.vim new file mode 100644 index 0000000..c823c28 --- /dev/null +++ b/colors/gentooish.vim @@ -0,0 +1,163 @@ +" Vim color file +" Name: gentooish.vim +" Author: Brian Carper +" Version: 0.3 + +set background=dark +hi clear +if exists("syntax_on") + syntax reset +endif + +if has('gui_running') + hi Normal gui=NONE guifg=#cccccc guibg=#191919 + + hi IncSearch gui=NONE guifg=#000000 guibg=#8bff95 + hi Search gui=NONE guifg=#cccccc guibg=#863132 + hi ErrorMsg gui=NONE guifg=#cccccc guibg=#863132 + hi WarningMsg gui=NONE guifg=#cccccc guibg=#863132 + hi ModeMsg gui=NONE guifg=#cccccc guibg=NONE + hi MoreMsg gui=NONE guifg=#cccccc guibg=NONE + hi Question gui=NONE guifg=#cccccc guibg=NONE + + hi StatusLine gui=BOLD guifg=#cccccc guibg=#333333 + hi User1 gui=BOLD guifg=#999999 guibg=#333333 + hi User2 gui=BOLD guifg=#8bff95 guibg=#333333 + hi StatusLineNC gui=NONE guifg=#999999 guibg=#333333 + hi VertSplit gui=NONE guifg=#cccccc guibg=#333333 + + hi WildMenu gui=BOLD guifg=#cf7dff guibg=#1F0F29 + + hi DiffText gui=NONE guifg=#000000 guibg=#4cd169 + hi DiffChange gui=NONE guifg=NONE guibg=#541691 + hi DiffDelete gui=NONE guifg=#cccccc guibg=#863132 + hi DiffAdd gui=NONE guifg=#cccccc guibg=#306d30 + + hi Cursor gui=NONE guifg=#000000 guibg=#8bff95 + + hi Folded gui=NONE guifg=#aaa400 guibg=#000000 + hi FoldColumn gui=NONE guifg=#cccccc guibg=#000000 + + hi Directory gui=NONE guifg=#8bff95 guibg=NONE + hi LineNr gui=NONE guifg=#bbbbbb guibg=#222222 + hi NonText gui=NONE guifg=#555555 guibg=NONE + hi SpecialKey gui=NONE guifg=#6f6f2f guibg=NONE + hi Title gui=NONE guifg=#9a383a guibg=NONE + hi Visual gui=NONE guifg=#cccccc guibg=#1d474f + + hi Comment gui=NONE guifg=#666666 guibg=NONE + hi Constant gui=NONE guifg=#b8bb00 guibg=NONE + hi Boolean gui=NONE guifg=#00ff00 guibg=NONE + hi String gui=NONE guifg=#5dff9e guibg=#0f291a + hi Error gui=NONE guifg=#990000 guibg=#000000 + hi Identifier gui=NONE guifg=#4cbbd1 guibg=NONE + hi Ignore gui=NONE guifg=#555555 + hi Number gui=NONE guifg=#ddaa66 guibg=NONE + hi PreProc gui=NONE guifg=#9a383a guibg=NONE + + hi Special gui=NONE guifg=#ffcd8b guibg=NONE + + hi Statement gui=NONE guifg=#4cd169 guibg=NONE + hi Todo gui=NONE guifg=#cccccc guibg=#863132 + hi Type gui=NONE guifg=#c476f1 guibg=NONE + hi Underlined gui=UNDERLINE guifg=#cccccc guibg=NONE + + hi Visual gui=NONE guifg=#ffffff guibg=#6e4287 + hi VisualNOS gui=NONE guifg=#cccccc guibg=#000000 + + hi CursorLine gui=NONE guifg=NONE guibg=#222222 + hi CursorColumn gui=NONE guifg=NONE guibg=#222222 + + hi lispList gui=NONE guifg=#555555 + + if v:version >= 700 + hi Pmenu gui=NONE guifg=#cccccc guibg=#222222 + hi PMenuSel gui=BOLD guifg=#c476f1 guibg=#000000 + hi PmenuSbar gui=NONE guifg=#cccccc guibg=#000000 + hi PmenuThumb gui=NONE guifg=#cccccc guibg=#333333 + + hi SpellBad gui=undercurl guisp=#cc6666 + hi SpellRare gui=undercurl guisp=#cc66cc + hi SpellLocal gui=undercurl guisp=#cccc66 + hi SpellCap gui=undercurl guisp=#66cccc + + hi MatchParen gui=NONE guifg=#ffffff guibg=#005500 + endif +else + " Dumped via CSApprox, then edited slightly + " (http://www.vim.org/scripts/script.php?script_id=2390) + hi SpecialKey term=bold ctermfg=58 + hi NonText term=bold ctermfg=240 + hi Directory term=bold ctermfg=120 + hi ErrorMsg term=standout ctermfg=252 ctermbg=95 + hi IncSearch term=reverse ctermfg=16 ctermbg=120 + hi Search term=reverse ctermfg=252 ctermbg=95 + hi MoreMsg term=bold ctermfg=252 + hi ModeMsg term=bold ctermfg=252 + hi LineNr term=underline ctermfg=250 ctermbg=235 + hi Question term=standout ctermfg=252 + hi StatusLine term=bold,reverse cterm=bold ctermfg=252 ctermbg=236 + hi StatusLineNC term=reverse cterm=bold ctermfg=240 ctermbg=236 + hi VertSplit term=reverse ctermfg=252 ctermbg=236 + hi Title term=bold ctermfg=95 + hi Visual term=reverse ctermfg=231 ctermbg=60 + hi VisualNOS term=bold,underline ctermfg=252 ctermbg=16 + hi WarningMsg term=standout ctermfg=252 ctermbg=95 + hi WildMenu term=standout cterm=bold ctermfg=177 ctermbg=16 + hi Folded term=standout ctermfg=142 ctermbg=16 + hi FoldColumn term=standout ctermfg=252 ctermbg=16 + hi DiffAdd term=bold ctermfg=252 ctermbg=59 + hi DiffChange term=bold ctermbg=54 + hi DiffDelete term=bold ctermfg=252 ctermbg=95 + hi DiffText term=reverse ctermfg=16 ctermbg=77 + hi SignColumn term=standout ctermfg=51 ctermbg=250 + hi TabLine term=underline cterm=underline ctermbg=248 + hi TabLineSel term=bold cterm=bold + hi TabLineFill term=reverse ctermfg=234 ctermbg=252 + hi CursorColumn term=reverse ctermbg=235 + hi CursorLine term=underline ctermbg=235 + hi Cursor ctermfg=16 ctermbg=120 + hi lCursor ctermfg=234 ctermbg=252 + hi Normal ctermfg=252 ctermbg=234 + hi Comment term=bold ctermfg=241 + hi Constant term=underline ctermfg=142 + hi Special term=bold ctermfg=222 + hi Identifier term=underline ctermfg=74 + hi Statement term=bold ctermfg=77 + hi PreProc term=underline ctermfg=95 + hi Type term=underline ctermfg=177 + hi Underlined term=underline cterm=underline ctermfg=252 + hi Ignore ctermfg=240 + hi Error term=reverse ctermfg=88 ctermbg=16 + hi Todo term=standout ctermfg=252 ctermbg=95 + hi String ctermfg=85 ctermbg=16 + hi Number ctermfg=179 + hi Boolean ctermfg=46 + hi Special term=bold ctermfg=222 + hi Identifier term=underline ctermfg=74 + hi Statement term=bold ctermfg=77 + hi PreProc term=underline ctermfg=95 + hi Type term=underline ctermfg=177 + hi Underlined term=underline cterm=underline ctermfg=252 + hi Ignore ctermfg=240 + hi Error term=reverse ctermfg=88 ctermbg=16 + hi Todo term=standout ctermfg=252 ctermbg=95 + hi String ctermfg=85 ctermbg=16 + hi Number ctermfg=179 + hi Boolean ctermfg=46 + hi User1 cterm=bold ctermfg=246 ctermbg=236 + hi User2 cterm=bold ctermfg=120 ctermbg=236 + if v:version >= 700 + hi SpellBad term=reverse cterm=undercurl ctermfg=167 + hi SpellCap term=reverse cterm=undercurl ctermfg=80 + hi SpellRare term=reverse cterm=undercurl ctermfg=170 + hi SpellLocal term=underline cterm=undercurl ctermfg=185 + hi Pmenu ctermfg=252 ctermbg=235 + hi PmenuSel cterm=bold ctermfg=177 ctermbg=16 + hi PmenuSbar ctermfg=252 ctermbg=16 + hi PmenuThumb ctermfg=252 ctermbg=236 + hi MatchParen term=reverse ctermfg=231 ctermbg=22 + endif +endif + + diff --git a/colors/jellybeans.vim b/colors/jellybeans.vim new file mode 100644 index 0000000..ca0a3a0 --- /dev/null +++ b/colors/jellybeans.vim @@ -0,0 +1,127 @@ +set background=dark + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "jellybeans" + +if version >= 700 + hi CursorLine guibg=#1c1c1c cterm=none + hi CursorColumn guibg=#1c1c1c + hi MatchParen guifg=white guibg=#80a090 gui=bold + + "Tabpages + hi TabLine guifg=black guibg=#b0b8c0 gui=italic + hi TabLineFill guifg=#9098a0 + hi TabLineSel guifg=black guibg=#f0f0f0 gui=italic,bold + + "P-Menu (auto-completion) + hi Pmenu guifg=white guibg=#000000 + hi PmenuSel guifg=#101010 guibg=#eeeeee + "PmenuSbar + "PmenuThumb +endif + +hi Visual guibg=#404040 + +"hi Cursor guifg=NONE guibg=#586068 +hi Cursor guibg=#b0d0f0 + +hi Normal guifg=#e8e8d3 guibg=#151515 ctermfg=white ctermbg=none +"hi LineNr guifg=#808080 guibg=#e0e0e0 +hi LineNr guifg=#605958 guibg=#151515 gui=none ctermfg=black +"hi Comment guifg=#5f5a60 gui=italic +hi Comment guifg=#888888 gui=italic ctermbg=none ctermfg=grey +hi Todo guifg=#808080 guibg=NONE gui=bold,italic + +hi StatusLine guifg=#f0f0f0 guibg=#101010 gui=italic +hi StatusLineNC guifg=#a0a0a0 guibg=#181818 gui=italic +hi VertSplit guifg=#181818 guibg=#181818 gui=italic + +hi Folded guibg=#384048 guifg=#a0a8b0 gui=italic ctermbg=none ctermfg=black +hi FoldColumn guibg=#384048 guifg=#a0a8b0 +hi SignColumn guibg=#384048 guifg=#a0a8b0 + +hi Title guifg=#70b950 gui=bold + +hi Constant guifg=#cf6a4c ctermfg=red +hi String guifg=#799d6a ctermfg=green +hi Delimiter guifg=#668799 ctermfg=grey +hi Special guifg=#99ad6a ctermfg=green +"hi Number guifg=#ff00fc +"hi Float +"hi Identifier guifg=#7587a6 +hi Identifier guifg=#c6b6ee ctermfg=lightcyan +" Type d: 'class' +"hi Structure guifg=#9B859D gui=underline +hi Structure guifg=#8fbfdc gui=NONE ctermfg=lightcyan +hi Function guifg=#fad07a ctermfg=yellow +" dylan: method, library, ... d: if, return, ... +"hi Statement guifg=#7187a1 gui=NONE +hi Statement guifg=#8197bf gui=NONE ctermfg=darkblue +" Keywords d: import, module... +hi PreProc guifg=#8fbfdc ctermfg=lightblue + +hi link Operator Normal + +hi Type guifg=#ffb964 gui=NONE ctermfg=yellow +hi NonText guifg=#808080 guibg=#151515 + +"hi Macro guifg=#a0b0c0 gui=underline + +"Tabs, trailing spaces, etc (lcs) +hi SpecialKey guifg=#808080 guibg=#343434 + +"hi TooLong guibg=#ff0000 guifg=#f8f8f8 + +hi Search guifg=#f0a0c0 guibg=#302028 gui=underline ctermbg=none ctermfg=magenta cterm=underline + +hi Directory guifg=#dad085 gui=NONE +hi Error guibg=#602020 + +" Diff + +hi link diffRemoved Constant +hi link diffAdded String + +" VimDiff + +hi DiffAdd guibg=#032218 ctermbg=darkgreen ctermfg=black +hi DiffChange guibg=#100920 ctermbg=darkmagenta ctermfg=black +hi DiffDelete guibg=#220000 guifg=#220000 ctermbg=darkred ctermfg=black +hi DiffText guibg=#000940 ctermbg=darkred + +" PHP + +"hi phpFunctions guifg=#c676be +hi link phpFunctions Function +hi StorageClass guifg=#c59f6f ctermfg=red + +" Ruby + +hi link rubySharpBang Comment +hi rubyClass guifg=#447799 ctermfg=darkblue +hi rubyIdentifier guifg=#c6b6fe + +hi rubyInstanceVariable guifg=#c6b6fe ctermfg=cyan +"hi rubySymbol guifg=#6677ff +hi rubySymbol guifg=#7697d6 ctermfg=blue +hi link rubyGlobalVariable rubyInstanceVariable +hi link rubyModule rubyClass +hi rubyControl guifg=#7597c6 + +hi link rubyString Special +hi rubyStringDelimiter guifg=#556633 ctermfg=darkgreen +hi link rubyInterpolationDelimiter Identifier + +hi rubyRegexpDelimiter guifg=#540063 ctermfg=magenta +hi rubyRegexp guifg=#dd0093 ctermfg=darkmagenta +hi rubyRegexpSpecial guifg=#a40073 ctermfg=magenta + +hi rubyPredefinedIdentifier guifg=#de5577 ctermfg=red + +" Tag list +hi link TagListFileName Directory diff --git a/colors/molokai.vim b/colors/molokai.vim new file mode 100644 index 0000000..985e333 --- /dev/null +++ b/colors/molokai.vim @@ -0,0 +1,211 @@ +" Vim color file +" +" Author: Tomas Restrepo +" +" Note: Based on the monokai theme for textmate +" by Wimer Hazenberg and its darker variant +" by Hamish Stuart Macpherson +" + +hi clear + +set background=dark +if version > 580 + " no guarantees for version 5.8 and below, but this makes it stop + " complaining + hi clear + if exists("syntax_on") + syntax reset + endif +endif +let g:colors_name="molokai" + +if exists("g:molokai_original") + let s:molokai_original = g:molokai_original +else + let s:molokai_original = 0 +endif + + +hi Boolean guifg=#AE81FF +hi Character guifg=#E6DB74 +hi Number guifg=#AE81FF +hi String guifg=#E6DB74 +hi Conditional guifg=#F92672 gui=bold +hi Constant guifg=#AE81FF gui=bold +hi Cursor guifg=#000000 guibg=#F8F8F0 +hi Debug guifg=#BCA3A3 gui=bold +hi Define guifg=#66D9EF +hi Delimiter guifg=#8F8F8F +hi DiffAdd guibg=#13354A +hi DiffChange guifg=#89807D guibg=#4C4745 +hi DiffDelete guifg=#960050 guibg=#1E0010 +hi DiffText guibg=#4C4745 gui=italic,bold + +hi Directory guifg=#A6E22E gui=bold +hi Error guifg=#960050 guibg=#1E0010 +hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold +hi Exception guifg=#A6E22E gui=bold +hi Float guifg=#AE81FF +hi FoldColumn guifg=#465457 guibg=#000000 +hi Folded guifg=#465457 guibg=#000000 +hi Function guifg=#A6E22E +hi Identifier guifg=#FD971F +hi Ignore guifg=#808080 guibg=bg +hi IncSearch guifg=#C4BE89 guibg=#000000 + +hi Keyword guifg=#F92672 gui=bold +hi Label guifg=#E6DB74 gui=none +hi Macro guifg=#C4BE89 gui=italic +hi SpecialKey guifg=#66D9EF gui=italic + +hi MatchParen guifg=#000000 guibg=#FD971F gui=bold +hi ModeMsg guifg=#E6DB74 +hi MoreMsg guifg=#E6DB74 +hi Operator guifg=#F92672 + +" complete menu +hi Pmenu guifg=#66D9EF guibg=#000000 +hi PmenuSel guibg=#808080 +hi PmenuSbar guibg=#080808 +hi PmenuThumb guifg=#66D9EF + +hi PreCondit guifg=#A6E22E gui=bold +hi PreProc guifg=#A6E22E +hi Question guifg=#66D9EF +hi Repeat guifg=#F92672 gui=bold +hi Search guifg=#FFFFFF guibg=#455354 +" marks column +hi SignColumn guifg=#A6E22E guibg=#232526 +hi SpecialChar guifg=#F92672 gui=bold +hi SpecialComment guifg=#465457 gui=bold +hi Special guifg=#66D9EF guibg=bg gui=italic +hi SpecialKey guifg=#888A85 gui=italic +if has("spell") + hi SpellBad guisp=#FF0000 gui=undercurl + hi SpellCap guisp=#7070F0 gui=undercurl + hi SpellLocal guisp=#70F0F0 gui=undercurl + hi SpellRare guisp=#FFFFFF gui=undercurl +endif +hi Statement guifg=#F92672 gui=bold +hi StatusLine guifg=#455354 guibg=fg +hi StatusLineNC guifg=#808080 guibg=#080808 +hi StorageClass guifg=#FD971F gui=italic +hi Structure guifg=#66D9EF +hi Tag guifg=#F92672 gui=italic +hi Title guifg=#ef5939 +hi Todo guifg=#FFFFFF guibg=bg gui=bold + +hi Typedef guifg=#66D9EF +hi Type guifg=#66D9EF gui=none +hi Underlined guifg=#808080 gui=underline + +hi VertSplit guifg=#808080 guibg=#080808 gui=bold +hi VisualNOS guibg=#403D3D +hi Visual guibg=#403D3D +hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold +hi WildMenu guifg=#66D9EF guibg=#000000 + +if s:molokai_original == 1 + hi Normal guifg=#F8F8F2 guibg=#272822 + hi Comment guifg=#75715E + hi CursorLine guibg=#3E3D32 + hi CursorColumn guibg=#3E3D32 + hi LineNr guifg=#BCBCBC guibg=#3B3A32 + hi NonText guifg=#BCBCBC guibg=#3B3A32 +else + hi Normal guifg=#F8F8F2 guibg=#1B1D1E + hi Comment guifg=#465457 + hi CursorLine guibg=#293739 + hi CursorColumn guibg=#293739 + hi LineNr guifg=#BCBCBC guibg=#232526 + hi NonText guifg=#BCBCBC guibg=#232526 +end + +" +" Support for 256-color terminal +" +if &t_Co > 255 + hi Boolean ctermfg=135 + hi Character ctermfg=144 + hi Number ctermfg=135 + hi String ctermfg=144 + hi Conditional ctermfg=161 cterm=bold + hi Constant ctermfg=135 cterm=bold + hi Cursor ctermfg=16 ctermbg=253 + hi Debug ctermfg=225 cterm=bold + hi Define ctermfg=81 + hi Delimiter ctermfg=241 + + hi DiffAdd ctermbg=24 + hi DiffChange ctermfg=181 ctermbg=239 + hi DiffDelete ctermfg=162 ctermbg=53 + hi DiffText ctermbg=102 cterm=bold + + hi Directory ctermfg=118 cterm=bold + hi Error ctermfg=219 ctermbg=89 + hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold + hi Exception ctermfg=118 cterm=bold + hi Float ctermfg=135 + hi FoldColumn ctermfg=67 ctermbg=16 + hi Folded ctermfg=67 ctermbg=16 + hi Function ctermfg=118 + hi Identifier ctermfg=208 cterm=none + hi Ignore ctermfg=244 ctermbg=232 + hi IncSearch ctermfg=193 ctermbg=16 + + hi Keyword ctermfg=161 cterm=bold + hi Label ctermfg=229 cterm=none + hi Macro ctermfg=193 + hi SpecialKey ctermfg=81 + + hi MatchParen ctermfg=16 ctermbg=208 cterm=bold + hi ModeMsg ctermfg=229 + hi MoreMsg ctermfg=229 + hi Operator ctermfg=161 + + " complete menu + hi Pmenu ctermfg=81 ctermbg=16 + hi PmenuSel ctermbg=244 + hi PmenuSbar ctermbg=232 + hi PmenuThumb ctermfg=81 + + hi PreCondit ctermfg=118 cterm=bold + hi PreProc ctermfg=118 + hi Question ctermfg=81 + hi Repeat ctermfg=161 cterm=bold + hi Search ctermfg=253 ctermbg=66 + + " marks column + hi SignColumn ctermfg=118 ctermbg=235 + hi SpecialChar ctermfg=161 cterm=bold + hi SpecialComment ctermfg=245 cterm=bold + hi Special ctermfg=81 ctermbg=232 + hi SpecialKey ctermfg=245 + + hi Statement ctermfg=161 cterm=bold + hi StatusLine ctermfg=238 ctermbg=253 + hi StatusLineNC ctermfg=244 ctermbg=232 + hi StorageClass ctermfg=208 + hi Structure ctermfg=81 + hi Tag ctermfg=161 + hi Title ctermfg=166 + hi Todo ctermfg=231 ctermbg=232 cterm=bold + + hi Typedef ctermfg=81 + hi Type ctermfg=81 cterm=none + hi Underlined ctermfg=244 cterm=underline + + hi VertSplit ctermfg=244 ctermbg=232 cterm=bold + hi VisualNOS ctermbg=238 + hi Visual ctermbg=235 + hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold + hi WildMenu ctermfg=81 ctermbg=16 + + hi Normal ctermfg=252 ctermbg=233 + hi Comment ctermfg=59 + hi CursorLine ctermbg=234 cterm=none + hi CursorColumn ctermbg=234 + hi LineNr ctermfg=250 ctermbg=234 + hi NonText ctermfg=250 ctermbg=234 +end diff --git a/colors/moria.vim b/colors/moria.vim new file mode 100644 index 0000000..6562cb7 --- /dev/null +++ b/colors/moria.vim @@ -0,0 +1,247 @@ +if exists("g:moria_style") + let s:moria_style = g:moria_style +else + let s:moria_style = &background +endif + +if exists("g:moria_monochrome") + let s:moria_monochrome = g:moria_monochrome +else + let s:moria_monochrome = 0 +endif + +if exists("g:moria_fontface") + let s:moria_fontface = g:moria_fontface +else + let s:moria_fontface = "plain" +endif + +execute "command! -nargs=1 Colo let g:moria_style = \"\" | colo moria" + +if s:moria_style == "black" || s:moria_style == "dark" + set background=dark +elseif s:moria_style == "light" || s:moria_style == "white" + set background=light +else + let s:moria_style = &background +endif + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "moria" + +if &background == "dark" + if s:moria_style == "dark" + hi Normal ctermbg=Black ctermfg=LightGray guibg=#202020 guifg=#d0d0d0 gui=none + + hi CursorColumn ctermbg=DarkGray ctermfg=White guibg=#404040 gui=none + hi CursorLine ctermbg=DarkGray ctermfg=White guibg=#404040 gui=none + elseif s:moria_style == "black" + hi Normal ctermbg=Black ctermfg=LightGray guibg=#000000 guifg=#d0d0d0 gui=none + + hi CursorColumn ctermbg=DarkGray ctermfg=White guibg=#3a3a3a gui=none + hi CursorLine ctermbg=DarkGray ctermfg=White guibg=#3a3a3a gui=none + endif + if s:moria_monochrome == 1 + hi FoldColumn ctermbg=bg guibg=bg guifg=#a0a0a0 gui=none + hi LineNr guifg=#a0a0a0 gui=none + hi MoreMsg guibg=bg guifg=#b6b6b6 gui=bold + hi NonText ctermfg=DarkGray guibg=bg guifg=#a0a0a0 gui=bold + hi Pmenu guibg=#909090 guifg=#000000 gui=none + hi PmenuSbar guibg=#707070 guifg=fg gui=none + hi PmenuThumb guibg=#d0d0d0 guifg=bg gui=none + hi SignColumn ctermbg=bg guibg=bg guifg=#a0a0a0 gui=none + hi StatusLine ctermbg=LightGray ctermfg=Black guibg=#4c4c4c guifg=fg gui=bold + hi StatusLineNC ctermbg=DarkGray ctermfg=Black guibg=#404040 guifg=fg gui=none + hi TabLine guibg=#6e6e6e guifg=fg gui=underline + hi TabLineFill guibg=#6e6e6e guifg=fg gui=underline + hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#404040 guifg=fg gui=none + if s:moria_fontface == "mixed" + hi Folded guibg=#4e4e4e guifg=#c0c0c0 gui=bold + else + hi Folded guibg=#4e4e4e guifg=#c0c0c0 gui=none + endif + else + hi FoldColumn ctermbg=bg guibg=bg guifg=#8fa5d1 gui=none + hi LineNr guifg=#8fa5d1 gui=none + hi MoreMsg guibg=bg guifg=#97abd5 gui=bold + hi NonText ctermfg=DarkGray guibg=bg guifg=#8fa5d1 gui=bold + hi Pmenu guibg=#6381be guifg=#000000 gui=none + hi PmenuSbar guibg=#41609e guifg=fg gui=none + hi PmenuThumb guibg=#bdcae3 guifg=bg gui=none + hi SignColumn ctermbg=bg guibg=bg guifg=#8fa5d1 gui=none + hi StatusLine ctermbg=LightGray ctermfg=Black guibg=#334b7d guifg=fg gui=bold + hi StatusLineNC ctermbg=DarkGray ctermfg=Black guibg=#25365a guifg=fg gui=none + hi TabLine guibg=#41609e guifg=fg gui=underline + hi TabLineFill guibg=#41609e guifg=fg gui=underline + hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#25365a guifg=fg gui=none + if s:moria_fontface == "mixed" + hi Folded guibg=#4e4e4e guifg=#bdcae3 gui=bold + else + hi Folded guibg=#4e4e4e guifg=#bdcae3 gui=none + endif + endif + hi Cursor guibg=#ffa500 guifg=bg gui=none + hi DiffAdd guibg=#008b00 guifg=fg gui=none + hi DiffChange guibg=#00008b guifg=fg gui=none + hi DiffDelete guibg=#8b0000 guifg=fg gui=none + hi DiffText guibg=#0000cd guifg=fg gui=bold + hi Directory guibg=bg guifg=#1e90ff gui=none + hi ErrorMsg guibg=#ee2c2c guifg=#ffffff gui=bold + hi IncSearch guibg=#e0cd78 guifg=#000000 gui=none + hi ModeMsg guibg=bg guifg=fg gui=bold + hi PmenuSel guibg=#e0e000 guifg=#000000 gui=none + hi Question guibg=bg guifg=#e8b87e gui=bold + hi Search guibg=#90e090 guifg=#000000 gui=none + hi SpecialKey guibg=bg guifg=#e8b87e gui=none + if has("spell") + hi SpellBad guisp=#ee2c2c gui=undercurl + hi SpellCap guisp=#2c2cee gui=undercurl + hi SpellLocal guisp=#2ceeee gui=undercurl + hi SpellRare guisp=#ee2cee gui=undercurl + endif + hi TabLineSel guibg=bg guifg=fg gui=bold + hi Title ctermbg=Black ctermfg=White guifg=fg gui=bold + if version >= 700 + hi Visual ctermbg=LightGray ctermfg=Black guibg=#606060 gui=none + else + hi Visual ctermbg=LightGray ctermfg=Black guibg=#606060 guifg=fg gui=none + endif + hi VisualNOS ctermbg=DarkGray ctermfg=Black guibg=bg guifg=#a0a0a0 gui=bold,underline + hi WarningMsg guibg=bg guifg=#ee2c2c gui=bold + hi WildMenu guibg=#e0e000 guifg=#000000 gui=bold + + hi Comment guibg=bg guifg=#d0d0a0 gui=none + hi Constant guibg=bg guifg=#87df71 gui=none + hi Error guibg=bg guifg=#ee2c2c gui=none + hi Identifier guibg=bg guifg=#7ee0ce gui=none + hi Ignore guibg=bg guifg=bg gui=none + hi lCursor guibg=#00e700 guifg=#000000 gui=none + hi MatchParen guibg=#008b8b gui=none + hi PreProc guibg=bg guifg=#d7a0d7 gui=none + hi Special guibg=bg guifg=#e8b87e gui=none + hi Todo guibg=#e0e000 guifg=#000000 gui=none + hi Underlined ctermbg=Black ctermfg=White guibg=bg guifg=#00a0ff gui=underline + + if s:moria_fontface == "mixed" + hi Statement guibg=bg guifg=#7ec0ee gui=bold + hi Type guibg=bg guifg=#f09479 gui=bold + else + hi Statement guibg=bg guifg=#7ec0ee gui=none + hi Type guibg=bg guifg=#f09479 gui=none + endif + + hi htmlBold ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold + hi htmlBoldItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold,italic + hi htmlBoldUnderline ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold,underline + hi htmlBoldUnderlineItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=bold,underline,italic + hi htmlItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=italic + hi htmlUnderline ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=underline + hi htmlUnderlineItalic ctermbg=Black ctermfg=White guibg=bg guifg=fg gui=underline,italic +elseif &background == "light" + if s:moria_style == "light" + hi Normal ctermbg=White ctermfg=Black guibg=#f0f0f0 guifg=#000000 gui=none + + hi CursorColumn ctermbg=LightGray ctermfg=Black guibg=#d8d8d8 gui=none + hi CursorLine ctermbg=LightGray ctermfg=Black guibg=#d8d8d8 gui=none + elseif s:moria_style == "white" + hi Normal ctermbg=White ctermfg=Black guibg=#ffffff guifg=#000000 gui=none + + hi CursorColumn ctermbg=LightGray ctermfg=Black guibg=#dfdfdf gui=none + hi CursorLine ctermbg=LightGray ctermfg=Black guibg=#dfdfdf gui=none + endif + if s:moria_monochrome == 1 + hi FoldColumn ctermbg=bg guibg=bg guifg=#7a7a7a gui=none + hi Folded guibg=#cfcfcf guifg=#404040 gui=bold + hi LineNr guifg=#7a7a7a gui=none + hi MoreMsg guibg=bg guifg=#505050 gui=bold + hi NonText ctermfg=DarkGray guibg=bg guifg=#7a7a7a gui=bold + hi Pmenu guibg=#9a9a9a guifg=#000000 gui=none + hi PmenuSbar guibg=#808080 guifg=fg gui=none + hi PmenuThumb guibg=#c0c0c0 guifg=fg gui=none + hi SignColumn ctermbg=bg guibg=bg guifg=#7a7a7a gui=none + hi StatusLine ctermbg=Black ctermfg=White guibg=#a0a0a0 guifg=fg gui=bold + hi StatusLineNC ctermbg=LightGray ctermfg=Black guibg=#b0b0b0 guifg=fg gui=none + hi TabLine guibg=#cdcdcd guifg=fg gui=underline + hi TabLineFill guibg=#cdcdcd guifg=fg gui=underline + hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#b0b0b0 guifg=fg gui=none + else + hi FoldColumn ctermbg=bg guibg=bg guifg=#375288 gui=none + hi Folded guibg=#cfcfcf guifg=#25365a gui=bold + hi LineNr guifg=#375288 gui=none + hi MoreMsg guibg=bg guifg=#2f4471 gui=bold + hi NonText ctermfg=DarkGray guibg=bg guifg=#375288 gui=bold + hi Pmenu guibg=#708bc5 guifg=#000000 gui=none + hi PmenuSbar guibg=#4a6db5 guifg=fg gui=none + hi PmenuThumb guibg=#a6b7db guifg=fg gui=none + hi SignColumn ctermbg=bg guibg=bg guifg=#375288 gui=none + hi StatusLine ctermbg=Black ctermfg=White guibg=#8fa5d1 guifg=fg gui=bold + hi StatusLineNC ctermbg=LightGray ctermfg=Black guibg=#a6b7db guifg=fg gui=none + hi TabLine guibg=#b8c6e2 guifg=fg gui=underline + hi TabLineFill guibg=#b8c6e2 guifg=fg gui=underline + hi VertSplit ctermbg=LightGray ctermfg=Black guibg=#a6b7db guifg=fg gui=none + endif + hi Cursor guibg=#883400 guifg=bg gui=none + hi DiffAdd guibg=#008b00 guifg=#ffffff gui=none + hi DiffChange guibg=#00008b guifg=#ffffff gui=none + hi DiffDelete guibg=#8b0000 guifg=#ffffff gui=none + hi DiffText guibg=#0000cd guifg=#ffffff gui=bold + hi Directory guibg=bg guifg=#0000f0 gui=none + hi ErrorMsg guibg=#ee2c2c guifg=#ffffff gui=bold + hi IncSearch guibg=#ffcd78 gui=none + hi ModeMsg ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold + hi PmenuSel guibg=#ffff00 guifg=#000000 gui=none + hi Question guibg=bg guifg=#813f11 gui=bold + hi Search guibg=#a0f0a0 gui=none + hi SpecialKey guibg=bg guifg=#912f11 gui=none + if has("spell") + hi SpellBad guisp=#ee2c2c gui=undercurl + hi SpellCap guisp=#2c2cee gui=undercurl + hi SpellLocal guisp=#008b8b gui=undercurl + hi SpellRare guisp=#ee2cee gui=undercurl + endif + hi TabLineSel guibg=bg guifg=fg gui=bold + hi Title guifg=fg gui=bold + if version >= 700 + hi Visual ctermbg=LightGray ctermfg=Black guibg=#c4c4c4 gui=none + else + hi Visual ctermbg=LightGray ctermfg=Black guibg=#c4c4c4 guifg=fg gui=none + endif + hi VisualNOS ctermbg=DarkGray ctermfg=Black guibg=bg guifg=#a0a0a0 gui=bold,underline + hi WarningMsg guibg=bg guifg=#ee2c2c gui=bold + hi WildMenu guibg=#ffff00 guifg=fg gui=bold + + hi Comment guibg=bg guifg=#786000 gui=none + hi Constant guibg=bg guifg=#077807 gui=none + hi Error guibg=bg guifg=#ee2c2c gui=none + hi Identifier guibg=bg guifg=#007080 gui=none + hi Ignore guibg=bg guifg=bg gui=none + hi lCursor guibg=#008000 guifg=#ffffff gui=none + hi MatchParen guibg=#00ffff gui=none + hi PreProc guibg=bg guifg=#800090 gui=none + hi Special guibg=bg guifg=#912f11 gui=none + hi Statement guibg=bg guifg=#1f3f81 gui=bold + hi Todo guibg=#ffff00 guifg=fg gui=none + hi Type guibg=bg guifg=#912f11 gui=bold + hi Underlined ctermbg=White ctermfg=Black guibg=bg guifg=#0000cd gui=underline + + hi htmlBold ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold + hi htmlBoldItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold,italic + hi htmlBoldUnderline ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold,underline + hi htmlBoldUnderlineItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=bold,underline,italic + hi htmlItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=italic + hi htmlUnderline ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=underline + hi htmlUnderlineItalic ctermbg=White ctermfg=Black guibg=bg guifg=fg gui=underline,italic +endif + +hi! default link bbcodeBold htmlBold +hi! default link bbcodeBoldItalic htmlBoldItalic +hi! default link bbcodeBoldItalicUnderline htmlBoldUnderlineItalic +hi! default link bbcodeBoldUnderline htmlBoldUnderline +hi! default link bbcodeItalic htmlItalic +hi! default link bbcodeItalicUnderline htmlUnderlineItalic +hi! default link bbcodeUnderline htmlUnderline diff --git a/colors/sand.vim b/colors/sand.vim new file mode 100644 index 0000000..cc673df --- /dev/null +++ b/colors/sand.vim @@ -0,0 +1,30 @@ +" Vim color file +" Maintainer: Tim Alexeevsky +" Last Change: 2002-03-14 +" Version: 0.5 +" URL: http://sunsite.cs.msu.su/~tim/vim/sand.vim +" +" Thanx to Hans Fugal for his colorscheme_template.vim + +set background=light +hi clear +if exists("syntax_on") + syntax reset +endif +let g:colors_name="sand" + +highlight Normal guibg=cornsilk guifg=NONE +highlight PreProc guibg=NONE guifg=Maroon4 +highlight Comment guibg=NONE guifg=SteelBlue4 +highlight Constant guibg=NONE guifg=NavajoWhite4 +highlight Special guibg=NONE guifg=SlateBlue4 +highlight Identifier guibg=NONE guifg=SeaGreen +highlight Statement guibg=NONE guifg=bisque4 +highlight Type guibg=NONE guifg=DarkOliveGreen +highlight Todo guibg=LightYellow3 guifg=Blue4 +highlight NonText guibg=NONE guifg=DarkGreen +highlight LineNr guibg=NONE guifg=Brown +highlight StatusLineNC guifg=#8090a0 +highlight StatusLine guifg=#005070 + +"vim: tw=0 sw=3 ts=3 sts=3 et diff --git a/colors/twilight.vim b/colors/twilight.vim new file mode 100644 index 0000000..f2ccdd3 --- /dev/null +++ b/colors/twilight.vim @@ -0,0 +1,114 @@ + +set background=dark + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "twilight" + +let s:grey_blue = '#8a9597' +let s:light_grey_blue = '#a0a8b0' +let s:dark_grey_blue = '#34383c' +let s:mid_grey_blue = '#64686c' +let s:beige = '#ceb67f' +let s:light_orange = '#ebc471' +let s:yellow = '#e3d796' +let s:violet = '#a999ac' +let s:green = '#a2a96f' +let s:lightgreen = '#c2c98f' +let s:red = '#d08356' +let s:cyan = '#74dad9' +let s:darkgrey = '#1a1a1a' +let s:grey = '#303030' +let s:lightgrey = '#605958' +let s:white = '#fffedc' + +if version >= 700 + hi CursorLine guibg=#262626 + hi CursorColumn guibg=#262626 + hi MatchParen guifg=white guibg=#80a090 gui=bold + + "Tabpages + hi TabLine guifg=#a09998 guibg=#202020 gui=underline + hi TabLineFill guifg=#a09998 guibg=#202020 gui=underline + hi TabLineSel guifg=#a09998 guibg=#404850 gui=underline + + "P-Menu (auto-completion) + hi Pmenu guifg=#605958 guibg=#303030 gui=underline + hi PmenuSel guifg=#a09998 guibg=#404040 gui=underline + "PmenuSbar + "PmenuThumb +endif + +hi Visual guibg=#404040 + +"hi Cursor guifg=NONE guibg=#586068 +hi Cursor guibg=#b0d0f0 + + +exe 'hi Normal guifg='.s:white .' guibg='.s:darkgrey +exe 'hi Underlined guifg='.s:white .' guibg='.s:darkgrey .' gui=underline' +exe 'hi NonText guifg='.s:lightgrey .' guibg='.s:grey +exe 'hi SpecialKey guifg='.s:grey .' guibg='.s:darkgrey + +exe 'hi LineNr guifg='.s:mid_grey_blue .' guibg='.s:dark_grey_blue .' gui=none' +exe 'hi StatusLine guifg='.s:white .' guibg='.s:grey .' gui=italic,underline' +exe 'hi StatusLineNC guifg='.s:lightgrey .' guibg='.s:grey .' gui=italic,underline' +exe 'hi VertSplit guifg='.s:grey .' guibg='.s:grey .' gui=none' + +exe 'hi Folded guifg='.s:grey_blue .' guibg='.s:dark_grey_blue .' gui=none' +exe 'hi FoldColumn guifg='.s:grey_blue .' guibg='.s:dark_grey_blue .' gui=none' +exe 'hi SignColumn guifg='.s:grey_blue .' guibg='.s:dark_grey_blue .' gui=none' + +exe 'hi Comment guifg='.s:mid_grey_blue .' guibg='.s:darkgrey .' gui=italic' +exe 'hi TODO guifg='.s:grey_blue .' guibg='.s:darkgrey .' gui=italic,bold' + +exe 'hi Title guifg='.s:red .' guibg='.s:darkgrey .' gui=underline' + +exe 'hi Constant guifg='.s:red .' guibg='.s:darkgrey .' gui=none' +exe 'hi String guifg='.s:green .' guibg='.s:darkgrey .' gui=none' +exe 'hi Special guifg='.s:lightgreen .' guibg='.s:darkgrey .' gui=none' + +exe 'hi Identifier guifg='.s:grey_blue .' guibg='.s:darkgrey .' gui=none' +exe 'hi Statement guifg='.s:beige .' guibg='.s:darkgrey .' gui=none' +exe 'hi Conditional guifg='.s:beige .' guibg='.s:darkgrey .' gui=none' +exe 'hi Repeat guifg='.s:beige .' guibg='.s:darkgrey .' gui=none' +exe 'hi Structure guifg='.s:beige .' guibg='.s:darkgrey .' gui=none' +exe 'hi Function guifg='.s:violet .' guibg='.s:darkgrey .' gui=none' + +exe 'hi PreProc guifg='.s:grey_blue .' guibg='.s:darkgrey .' gui=none' +exe 'hi Operator guifg='.s:light_orange .' guibg='.s:darkgrey .' gui=none' +exe 'hi Type guifg='.s:yellow .' guibg='.s:darkgrey .' gui=italic' + +"hi Identifier guifg=#7587a6 +" Type d: 'class' +"hi Structure guifg=#9B859D gui=underline +"hi Function guifg=#dad085 +" dylan: method, library, ... d: if, return, ... +"hi Statement guifg=#7187a1 gui=NONE +" Keywords d: import, module... +"hi PreProc guifg=#8fbfdc +"gui=underline +"hi Operator guifg=#a07020 +"hi Repeat guifg=#906040 gui=underline +"hi Type guifg=#708090 + +"hi Type guifg=#f9ee98 gui=NONE + +"hi NonText guifg=#808080 guibg=#303030 + +"hi Macro guifg=#a0b0c0 gui=underline + +"Tabs, trailing spaces, etc (lcs) +"hi SpecialKey guifg=#808080 guibg=#343434 + +"hi TooLong guibg=#ff0000 guifg=#f8f8f8 + +hi Search guifg=#606000 guibg=#c0c000 gui=bold + +hi Directory guifg=#dad085 gui=NONE +hi Error guibg=#602020 + diff --git a/colors/wombat.vim b/colors/wombat.vim new file mode 100644 index 0000000..9ad1e56 --- /dev/null +++ b/colors/wombat.vim @@ -0,0 +1,51 @@ +" Maintainer: Lars H. Nielsen (dengmao@gmail.com) +" Last Change: January 22 2007 + +set background=dark + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "wombat" + + +" Vim >= 7.0 specific colors +if version >= 700 + hi CursorLine guibg=#2d2d2d + hi CursorColumn guibg=#2d2d2d + hi MatchParen guifg=#f6f3e8 guibg=#857b6f gui=bold + hi Pmenu guifg=#f6f3e8 guibg=#444444 + hi PmenuSel guifg=#000000 guibg=#cae682 +endif + +" General colors +hi Cursor guifg=NONE guibg=#656565 gui=none +hi Normal guifg=#f6f3e8 guibg=#242424 gui=none +hi NonText guifg=#808080 guibg=#303030 gui=none +hi LineNr guifg=#857b6f guibg=#000000 gui=none +hi StatusLine guifg=#f6f3e8 guibg=#444444 gui=italic +hi StatusLineNC guifg=#857b6f guibg=#444444 gui=none +hi VertSplit guifg=#444444 guibg=#444444 gui=none +hi Folded guibg=#384048 guifg=#a0a8b0 gui=none +hi Title guifg=#f6f3e8 guibg=NONE gui=bold +hi Visual guifg=#f6f3e8 guibg=#444444 gui=none +hi SpecialKey guifg=#808080 guibg=#343434 gui=none + +" Syntax highlighting +hi Comment guifg=#99968b gui=italic +hi Todo guifg=#8f8f8f gui=italic +hi Constant guifg=#e5786d gui=none +hi String guifg=#95e454 gui=italic +hi Identifier guifg=#cae682 gui=none +hi Function guifg=#cae682 gui=none +hi Type guifg=#cae682 gui=none +hi Statement guifg=#8ac6f2 gui=none +hi Keyword guifg=#8ac6f2 gui=none +hi PreProc guifg=#e5786d gui=none +hi Number guifg=#e5786d gui=none +hi Special guifg=#e7f6da gui=none + + diff --git a/colors/xoria256.vim b/colors/xoria256.vim new file mode 100644 index 0000000..7d1010b --- /dev/null +++ b/colors/xoria256.vim @@ -0,0 +1,142 @@ +" Vim color file +" +" Name: xoria256.vim +" Version: 1.5 +" Maintainer: Dmitriy Y. Zotikov (xio) +" +" Should work in recent 256 color terminals. 88-color terms like urxvt are +" NOT supported. +" +" Don't forget to install 'ncurses-term' and set TERM to xterm-256color or +" similar value. +" +" Color numbers (0-255) see: +" http://www.calmar.ws/vim/256-xterm-24bit-rgb-color-chart.html +" +" For a specific filetype highlighting rules issue :syntax list when a file of +" that type is opened. + +" Initialization {{{ +if &t_Co != 256 && ! has("gui_running") + echomsg "" + echomsg "err: please use GUI or a 256-color terminal (so that t_Co=256 could be set)" + echomsg "" + finish +endif + +set background=dark + +hi clear + +if exists("syntax_on") + syntax reset +endif + +let colors_name = "xoria256" +"}}} +" Colours {{{1 +"" General {{{2 +hi Normal ctermfg=252 guifg=#d0d0d0 ctermbg=234 guibg=#1c1c1c cterm=none gui=none +hi Cursor ctermbg=214 guibg=#ffaf00 +hi CursorColumn ctermbg=238 guibg=#444444 +hi CursorLine ctermbg=237 guibg=#3a3a3a cterm=none gui=none +hi Error ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000 +hi ErrorMsg ctermfg=15 guifg=#ffffff ctermbg=1 guibg=#800000 +hi FoldColumn ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 +hi Folded ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87 +hi IncSearch ctermfg=0 guifg=#000000 ctermbg=223 guibg=#ffdfaf cterm=none gui=none +hi LineNr ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 +hi MatchParen ctermfg=188 guifg=#dfdfdf ctermbg=68 guibg=#5f87df cterm=bold gui=bold +" TODO +" hi MoreMsg +hi NonText ctermfg=247 guifg=#9e9e9e ctermbg=233 guibg=#121212 cterm=bold gui=bold +hi Pmenu ctermfg=0 guifg=#000000 ctermbg=250 guibg=#bcbcbc +hi PmenuSel ctermfg=255 guifg=#eeeeee ctermbg=243 guibg=#767676 +hi PmenuSbar ctermbg=252 guibg=#d0d0d0 +hi PmenuThumb ctermfg=243 guifg=#767676 +hi Search ctermfg=0 guifg=#000000 ctermbg=149 guibg=#afdf5f +hi SignColumn ctermfg=248 guifg=#a8a8a8 +hi SpecialKey ctermfg=77 guifg=#5fdf5f +hi SpellBad ctermfg=160 guifg=fg ctermbg=bg cterm=underline guisp=#df0000 +hi SpellCap ctermfg=189 guifg=#dfdfff ctermbg=bg guibg=bg cterm=underline gui=underline +hi SpellRare ctermfg=168 guifg=#df5f87 ctermbg=bg guibg=bg cterm=underline gui=underline +hi SpellLocal ctermfg=98 guifg=#875fdf ctermbg=bg guibg=bg cterm=underline gui=underline +hi StatusLine ctermfg=15 guifg=#ffffff ctermbg=239 guibg=#4e4e4e cterm=bold gui=bold +hi StatusLineNC ctermfg=249 guifg=#b2b2b2 ctermbg=237 guibg=#3a3a3a cterm=none gui=none +hi TabLine ctermfg=fg guifg=fg ctermbg=242 guibg=#666666 cterm=none gui=none +hi TabLineFill ctermfg=fg guifg=fg ctermbg=237 guibg=#3a3a3a cterm=none gui=none +" FIXME +hi Title ctermfg=225 guifg=#ffdfff +hi Todo ctermfg=0 guifg=#000000 ctermbg=184 guibg=#dfdf00 +hi Underlined ctermfg=39 guifg=#00afff cterm=underline gui=underline +hi VertSplit ctermfg=237 guifg=#3a3a3a ctermbg=237 guibg=#3a3a3a cterm=none gui=none +" hi VIsualNOS ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff cterm=none gui=none +" hi Visual ctermfg=24 guifg=#005f87 ctermbg=153 guibg=#afdfff +hi Visual ctermfg=255 guifg=#eeeeee ctermbg=96 guibg=#875f87 +" hi Visual ctermfg=255 guifg=#eeeeee ctermbg=24 guibg=#005f87 +hi VisualNOS ctermfg=255 guifg=#eeeeee ctermbg=60 guibg=#5f5f87 +hi WildMenu ctermfg=0 guifg=#000000 ctermbg=150 guibg=#afdf87 cterm=bold gui=bold + +"" Syntax highlighting {{{2 +hi Comment ctermfg=244 guifg=#808080 +hi Constant ctermfg=229 guifg=#ffffaf +hi Identifier ctermfg=182 guifg=#dfafdf cterm=none +hi Ignore ctermfg=238 guifg=#444444 +hi Number ctermfg=180 guifg=#dfaf87 +hi PreProc ctermfg=150 guifg=#afdf87 +hi Special ctermfg=174 guifg=#df8787 +hi Statement ctermfg=110 guifg=#87afdf cterm=none gui=none +hi Type ctermfg=146 guifg=#afafdf cterm=none gui=none + +"" Special {{{2 +""" .diff {{{3 +hi diffAdded ctermfg=150 guifg=#afdf87 +hi diffRemoved ctermfg=174 guifg=#df8787 +""" vimdiff {{{3 +hi diffAdd ctermfg=bg guifg=bg ctermbg=151 guibg=#afdfaf +"hi diffDelete ctermfg=bg guifg=bg ctermbg=186 guibg=#dfdf87 cterm=none gui=none +hi diffDelete ctermfg=bg guifg=bg ctermbg=246 guibg=#949494 cterm=none gui=none +hi diffChange ctermfg=bg guifg=bg ctermbg=181 guibg=#dfafaf +hi diffText ctermfg=bg guifg=bg ctermbg=174 guibg=#df8787 cterm=none gui=none +""" HTML {{{3 +" hi htmlTag ctermfg=146 guifg=#afafdf +" hi htmlEndTag ctermfg=146 guifg=#afafdf +hi htmlTag ctermfg=244 +hi htmlEndTag ctermfg=244 +hi htmlArg ctermfg=182 guifg=#dfafdf +hi htmlValue ctermfg=187 guifg=#dfdfaf +hi htmlTitle ctermfg=254 ctermbg=95 +" hi htmlArg ctermfg=146 +" hi htmlTagName ctermfg=146 +" hi htmlString ctermfg=187 +""" django {{{3 +hi djangoVarBlock ctermfg=180 +hi djangoTagBlock ctermfg=150 +hi djangoStatement ctermfg=146 +hi djangoFilter ctermfg=174 +""" python {{{3 +hi pythonExceptions ctermfg=174 +""" NERDTree {{{3 +hi Directory ctermfg=110 guifg=#87afdf +hi treeCWD ctermfg=180 guifg=#dfaf87 +hi treeClosable ctermfg=174 guifg=#df8787 +hi treeOpenable ctermfg=150 guifg=#afdf87 +hi treePart ctermfg=244 guifg=#808080 +hi treeDirSlash ctermfg=244 guifg=#808080 +hi treeLink ctermfg=182 guifg=#dfafdf + +""" VimDebug {{{3 +" FIXME +" you may want to set SignColumn highlight in your .vimrc +" :help sign +" :help SignColumn + +" hi currentLine term=reverse cterm=reverse gui=reverse +" hi breakPoint term=NONE cterm=NONE gui=NONE +" hi empty term=NONE cterm=NONE gui=NONE + +" sign define currentLine linehl=currentLine +" sign define breakPoint linehl=breakPoint text=>> +" sign define both linehl=currentLine text=>> +" sign define empty linehl=empty + diff --git a/colors/zenburn.vim b/colors/zenburn.vim new file mode 100644 index 0000000..1dec84c --- /dev/null +++ b/colors/zenburn.vim @@ -0,0 +1,271 @@ +" Vim color file +" Maintainer: Jani Nurminen +" Last Change: $Id: zenburn.vim,v 2.2 2008/07/10 19:51:09 slinky Exp slinky $ +" URL: http://slinky.imukuppi.org/zenburnpage/ +" License: GPL +" +" Nothing too fancy, just some alien fruit salad to keep you in the zone. +" This syntax file was designed to be used with dark environments and +" low light situations. Of course, if it works during a daybright office, go +" ahead :) +" +" Owes heavily to other Vim color files! With special mentions +" to "BlackDust", "Camo" and "Desert". +" +" To install, copy to ~/.vim/colors directory. Then :colorscheme zenburn. +" See also :help syntax +" +" Credits: +" - Jani Nurminen - original Zenburn +" - Steve Hall & Cream posse - higher-contrast Visual selection +" - Kurt Maier - 256 color console coloring, low and high contrast toggle, +" bug fixing +" - Charlie - spotted too bright StatusLine in non-high contrast mode +" +" CONFIGURABLE PARAMETERS: +" +" You can use the default (don't set any parameters), or you can +" set some parameters to tweak the Zenburn colours. +" +" * You can now set a darker background for bright environments. To activate, use: +" contrast Zenburn, use: +" +" let g:zenburn_high_Contrast = 1 +" +" * To get more contrast to the Visual selection, use +" +" let g:zenburn_alternate_Visual = 1 +" +" * To use alternate colouring for Error message, use +" +" let g:zenburn_alternate_Error = 1 +" +" * The new default for Include is a duller orange. To use the original +" colouring for Include, use +" +" let g:zenburn_alternate_Include = 1 +" +" * To turn the parameter(s) back to defaults, use UNLET: +" +" unlet g:zenburn_alternate_Include +" +" Setting to 0 won't work! +" +" That's it, enjoy! +" +" TODO +" - Visual alternate color is broken? Try GVim >= 7.0.66 if you have trouble +" - IME colouring (CursorIM) + +set background=dark +hi clear +if exists("syntax_on") + syntax reset +endif +let g:colors_name="zenburn" + +hi Boolean guifg=#dca3a3 +hi Character guifg=#dca3a3 gui=bold +hi Comment guifg=#7f9f7f gui=italic +hi Conditional guifg=#f0dfaf gui=bold +hi Constant guifg=#dca3a3 gui=bold +hi Cursor guifg=#000d18 guibg=#8faf9f gui=bold +hi Debug guifg=#bca3a3 gui=bold +hi Define guifg=#ffcfaf gui=bold +hi Delimiter guifg=#8f8f8f +hi DiffAdd guifg=#709080 guibg=#313c36 gui=bold +hi DiffChange guibg=#333333 +hi DiffDelete guifg=#333333 guibg=#464646 +hi DiffText guifg=#ecbcbc guibg=#41363c gui=bold +hi Directory guifg=#dcdccc gui=bold +hi ErrorMsg guifg=#80d4aa guibg=#2f2f2f gui=bold +hi Exception guifg=#c3bf9f gui=bold +hi Float guifg=#c0bed1 +hi FoldColumn guifg=#93b3a3 guibg=#3f4040 +hi Folded guifg=#93b3a3 guibg=#3f4040 +hi Function guifg=#efef8f +hi Identifier guifg=#efdcbc +hi IncSearch guibg=#f8f893 guifg=#385f38 +hi Keyword guifg=#f0dfaf gui=bold +hi Label guifg=#dfcfaf gui=underline +hi LineNr guifg=#9fafaf guibg=#262626 +hi Macro guifg=#ffcfaf gui=bold +hi ModeMsg guifg=#ffcfaf gui=none +hi MoreMsg guifg=#ffffff gui=bold +hi NonText guifg=#404040 +hi Number guifg=#8cd0d3 +hi Operator guifg=#f0efd0 +hi PreCondit guifg=#dfaf8f gui=bold +hi PreProc guifg=#ffcfaf gui=bold +hi Question guifg=#ffffff gui=bold +hi Repeat guifg=#ffd7a7 gui=bold +hi Search guifg=#ffffe0 guibg=#284f28 +hi SpecialChar guifg=#dca3a3 gui=bold +hi SpecialComment guifg=#82a282 gui=bold +hi Special guifg=#cfbfaf +hi SpecialKey guifg=#9ece9e +hi Statement guifg=#e3ceab gui=none +hi StatusLine guifg=#313633 guibg=#ccdc90 +hi StatusLineNC guifg=#2e3330 guibg=#88b090 +hi StorageClass guifg=#c3bf9f gui=bold +hi String guifg=#cc9393 +hi Structure guifg=#efefaf gui=bold +hi Tag guifg=#e89393 gui=bold +hi Title guifg=#efefef gui=bold +hi Todo guifg=#dfdfdf guibg=bg gui=bold +hi Typedef guifg=#dfe4cf gui=bold +hi Type guifg=#dfdfbf gui=bold +hi Underlined guifg=#dcdccc gui=underline +hi VertSplit guifg=#2e3330 guibg=#688060 +hi VisualNOS guifg=#333333 guibg=#f18c96 gui=bold,underline +hi WarningMsg guifg=#ffffff guibg=#333333 gui=bold +hi WildMenu guibg=#2c302d guifg=#cbecd0 gui=underline + +hi SpellBad guisp=#bc6c4c guifg=#dc8c6c +hi SpellCap guisp=#6c6c9c guifg=#8c8cbc +hi SpellRare guisp=#bc6c9c guifg=#bc8cbc +hi SpellLocal guisp=#7cac7c guifg=#9ccc9c + +" Entering Kurt zone +if &t_Co > 255 + hi Boolean ctermfg=181 + hi Character ctermfg=181 cterm=bold + hi Comment ctermfg=108 + hi Conditional ctermfg=223 cterm=bold + hi Constant ctermfg=181 cterm=bold + hi Cursor ctermfg=233 ctermbg=109 cterm=bold + hi Debug ctermfg=181 cterm=bold + hi Define ctermfg=223 cterm=bold + hi Delimiter ctermfg=245 + hi DiffAdd ctermfg=66 ctermbg=237 cterm=bold + hi DiffChange ctermbg=236 + hi DiffDelete ctermfg=236 ctermbg=238 + hi DiffText ctermfg=217 ctermbg=237 cterm=bold + hi Directory ctermfg=188 cterm=bold + hi ErrorMsg ctermfg=115 ctermbg=236 cterm=bold + hi Exception ctermfg=249 cterm=bold + hi Float ctermfg=251 + hi FoldColumn ctermfg=109 ctermbg=238 + hi Folded ctermfg=109 ctermbg=238 + hi Function ctermfg=228 + hi Identifier ctermfg=223 + hi IncSearch ctermbg=228 ctermfg=238 + hi Keyword ctermfg=223 cterm=bold + hi Label ctermfg=187 cterm=underline + hi LineNr ctermfg=248 ctermbg=235 + hi Macro ctermfg=223 cterm=bold + hi ModeMsg ctermfg=223 cterm=none + hi MoreMsg ctermfg=15 cterm=bold + hi NonText ctermfg=238 + hi Number ctermfg=116 + hi Operator ctermfg=230 + hi PreCondit ctermfg=180 cterm=bold + hi PreProc ctermfg=223 cterm=bold + hi Question ctermfg=15 cterm=bold + hi Repeat ctermfg=223 cterm=bold + hi Search ctermfg=230 ctermbg=236 + hi SpecialChar ctermfg=181 cterm=bold + hi SpecialComment ctermfg=108 cterm=bold + hi Special ctermfg=181 + hi SpecialKey ctermfg=151 + hi Statement ctermfg=187 ctermbg=234 cterm=none + hi StatusLine ctermfg=236 ctermbg=186 + hi StatusLineNC ctermfg=235 ctermbg=108 + hi StorageClass ctermfg=249 cterm=bold + hi String ctermfg=174 + hi Structure ctermfg=229 cterm=bold + hi Tag ctermfg=181 cterm=bold + hi Title ctermfg=7 ctermbg=234 cterm=bold + hi Todo ctermfg=108 ctermbg=234 cterm=bold + hi Typedef ctermfg=253 cterm=bold + hi Type ctermfg=187 cterm=bold + hi Underlined ctermfg=188 ctermbg=234 cterm=bold + hi VertSplit ctermfg=236 ctermbg=65 + hi VisualNOS ctermfg=236 ctermbg=210 cterm=bold + hi WarningMsg ctermfg=15 ctermbg=236 cterm=bold + hi WildMenu ctermbg=236 ctermfg=194 cterm=bold + if exists("g:zenburn_high_Contrast") + hi Normal ctermfg=188 ctermbg=234 + else + hi Normal ctermfg=188 ctermbg=237 + hi Cursor ctermbg=109 + hi diffadd ctermbg=237 + hi diffdelete ctermbg=238 + hi difftext ctermbg=237 + hi errormsg ctermbg=237 + hi foldcolumn ctermbg=238 + hi folded ctermbg=238 + hi incsearch ctermbg=228 + hi linenr ctermbg=238 + hi search ctermbg=238 + hi statement ctermbg=237 + hi statusline ctermbg=144 + hi statuslinenc ctermbg=108 + hi title ctermbg=237 + hi todo ctermbg=237 + hi underlined ctermbg=237 + hi vertsplit ctermbg=65 + hi visualnos ctermbg=210 + hi warningmsg ctermbg=236 + hi wildmenu ctermbg=236 + endif +endif + +if exists("g:zenburn_high_Contrast") + " use new darker background + hi Normal guifg=#dcdccc guibg=#1f1f1f + hi CursorLine guibg=#121212 gui=bold + hi Pmenu guibg=#242424 guifg=#ccccbc + hi PMenuSel guibg=#353a37 guifg=#ccdc90 gui=bold + hi PmenuSbar guibg=#2e3330 guifg=#000000 + hi PMenuThumb guibg=#a0afa0 guifg=#040404 + hi MatchParen guifg=#f0f0c0 guibg=#383838 gui=bold + hi SignColumn guifg=#9fafaf guibg=#181818 gui=bold + hi TabLineFill guifg=#cfcfaf guibg=#181818 gui=bold + hi TabLineSel guifg=#efefef guibg=#1c1c1b gui=bold + hi TabLine guifg=#b6bf98 guibg=#181818 gui=bold + hi CursorColumn guifg=#dcdccc guibg=#2b2b2b +else + " Original, lighter background + hi Normal guifg=#dcdccc guibg=#3f3f3f + hi CursorLine guibg=#434443 + hi Pmenu guibg=#2c2e2e guifg=#9f9f9f + hi PMenuSel guibg=#242424 guifg=#d0d0a0 gui=bold + hi PmenuSbar guibg=#2e3330 guifg=#000000 + hi PMenuThumb guibg=#a0afa0 guifg=#040404 + hi MatchParen guifg=#b2b2a0 guibg=#2e2e2e gui=bold + hi SignColumn guifg=#9fafaf guibg=#343434 gui=bold + hi TabLineFill guifg=#cfcfaf guibg=#353535 gui=bold + hi TabLineSel guifg=#efefef guibg=#3a3a39 gui=bold + hi TabLine guifg=#b6bf98 guibg=#353535 gui=bold + hi CursorColumn guifg=#dcdccc guibg=#4f4f4f +endif + + +if exists("g:zenburn_alternate_Visual") + " Visual with more contrast, thanks to Steve Hall & Cream posse + " gui=none fixes weird highlight problem in at least GVim 7.0.66, thanks to Kurt Maier + hi Visual guifg=#000000 guibg=#71d3b4 gui=none + hi VisualNOS guifg=#000000 guibg=#71d3b4 gui=none +else + " use default visual + hi Visual guifg=#233323 guibg=#71d3b4 gui=none + hi VisualNOS guifg=#233323 guibg=#71d3b4 gui=none +endif + +if exists("g:zenburn_alternate_Error") + " use a bit different Error + hi Error guifg=#ef9f9f guibg=#201010 gui=bold +else + " default + hi Error guifg=#e37170 guibg=#332323 gui=none +endif + +if exists("g:zenburn_alternate_Include") + " original setting + hi Include guifg=#ffcfaf gui=bold +else + " new, less contrasted one + hi Include guifg=#dfaf8f gui=bold +endif + " TODO check for more obscure syntax groups that they're ok diff --git a/spell/it.utf-8.spl b/spell/it.utf-8.spl new file mode 100644 index 0000000000000000000000000000000000000000..1156c64d0145a766dca7ffc643586a9e00f43177 GIT binary patch literal 1232149 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%0DJzQzo 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

fo1H74U5wG)*I@ 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

9liwwft?dM~_EXhYkg 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�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 z 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 literal 0 HcmV?d00001 -- 2.20.1