Closed kortschak closed 5 years ago
This is most likely a side-effect of the margo extension not being enabled in https://github.com/DisposaBoy/GoSublime/issues/849
Here is an example of what I see.
That's Sublime Text's completion. It will show because the margo extension isn't being loaded which means that the Gocode reducer isn't there to suppress it.
@disposaboy-afk I have a similar issue. The autocompletion seems working, but the package "fmt." doesn't show up.
@downleave based on the snippet markers in your screenshot, it appears that you're using the current release version of GoSublime. Please switch to the development
branch https://margo.sh/b/migrate/
I have the same problem and I am on the development branch already. http://prntscr.com/kpzj8h
If I type fmt
there are no completions. Even when I do Ctrl+Space
it says "no available completions".
@stjepangolemac
Make sure margo is actually configured and working (check console for errors, etc.).
Press ctrl+.,ctrl+x to configure margo. By default, some snippets are enabled but none of them are visible in your screenshot.
Here is my margo file, does it seem ok?
package margo
import (
"margo.sh/golang"
"margo.sh/mg"
"time"
)
// Margo is the entry-point to margo
func Margo(m mg.Args) {
// See the documentation for `mg.Reducer`
// comments beginning with `gs:` denote features that replace old GoSublime settings
// add our reducers (margo plugins) to the store
// they are run in the specified order
// and should ideally not block for more than a couple milliseconds
m.Use(
mg.NewReducer(func(mx *mg.Ctx) *mg.State {
// By default, events (e.g. ViewSaved) are triggered in all files.
// Replace `mg.AllLangs` with `mg.Go` to restrict events to Go(-lang) files.
// Please note, however, that this mode is not tested
// and saving a non-go file will not trigger linters, etc. for that go pkg
return mx.SetConfig(mx.Config.EnabledForLangs(
mg.AllLangs,
))
}),
// Add `go` command integration
// this adds a new commands:
// gs: these commands are all callable through 9o:
// * go: Wrapper around the go command, adding linter support
// * go.play: Automatically build and run go commands or run go test for packages
// with support for linting and unsaved files
// * go.replay: Wrapper around go.play limited to a single instance
// by default this command is bound to ctrl+.,ctrl+r or cmd+.,cmd+r
//
// UserCmds are also added for `Go Play` and `Go RePlay`
&golang.GoCmd{},
// add the day and time to the status bar
&DayTimeStatus{},
// both GoFmt and GoImports will automatically disable the GoSublime version
// you will need to install the `goimports` tool manually
// https://godoc.org/golang.org/x/tools/cmd/goimports
//
// gs: this replaces settings `fmt_enabled`, `fmt_tab_indent`, `fmt_tab_width`, `fmt_cmd`
//
// golang.GoFmt,
// or
// golang.GoImports,
// use gocode for autocompletion
// gs: this replaces the `gscomplete_enabled` setting
&golang.Gocode{
// Whether or not to do gocode completion using source code
// instead of the pre-compiled package files.
// Using source is often slower but offer more up-to-date completions.
Source: true,
// show the function parameters. this can take up a lot of space
ShowFuncParams: true,
// whether or not to include Test*, Benchmark* and Example* functions in the auto-completion list
// gs: this replaces the `autocomplete_tests` setting
ProposeTests: false,
// whether or not builtin types and functions should be shown in the auto-completion list
// gs: this replaces the `autocomplete_builtins` setting
ProposeBuiltins: true,
},
// show func arguments/calltips in the status bar
// gs: this replaces the `calltips` setting
&golang.GocodeCalltips{
// Whether or not to do gocode completion using source code
// instead of the pre-compiled package files.
// Using source is often slower but offer more accurate completions.
Source: true,
},
// use guru for goto-definition
// new commands `goto.definition` and `guru.definition` are defined
// gs: by default `goto.definition` is bound to ctrl+.,ctrl+g or cmd+.,cmd+g
&golang.Guru{},
// add some default context aware-ish snippets
// gs: this replaces the `autocomplete_snippets` and `default_snippets` settings
golang.Snippets,
// add our own snippets
// gs: this replaces the `snippets` setting
MySnippets,
// check the file for syntax errors
// gs: this and other linters e.g. below,
// replaces the settings `gslint_enabled`, `lint_filter`, `comp_lint_enabled`,
// `comp_lint_commands`, `gslint_timeout`, `lint_enabled`, `linters`
&golang.SyntaxCheck{},
// run `go install -i` on save
// golang.GoInstall("-i"),
// or
// golang.GoInstallDiscardBinaries("-i"),
//
// GoInstallDiscardBinaries will additionally set $GOBIN
// to a temp directory so binaries are not installed into your $GOPATH/bin
//
// the -i flag is used to install imported packages as well
// it's only supported in go1.10 or newer
// run `go vet` on save. go vet is ran automatically as part of `go test` in go1.10
// golang.GoVet(),
// run `go test -race` on save
// golang.GoTest("-race"),
// run `golint` on save
// &golang.Linter{Name: "golint", Label: "Go/Lint"},
// run gometalinter on save
// &golang.Linter{Name: "gometalinter", Args: []string{
// "--disable=gas",
// "--fast",
// }},
)
}
// DayTimeStatus adds the current day and time to the status bar
type DayTimeStatus struct {
mg.ReducerType
}
func (dts DayTimeStatus) ReducerMount(mx *mg.Ctx) {
// kick off the ticker when we start
dispatch := mx.Store.Dispatch
go func() {
ticker := time.NewTicker(1 * time.Second)
for range ticker.C {
dispatch(mg.Render)
}
}()
}
func (dts DayTimeStatus) Reduce(mx *mg.Ctx) *mg.State {
// we always want to render the time
// otherwise it will sometimes disappear from the status bar
now := time.Now()
format := "Mon, 15:04"
if now.Second()%2 == 0 {
format = "Mon, 15 04"
}
return mx.AddStatus(now.Format(format))
}
// MySnippets is a slice of functions returning our own snippets
var MySnippets = golang.SnippetFuncs(
func(cx *golang.CompletionCtx) []mg.Completion {
// if we're not in a block (i.e. function), do nothing
if !cx.Scope.Is(golang.BlockScope) {
return nil
}
return []mg.Completion{
{
Query: "if err",
Title: "err != nil { return }",
Src: "if ${1:err} != nil {\n\treturn $0\n}",
},
}
},
)
And here is my console output
environment variables loaded using: /bin/bash -l
reloading plugin Default.arithmetic
reloading plugin Default.auto_indent_tag
reloading plugin Default.block
reloading plugin Default.colors
reloading plugin Default.comment
reloading plugin Default.convert_color_scheme
reloading plugin Default.convert_syntax
reloading plugin Default.copy_path
reloading plugin Default.delete_word
reloading plugin Default.detect_indentation
reloading plugin Default.duplicate_line
reloading plugin Default.echo
reloading plugin Default.exec
reloading plugin Default.fold
reloading plugin Default.font
reloading plugin Default.goto_line
reloading plugin Default.history_list
reloading plugin Default.indentation
reloading plugin Default.install_package_control
reloading plugin Default.kill_ring
reloading plugin Default.mark
reloading plugin Default.new_templates
reloading plugin Default.open_context_url
reloading plugin Default.open_in_browser
reloading plugin Default.pane
reloading plugin Default.paragraph
reloading plugin Default.paste_from_history
reloading plugin Default.profile
reloading plugin Default.quick_panel
reloading plugin Default.rename
reloading plugin Default.run_syntax_tests
reloading plugin Default.save_on_focus_lost
reloading plugin Default.scroll
reloading plugin Default.set_unsaved_view_name
reloading plugin Default.settings
reloading plugin Default.show_scope_name
reloading plugin Default.side_bar
reloading plugin Default.sort
reloading plugin Default.swap_line
reloading plugin Default.switch_file
reloading plugin Default.symbol
reloading plugin Default.transform
reloading plugin Default.transpose
reloading plugin Default.trim_trailing_white_space
reloading plugin Default.ui
reloading plugin CSS.css_completions
reloading plugin Diff.diff
reloading plugin HTML.encode_html_entities
reloading plugin HTML.html_completions
reloading plugin ShellScript.ShellScript
reloading plugin Vintage.vintage
reloading plugin Vintage.vintage_commands
reloading plugin Vintage.vintage_motions
reloading plugin 0_package_control_loader.00-package_control
reloading plugin 0_package_control_loader.01-pygments
reloading plugin 0_package_control_loader.50-backrefs
reloading plugin 0_package_control_loader.50-markupsafe
reloading plugin 0_package_control_loader.50-pymdownx
reloading plugin 0_package_control_loader.50-python-markdown
reloading plugin 0_package_control_loader.50-pyyaml
reloading plugin 0_package_control_loader.51-python-jinja2
reloading plugin 0_package_control_loader.55-mdpopups
reloading plugin A File Icon.A File Icon
reloading plugin AdvancedNewFile.AdvancedNewFile
reloading plugin ayu.activation
reloading plugin ayu.Icons
reloading plugin BracketHighlighter.bh_core
reloading plugin BracketHighlighter.bh_logging
reloading plugin BracketHighlighter.bh_plugin
reloading plugin BracketHighlighter.bh_popup
reloading plugin BracketHighlighter.bh_regions
reloading plugin BracketHighlighter.bh_remove
reloading plugin BracketHighlighter.bh_rules
reloading plugin BracketHighlighter.bh_search
reloading plugin BracketHighlighter.bh_swapping
reloading plugin BracketHighlighter.bh_wrapping
reloading plugin BracketHighlighter.support
reloading plugin DocBlockr.jsdocs
reloading plugin Git.git_commands
reloading plugin GitGutter.debounce
reloading plugin GitGutter.plugin
reloading plugin Package Control.1_reloader
reloading plugin Package Control.2_bootstrap
reloading plugin Package Control.Package Control
reloading plugin SideBarEnhancements.SideBar
reloading plugin SideBarEnhancements.SideBarAPI
reloading plugin SideBarEnhancements.SideBarDefaultDisable
reloading plugin Babel.Babel
reloading plugin ESLint.ESLint
reloading plugin GoSublime._after
reloading plugin GoSublime._before
reloading plugin GoSublime.GoSublime
reloading plugin GoSublime.gs9o
reloading plugin GoSublime.gscommands
reloading plugin GoSublime.gscomplete
reloading plugin GoSublime.gsdoc
reloading plugin GoSublime.gsev
reloading plugin GoSublime.gslint
reloading plugin GoSublime.gspalette
reloading plugin GoSublime.gstest
reloading plugin GoSublime.margo_sublime
reloading plugin JsPrettier.JsPrettier
plugins loaded
GoSublime r18.08.31-1: _before.init()
GoSublime r18.08.31-1: gs.init()
GoSublime r18.08.31-1: sh.init()
GoSublime r18.08.31-1 sh: using shell env GOPATH=/Users/stjepangolemac/go
GoSublime r18.08.31-1 sh: using shell env GOROOT=/usr/local/Cellar/go/1.10.1/libexec
GoSublime r18.08.31-1 sh: using shell env PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin:/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/bin:/Users/stjepangolemac/go/bin:/Users/stjepangolemac/n/bin:/Users/stjepangolemac/Library/Python/2.7/bin:/Users/stjepangolemac/bin:/usr/local/opt/go/bin:/Users/stjepangolemac/Library/Python/2.7/bin
GoSublime r18.08.31-1 sh: go version: `go1.10.1` (raw version string `go1.10.1`)
GoSublime r18.08.31-1 sh: shell bootstrap took 0.539s
GoSublime r18.08.31-1: margo.init()
GoSublime r18.08.31-1: mg9.init()
[12:02:31] margo: agent#007: starting
GoSublime r18.08.31-1: _after.init()
** 2018-09-03 12:02:31.663823 **:
GoSublime init r18.08.31-1 (0.004s)
| install margo: no
| install state: done
| sublime.version: 3176
| sublime.channel: stable
| about.ann: a18.08.31-1
| about.version: r18.08.31-1
| version: r18.08.31-1
| platform: osx-x64
| ~bin: ~/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/osx-x64/bin
| margo.exe: ~bin/gosublime.margo_r18.08.31-1_go1.10.1.exe (ok)
| go.exe: /usr/local/Cellar/go/1.10.1/libexec/bin/go (ok)
| go.version: go1.10.1
| GOROOT: /usr/local/Cellar/go/1.10.1/libexec
| GOPATH: ~/go
| GOBIN: (not set)
| set.shell: []
| env.shell: /bin/bash
| shell.cmd: ['/bin/bash', '-l', '-c', '${CMD}']
| sh.bootstrap:
| > using shell env GOPATH=~/go
| > using shell env GOROOT=/usr/local/Cellar/go/1.10.1/libexec
| > using shell env PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:~/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin:~/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/bin:~/go/bin:~/n/bin:~/Library/Python/2.7/bin:~/bin:/usr/local/opt/go/bin:~/Library/Python/2.7/bin
| > go version: `go1.10.1` (raw version string `go1.10.1`)
| > shell bootstrap took 0.539s
| >
--------------------------------
[12:02:32] margo: agent#007: ['/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin/margo.sh', 'start', 'margo.sublime', '-codec', 'msgpack']
[12:02:32] margo: agent#007: log: Using margo extension: /Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/src/margo
[12:02:32] margo: agent#007: log: ``` go install -v -tags="margo margo_extension" margo.sh/cmd/margo.sublime ```
[12:02:32] margo: agent#007: log: ``` "/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin/margo.sublime" -codec msgpack ```
[12:02:32] margo: agent#007: log: store.go:137: started
Package Control: No updated packages
@stjepangolemac
The file should be fine (works for me). Do you see the time in the status bar or any errors in the Sublime Text console?
Yep I see the time and I cannot find any errors in the console, the output is up there if you want to check it out.
Be sure to check the console after you attempt autocompletion. The log you posted seems to be from earlier in the session because I can't see any output from guru
which should print something like go install margo.sh/vendor/golang.org/x/tools/cmd/guru
when a .go
file becomes active.
If you add the reducer below, do you see abc123
in the status bar or xyz
when you type x
?
mg.NewReducer(func(mx *mg.Ctx) *mg.State {
return mx.AddStatus("abc123").
AddCompletions(
mg.Completion{Query: "xyz"},
)
}),
I got the completion issue. Log as below:
Package Control: Skipping automatic upgrade, last run at 2018-09-05 14:56:13, next run at 2018-09-05 15:56:13 or after
[15:05:58] margo: agent#007: log: ``` go install margo.sh/vendor/golang.org/x/tools/cmd/guru ```
[15:06:01] margo: agent#007: log: gocode.go:168: gocode didn't respond after 250ms taking 253ms
[15:06:01] margo: agent#007: log: gocode.go:143: gocode didn't accept the request after 103ms
[15:06:02] margo: agent#007: log: gocode.go:143: gocode didn't accept the request after 102ms
[15:06:03] margo: agent#007: log: gocode.go:143: gocode didn't accept the request after 104ms
[15:06:04] margo: agent#007: log: gocode.go:143: gocode didn't accept the request after 101ms
[15:06:05] margo: agent#007: log: gocode.go:143: gocode didn't accept the request after 104ms
[15:06:05] margo: agent#007: log: gocode.go:143: gocode didn't accept the request after 102ms
[15:06:05] margo: agent#007: log: gocode.go:159: gocode eventually responded after 4.925s
The victim repo is out of GOPATH. (But it worked the other day, if I recalled correctly)
For projects in GOPATH, the completion works fine at present.
$ go version:
go version go1.11 darwin/amd64
@DisposaBoy when I paste this reducer I get the xyz completion, it is the only one. And after typing something and manually invoking the completion this is the log.
startup, version: 3176 osx x64 channel: stable
executable: /Applications/Sublime Text.app/Contents/MacOS/Sublime Text
working dir: /
packages path: /Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages
state path: /Users/stjepangolemac/Library/Application Support/Sublime Text 3/Local
zip path: /Applications/Sublime Text.app/Contents/MacOS/Packages
zip path: /Users/stjepangolemac/Library/Application Support/Sublime Text 3/Installed Packages
ignored_packages: ["ActualVim"]
Errors parsing theme:
icon_file_type is missing layer0.opacity, setting to 1.0 for backwards compatibility
icon_file_type is missing layer0.opacity, setting to 1.0 for backwards compatibility
pre session restore time: 0.255862
using gpu buffer for window
loading dictionary Packages/Language - English/en_US.dic
font face "Source Code Pro" could not be found, defaulting to "Menlo"
startup time: 0.377903
environment variables loaded using: /bin/bash -l
reloading plugin Default.arithmetic
reloading plugin Default.auto_indent_tag
reloading plugin Default.block
reloading plugin Default.colors
reloading plugin Default.comment
reloading plugin Default.convert_color_scheme
reloading plugin Default.convert_syntax
reloading plugin Default.copy_path
reloading plugin Default.delete_word
reloading plugin Default.detect_indentation
reloading plugin Default.duplicate_line
reloading plugin Default.echo
reloading plugin Default.exec
reloading plugin Default.fold
reloading plugin Default.font
reloading plugin Default.goto_line
reloading plugin Default.history_list
reloading plugin Default.indentation
reloading plugin Default.install_package_control
reloading plugin Default.kill_ring
reloading plugin Default.mark
reloading plugin Default.new_templates
reloading plugin Default.open_context_url
reloading plugin Default.open_in_browser
reloading plugin Default.pane
reloading plugin Default.paragraph
reloading plugin Default.paste_from_history
reloading plugin Default.profile
reloading plugin Default.quick_panel
reloading plugin Default.rename
reloading plugin Default.run_syntax_tests
reloading plugin Default.save_on_focus_lost
reloading plugin Default.scroll
reloading plugin Default.set_unsaved_view_name
reloading plugin Default.settings
reloading plugin Default.show_scope_name
reloading plugin Default.side_bar
reloading plugin Default.sort
reloading plugin Default.swap_line
reloading plugin Default.switch_file
reloading plugin Default.symbol
reloading plugin Default.transform
reloading plugin Default.transpose
reloading plugin Default.trim_trailing_white_space
reloading plugin Default.ui
reloading plugin CSS.css_completions
reloading plugin Diff.diff
reloading plugin HTML.encode_html_entities
reloading plugin HTML.html_completions
reloading plugin ShellScript.ShellScript
reloading plugin Vintage.vintage
reloading plugin Vintage.vintage_commands
reloading plugin Vintage.vintage_motions
reloading plugin 0_package_control_loader.00-package_control
reloading plugin 0_package_control_loader.01-pygments
reloading plugin 0_package_control_loader.50-backrefs
reloading plugin 0_package_control_loader.50-markupsafe
reloading plugin 0_package_control_loader.50-pymdownx
reloading plugin 0_package_control_loader.50-python-markdown
reloading plugin 0_package_control_loader.50-pyyaml
reloading plugin 0_package_control_loader.51-python-jinja2
reloading plugin 0_package_control_loader.55-mdpopups
reloading plugin A File Icon.A File Icon
reloading plugin AdvancedNewFile.AdvancedNewFile
reloading plugin ayu.activation
reloading plugin ayu.Icons
reloading plugin BracketHighlighter.bh_core
reloading plugin BracketHighlighter.bh_logging
reloading plugin BracketHighlighter.bh_plugin
reloading plugin BracketHighlighter.bh_popup
reloading plugin BracketHighlighter.bh_regions
reloading plugin BracketHighlighter.bh_remove
reloading plugin BracketHighlighter.bh_rules
reloading plugin BracketHighlighter.bh_search
reloading plugin BracketHighlighter.bh_swapping
reloading plugin BracketHighlighter.bh_wrapping
reloading plugin BracketHighlighter.support
reloading plugin DocBlockr.jsdocs
reloading plugin Git.git_commands
reloading plugin GitGutter.debounce
reloading plugin GitGutter.plugin
reloading plugin Package Control.1_reloader
reloading plugin Package Control.2_bootstrap
reloading plugin Package Control.Package Control
reloading plugin SideBarEnhancements.SideBar
reloading plugin SideBarEnhancements.SideBarAPI
reloading plugin SideBarEnhancements.SideBarDefaultDisable
reloading plugin Babel.Babel
reloading plugin ESLint.ESLint
reloading plugin GoSublime._after
reloading plugin GoSublime._before
reloading plugin GoSublime.GoSublime
reloading plugin GoSublime.gs9o
reloading plugin GoSublime.gscommands
reloading plugin GoSublime.gscomplete
reloading plugin GoSublime.gsdoc
reloading plugin GoSublime.gsev
reloading plugin GoSublime.gslint
reloading plugin GoSublime.gspalette
reloading plugin GoSublime.gstest
reloading plugin GoSublime.margo_sublime
reloading plugin JsPrettier.JsPrettier
plugins loaded
GoSublime r18.08.31-1: _before.init()
GoSublime r18.08.31-1: gs.init()
GoSublime r18.08.31-1: sh.init()
GoSublime r18.08.31-1 sh: using shell env GOPATH=/Users/stjepangolemac/go
GoSublime r18.08.31-1 sh: using shell env GOROOT=/usr/local/Cellar/go/1.10.1/libexec
GoSublime r18.08.31-1 sh: using shell env PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin:/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/bin:/Users/stjepangolemac/go/bin:/Users/stjepangolemac/n/bin:/Users/stjepangolemac/Library/Python/2.7/bin:/Users/stjepangolemac/bin:/usr/local/opt/go/bin:/Users/stjepangolemac/Library/Python/2.7/bin
GoSublime r18.08.31-1 sh: go version: `go1.10.1` (raw version string `go1.10.1`)
GoSublime r18.08.31-1 sh: shell bootstrap took 0.186s
GoSublime r18.08.31-1: margo.init()
GoSublime r18.08.31-1: mg9.init()
[09:22:07] margo: agent#007: starting
GoSublime r18.08.31-1: _after.init()
** 2018-09-05 09:22:07.515300 **:
GoSublime init r18.08.31-1 (0.003s)
| install margo: no
| install state: done
| sublime.version: 3176
| sublime.channel: stable
| about.ann: a18.08.31-1
| about.version: r18.08.31-1
| version: r18.08.31-1
| platform: osx-x64
| ~bin: ~/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/osx-x64/bin
| margo.exe: ~bin/gosublime.margo_r18.08.31-1_go1.10.1.exe (ok)
| go.exe: /usr/local/Cellar/go/1.10.1/libexec/bin/go (ok)
| go.version: go1.10.1
| GOROOT: /usr/local/Cellar/go/1.10.1/libexec
| GOPATH: ~/go
| GOBIN: (not set)
| set.shell: []
| env.shell: /bin/bash
| shell.cmd: ['/bin/bash', '-l', '-c', '${CMD}']
| sh.bootstrap:
| > using shell env GOPATH=~/go
| > using shell env GOROOT=/usr/local/Cellar/go/1.10.1/libexec
| > using shell env PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/go/bin:~/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin:~/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/bin:~/go/bin:~/n/bin:~/Library/Python/2.7/bin:~/bin:/usr/local/opt/go/bin:~/Library/Python/2.7/bin
| > go version: `go1.10.1` (raw version string `go1.10.1`)
| > shell bootstrap took 0.186s
| >
--------------------------------
[09:22:07] margo: agent#007: ['/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin/margo.sh', 'start', 'margo.sublime', '-codec', 'msgpack']
[09:22:07] margo: agent#007: log: Using margo extension: /Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/src/margo
[09:22:07] margo: agent#007: log: ``` go install -v -tags="margo margo_extension" margo.sh/cmd/margo.sublime ```
[09:22:08] margo: agent#007: log: ``` "/Users/stjepangolemac/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin/margo.sublime" -codec msgpack ```
[09:22:08] margo: agent#007: log: store.go:137: started
Package Control: Skipping automatic upgrade, last run at 2018-09-05 09:21:01, next run at 2018-09-05 10:21:01 or after
[09:22:16] margo: agent#007: log: ``` go install margo.sh/vendor/golang.org/x/tools/cmd/guru ```
@zyxar is that a Go module? are you using Source: true
?
@stjepangolemac what does the following reducer print - EDIT: make sure it's bellow all the other reducers? does it fail in all go files?
mg.NewReducer(func(mx *mg.Ctx) *mg.State {
if !mx.ActionIs(mg.QueryCompletions{}) {
return mx.State
}
m := map[mg.CompletionTag]int{}
for _, c := range mx.Completions {
m[c.Tag] += 1
}
mx.Log.Dbg.Printf("lang=%s, comps=%v\n", mx.View.Lang, m)
return mx.State
}),
If the xyz
reducer works, but the golang.Snippets
don't, it could be that the the type of the file isn't detected correctly.
@DisposaBoy yes it's a Go module. Both Source: false
and Source: true
have the issue.
@zyxar maybe adding the &golang.MarGocodeCtl{Debug: true},
reducer will shed some light on the situation. Your logs show that gocode is slow, which is somewhat expected the first time you attempt any autocompletion. This reducer with Debug: true
will print logs about packages that are being imported.
@DisposaBoy this is the output from your reducer:
[12:44:05] margo: agent#007: log: DBG: margo.go:135: lang=go, comps=map[]
In margo.go I get type completions (such as float, int ,bool) and nothing else, but in other files I don't get anything besides func and for.
EDIT: lang in the bottom says GoSublime: Go
@stjepangolemac can you comment out both the golang.Gocode
and golang.GocodeCalltips
reducers and only the golangSnippets
? If snippets aren't working, it might be easier to debug that.
Note: all GoSublime completions end with characters like ·ƒ
, ·ρ
, ·ν
, ·ʂ
, etc. If it doesn't look like that, then it's not a margo/GoSublime completion.
Also, the cmd+space keybinding was removed from OSX so manually triggering autocomplete may or may not work as expected. You can be sure it's triggering by running this command in the Sublime Text console: view.run_command('auto_complete')
.
If you place the cursor inside of a function e.g. func main() {|cursor here|
and run that command, you should at least get some entries ending with ·ʂ
, and it should show them in every .go
file.
That should at least provide some good hints on where to look next.
@DisposaBoy too many import errors. I'll try inspecting when I have time (maybe in the weekend).
@DisposaBoy After switching to the development branch as you've specified above my autocompletion now works as intended, but go formatting does not work anymore and I must manually indent/format my code now.
@brianmartens I'll need some way to reproduce the issue e.g. your margo.go
file
It's about scope issue. I had added cx.Log.Println("OOOPS!")
before this line, and I got the "OOOPS!" in sublime console. Seems it affects other snippets.
Yep. It works fine on a blank file. Open blank file, set syntax to "GoSublime Go" and all complitters works like a charm. Package, import, main function, methods of imported package (standard and not standard library). But if file is not blank, then it doesn't work.
@logrusorgru Are you talking about snippets
only? or all auto-completion in general? If you can reliably reproduce the issue, please open a new issue with more details.
The line you added the println to is concerned with snippets only.
Or wait 30 mins. I'm about to push a new release.
But this behavior is not permanent. Sometimes, by unknown reason, it works fine and then doesn't work again. Hm-m-m-m. I'm confused.
@DisposaBoy, I'm about snippets only. But, probably, this also applies to autocompletion in general.
I'm using this to debug the CompletionScope
:
// margo.sh/golang/completion.go
func (c CompletionScope) String() (s string) {
switch {
case c&PackageScope != 0:
s += ",package"
case c&FileScope != 0:
s += ",file"
case c&DeclScope != 0:
s += ",decl"
case c&BlockScope != 0:
s += ",block"
case c&ImportScope != 0:
s += ",import"
case c&ConstScope != 0:
s += ",const"
case c&VarScope != 0:
s += ",var"
case c&TypeScope != 0:
s += ",type"
case c&CommentScope != 0:
s += ",comment"
case c&StringScope != 0:
s += ",string"
case c&ImportPathScope != 0:
s += ",importPath"
}
if s == "" {
return "<no>"
}
return s[1:]
}
@DisposaBoy, ah, sorry, no. Not snippets only. Methods of an imported package too.
@DisposaBoy, I'm about snippets only. But, probably, this also applies to autocompletion in general.
Thanks, Here is my margo.go file
On Mon, Sep 24, 2018 at 2:17 PM DisposaBoy notifications@github.com wrote:
@brianmartens https://github.com/brianmartens I'll need some way to reproduce the issue e.g. your margo.go file
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/DisposaBoy/GoSublime/issues/850#issuecomment-424073547, or mute the thread https://github.com/notifications/unsubscribe-auth/AOZiwbdzfn8Qa2hH1ReRA_quamMwAuh1ks5ueSG0gaJpZM4VsOlk .
I just pushed a new release that uses the source importer by default. Maybe it helps with the gocode completions.
@logrusorgru Are you sure it's a bug? remember the snippets are context-sensitive. So if the file is empty, only the the package snippet
is show. If you're inside a function the import (...)
snippet isn't shown, etc.
EDIT: Maybe doing a screen recording or something will help make it easier for me to understand what's happening.
@brianmartens I think you forgot the attachement.
@DisposaBoy, yes, I'm sure. I meant that snippets and completion doesn't work as expected (as it was).
@DisposaBoy Sorry about that. I tried using Gmail to reply but it must not have added the attachment here. margo.go.zip
@brianmartens you didn't enabled code formatting. You uncomment either golang.GoFmt
on line 49
or golang.GoImports
on line 51
@logrusorgru In that case, can you share some way (code, screen recording, etc.) for me to reproduce this?
Ah, I see now. Thanks for the help!
On Tue, Sep 25, 2018 at 2:02 PM DisposaBoy notifications@github.com wrote:
@brianmartens https://github.com/brianmartens you didn't enabled code formatting. You uncomment either golang.GoFmt on line 49 or golang.GoImports on line 51
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/DisposaBoy/GoSublime/issues/850#issuecomment-424443299, or mute the thread https://github.com/notifications/unsubscribe-auth/AOZiwSW2kvZo5xYe-Womp8ZJPRo37Ki7ks5uem_JgaJpZM4VsOlk .
@DisposaBoy , in a middle case it's unpredictable. But, there is a case that can be reproduced.
A comment before package
directive breaks import
snippet completion.
Also, dot in the leading comment triggers package <name>
auto-completion.
About the scope of imp
where import snippet is expected: without the comment its scope is file, with the comment its scope is package.
That's all can be reproduced I found for now.
@logrusorgru thanks I'll fix them in the next few days. Note: imp
/Import
completion is not provided by margo/GoSublime. It's coming from the Go
package (which you can safely disable if you want).
EDIT: also note, no gocode completion is shown in the global/file scope unless it's inside var (...)
I have the same issue as well on the latest release. If it helps here is my output in the console.
GoSublime r18.07.22-1: gs.init()
reloading settings Packages/User/Package Syncing.sublime-settings
GoSublime r18.07.22-1: sh.init()
GoSublime r18.07.22-1 sh: GOPATH is not set... setting it to the default: /Users/et/go
GoSublime r18.07.22-1 sh: using shell env GOPATH=/Users/et/go
GoSublime r18.07.22-1 sh: using shell env GOROOT=/usr/local/Cellar/go/1.11.1/libexec
GoSublime r18.07.22-1 sh: using shell env PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:/Users/et/go/bin:/usr/local/sbin:/Users/et/bin:/usr/local/go/bin:/usr/local/opt/go/bin
GoSublime r18.07.22-1 sh: go version: `go1.11.1` (raw version string `go1.11.1`)
GoSublime r18.07.22-1 sh: shell bootstrap took 0.165s
GoSublime r18.07.22-1: margo.init()
GoSublime r18.07.22-1: mg9.init()
[21:32:31] margo: agent#007: starting
** 2018-10-17 21:32:31.920453 **:
GoSublime init r18.07.22-1 (0.001s)
| install margo: no
| install state: done
| sublime.version: 3176
| sublime.channel: stable
| about.ann: a18.07.31-1
| about.version: r18.07.22-1
| version: r18.07.22-1
| platform: osx-x64
| ~bin: ~/Library/Application Support/Sublime Text 3/Packages/User/GoSublime/osx-x64/bin
| margo.exe: ~bin/gosublime.margo_r18.07.22-1_go1.11.1.exe (ok)
| go.exe: /usr/local/Cellar/go/1.11.1/libexec/bin/go (ok)
| go.version: go1.11.1
| GOROOT: /usr/local/Cellar/go/1.11.1/libexec
| GOPATH: ~/go
| GOBIN: (not set)
| set.shell: []
| env.shell: /bin/bash
| shell.cmd: ['/bin/bash', '-l', '-c', '${CMD}']
| sh.bootstrap:
| > GOPATH is not set... setting it to the default: ~/go
| > using shell env GOPATH=~/go
| > using shell env GOROOT=/usr/local/Cellar/go/1.11.1/libexec
| > using shell env PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Wireshark.app/Contents/MacOS:~/go/bin:/usr/local/sbin:~/bin:/usr/local/go/bin:/usr/local/opt/go/bin
| > go version: `go1.11.1` (raw version string `go1.11.1`)
| > shell bootstrap took 0.165s
| >
--------------------------------
[21:32:32] margo: agent#007: ['/Users/et/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin/margo', 'sublime', '-codec', 'msgpack']
[21:32:32] margo: agent#007: log: run["go" "install" "-v" "-tags=margo" "-i" "disposa.blue/margo/cmd/margo.sublime"]
[21:32:32] margo: agent#007: log: run["/Users/et/Library/Application Support/Sublime Text 3/Packages/GoSublime/bin/margo.sublime" "-codec" "msgpack"]
[21:32:32] margo: agent#007: log: agent.go:136: started
I have the same issue as well. This is a fresh install of ST3. The installed GoSublime git hash is cde59b7a (development branch).
package tmp
func main() {
fmt.
}
Cursor is positioned after fmt.
, hit Ctrl+Space you I get:
[07:13:16] margo: agent#008: log: DBG: gocode_suggest.go:71: Gocode: Error parsing input file (outer block):
[07:13:16] margo: agent#008: log: DBG: gocode_suggest.go:71: Gocode: /home/arsham/Projects/Go/src/github.com/arsham/tests/tmp/main.go:4:6: expected selector or type assertion, found ';'
[07:13:18] margo: agent#008: log: DBG: gocode_suggest.go:71: Gocode: Error parsing input file (outer block):
[07:13:18] margo: agent#008: log: DBG: gocode_suggest.go:71: Gocode: /home/arsham/Projects/Go/src/github.com/arsham/tests/tmp/main.go:4:6: expected selector or type assertion, found ';'
GoSublime r18.10.06-1: _before.init()
GoSublime r18.10.06-1: gs.init()
GoSublime r18.10.06-1: sh.init()
GoSublime r18.10.06-1 sh: GOPATH is not set... setting it to the default: /home/arsham/go
GoSublime r18.10.06-1 sh: using shell env CGO_CFLAGS_ALLOW=.*
GoSublime r18.10.06-1 sh: using shell env CGO_CXXFLAGS_ALLOW=.*
GoSublime r18.10.06-1 sh: using shell env CGO_LDFLAGS_ALLOW=.*
GoSublime r18.10.06-1 sh: using shell env GOPATH=/home/arsham/Projects/Go
GoSublime r18.10.06-1 sh: using shell env GOROOT=/usr/lib/go
GoSublime r18.10.06-1 sh: using shell env PATH=/usr/lib/ccache/bin/:/home/arsham/Projects/Go/bin:/home/arsham/.config/sublime-text-3/Packages/GoSublime/bin:/home/arsham/.config/sublime-text-3/Packages/User/GoSublime/bin:/home/arsham/go/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/arsham/bin:/usr/local/go/bin:/usr/local/opt/go/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
GoSublime r18.10.06-1 sh: go version: `go1.11.1` (raw version string `go1.11.1`)
GoSublime r18.10.06-1 sh: shell bootstrap took 0.069s
GoSublime r18.10.06-1: margo.init()
GoSublime r18.10.06-1: mg9.init()
[07:12:29] margo: agent#007: starting
GoSublime r18.10.06-1: _after.init()
** 2018-10-18 07:12:29.805067 **:
GoSublime init r18.10.06-1 (0.001s)
| install margo: no
| install state: done
| sublime.version: 3180
| sublime.channel: dev
| about.ann: a18.10.06-1
| about.version: r18.10.06-1
| version: r18.10.06-1
| platform: linux-x64
| ~bin: ~/.config/sublime-text-3/Packages/User/GoSublime/linux-x64/bin
| margo.exe: ~bin/gosublime.margo_r18.10.06-1_go1.11.1.exe (ok)
| go.exe: /usr/lib/go/bin/go (ok)
| go.version: go1.11.1
| GOROOT: /usr/lib/go
| GOPATH: ~/Projects/Go
| GOBIN: (not set)
| set.shell: []
| env.shell: /usr/bin/zsh
| shell.cmd: ['/usr/bin/zsh', '-l', '-c', '${CMD}']
| sh.bootstrap:
| > GOPATH is not set... setting it to the default: ~/go
| > using shell env CGO_CFLAGS_ALLOW=.*
| > using shell env CGO_CXXFLAGS_ALLOW=.*
| > using shell env CGO_LDFLAGS_ALLOW=.*
| > using shell env GOPATH=~/Projects/Go
| > using shell env GOROOT=/usr/lib/go
| > using shell env PATH=/usr/lib/ccache/bin/:~/Projects/Go/bin:~/.config/sublime-text-3/Packages/GoSublime/bin:~/.config/sublime-text-3/Packages/User/GoSublime/bin:~/go/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:~/bin:/usr/local/go/bin:/usr/local/opt/go/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
| > go version: `go1.11.1` (raw version string `go1.11.1`)
| > shell bootstrap took 0.069s
| >
--------------------------------
[07:12:29] margo: agent#007: ['/home/arsham/.config/sublime-text-3/Packages/GoSublime/bin/margo.sh', 'start', 'margo.sublime', '-codec', 'msgpack']
[07:12:29] margo: agent#007: log: Using margo extension: /home/arsham/.config/sublime-text-3/Packages/User/GoSublime/src/margo
[07:12:29] margo: agent#007: log: ``` go install -v -tags="margo margo_extension" margo.sh/cmd/margo.sublime ```
[07:12:30] margo: agent#007: log: ``` /home/arsham/.config/sublime-text-3/Packages/GoSublime/bin/margo.sublime -codec msgpack ```
[07:12:30] margo: agent#007: log: store.go:137: started
[07:12:30] margo: agent#007: log: ``` go install margo.sh/vendor/golang.org/x/tools/cmd/guru ```
package margo
import (
"margo.sh/golang"
"margo.sh/mg"
)
// Margo is the entry-point to margo
func Margo(m mg.Args) {
m.Use(
mg.NewReducer(func(mx *mg.Ctx) *mg.State {
return mx.SetConfig(mx.Config.EnabledForLangs(
mg.AllLangs,
))
}),
&golang.GoCmd{},
golang.GoFmt,
&golang.Gocode{
ShowFuncParams: true,
ProposeBuiltins: true,
Source: true,
UnimportedPackages: true,
Debug: true,
},
&golang.GocodeCalltips{},
&golang.Guru{},
golang.Snippets,
&golang.SyntaxCheck{},
&golang.TestCmds{
TestArgs: []string{},
BenchArgs: []string{"-benchmem"},
},
golang.GoInstall("-i"),
golang.GoVet(),
golang.GoTest(),
&golang.Linter{Name: "gometalinter", Args: []string{
"--disable=gas",
"--fast",
}},
)
}
I can confirm if I import fmt
the completion works.
@arsham UnimportedPackages
is not implemented, so you'll have to manually add the import or use goimports
.
Also you can remove Source:
; it's ignored now that the source code is used by default. See https://github.com/DisposaBoy/GoSublime/blob/development/CHANGELOG.md#180925
@notbaab That's not the latest version, see https://margo.sh/b/migrate/
That was exactly the issue for me, thanks!
I can confirm that my issue has been resolved by this commit c5646a2ad98.
Thanks.
i also have the problem
[14:36:03] margo: agent#007: log: gocode.go:201: gocode didn't respond after 250ms taking 250ms [14:36:03] margo: agent#007: log: gocode.go:176: gocode didn't accept the request after 109ms [14:36:03] margo: agent#007: log: gocode.go:192: gocode eventually responded after 563ms [14:36:04] margo: agent#007: log: gocode.go:201: gocode didn't respond after 250ms taking 250ms [14:36:04] margo: agent#007: log: gocode.go:176: gocode didn't accept the request after 109ms [14:36:04] margo: agent#007: log: gocode.go:192: gocode eventually responded after 578ms [14:37:10] margo: agent#007: log: gocode.go:201: gocode didn't respond after 250ms taking 250ms [14:37:11] margo: agent#007: log: gocode.go:192: gocode eventually responded after 688ms [14:37:12] margo: agent#007: log: gocode.go:201: gocode didn't respond after 250ms taking 250ms [14:37:13] margo: agent#007: log: gocode.go:192: gocode eventually responded after 594ms
and gofmt always use tab but i want to use space,the fmt_tab_indent config seems not working
@suckli please open a new issue.
fmt_tab_indent
isn't something that will be supported because that's not how gofmt works.Hi, first I would like to say that your plugin is awesome and has made me a lot more productive developer. The only issue that I'm having right now is that when I type func
, the http handler does not appear as completion suggestion. I'm using the default settings and:
egroj97@SmallFootIX:~/Code/go/src/gitlab.com/bolson67/wish$ go version
go version go1.11.2 linux/amd64
With the latest commit to this date:
commit 9be2a67d5dec0bc85736b44b1e09b79d3779aa05 (HEAD -> development, origin/development, origin/HEAD)
Author: DisposaBoy <disposaboy@kuroku.io>
Date: Mon Dec 10 10:29:42 2018 +0000
rename Go.sublime-syntax to Go-Copy.sublime-syntax as work-around for DisposaBoy/GoSublime#893
If you could please give me any suggestion about it, I would really appreciate it. Thanks in advance.
I am using bf2ead85bfddd7e442ae89ec4b332ae22fb9dbfd on go1.11beta2 (but also go1.10.3).
Code completion brings up a list of words, some of which are possibly relevant, but the vast majority are not. These are entirely unrelated to the package or import context.
Here is the console output, though I don't see anything useful here.
The values for GOPATH and GOROOT are correct.