gyarra / CTags

CTags support for Sublime Text 2

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

CTags

This Sublime Text 2 Package provides support for working with tags generated by Exuberant CTags

The ctags command is searched for on PATH. It works by doing a binary search of an mmap()'d `.tags` file so it will work efficiently with very large ( 50MB+ etc ) tags files if needed.

OS X

If anyone is having trouble getting the CTags -R flag to work on OSX, you are probably using the stock CTags installation.

To get a proper copy of ctags, use one of the following options:

  • Make sure that Sublime Text is using the right version of CTags: Ensure that /.MacOSX/environment.plist has /usr/local/bin in the PATH string before /usr/bin (the standard location for CTags). Here's a sample environment.plist that should work:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>PATH</key>
<string>/usr/local/bin:/usr/bin:/bin</string>
</dict>
</plist>
  • If /usr/local/bin wasn't in your PATH already, you have to log out and log back in for the environment variables to be read in again.

Linux

To get a proper copy of ctags, use one of the following options:

  • In a terminal session: sudo apt-get install ctags

Dependencies

  • No dependencies!

Installation

If you are a git user, the best way to install the package and keep up to date is to clone the repo directly into your /Packages directory in the Sublime Text 2 application settings area.

Using Git

Go to your Sublime Text 2 `Packages` directory and clone the repository using the command below:

$ git clone https://github.com/SublimeText/CTags CTags

Download Manually

  • Download the files using the .zip download option
  • Unzip the files (and rename the folder to CTags if needed)
  • Copy the folder to your Sublime Text 2 Packages directory

About

See this forum thread for a bit of background.

Usage

This uses `.tags` files created in `ctags -R -f .tags` recursive mode.

The commands will try and find a `tags` file in the same directory as the current view, walking up directories until it finds one. If it can't find one it will offer to build some ( in the directory of the current view ) (TODO: doesn't ask as missing api from S1)

If a symbol can't be found in a tags file it will search in alternative locations.

If you create a file `tags_search_paths` in the same folder as your `tags` file, listing alternative locations (full absolute paths, one per line) it will search those files also.

eg

D:\myProject\tags

Other Settings

There's a CTags.sublime-settings file:

{
    "debug"           :  false,
    "ctags_command"   :  "ctags -R -f .tags",
    "filters"         :  {
        "source.python": {"type":"^i$"}
    },
    "definition_filters": {
        "source.php": {"type":"^v$"}
    },
    "definition_current_first": false,
    "show_context_menus": false,
    "extra_tag_paths" :  [ [["source.python", "windows"], "C:\\Python27\\Lib\\tags"]],
    "extra_tag_files" : [".gemtags"]
}

`filters` will allow you to set scope specific filters against a field of the tag. In the excerpt above, imports tags like "from a import b" are filtered.

    '(?P<symbol>[^\t]+)\t'
    '(?P<filename>[^\t]+)\t'
    '(?P<ex_command>.*?);"\t'
    '(?P<type>[^\t\r\n]+)'
    '(?:\t(?P<fields>.*))?'

`extra_tag_paths` is a list of extra places to look for keyed by (selector, platform)

`extra_tag_files` is a list of extra files relative to the original .tags file

Note the platform (`windows` in the example above) is tested against `sublime.platform()` so any values that function returns are valid.

The rest of the options are fairly self explanatory.

Support

If there are any problems or you have a suggestion open an issue and we will receive an email notification.

Thanks :)

Commands Listing

Command Key Binding Alt Binding Mouse Binding
rebuild_ctags ctrl+t ctrl+r
navigate_to_definition ctrl+t ctrl+t ctrl+alt+] ctrl+alt+left_click
jump_back ctrl+t ctrl+b ctrl+alt+[
jump_back to_last_modification ctrl+t ctrl+m
show_symbols alt+s
show_symbols multi alt+shift+s

About

CTags support for Sublime Text 2