ctrl+shift+p filters: :st2 :st3 :win :osx :linux
Browse

Go​Oracle

by waigani ST2/ST3

GoOracle is a Golang plugin for SublimeText that integrates the Go oracle tool.

Labels go

Details

Installs

  • Total 15K
  • Win 4K
  • OS X 7K
  • Linux 4K
Jan 17 Jan 16 Jan 15 Jan 14 Jan 13 Jan 12 Jan 11 Jan 10 Jan 9 Jan 8 Jan 7 Jan 6 Jan 5 Jan 4 Jan 3 Jan 2 Jan 1 Dec 31 Dec 30 Dec 29 Dec 28 Dec 27 Dec 26 Dec 25 Dec 24 Dec 23 Dec 22 Dec 21 Dec 20 Dec 19 Dec 18 Dec 17 Dec 16 Dec 15 Dec 14 Dec 13 Dec 12 Dec 11 Dec 10 Dec 9 Dec 8 Dec 7 Dec 6 Dec 5 Dec 4 Dec 3
Windows 0 2 0 0 0 0 0 4 6 0 1 2 0 2 1 5 1 2 3 1 0 2 0 2 4 0 3 1 5 2 0 5 5 5 4 1 1 5 5 1 1 3 3 5 0 5
OS X 0 0 1 1 1 0 0 2 3 3 3 1 1 6 6 3 1 1 0 1 0 1 3 3 0 0 1 5 3 1 4 5 1 1 2 1 3 1 5 1 2 6 2 2 1 2
Linux 3 0 0 1 4 0 0 3 1 1 2 0 0 2 2 4 1 0 2 0 1 2 0 2 1 2 0 1 2 1 2 0 2 9 3 2 1 4 1 1 2 3 5 2 4 2

Readme

Source
raw.​githubusercontent.​com

GoOracle

GoOracle is a Golang plugin for SublimeText that integrates the Go oracle tool.

Usage

Select, or place your cursor over, a symbol (function, variable, constant etc) and press ctrl+shift+o. You will be presented with the following modes of analysis to choose from:

callees     show possible targets of selected function call
callers     show possible callers of selected function
callgraph   show complete callgraph of program
callstack   show path from callgraph root to selected function
describe    describe selected syntax: definition, methods, etc
freevars    show free variables of selection
implements  show 'implements' relation for selected package
peers       show send/receive corresponding to selected channel op
referrers   show all refs to entity denoted by selected identifier

Select one and the output will be displayed in a new tab.

Install

Install Sublime Package Control (if you haven't done so already) from http://wbond.net/sublime_packages/package_control. Be sure to restart ST to complete the installation.

Bring up the command palette (default ctrl+shift+p or cmd+shift+p) and start typing Package Control: Install Package then press return or click on that option to activate it. You will be presented with a new Quick Panel with the list of available packages. Type GoOracle and press return or on its entry to install GoOracle. If there is no entry for GoOracle, you most likely already have it installed.

Oracle requires several variables to be set in order to work. These are explained in the comments of the default settings Preferences > Package Settings > GoOracle > Settings-Default:

{
    // env is a map of GOPATH, GOROOT and PATH variables.
    // e.g "env": { "PATH": "$HOME/go/bin:$PATH" }
    "env": {},

    // oracle_scope is an array of scopes of analysis for oracle.
    // e.g (for github.com/juju/juju) "oracle_scope": ["github.com/juju/juju/cmd/juju", "github.com/juju/juju/cmd/jujud"]
    "oracle_scope": [],

    // The format of oracle's output can be one of: 'json', 'xml' or 'plain'
    "oracle_format": "json",

    // The output can either be one of: 'buffer', 'output_panel'
    // Buffers can hold results from more than one invocation
    // Output panels sit underneath the editor area and are easily dismissed
    "output": "buffer"
}

You set your own variables in Preferences > Package Settings > GoOracle > Settings-User. Below is an example which sets up GoOracle to be used on the github.com/juju/juju codebase:

{
    "env": { "GOPATH": "$HOME/go", "GOROOT": "$HOME/.gvm/gos/go1.2.1", "PATH": "$GOPATH/bin:$PATH" },
    "oracle_scope": ["github.com/juju/juju/cmd/juju", "github.com/juju/juju/cmd/jujud"],
    "oracle_format": "json",
    "output": "buffer"
}

You can also make project specific settings. First save your current workspace as a project Project > Save as project ..., then edit your project Project > Edit Project. Below is an example which sets up GoOracle to be used on the github.com/juju/juju codebase:

{
    "folders":
    [
        {
            "follow_symlinks": true,
            "path": "/home/user/go/src/github.com/juju/juju"
        }
    ],
    "settings":
    {
        "GoOracle": {
            "oracle_scope": ["github.com/juju/juju/cmd/juju", "github.com/juju/juju/cmd/jujud"],
            "output": "output_panel"
        }
    },
}

Default key binding:

[
    { "keys": ["ctrl+shift+o"], "command": "go_oracle"},
    { "keys": ["ctrl+alt+shift+o"], "command": "go_oracle_show_results"},
]

You can set your own key binding by copying the above into Preferences > Keybindings - User and replacing ctrl+shift+o with your preferred key(s).

You can also set a key binding for a specific mode by adding a “mode” arg, e.g.:

...
    { "keys": ["ctrl+super+c"], "command": "go_oracle", "args": {"mode": "callers"} },
    { "keys": ["ctrl+super+i"], "command": "go_oracle", "args": {"mode": "implements"} },
    { "keys": ["ctrl+super+r"], "command": "go_oracle", "args": {"mode": "referrers"} },
    ...

Dependencies

GoOracle relies on the oracle tool. You must install it in order for GoOracle to work. Run the following on your command line:

go get golang.org/x/tools/cmd/oracle

About Go Oracle

Copyright, License & Contributors

GoOracle is released under the MIT license. See LICENSE.md

GoOracle is the copyrighted work of The GoOracle Authors i.e me (waigani) and all contributors. If you submit a change, be it documentation or code, so long as it's committed to GoOracle's history I consider you a contributor. See AUTHORS.md for a list of all the GoOracle authors/contributors.