DisposaBoy / GoSublime

A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.
MIT License
3.42k stars 302 forks source link

Code completion not working #850

Closed kortschak closed 5 years ago

kortschak commented 6 years ago

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.

DPI scale (detected): 1
startup, version: 3175 linux x64 channel: dev
executable: /opt/sublime_text/sublime_text
working dir: /
packages path: /home/userredacted/.config/sublime-text-3/Packages
state path: /home/userredacted/.config/sublime-text-3/Local
zip path: /opt/sublime_text/Packages
zip path: /home/userredacted/.config/sublime-text-3/Installed Packages
ignored_packages: ["Vintage"]
pre session restore time: 0.07466
loading dictionary Packages/Language - English/en_US.dic
startup time: 0.162235
first paint time: 0.178941
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 0_package_control_loader.00-package_control
reloading plugin 0_package_control_loader.01-ssl-linux
Package Control: Linux SSL: successfully loaded _ssl module for libssl.so.1.0.0
Package Control: Linux SSL: unloading http module so ssl will be available
Package Control: Linux SSL: unloading urllib module so ssl will be available
reloading plugin 0_package_control_loader.02-bz2
reloading plugin FileDiffs.file_diffs
reloading plugin Find++.DirectoryPanel
reloading plugin Find++.FindPlusPlus
reloading plugin Git.git_commands
reloading plugin GoTests.GoTests
reloading plugin GoToTest.GoToTest
reloading plugin Package Control.1_reloader
reloading plugin Package Control.2_bootstrap
reloading plugin Package Control.Package Control
reloading plugin VCS Gutter.gutter_handlers
reloading plugin VCS Gutter.vcs_gutter
reloading plugin VCS Gutter.vcs_gutter_change
reloading plugin VCS Gutter.vcs_gutter_events
reloading plugin VCS Gutter.vcs_helpers
reloading plugin VCS Gutter.view_collection
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 LaTeXTools.01_reload_submodules
reloading plugin LaTeXTools.02_temp_file_cleanup
reloading plugin LaTeXTools.biblatex_crossref_completions
reloading plugin LaTeXTools.biblatex_field_name_completions
reloading plugin LaTeXTools.biblatex_name_completions
reloading plugin LaTeXTools.biblatex_snippet_completions
reloading plugin LaTeXTools.biblatex_syntax_listener
reloading plugin LaTeXTools.change_environment
reloading plugin LaTeXTools.create_mousemap
reloading plugin LaTeXTools.delete_temp_files
reloading plugin LaTeXTools.detect_spellcheck
reloading plugin LaTeXTools.getRegion
reloading plugin LaTeXTools.getTeXRoot
reloading plugin LaTeXTools.jumpto_anywhere
reloading plugin LaTeXTools.jumpto_tex_file
reloading plugin LaTeXTools.jumpToPDF
reloading plugin LaTeXTools.kpsewhich
reloading plugin LaTeXTools.latex_cite_completions
reloading plugin LaTeXTools.latex_cwl_completions
reloading plugin LaTeXTools.latex_env_completions
reloading plugin LaTeXTools.latex_fill_all
reloading plugin LaTeXTools.latex_input_completions
reloading plugin LaTeXTools.latex_installed_packages
reloading plugin LaTeXTools.latex_own_command_completions
reloading plugin LaTeXTools.latex_ref_completions
reloading plugin LaTeXTools.latexCommand
reloading plugin LaTeXTools.latexDocumentationViewer
reloading plugin LaTeXTools.latexEnvCloser
reloading plugin LaTeXTools.latexEnvironment
reloading plugin LaTeXTools.latextools_default_settings
reloading plugin LaTeXTools.latextools_plugin
reloading plugin LaTeXTools.makePDF
reloading plugin LaTeXTools.migrate
reloading plugin LaTeXTools.parseTeXlog
reloading plugin LaTeXTools.texcount
reloading plugin LaTeXTools.texMacro
reloading plugin LaTeXTools.texSections
reloading plugin LaTeXTools.texSyntaxListener
reloading plugin LaTeXTools.toggle_auto
reloading plugin LaTeXTools.toggle_focus
reloading plugin LaTeXTools.toggle_fwdsync
reloading plugin LaTeXTools.toggle_show
reloading plugin LaTeXTools.toggle_view_on_build
reloading plugin PlainTasks.PlainTasks
reloading plugin PlainTasks.PlainTasksDates
reloading plugin PlainTasks.PlainTasksToHTML
reloading plugin PlainTasks.plist_parser
plugins loaded
Loading LaTeXTools plugins...
Loaded LaTeXTools plugins ['base_viewer'] from path /home/userredacted/.config/sublime-text-3/Packages/LaTeXTools/viewers/base_viewer.py
Loaded LaTeXTools plugins ['zathura_viewer', 'evince_viewer', 'okular_viewer', 'sumatra_viewer', 'preview_viewer', 'command_viewer', 'skim_viewer'] from path /home/userredacted/.config/sublime-text-3/Packages/LaTeXTools/viewers
Loaded LaTeXTools plugins [] from path /home/userredacted/.config/sublime-text-3/Packages/User
Loaded LaTeXTools plugins ['pdf_builder'] from path /home/userredacted/.config/sublime-text-3/Packages/LaTeXTools/builders/pdfBuilder.py
Loaded LaTeXTools plugins ['traditional_builder', 'simple_builder', 'script_builder', 'basic_builder'] from path /home/userredacted/.config/sublime-text-3/Packages/LaTeXTools/builders
Loaded LaTeXTools plugins [] from path /home/userredacted/.config/sublime-text-3/Packages/User
Loaded LaTeXTools plugins ['new_bibliography', 'traditional_bibliography'] from path /home/userredacted/.config/sublime-text-3/Packages/LaTeXTools/bibliography_plugins
Loaded LaTeXTools plugins [] from path /home/userredacted/.config/sublime-text-3/Packages/User
GoSublime r18.05.19-1: _before.init()
GoSublime r18.05.19-1: gs.init()
GoSublime r18.05.19-1: sh.init()
GoSublime r18.05.19-1 sh: using shell env GOPATH=/home/userredacted
GoSublime r18.05.19-1 sh: using shell env GOROOT=/home/userredacted/go
GoSublime r18.05.19-1 sh: using shell env PATH=/home/userredacted/bin:/home/userredacted/.config/sublime-text-3/Packages/GoSublime/bin:/home/userredacted/.config/sublime-text-3/Packages/User/GoSublime/bin:/home/userredacted/bin:/home/userredacted/src/perkeep.org/bin:/home/userredacted/go/bin:/home/userredacted/Development/android-studio/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/usr/local/go/bin:/usr/local/opt/go/bin
GoSublime r18.05.19-1 sh: go version: `devel..c814ac4` (raw version string `devel +c814ac4 Thu Jul 19 21:30:27 2018 +0000`)
GoSublime r18.05.19-1 sh: shell bootstrap took 0.067s
GoSublime r18.05.19-1: margo.init()
GoSublime r18.05.19-1: mg9.init()
[22:18:03] margo: agent#007: starting
GoSublime r18.05.19-1: _after.init()

