Note: you may need to restart Sublime Text after GoSublime updates
** REQUEST FOR FEEDBACK **
GoSublime is/I am, in need of your help in understanding what systems GoSublime is being used in. I'm interested in hearing about things like:
- what shell you use
- OS/version/language
- what version of Go
- what version of Sublime Text
- whether or not you plan to upgrade to Sublime Text 3 when it's released
- do you use GoSublime on a networked filesystem(NFS, sshfs, etc.)
- whether you use Package Control to manage upgrades or just plain
git clone
- etc.
Most of this information is available in the sanity check
ctrl+dot
,ctrl+3
or super+dot
,super+3
on OS X
If you're interested in particpating, please send an email to [email protected] I probably won't reply, so TIA
* added the shell env var and shell setting to the sanity check output
* I added a small article about running [golint](https://github.com/golang/lint) and other user-commands for linting
https://github.com/DisposaBoy/GoSublime/blob/master/articles/golint.md
* changed GoSublime home dir to Packages/User/GoSublime/[PLATFORM]
* changed margo exe name to gosublime.margo_[VERSION]_[GO_VERSION].exe
* sorry for any breakages
* fix missing method snippet when using GoSublime-next.tmLanguage
* make sure the output panel is always accessed from the main thread
* document the `fn_exclude_prefixes` setting
* added basic syntax highlighting for go templates (embedded within `{{` and `}}`)
* inside .go files, `raw` strings(only) now has highlighting for go templates
*note* this is only available on the GoSublime-next syntax which will be set to the default
for .go files soon, see https://github.com/DisposaBoy/GoSublime/issues/245
* for html files, the extension .gohtml will yield html highlighting, snippets, etc.
as normal .html files do, with addition of go template highighting within `{{` and `}}`
see https://github.com/DisposaBoy/GoSublime/issues/252
* 9o: `tskill` without args, now opens the `pending tasks` palette
* fix `mg -env` in st3 on windows
* add basic support for injecting commands into 9o.
contact me if you intend to make use of this feature
* 9o `hist` now honours `9o_instance`
* more 9o `cd`, always chdir
* fix not being able to properly cd to relative parent directories
* add a basic `cd` command to 9o. see 9o `help` for documentation
* mg/sh now handless binary output
* mg/sh now accepts a string `Cmd.Input` that allows passing input the command
* improved GoSublime-next syntax highlighting.
see https://github.com/DisposaBoy/GoSublime/issues/245
* display 9o wd in a simplified manner
* impl 9o_instance setting: note: this does not work yet
* add support for setting the 9o color scheme with `9o_color_scheme`
* fix completion being shown in gs-next tmlang when the cursor it at the end of the line
* disable completion in gs-next: strings, runes, comments
* A new syntax definition has been created to fix all the short-comings of the existing
syntax highlighting. if you're interested in testing it, please take a look at
https://github.com/DisposaBoy/GoSublime/issues/245
* add new `9o_instance` and `9o_color_scheme`. note: these are not yet implemented
see https://github.com/DisposaBoy/GoSublime/issues/243
* add new `lint_enbaled` and `linters` settings. note: the new linter has not yet been implemented
see https://github.com/DisposaBoy/GoSublime/issues/220
* removed setting: `margo_addr`, if you have a *MarGo* binary in your $PATH, delete it.
* don't sort imports when adding/removing
* fix mg9 request leak
* give PATH preference to Go related bin directories
this has the side-effect that if you set e.g. GOROOT in your project settings(e.g. GAE),
then $GOROOT/bin/go should be found first, even if you have a normal Go binary at /usr/bin/gos
* fix failure to load GoSublime.tmLanguage in st3
* fix gs.which treating directories `$PATH` named `go` as the `go` executable
** WARNING **
**
** the linter system is being redone
** this means comp_lint and all lint-related settings will be removed or renamed
** see https://github.com/DisposaBoy/GoSublime/issues/220
**
* only show calltip if the call is on the same line as the cursor:
this avoids displaying a calltip for fmt.Println() in the following snippet
fmt.|
fmt.Println("done")
* fix failing to find a calltip for b() in p.a(p.b())
* calltips are now implemented in margo
* pre-compile margo on update (before restart)
* detect the go binary's path instead of relying on python
* try to work-around odd scrolling in 9o
* when replaying unsaved views you are now able to navigate to src lines inside 9o
* add GOBIIN to PATH
* set default package snippet to `package main` if the filename is main.go
* use relative paths when setting syntax files: should fix any errors about not being able to load e.g. 9o.hidden-tmLanguage
* update gocode to https://github.com/nsf/gocode/commit/86e62597306bc1a07d6e64e7d22cd0bb0de78fc3
* restore py3k compat: execfile was removed
* work-around show_call_tip hang when the file starts with a comment
* impl a basic oom killer in MarGo. If MarGo's memory usage reaches 1000m, she? will die
you can configure this limit in the user settings ctrl+dot,ctrl+5
e.g. to limit the memory use to 500m use:
"margo_oom": 500
* add support for showing function call tip live in the status bar
to enable to add the setting:
"autocomplete_live_hint": true
to your user settings in ctrl+dot,ctrl+5
note: the old keybinding ctrl+dot,ctrl+space works as normal
* properly detect when the source(about.py) changes
* notify the user of an update if the on-disk vesion differs from the live version
* add bindings for default setting(ctrl+dot,ctrl+4) and user settings(ctrl+dot,ctrl+5)
* more python hacks
* make the sanity check output more verbose
* add key bindings for:
(replace ctrl with super on os x)
README.md: ctrl+dot,ctrl+1
USAGE.md: ctrl+dot,ctrl+2
run sanity check: ctrl+dot,ctrl+3
* abort blocking calls(completion, fmt) early if the install stage isn't set to "done"
* wait for mg9.install to finish before attempting to send any request to margo.
fixes a false-positive error about the mg binary being missing before installtion completes
* fix call to getcwdu(not in py3k)
* communicate a tag/version between gs and mg so the case where they're out-of-sync can be detected
* use getcwdu instead of getcwd in hopes of avoiding python issues
* foreign platform binaries will no longer be cleaned up
e.g. where the current platform is linux-x64, a linux-x32 binary (gosublime.margo.r13.03.23-1.linux-x32.exe)
will not be cleaned up until you load st2 on linux-x32
* MarGo EXE name has changed to gosublime.margo.[VERSION].[platform]-[arch].exe
e.g. gosublime.margo.r13.03.20-1.linux-x64.exe
* use the first action on a line if an action is triggered in the wrong place
e.g. if there is a filename and an error message, clicking on the error message will
9o will now try find the filename
* add imports to the top of the block. this causes them to be a part of the first group of imports
in cases where imports are group by separating them with a space
* reduce false-positives in gs.flag linter
* fix margo help/flags (remove gocode flags from the output)
* cap the number of concurrent requests margo will process
* add go/types (like the old gotype) linter
* disable go/types linter by default:
to enabled it, set an empty filter list in your user settings e.g. `"lint_filter": []`
* add new setting `lint_filter`. see the default settings for documentation
*impl 9o `hist` command
* add THANKS.md there are several other donors who weren't added since your donations were
done anonymously. I'd like to add you as well :) if you want your name added please let me know
either thank you all!
* initial(incomplete) Sublime Text 3 support
* gsshell ui and gs_shell command removed
* anything that imported or used gs* commands is probably broken
* impl `go share` as 9o command `share`. see ctrl+9 "help" for more details
* add new setting `build_command` to allow changing what command is run when you press ctrl+dot,ctrl+b
see the default settings for documentation (ctrl+dot,ctrl+dot "default settings")
* fmt verbs are now highlighted in raw strings
* fix race between fmt_save and 9o
* allow action'ing (super/ctrl+g only) seletions in 9o
* (by default) only save 9o history if the command was manually executed
* correctly handle hist indexing when there's only one command in the history (last command not recalled on ctrl+dot,ctrl+b)
* fix broken package snippet (inserting blank package name)
* set .go files to use the `GoSublime` syntax definition instead of `Go` as it's more complete
* hide GsDoc and 9o sytax definitions from the command palette
* fix 9o command history indexing (caused wrong command to be expanded for ^1, ^2 etc)
* add $HOME/go/bin to $PATH
* add $HOME/bin to $PATH
* fix broken 9o-related keybindings (ctrl+dot,ctrl+r etc.)
* fix missing declarations in unsaved files
**majour refactoring - watch out for bugs**
* fix handling of binary data in the run/replay commands
* misc tweaks+fixes
* remove gsdepends
* remove all rpc calls to margo.py
* remove margo0
**IMPORTANT**
this update marks the complete transition of all keybindings away from GsShell.
`ctrl+b` `ctrl+dot`,`ctrl+b` `ctrl+dot`,`ctrl+t` and `ctrl+dot`,`ctrl+r`
all uses 9o now. for more information about the GsShell replacement 9o please press ctrl+9 and type help
**NOTICE**
The transition to 9o has begun. press ctrl+9 or super+9 and type `help` for more details on 9o.
9o will evntually completely replace all GoSublime's interaction with the OS' shell.
This includes GsShell(ctrl+dot,ctrl+b).
As of this update, `ctrl+dot`,`ctrl+r` and `ctrl+dot`,`ctrl+t` has been remapped
* impl 9o command history
* add keybindings in 9o for committing autocompletion instead of executing the prompt when auto_complete_commit_on_tab is false
* added pledgie badge http://www.pledgie.com/campaigns/19078
**WARNING**
GoSublime will soon switch to 9o `ctrl+9` or `super+9`.
It will replace GsShell `ctrl+dot`,`ctrl+b` (maybe `ctrl+b`).
GsShell has reached its EOL and as a result no GsShell specific bugs will be fixed, old or new.
The code (gsshell.py) will remain for a little while so if you use code that interacts
with it, now is the time to make let me know so necessary features can implemented in 9o
* add two new 9o command `env` and `settings` see 9o `help` for more details
* 9o now supports a new scheme `gs.packages` e.g. `ctrl+shft`, left-click on gs.packages://GoSublime/9o.md will open the 9o docs
* added two task aliases to tskill
`tskill replay` will kill/cancel the last replay command
`tskill go` will kill the last go command (go test, etc.). as a consequence,
the 9o `go` command now acts like the `replay` command in that kills any previous instance
* added new setting autosave:
controls whether or not pkg files should be automatically saved when necessary
(e.g. when running 9o `replay` or `go test` commands)
* impl click-tests. i.e `ctrl+shift`,`left-click` on words that start with Test,Benchmark or Example
will run go corresponding test or bench. `ctrl+shift`,`right-click` will do the same but using only the prefix
e.g.
`ctrl+shift`,`left-click` on `BenchmarkNewFunc` will run only `BenchmarkNew`:
`go test -test.run=none -test.bench="^BenchmarkNew$"`
`ctrl+shift`,`right-click` on `BenchmarkNewFunc` will run all benchmarks:
`go test -test.run=none -test.bench="^Benchmark.*"`
* impl 9o tskill command. see 9o(ctrl+9) "help" for more info
* impl `go test` in 9o run and replay
* introducing 9o, the new command-shell. press `ctrl+9` or `super+9` to activate it.
WARNING: in the near future 9o will replace GsShell
* sync gocode: Windows-specific config_dir/config_file implementation.
* add a new setting: `autocomplete_filter_name`
you may set this to a regexp which will be used to filter entries in the auto-completion list
e.g. `"autocomplete_filter_name": "^autogenerated_"` will prevent any type or function
whose name begins with "autogenerated_" from appearing in the auto-completion list
* implement `9 replay` command that will `9 play` (build + run) the current package, after killing any previous instances.
Until it goes live, you can override the existing `ctrl+dot`,`ctrl+r` binding or bind it to something else by adding
the following key binding to your user key bindings via menu `Preferences > Key Bindings - User`
{
"keys": ["ctrl+.", "ctrl+r"],
"command": "gs_commander_open",
"args": {"run": ["9", "replay"]},
"context": [{ "key": "selector", "operator": "equal", "operand": "source.go" }]
}
* setting `margo_cmd` has been removed
* setting `gocode_cmd` has been removed
* setting `complete_builtins` has been renamed to `autocomplete_builtins`
* If you have issues with env vars, particularly on OS X, consider setting the
`shell` setting. See `Packages/User/GoSublime.sublime-settings` for more details
* MarGo (margo0) and gocode are now bundled with GoSublime and should be in active use.
Feel free to remove any old source from $GOPATH*/github.com/{nsf/gocode,DisposaBoy/MarGo}
if you have no use for them in additiion to their respective binaries
* added new setting `complete_builtins`
set this to `true` to show builtin type and functions in the completion menu
* BREAKING CHANGES ARE COMING: in the next GoSublime update support for windows-style
environment variables will be removed.
If you have environment variables that are not expanded before GS sees them and they are
of the form `%HOME%`, `%GOPATH%` etc. they will no longer be expanded.
You should transition to *nix-style env vars.
i.e `%GOPATH%` etc. should be changed to `$GOPATH`. `$$` can be used to escape to escape`$` characters
* the experimental gsshell replacement codename shelly is no more.
it has been replaced with gscommander which operates from within the output panel
a separate instance per directory
to activate it press `ctrl+#` or `super+#`
proper documentation will appear as things progress but for now it works as follows:
paths are highlighted(usually bold), pressing `ctrl+shift+[left click]` will open it.
if the path is a file it will open in ST2 otherwise if it's a url it will be opened
in your web browser
typing `#` followed by a command and pressing `enter` will run that command
auto-completion and implementation of common commands such as `cd` and `go play` will follow soon
* add typename-aware method definition snippets for types declared in the current file
* add new setting `comp_lint_commands` that allows you specify what commands comp-lint should run
e.g to run `go vet` followed by `go install`, add the following to your user settings.
by default the only command run for comp-lint is `go install`
"comp_lint_enabled": true, // enable comp-lint
"comp_lint_commands": [
{"cmd": ["go", "install"]}, // first run go install
{"cmd": ["go", "vet"]} // followed by go vet,
],
"on_save": [
{"cmd": "gs_comp_lint"} // setup comp-lint to run after you save a file
],
see `Package/GoSublime/GoSublime.sublime-settings` for details
* add support snippets (an alternative to Sublime Text's Native snippets)
see `Package/GoSublime/GoSublime.sublime-settings` for details
* make gs_browse_files (`ctrl+dot`,`ctrl+m`) act more like a file browser.
it now lists all files in the current directory tree excluding known binary files:
(.exe, .a, files without extension, etc.) and an entry to go to the parent directory
* add experimental support for post-save commands
a new entry `on_save` is supported in `GoSublime.sublime-settings`, it takes a list of commands
in the form of an object {"cmd": "...", "args": {...}} where cmd can be any TextCommand
* add experimental support for `go install` on save in the form of another linter.
to activate it add the following to your `GoSublime.sublime-settings`
"comp_lint_enabled": true,
"on_save": [
{"cmd": "gs_comp_lint"}
]
note: enabling this will override(disable) the regular GsLint
* `ctrl+dot`,`ctrl+a` is now accessible globally
* `ctrl+dot`,`ctrl+o` now presents a file list instead of opening a file
* `ctrl+dot`,`ctrl+m` now list all relevant files (.go, .c, etc.)
as well all files in the directory tree recursively (sub-packages)
it also now works globally
* fix a bug which could cause MarGo to take a long time to respond (when accidentally parsing binary files)
update MarGo
* add platform info e.g (linux, amd64) to pkg declarations list (`ctrl+dot`,`ctrl+l`)
* add command palette entry to show the build output
press `ctrl+dot`,`ctrl+dot` and start typing `build output`
* update gocode: nsf fixed a bug that could cause gocode to hang on invalid input
* fix: handle filename for browse files correctly
update MarGo
* add support for browsing/listing the files in a the current package
press `ctrl+dot`,`ctrl+m`
update MarGo
* add basic call-tip? support
* press `ctrl+dot`,`ctrl+space` inside a function parameter list to show its declaration
* update gocode: nsf recently added improved support for variables declared in the head of `if` and `for` statements
* fix: imports not sorted on fmt/save
* fix: GsDoc doesn't work correctly in unsaved files
* various presentation tweaks
* documentation comments are now displayed for types
* package documentation is now displayed
* goto definition of packages is now enabled
* various keybindings now available in non .go files
`ctrl+dot`,`ctrl+dot` - open the command palette with only GoSublime entries
`ctrl+dot`,`ctrl+n` - create a new .go file
`ctrl+dot`,`ctrl+o` - browse packages
* update MarGo
* new quick panel for go test
allows easily running `Test.*`, `Example.*`, `Benchmark.*` or individual tests, examples and benchmarks
press `ctrl+dot`,`ctrl+t` to access the quick panel
* you can now browse packages
press `ctrl+dot`,`ctrl+o` to open the first file found in the select pkg dir
* new key binding added `ctrl+dot`,`ctrl+l` to list the declarations in the current pkg in a single step
it does the same thing as `ctrl+dot`,`ctrl+a` and then selecting 'Current Package'
* you can now browse declarations in the current package(beyond file-scope)
as well as all other packages
press `ctrl+dot`,`ctrl+a` to browser packages via a quick panel
listing the declarations in the current is still `ctrl+dot+`,`ctrl+d`
* update MarGo
* improve GsLint detection of un-called flag.Parse()
* listing declarations now works in unsaved files
* please update MarGo
* GsDoc documentation now shows example functions and blocks are now collapsed
* update MarGo
* fix: threading that caused gslint to crash
*
* added initial support for per-project settings
* a settings object named `GoSublime` in your project settings will override values
* specified in the `Gosublime.sublime-settings` file
*
* added new dynamic pseudo-environment variable `GS_GOPATH` will contain an auto-detected GOPATH
* e.g. if you file name is `/tmp/go/src/hello/main.go` it will contain the value `/tmp/go`
* it can safely added to your regular `GOPATH` `env` setting e.g.
* `"env": { "GOPATH": "$HOME/go:$GS_GOPATH" }`
* this allows for seemless use of project-based GOPATHs without explicit configuration
*
* added ctrl+click binding for GsDoc
* `ctrl+shift+left-click` acts as alias for `ctrl+dot,ctrl+g` a.k.a goto definition
* `ctrl+shift+right-click` acts as alias for `ctrl+dot,ctrl+h` a.k.a show documentation hint
* as always, `super` replace `ctrl` on OS X
* GsDoc now supports local, package-global and imported package variables and functions
(MarGo/doc is still incomplete, however: types(structs, etc.) are not resolved yet)
I've changed the way GsDoc works. Both mode are unified, ctrl+dot,ctrl+g will take you to
the definition but the hint( ctrl+dot,ctrl+h ) now displays the src along with any comments
attached to it (this is usually pure documentation)
* MarGo needs updating
* fix: file saving in gsshell
* fix: duplicating comment that follows imports when imports are modified
* fix: adding duplicate entries to the package list due to filename case-insensitivity
* the new_go_file command now automatically fills out the package declaration
* add binding to create a new go file ( ctrl+dot,ctrl+n )
* add support for running(play) the current file without saving it (`ctrl+dot`, `ctrl+r`)
* add support for sharing the contents of the current on play.golang.org
press `ctrl+dot`, `ctrl+dot` for a list of all commands and their key bindings as well sharing functionality
* MarGo now supports warning about calling flag.String() etc and forgetting to call flag.Parse() afterwards
* removed ctrl+shift+g keybinding, please use `ctrl+dot`,`ctrl+dot` to show the list of available commands and their kebindings
* complete implementation of imports:
use `ctrl+dot`,`ctrl+p` to add or remove packages
use `ctrl+dot`,`ctrl+i` to quickly jump to the last imported package where you can assign an alias, etc.
use `ctrl+dot`,`ctrl+[` to go back to where you were before
* MarGo needs updating and a restart of ST2 is recommended
* add support for configuring the fmt tab settings - see GoSublime.sublime-settings (fmt_tab_width and fmt_tab_indent)
* Add initial stub implementation of goto-definition and show-documentation
* this requires the latest version of MarGo
* new key bindings and commands: press `ctrl+.`, `ctrl+.`
* (control or super on OS X, followed by .(dot) twice)
* or open the command palette(`ctrl+shift+p`) and type `GoSublime:`
* to show a list of available commands and their respective key bindings
* note: currently only the pkgname.Function is supported, so types, methods or constants, etc.
* fix completion only offering the 'import snippet' if there aren't any imports in the file
* update MarGo
* re-enable linting
* start using margo.fmt, no more dependecy on `gofmt` and `diff`
* add support for installing/updating Gocode and MarGo