bug-global
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RFC] gtags-cscope.vim script


From: Wade Berrier
Subject: Re: [RFC] gtags-cscope.vim script
Date: Thu, 09 Dec 2010 10:24:35 -0700
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6

Hello,

I've found this to be very useful because of the ability to use the tag
stack.  Thank you!!

Question: what bas been the barrier to adding a tag stack to gtags.vim?

Thanks again,

Wade

On 01/11/2010 05:11 AM, Shigio YAMAGUCHI wrote:
> Hi all,
> I have made gtags-cscope.vim script.
> More convenient point than gtags.vim is to be able to use tag stack.
> 
> Any comment?
> 
> [gtags-cscope.vim]
> -------------------------------------------------------------------------------------
> " File: gtags-cscope.vim
> " Author: Tama Communications Corporation
> " Version: 0.1
> " Last Modified: Jan 11, 2010
> "
> " Copyright and lisence
> " ---------------------
> " Copyright (c) 2010 Tama Communications Corporation
> "
> " This file is part of GNU GLOBAL.
> "
> " This program is free software: you can redistribute it and/or modify
> " it under the terms of the GNU General Public License as published by
> " the Free Software Foundation, either version 3 of the License, or
> " (at your option) any later version.
> " 
> " This program is distributed in the hope that it will be useful,
> " but WITHOUT ANY WARRANTY; without even the implied warranty of
> " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> " GNU General Public License for more details.
> " 
> " You should have received a copy of the GNU General Public License
> " along with this program.  If not, see <http://www.gnu.org/licenses/>.
> "
> " Overview
> " --------
> " The gtags-cscope.vim plugin script integrates the GNU GLOBAL source code 
> tag system
> " with Vim using cscope interface.
> "
> " Installation
> " ------------
> " Drop the file in your plugin directory or source it from your vimrc.
> " To use this script, you need the GNU GLOBAL-5.7 or later installed
> " in your machine.
> "
> " Usage
> " -----
> " First of all, you must execute gtags(1) at the root of source directory
> " to make tag files. Assuming that your source directory is '/var/src',
> " it is neccessary to execute the following commands.
> "
> "     $ cd /var/src
> "     $ gtags
> "     $ vim
> "
> " Then you can use cs commands except for the 'd'(2) command.
> " Profitable commands are assigned to keys like follows:
> "     <C-\>t :cs find g
> "     <C-\>r :cs find c
> "     <C-\>s :cs find s
> "     <C-\>g :cs find e
> "     <C-\>P :cs find f
> "
> " You can use the context jump function. To use this function, put the cursor
> " on a word and type <C-\><C-]>.
> " If you can use mouse then please double click on the left button.
> " To pop tag, please click on the right button.
> "
> " Configure
> " ---------
> " To avoid pushy key and mouse mappings:
> "     let GtagsCscope_Auto_Map = 0    (in .vimrc)
> " To avoid auto loading:
> "     let GtagsCscope_Auto_Load = 0   (in .vimrc)
> " To load gtagscscope by hand:
> "     :GtagsCscope <ENTER>            (in vim command line)
> " To use :tag and <C-]>
> "     set cscopetag                   (in .vimrc or vim command line)
> "
> if exists("loaded_gtags_cscope")
>     finish
> endif
> if !has("cscope")
>     finish
> endif
> if !exists("GtagsCscope_Auto_Load")
>     let GtagsCscope_Auto_Load = 1
> endif
> if !exists("GtagsCscope_Auto_Map")
>     let GtagsCscope_Auto_Map = 1
> endif
> 
> "
> " Display error message.
> "
> function! s:Error(msg)
>     echohl WarningMsg |
>            \ echomsg 'Gtags-cscope: ' . a:msg |
>            \ echohl None
> endfunction
> 
> function! s:GtagsCscope_GtagsRoot()
>     let cmd = "global -pq"
>     let cmd_output = system(cmd)
>     if v:shell_error != 0
>         if v:shell_error == 3
>             call s:Error('GTAGS not found.')
>         else
>             call s:Error('global command failed. command line: ' . cmd)
>         endif
>         return ''
>     endif
>     return strpart(cmd_output, 0, strlen(cmd_output) - 1)
> endfunction
> 
> function! s:GtagsCscope()
>     "
>     " Get gtagsroot directory.
>     "
>     let gtagsroot = s:GtagsCscope_GtagsRoot()
>     if gtagsroot == ''
>         return
>     endif
>     "
>     " Load gtags-cscope.
>     "
>     set csprg=gtags-cscope
>     exe "cs add " . gtagsroot . "/GTAGS"
>     set csto=0
>     "
>     " Key mapping
>     "
>     if g:GtagsCscope_Auto_Map == 1
>         " Context search. See the --from-here option of global(1).
>         :map <C-\><C-]> :cs find d 
> <C-R>=expand("<cword>")<CR>:<C-R>=line('.')<CR>:%<CR>
>         " normal command
>         :nmap <C-\>t :cs find g <C-R>=expand("<cword>")<CR>
>         :nmap <C-\>r :cs find c <C-R>=expand("<cword>")<CR>
>         :nmap <C-\>s :cs find s <C-R>=expand("<cword>")<CR>
>         :nmap <C-\>g :cs find e <C-R>=expand("<cword>")<CR>
>         :nmap <C-\>P :cs find f 
>         " Using 'CTRL-spacebar', the result is displayed in new horizontal 
> window.
>         :nmap <C-@>t :scs find g <C-R>=expand("<cword>")<CR>
>         :nmap <C-@>r :scs find c <C-R>=expand("<cword>")<CR>
>         :nmap <C-@>s :scs find s <C-R>=expand("<cword>")<CR>
>         :nmap <C-@>g :scs find e <C-R>=expand("<cword>")<CR>
>         :nmap <C-@>P :scs find f 
>         " Hitting CTRL-space *twice*, the result is displayed in new vertical 
> window.
>         :nmap <C-@><C-@>t :vert scs find g <C-R>=expand("<cword>")<CR>
>         :nmap <C-@><C-@>r :vert scs find c <C-R>=expand("<cword>")<CR>
>         :nmap <C-@><C-@>s :vert scs find s <C-R>=expand("<cword>")<CR>
>         :nmap <C-@><C-@>g :vert scs find e <C-R>=expand("<cword>")<CR>
>         :nmap <C-@><C-@>P :vert scs find f 
>         " mouse event
>       set mouse=a
>         :nmap <2-LeftMouse> :cs find d 
> <C-R>=expand("<cword>")<CR>:<C-R>=line('.')<CR>:%<CR>
>         :nmap <RightMouse> <C-t>
>     endif
>     let loaded_gtags_cscope = 1
> endfunction
> 
> if GtagsCscope_Auto_Load == 1
>     call s:GtagsCscope()
> endif
> command! -nargs=0 GtagsCscope call s:GtagsCscope()
> -------------------------------------------------------------------------------------
> --
> Shigio YAMAGUCHI <address@hidden>
> PGP fingerprint: D1CB 0B89 B346 4AB6 5663  C4B6 3CA5 BBB3 57BE DDA3





reply via email to

[Prev in Thread] Current Thread [Next in Thread]