** 2018-08-02 22:18:03.894940 **:
GoSublime init r18.05.19-1 (0.002s)
|   install margo: no
|   install state: done
| sublime.version: 3175
| sublime.channel: dev
|       about.ann: a18.07.17-1
|   about.version: r18.05.19-1
|         version: r18.05.19-1
|        platform: linux-x64
|            ~bin: ~/.config/sublime-text-3/Packages/User/GoSublime/linux-x64/bin
|       margo.exe: ~bin/gosublime.margo_r18.05.19-1_devel..c814ac4.exe (ok)
|          go.exe: ~/go/bin/go (ok)
|      go.version: devel..c814ac4
|          GOROOT: ~/go
|          GOPATH: /home/userredacted
|           GOBIN: (not set)
|       set.shell: []
|       env.shell: /bin/bash
|       shell.cmd: ['/bin/bash', '-l', '-c', '${CMD}']
|    sh.bootstrap: 
|                >  using shell env GOPATH=/home/userredacted
|                >  using shell env GOROOT=~/go
|                >  using shell env PATH=~/bin:~/.config/sublime-text-3/Packages/GoSublime/bin:~/.config/sublime-text-3/Packages/User/GoSublime/bin:~/bin:...yada yada....
|                >  go version: `devel..c814ac4` (raw version string `devel +c814ac4 Thu Jul 19 21:30:27 2018 +0000`)
|                >  shell bootstrap took 0.067s
|                >
--------------------------------

[22:18:04] margo: agent#007: ['/home/userredacted/.config/sublime-text-3/Packages/GoSublime/bin/margo.sh', 'start', 'margo.sublime', '-codec', 'msgpack']
[22:18:04] margo: agent#007: log: ``` go install -v -tags=margo -i margo.sh/cmd/margo.sublime ```
[22:18:04] margo: agent#007: log: ``` /home/userredacted/.config/sublime-text-3/Packages/GoSublime/bin/margo.sublime -codec msgpack ```
[22:18:04] margo: agent#007: log: store.go:137: started

The values for GOPATH and GOROOT are correct.

DisposaBoy commented 5 years ago

@egroj97 That snippet isn't currently implemented. You can implement it by adding the following reducer to your list of reducers.

    golang.SnippetFuncs(
        func(cx *golang.CompletionCtx) []mg.Completion {
            cl := []mg.Completion{
                mg.Completion{
                    Query: `func http handler`,
                    Title: `func(rw, req)`,
                    Src: `
                        func ${1:name}(rw http.ResponseWriter, req *http.Request) {
                            $0
                        }
                    `,
                },
            }
            // (optionally) only return these snippets if `import "net/http"` exists
            for _, spec := range cx.AstFile.Imports {
                if spec.Path.Value == `"net/http"` {
                    return cl
                }
            }
            return nil
        },
    ),

The example package defines a similar reducer named MySnippets https://margo.sh/s/extension-example#L200

egroj97 commented 5 years ago

Thank you @DisposaBoy, it works perfectly! Again, this plugin is amazing.