*tagbar.txt* Display tags of a file in their correct scope Author: Jan Larres Licence: Vim licence, see |license| ============================================================================== *tagbar* *tagbar-contents* Contents~ 1. Intro...............................*tagbar-intro* 2. Requirements........................*tagbar-requirements* 3. Installation........................*tagbar-installation* 4. Usage...............................*tagbar-usage* 5. Commands............................*tagbar-commands* 6. Configuration.......................*tagbar-configuration* 7. Adding your own file types..........*tagbar-add-types* 8. Bugs and limitations................*tagbar-bugs* 9. History.............................*tagbar-history* 10. Todo................................*tagbar-todo* ============================================================================== *tagbar-intro* 1. Intro~ Tagbar is a plugin for browsing the tags of source code files. It provides a sidebar that displays the ctags-generated tags of the current file, ordered by their correct scope. This means that for example methods in C++ are displayed under the class they are defined in. Let's say we have the following code inside of a C++ file: > namespace { char a; class Foo { public: Foo(); ~Foo(); private: int var; }; }; < Then Tagbar would display the tag information like so: > __anon1* : namespace Foo : class +Foo() +~Foo() -var a < This example shows several important points. First, the tags are listed indented below the scope they are defined in. Second, the type of a scope is listed after its name and a colon. Third, tags for which the access/visibility information is known are prefixed with a symbol indicating that. Fourth, it introduces 'pseudo-tags'. Pseudo-tags are tags that are not explicitly defined in the file but have children in it. In this example the namespace doesn't have a name and thus ctags doesn't generate a tag for it, but since it has children in the file it still needs to be displayed using an auto-generated name. Pseudo-tags are denoted with an asterisk ('*') at the end of their name. *tagbar-features* Supported features~ The following features are supported by Tagbar: * Display tags under their correct scope. * Automatically update the tags when switching between buffers and editing files. * Display visibility information of tags if available. * Highlight the tag near the cursor while editing files. * Jump to a tag from the Tagbar window. * Display the complete prototype of a tag. * Tags can be sorted either by name or order of appearance in the file. * Scopes can be folded to hide uninteresting information. * Supports all of the languages that ctags does, i.e. Ant, Assembler, ASP, Awk, Basic, BETA, C, C++, C#, COBOL, DosBatch, Eiffel, Erlang, Flex, Fortran, HTML, Java, JavaScript, Lisp, Lua, Make, MatLab, OCaml, Pascal, Perl, PHP, Python, REXX, Ruby, Scheme, Shell script, SLang, SML, SQL, Tcl, Tex, Vera, Verilog, VHDL, Vim and YACC. * Can be extended to support arbitrary new types. caveats: C++: foo::Bar::init() foo::Baz::method() type of 'foo' is unknown (sorting problems), foo::Bar and foo::Baz listed separately class test: class Inner: def __init__(self): print "Inner" def test(): class Inner2: def __init__(self): print "Inner2"