Are there CScope-style source browsers for other languages besides C/C++ on Windows?


Are there CScope-style source browsers for other languages besides C/C++ on Windows?



I'm specifically interested in tools that can be plugged into Vim to allow CScope-style source browsing (1-2 keystroke commands to locate function definitions, callers, global symbols and so on) for languages besides C/C++ such as Java and C# (since Vim and Cscope already integrate very well for browsing C/C++). I'm not interested in IDE-based tools since I know Microsoft and other vendors already address that space -- I prefer to use Vim for editing and browsing, but but don't know of tools for C# and/or Java that give me the same power as CScope.

The original answer to this question included a pointer to the CSWrapper application which apparently fixes a bug that some users experience integrating Vim and CScope. However, my Vim/CScope installation works fine; I'm just trying to expand the functionality to allow using Vim to edit code in other languages.




What is your most productive shortcut with Vim?

1:



How to force VIM/GVIM show last buffer line at the bottom (instead of top)?
CScope does work for Java..
Keep the cursor column while swapping buffers in vim
From http://cscope.sourceforge.net/cscope_vim_tutorial.html:.
VIM: RSync on save
Although Cscope was originally intended only for use with C code, it's actually a very flexible tool that works well with languages like C++ and Java.


reformat in vim for a nice column layout
You can think of it as a generic 'grep' database, with the ability to recognize certain additional constructs like function calls and variable definitions.


Vim highlight characters/words/line for Copy to clipboard
By default Cscope only parses C, lex, and yacc files (.c, .h, .l, .y) in the current directory (and subdirectories, if you pass the -R flag), and there's currently no way to change that list of file extensions (yes, we ought to change that).


SuperTab Plugin doesn't work together with the omnicomplete feature (<C-X><C-O>)
So instead you have to make a list of the files that you want to parse, and call it 'cscope.files' (you can call it anything you want if you invoke 'cscope -i foofile').


Selecting resulting files from grep in vim
An easy (and very flexible) way to do this is via the trusty Unix 'find' command:.
find . 

-name '*.java' > cscope.files
Now run 'cscope -b' to rebuild the database (the -b just builds the database without launching the Cscope GUI), and you'll be able to browse all the symbols in your Java files.

Apparently there are folks out there using Cscope to browse and edit large volumes of documentation files, which shows how flexible Cscope's parser is..


2:


Claiming that Cscope supports Java is an extreme stretch.

It seems to treat a method like a function, so it has no idea that A.foo(), A.foo(Object) and B.foo() are all different.

This is a big problem with a large code base (including third-party libraries) with many same-named methods.

(I haven't looked at the Cscope source, but this is what I found trying the latest Cscope, version 15.7a-3.3 from Debian unstable.). I tried Cscope on a large Java project, and it was not at all useful to me due to this limitation.

It's sad that we cannot get a quick answer to a basic question like "who calls this method", using free software outside of the big IDEs, but we may as well accept it.

(I would love it if I'm wrong.

I resort to hacks like commenting out the method and recompiling.).


3:


A bit late to the party here, but my https://github.com/eapache/starscope/ project provides a nice framework for generating cscope databases for more languages.

Currently it supports Ruby and Go, and Javascript is in progress.

Adding Java/C# shouldn't be that difficult.. Edit: Javascript is now fully supported..


4:


I agree with Andrew - trying to get a call hierarchy for a method returns all calls of the same name, even if they are from a different class.. You can use Eclim to plug Eclipse into VIM. http://eclim.org/. which supportrs call hierarchy. http://eclim.org/vim/java/inspection.html#call-hierarchy.


5:


This may be what you're looking for:. http://www.vim.org/scripts/script.php?script_id=1783. You can also mimic some CScope functionality in your own .vimrc file by using the various flavors of map..



92 out of 100 based on 72 user ratings 1022 reviews