Go development plugin for Vim

vim-go Build Status GitHub Actions Status

Vim-go logo

Features

This plugin adds Go language support for Vim, with the following main features:

  • Compile your package with :GoBuild, install it with :GoInstall or test it with :GoTest. Run a single test with :GoTestFunc).
  • Quickly execute your current file(s) with :GoRun.
  • Improved syntax highlighting and folding.
  • Debug programs with integrated delve support with :GoDebugStart.
  • Completion and many other features support via gopls.
  • formatting on save keeps the cursor position and undo history.
  • Go to symbol/declaration with :GoDef.
  • Look up documentation with :GoDoc or :GoDocBrowser.
  • Easily import packages via :GoImport, remove them via :GoDrop.
  • Precise type-safe renaming of identifiers with :GoRename.
  • See which code is covered by tests with :GoCoverage.
  • Add or remove tags on struct fields with :GoAddTags and :GoRemoveTags.
  • Call golangci-lint with :GoMetaLinter to invoke all possible linters (golint, vet, errcheck, deadcode, etc.) and put the result in the quickfix or location list.
  • Lint your code with :GoLint, run your code through :GoVet to catch static errors, or make sure errors are checked with :GoErrCheck.
  • Advanced source analysis tools utilizing guru, such as :GoImplements, :GoCallees, and :GoReferrers.
  • ... and many more! Please see doc/vim-go.txt for more information.
  • The gopls instance can be shared with other Vim plugins.
  • Vim-go's use of gopls can be disabled.

Install

vim-go requires at least Vim 8.0.1453 or Neovim 0.4.0.

The latest stable release is the recommended version to use. If you choose to use the master branch instead, please do so with caution; it is a development branch.

vim-go follows the standard runtime path structure. Below are some helper lines for popular package managers:

  • Vim 8 packages
    • git clone https://github.com/fatih/vim-go.git ~/.vim/pack/plugins/start/vim-go
  • Pathogen
    • git clone https://github.com/fatih/vim-go.git ~/.vim/bundle/vim-go
  • vim-plug
    • Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
  • Vundle
    • Plugin 'fatih/vim-go'

You will also need to install all the necessary binaries. vim-go makes it easy to install all of them by providing a command, :GoInstallBinaries, which will go get all the required binaries.

Check out the Install section in the documentation for more detailed instructions (:help go-install).

Usage

The full documentation can be found at doc/vim-go.txt. You can display it from within Vim with :help vim-go.

Depending on your installation method, you may have to generate the plugin's help tags manually (e.g. :helptags ALL).

We also have an official vim-go tutorial.

FAQ and troubleshooting

The FAQ and troubleshooting tips are in the documentation and can be quickly accessed using :help go-troubleshooting. If you believe you've found a bug or shortcoming in vim-go that is neither addressed by help nor in existing issues, please open an issue with clear reproduction steps. :GoReportGitHubIssue can be used pre-populate a lot of the information needed when creating a new issue.

Contributing

All PRs are welcome. If you are planning to contribute a large patch or to integrate a new tool, please create an issue first to get any upfront questions or design decisions out of the way first.

You can run the tests locally by running make. It will lint the VimL for you, lint the documentation, and run the tests against the minimum required version of Vim, other versions of Vim that may be critical to support, and Neovim.

License

The BSD 3-Clause License - see LICENSE for more details

Owner
Fatih Arslan
Software Engineer. Gopher and Coffee geek. Creator of vim-go. Tool maker.
Fatih Arslan
Comments
  • GoRename

    GoRename "can't find package"

    When trying to use GoRename from vim-go I consistently get the following error:

    vim-go: Error: can't find package containing <$GOPATH>/github.com/myapp/mypackage/myfile.go.
    

    On the command line gorename works just fine like this:

    gorename -from '"github.com/myapp/mypackages".MyThing' -to MyOtherThing
    

    But with vim-go I keep getting the above error saying it can't find the package, which is actually the current file I'm on.

    I'm sure there's some fairly simple setting, ENV variable, etc... that just needs tweaking, but I can't seem to figure it out.

    Thanks.

  • Neovim integration

    Neovim integration

    This PR is going to add a proper initial Neovim integration (to make use of Neovim's advanced features). Nothing needs to be installed or to be done. The features will be active only if you use vim-go inside Neovim.

    Currently implemented features:

    • An async launcher and base foundation was implemented for the go command. This will be used for all upcoming subcommands of the go tool.
    • :GoBuild is now called asynchronously (it doesn't block the UI anymore).
    • A new go#jobcontrol#Statusline() can be used to plug into the statusline. This will show the status of the job running asynchronously
    • :GoRun opens a new vertical terminal and runs the command there. The terminal mode can be changed with g:go_term_mode, which is by default vsplit. Current options are vsplit, split or tab
    • Three new mappings to open :GoRun terminal in different modes: <Plug>(go-run-vertical), <Plug>(go-run-split) and <Plug>(go-run-tab): An example usage:
    au FileType go nmap <leader>rt <Plug>(go-run-tab)
    au FileType go nmap <Leader>rs <Plug>(go-run-split)
    au FileType go nmap <Leader>rv <Plug>(go-run-vertical)
    
    • We have two settings for terminal sizes: g:go_term_height and g:go_term_width. By default a vertical or horizontal is just split by vim automatically. However with these settings we can for example have a terminal with a smaller height when we split it horizontally.
    • :GoTest, :GoTestFunc and :GoTestCompile opens and runs in a new terminal. The view mode(split,vertical, tab) is defined with g:go_term_mode.
    • If a command inside the term fails (such as go run, go test ...) we parse now the errors and list them inside in a qf window.
    • A g:go_term_enabled setting is added to change the behavior of :GoTest .If set to 1, it opens the test commands inside a terminal, if not it runs them in background just like :GoBuild and displays the result in the statusline
    • The status_line is improved to show the status per package instead of file. Assume you have three files open, all belonging to the same package, if the package build (:GoBuild) is successful, all statusline's will be empty (means SUCCESS), if you it fails all file's statusline will show FAILED.

    Please test all features both with Vim and Neovim if you can. Right now documentation, messages and co are just placeholders and will be suited and corrected once it's release ready. Please ask any question. Any feedback is welcome.

  • error setting breakpoint on second :GoDebugStart

    error setting breakpoint on second :GoDebugStart

    What did you do?

    ~/go/src/code.byted.org/er/be_api_external is the golang project root dir,I can use other vim-go commands normally.

    Because the project is private and cannot be made public, I want to use other projects to reproduce the error, but the debug function works normally.

    I open my project main.go file, and then use :GoDebugStart,then show debug window normal;And GoDebug Window output the message:

    ERR: 2020-06-12T10:44:09+08:00 debug layer=rpc API server pid = 85456
    ERR: 2020-06-12T10:44:09+08:00 info layer=debugger launching process with args: [/var/folders/rj/0rvtn98n2ys411yw3mr7118w0000gp/T/voKnaK6/5]
    ERR: 2020-06-12T10:44:10+08:00 warning layer=debugger could not set asyncpreemptoff <nil>
    

    And I run continuly :GoDebugContinue,it occur other error, :message

    vim-go: Process 85481 has exited with status 0
    vim-go: Vim(return):E716: Dictionary 中不存在键: goroutineID
    vim-go: Vim(return):E716: Dictionary 中不存在键: goroutineID
    vim-go: [debug] SUCCESS
    vim-go: [debug] dispatched
    vim-go: could not find file /Users/admin/go/src/code.byted.org/er/be_api_external/
    

    Configuration

    all: https://github.com/cposture/my-vim/blob/master/.vimrc vim-go:

    "=========================================
    " vim-go 插件配置
    "=========================================
    " run :GoBuild or :GoTestCompile based on the go file
    function! s:build_go_files()
      let l:file = expand('%')
      if l:file =~# '^\f\+_test\.go$'
        call go#test#Test(0, 1)
      elseif l:file =~# '^\f\+\.go$'
        call go#cmd#Build(0)
      endif
    endfunction
    autocmd FileType go nmap <leader>b :<C-u>call <SID>build_go_files()<CR>
    map <leader>] :cnext<CR>
    map <leader>[ :cprevious<CR>
    nnoremap <leader>[[ :cclose<CR>
    autocmd FileType go nmap <leader>r  <Plug>(go-run)
    autocmd FileType go nmap <Leader>c <Plug>(go-coverage-toggle)
    "保存文件时自动 import package
    let g:go_fmt_command = "goimports"
    "高亮类型
    "let g:go_highlight_types = 1
    "高亮函数
    "let g:go_highlight_functions = 1
    "高亮操作符
    let g:go_highlight_operators = 1
    "保存时自动执行 'vet', 'golint', 'errcheck'
    let g:go_metalinter_autosave = 1
    let g:go_metalinter_deadline = "10s"
    "自动展示光标下的类型信息
    let g:go_auto_type_info = 1
    "禁用自动跳转到第一个错误的代码,因为保存时检查错误就自动跳,有点烦
    let g:go_jump_to_error = 0
    

    vim-go version:

    lastest

    Vim version (first three lines from :version):

    VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Jun  8 2020 00:19:54)
    macOS version
    包含补丁: 1-740
    编译者 [email protected]
    巨型版本 无图形界面。  可使用(+)与不可使用(-)的功能:
    +acl               +cmdline_info      -farsi             +langmap           +mouse_sgr         +profile           +tag_binary        +virtualedit
    +arabic            +comments          +file_in_path      +libcall           -mouse_sysmouse    +python/dyn        -tag_old_static    +visual
    +autocmd           +conceal           +find_in_path      +linebreak         +mouse_urxvt       +python3/dyn       -tag_any_white     +visualextra
    +autochdir         +cryptv            +float             +lispindent        +mouse_xterm       +quickfix          -tcl               +viminfo
    -autoservername    -cscope            +folding           +listcmds          +multi_byte        +reltime           +termguicolors     +vreplace
    -balloon_eval      +cursorbind        -footer            +localmap          +multi_lang        +rightleft         +terminal          +wildignore
    +balloon_eval_term +cursorshape       +fork()            -lua               -mzscheme          -ruby              +terminfo          +wildmenu
    -browse            +dialog_con        +gettext           +menu              +netbeans_intg     +scrollbind        +termresponse      +windows
    ++builtin_terms    +diff              -hangul_input      +mksession         +num64             +signs             +textobjects       +writebackup
    +byte_offset       +digraphs          +iconv             +modify_fname      +packages          +smartindent       +textprop          -X11
    +channel           -dnd               +insert_expand     +mouse             +path_extra        -sound             +timers            -xfontset
    +cindent           -ebcdic            +ipv6              -mouseshape        -perl              +spell             +title             -xim
    -clientserver      +emacs_tags        +job               +mouse_dec         +persistent_undo   +startuptime       -toolbar           -xpm
    +clipboard         +eval              +jumplist          -mouse_gpm         +popupwin          +statusline        +user_commands     -xsmp
    +cmdline_compl     +ex_extra          +keymap            -mouse_jsbterm     +postscript        -sun_workshop      +vartabs           -xterm_clipboard
    +cmdline_hist      +extra_search      +lambda            +mouse_netterm     +printer           +syntax            +vertsplit         -xterm_save
         系统 vimrc 文件: "$VIM/vimrc"
         用户 vimrc 文件: "$HOME/.vimrc"
     第二用户 vimrc 文件: "~/.vim/vimrc"
          用户 exrc 文件: "$HOME/.exrc"
           defaults file: "$VIMRUNTIME/defaults.vim"
             $VIM 预设值: "/Users/admin/bin/vim-8.2/share/vim"
    编译方式: gcc -c -I. -Iproto -DHAVE_CONFIG_H   -DMACOS_X -DMACOS_X_DARWIN  -g -O2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1
    链接方式: gcc   -L/usr/local/lib -o vim        -lm -lncurses  -liconv -lintl -framework AppKit
    

    Go version (go version):

    go version go1.14.2 darwin/amd64

    Go environment

    go env Output:
    
    GO111MODULE="on"
    GOARCH="amd64"
    GOBIN="/Users/admin/go/bin"
    GOCACHE="/Users/admin/Library/Caches/go-build"
    GOENV="/Users/admin/Library/Application Support/go/env"
    GOEXE=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="darwin"
    GOINSECURE=""
    GONOPROXY="code.byted.org/*"
    GONOSUMDB="code.byted.org/*"
    GOOS="darwin"
    GOPATH="/Users/admin/go"
    GOPRIVATE="code.byted.org/*"
    GOPROXY="https://proxy.golang.org,direct"
    GOROOT="/usr/local/go"
    GOSUMDB="sum.golang.org"
    GOTMPDIR=""
    GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
    GCCGO="gccgo"
    AR="ar"
    CC="clang"
    CXX="clang++"
    CGO_ENABLED="1"
    GOMOD="/Users/admin/go/src/code.byted.org/er/be_api_external/go.mod"
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/rj/0rvtn98n2ys411yw3mr7118w0000gp/T/go-build505328656=/tmp/go-build -gno-record-gcc-switches -fno-common"
    

    gopls version

    gopls version Output:
    
    golang.org/x/tools/gopls 0.4.0
        golang.org/x/tools/[email protected] h1:G4+YP9kaV4dJb79J5MobyApxX493Qa6VoiTceUmxqik=
    

    vim-go configuration:

    vim-go configuration
    g:go_auto_type_info = 1
    g:go_highlight_operators = 1
    g:go_metalinter_deadline = '10s'
    g:go_gotags_bin = 'gotags'
    g:go_metalinter_autosave = 1
    g:go_fmt_command = 'goimports'
    g:go_jump_to_error = 0
    g:go_loaded_gosnippets = 1
    g:go_loaded_install = 1
    

    filetype detection configuration:

    filetype detection
    filetype detection:ON  plugin:ON  indent:ON
    
  • vim-go: getting file for Identifier: no PackageHandles

    vim-go: getting file for Identifier: no PackageHandles

    What did you expect to happen?

    use gd go to a function define, but it failed.
    The project use gopath instead of go mod, so there is no go.mod file.
    

    What happened instead?

    Go to the function define.
    

    Configuration (MUST fill this out): https://github.com/scrawld/vimrc/blob/master/.vimrc

    vim-go version: lastest

    vimrc you used to reproduce: Yes, I have

    Vim version (first three lines from :version):

    VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Apr 17 2020 18:24:00)
    Included patches: 1-587
    Compiled by [email protected]
    

    Go version (go version):

    go version go1.12.14 linux/amd64
    

    Go environment

    <details><summary><code>go env</code> Output:</summary><br><pre>
    GOARCH="amd64"
    GOBIN="/home/ziyang/etc/go/bin"
    GOCACHE="/home/ziyang/.cache/go-build"
    GOEXE=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="linux"
    GOOS="linux"
    GOPATH="/home/ziyang/etc/go:/home/ziyang/work/cms_oprate:/home/ziyang/work/cms_risk:/home/ziyang/work/coinutils:/home/ziyang/work/inquiry:/home/ziyang/work/notify_server:/home/ziyang/work/proxy_server:/home/ziyang/work/script_projects:/home/ziyang/work/test:/home/ziyang/work/user:/home/ziyang/work/walletbch:/home/ziyang/work/walletbsv:/home/ziyang/work/walletdoge:/home/ziyang/work/walletltc"
    GOPROXY="https://goproxy.io"
    GORACE=""
    GOROOT="/usr/local/go"
    GOTMPDIR=""
    GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
    GCCGO="gccgo"
    CC="gcc"
    CXX="g++"
    CGO_ENABLED="1"
    GOMOD=""
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build670035564=/tmp/go-build -gno-record-gcc-switches"
    

    gopls version

    gopls version Output:
    	golang.org/x/tools/gopls 0.4.0
    	    golang.org/x/tools/[email protected] h1:G4+YP9kaV4dJb79J5MobyApxX493Qa6VoiTceUmxqik=
    

    avatar

  • gopls stuck

    gopls stuck

    What did you do? (required: The issue will be closed when not provided)

    I want to use vim-go to code sth like fmt.Println("hello world"). Once I type ., the bottom says vim-go: initialized gopls and then it stuck forever.

    What did you expect to happen?

    What happened instead?

    Configuration (MUST fill this out):

    vim-go version:

    v1.21

    vimrc you used to reproduce (use a minimal vimrc with other plugins disabled; do not link to a 2,000 line vimrc):

    vimrc
    call plug#begin()
    Plug 'cappyzawa/starlark.vim'
    Plug 'fatih/vim-go'
    " Support for nova color scheme.
    Plug 'trevordmiller/nova-vim'
    " Automatically adds closing parentheses, quotes, etc.
    Plug 'jiangmiao/auto-pairs'
    call plug#end()
    

    " Search down into subfolders. " Provides auto-completion for all file-related tasks. set path+=**

    " Display all matching files when we tab complete. set wildmenu

    """GO SETTINGS_"""

    " Save file automatically when running GoBuild (and more generally, :make). set autowrite

    " Only use quickfix menu, not location list. let g:go_list_type = "quickfix"

    " Map go-build and go-test to easy to type shortcuts. autocmd FileType go nmap t (go-test) autocmd FileType go nmap b (go-build)

    " Shortcut for GoAlternate. autocmd Filetype go command! -bang A call go#alternate#Switch(0, 'edit')

    " Automatically display GoInfo. let g:go_auto_type_info = 1 " Automatically highlight all instances of a variable. let g:go_auto_sameids = 1

    " Run go-fmt on save. let g:go_fmt_autosave = 1

    " ==== COLORS ====

    set background=light syntax on colorscheme nova let g:nova_transparent = 1

    " ==== MISC ====

    " Enables loading plugin files for specific file types. filetype plugin on

    " Display line numbers in gutter. set number

    " Display the full file path set laststatus=2

    " Enable mouse. set mouse=a

    " Highlight all search pattern matches. set hlsearch

    " Don’t update screen during macro and script execution. set lazyredraw

    " Wrap long lines to fit in the window. set wrap " Don't linebreak in the middle of a word. set linebreak " Don't know what this one does. set nolist

    " ==== CURSOR ====

    " Highlight cursor line. set cursorline

    " Display line / column number of cursor. set ruler

    " ==== TABS ====

    " Defaults. set autoindent set tabstop=4 set softtabstop=4 set shiftwidth=4 set expandtab

    filetype plugin indent on

    " 4 spaces. au FileType python setlocal ts=4 sts=4 sw=4 et au FileType javascript setlocal ts=4 sts=4 sw=4 et

    " 2 spaces. au FileType html setlocal ts=2 sts=2 sw=2 et au FileType yaml setlocal ts=2 sts=2 sw=2 et au FileType bash setlocal ts=2 sts=2 sw=2 et

    " ==== COMPLETION ====

    let g:deoplete#enable_at_startup = 1

    " Completion window in insert mode. set completeopt-=preview

    " Smart tab completion. See https://vim.fandom.com/wiki/Smart_mapping_for_tab_completion. function! Smart_TabComplete() let line = getline('.') " current line

    let substr = strpart(line, -1, col('.')+1) " from the start of the current " line to one character right " of the cursor let substr = matchstr(substr, "[^ \t]*$") " word till cursor if (strlen(substr)==0) " nothing to match on empty string return "<tab>" endif let has_period = match(substr, '.') != -1 " position of period, if any let has_slash = match(substr, '/') != -1 " position of slash, if any if (!has_period && !has_slash) return "<C-X><C-P>" " existing text matching elseif ( has_slash ) return "<C-X><C-F>" " file matching else return "<C-X><C-O>" " plugin matching endif endfunction

    inoremap =Smart_TabComplete()

    " ==== GO ====

    " Speed up vim-go. No need to highlight everything. let g:go_highlight_build_constraints = 0 let g:go_highlight_extra_types = 0 let g:go_highlight_fields = 0 let g:go_highlight_functions = 0 let g:go_highlight_methods = 0 let g:go_highlight_operators = 0 let g:go_highlight_structs = 0 let g:go_highlight_types = 0

    " ==== MACROS ====

    set backspace=indent,eol,start

    let mapleader=","

    " Previous buffer. nnoremap l :e #

    " Search and replace hovered word. nnoremap s :.,$s/<>//gc

    " Search and replace highlighted text. xnoremap s y:.,$s/"//gc

    " Unhighlight. nnoremap n :noh

    " For shitty typists. nmap ; :

    " Keep search results centered. nnoremap n nzz nnoremap N Nzz

    " Go macros. au FileType go nmap i :GoImports au FileType go nmap f :GoFmt au FileType go nmap b :GoBuild au FileType go nmap d :GoDef au FileType go nmap e :GoTest

    " Zooms current window. Exit it with :wq nnoremap z :tabnew %

    " Don't use monorepo Go wrapper. let $USE_SYSTEM_GO=1

    Vim version (first three lines from :version):

    VIM - Vi IMproved 8.1 (2018 May 18, compiled Oct 15 2019 10:12:50)
    macOS version
    Included patches: 1-2150
    

    Go version (go version):

    go version go1.13 darwin/amd64

    Go environment

    go env Output:
    
    ```
    GO111MODULE=""
    GOARCH="amd64"
    GOBIN=""
    GOCACHE="/Users/xiaoweic/Library/Caches/go-build"
    GOENV="/Users/xiaoweic/Library/Application Support/go/env"
    GOEXE=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="darwin"
    GONOPROXY=""
    GONOSUMDB=""
    GOOS="darwin"
    GOPATH="/Users/xiaoweic/go-code"
    GOPRIVATE=""
    GOPROXY="https://proxy.golang.org,direct"
    GOROOT="/usr/local/Cellar/go/1.13/libexec"
    GOSUMDB="sum.golang.org"
    GOTMPDIR=""
    GOTOOLDIR="/usr/local/Cellar/go/1.13/libexec/pkg/tool/darwin_amd64"
    GCCGO="gccgo"
    AR="ar"
    CC="clang"
    CXX="clang++"
    CGO_ENABLED="1"
    GOMOD=""
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/sd/xjjfgwh54vz073j9r_2260kr0000gn/T/go-build630995246=/tmp/go-build -gno-record-gcc-switches -fno-common"
    ```
    
  • "-- More --" on write

    Whenever I save a go file it appears to read it in a less style buffer prompting me for "-- More --". It also doesn't seem to work properly with the formatting / importing. All other aspects of the plugin seem to be working fine.

    Manually running :GoFmt or :GoImports has the exact same effect.

    Not really sure what is causing it or even where to start debugging it.

  • Override the :A command to toggle between go implementation code and test code.

    Override the :A command to toggle between go implementation code and test code.

    I’d like vim-go to have the functionality of https://github.com/benmills/vim-golang-alternate and possibly add support for optionally creating missing test files when toggling.

  • Error detected while processing function go#package#InGOPATH

    Error detected while processing function go#package#InGOPATH

    What did you do? (required: The issue will be closed when not provided)

    Open a Go file with code in it

    What did you expect to happen?

    There shouldn't be errors in :messages

    What happened instead?

    On loading, I see commands.vim throws exceptions:

    Error detected while processing function go#package#InGOPATH:                                                                                                                                                               
    line   15:                                                                                                                                                                                                                  
    E684: list index out of range: 0                                                                                                                                                                                            
    Error detected while processing /home/u/.dein/repos/github.com/fatih/vim-go/ftplugin/go/commands.vim:                                                                                                                       
    line  106:                                                                                                                                                                                                                  
    E171: Missing :endif           
    

    Configuration (MUST fill this out):

    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " ==>> vim-go
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    let g:go_metalinter_command = 'golangci-lint'
    let g:go_rename_command = 'gopls'
    let g:go_def_mode='gopls'
    let g:go_info_mode='gopls'
    let g:go_fmt_command = 'gopls'
    let g:go_doc_keywordprg_enabled = 0
    let g:go_gocode_autobuild = 1
    let g:go_gocode_unimported_packages = 1
    let g:go_go_code_completion_enabled = 0
    let g:go_highlight_operators = 1
    let g:go_highlight_extra_types = 1
    let g:go_highlight_build_constraints = 1
    let g:go_highlight_types = 1
    let g:go_highlight_fields = 1
    let g:go_highlight_functions = 1
    let g:go_highlight_function_parameters = 1
    let g:go_highlight_function_calls = 1
    let g:go_highlight_format_strings = 1
    let g:go_highlight_methods = 1
    set autowrite
    " popup window for GoDoc
    let g:go_doc_popup_window = 1
    

    vim-go version:

    vimrc you used to reproduce:

    vimrc
    "dein Scripts-----------------------------
    if &compatible
        set nocompatible               " Be iMproved
    endif
    
    " Required:
    set runtimepath+=~/.dein/repos/github.com/Shougo/dein.vim
    
    " Required:
    call dein#begin('~/.dein')
    
    " Let dein manage dein
    " Required:
    call dein#add('~/.dein/repos/github.com/Shougo/dein.vim')
    
    " dein
    call dein#add('wsdjeg/dein-ui.vim')
    call dein#add('haya14busa/dein-command.vim')
    
    " Autocomplete
    call dein#add('Shougo/deoplete.nvim')
    if !has('nvim')
        call dein#add('roxma/nvim-yarp')
        call dein#add('roxma/vim-hug-neovim-rpc')
    endif
    let g:deoplete#enable_at_startup = 1
    call dein#add('Shougo/neosnippet.vim')
    call dein#add('Shougo/neosnippet-snippets')
    call dein#add('ncm2/float-preview.nvim') " preview in floating window
    " " tabnine
    " if has('win32') || has('win64')
    "     call dein#add('tbodt/deoplete-tabnine', { 'build': 'powershell.exe .\install.ps1' })
    " else
    "     call dein#add('tbodt/deoplete-tabnine', { 'build': './install.sh' })
    " endif
    
    " Golang
    call dein#add('fatih/vim-go', {'on_ft': 'go'})
    
    
    " Required:
    call dein#end()
    
    " Required:
    filetype plugin indent on
    syntax enable
    
    " " If you want to install not installed plugins on startup.
    if dein#check_install()
        call dein#install()
    endif
    
    "End dein Scripts-------------------------
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    " ==>> vim-go
    """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
    let g:go_metalinter_command = 'golangci-lint'
    let g:go_rename_command = 'gopls'
    let g:go_def_mode='gopls'
    let g:go_info_mode='gopls'
    let g:go_fmt_command = 'gopls'
    let g:go_doc_keywordprg_enabled = 0
    let g:go_gocode_autobuild = 1
    let g:go_gocode_unimported_packages = 1
    let g:go_go_code_completion_enabled = 0
    let g:go_highlight_operators = 1
    let g:go_highlight_extra_types = 1
    let g:go_highlight_build_constraints = 1
    let g:go_highlight_types = 1
    let g:go_highlight_fields = 1
    let g:go_highlight_functions = 1
    let g:go_highlight_function_parameters = 1
    let g:go_highlight_function_calls = 1
    let g:go_highlight_format_strings = 1
    let g:go_highlight_methods = 1
    set autowrite
    " popup window for GoDoc
    let g:go_doc_popup_window = 1
    

    Vim version (first three lines from :version):

    NVIM v0.6.0
    Build type: RelWithDebInfo
    LuaJIT 2.1.0-beta3
    

    Go version (go version):

    go version go1.17.6 linux/amd64
    

    Go environment

    go env Output:
    
    GO111MODULE=""
    GOARCH="amd64"
    GOBIN=""
    GOCACHE="/home/u/.cache/go-build"
    GOENV="/home/u/.config/go/env"
    GOEXE=""
    GOEXPERIMENT=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="linux"
    GOINSECURE=""
    GOMODCACHE="/home/u/go/pkg/mod"
    GONOPROXY=""
    GONOSUMDB=""
    GOOS="linux"
    GOPATH="/home/u/go"
    GOPRIVATE=""
    GOPROXY="https://proxy.golang.org,direct"
    GOROOT="/snap/go/9028"
    GOSUMDB="sum.golang.org"
    GOTMPDIR=""
    GOTOOLDIR="/snap/go/9028/pkg/tool/linux_amd64"
    GOVCS=""
    GOVERSION="go1.17.6"
    GCCGO="gccgo"
    AR="ar"
    CC="gcc"
    CXX="g++"
    CGO_ENABLED="1"
    GOMOD="/home/u/emp3r0r/core/go.mod"
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build333302898=/tmp/go-build -gno-record-gcc-switches"
    

    gopls version

    gopls version Output:
    
    golang.org/x/tools/gopls v0.7.5
        golang.org/x/tools/[email protected] h1:8Az52YwcFXTWPvrRomns1C0N+zlgTyyPKWvRazO9GG8=
    
  • vim freezes for a couple of seconds when saving go files

    vim freezes for a couple of seconds when saving go files

    Hey there, first of all thanks for all the work on vim-go.

    I started using it a few days ago and something weird that's happening is that every time I save a file vim freezes for a couple of seconds and then gets back to normal business.

    Is this something other people experience or is it something with my setup? If the later, would you be able to help me debug where the slowness is?

    I'd really appreciate any help.

    Thanks!

  • GoMetaLinter supports root file config `.golangci.yaml`

    GoMetaLinter supports root file config `.golangci.yaml`

    What did you do?

    I would like to use .golang-ci.yaml found in the project's root folder in the :GoMetaLinter command.

    What did you expect to happen?

    I would like to use .golang-ci.yaml found in the project's root folder in the GoMetaLinter command.

    Currently, the command only considers the package straight from the file. As an example: the project is in the path /usr/ projects/goproj and it is the directory where I opened neovim. In the folder hierarchy there is a workers package. Staying like this: goproj> workers> file1.go, file2.go goproj> main.go goproj> .golangci.yaml

    I have the buffer open in file1.go. If I run :GoMetaLinter it will not take the project root settings and will only run for package workers.

    What happened instead?

    It only ran for package workers with the default configuration in my case.

    Configuration:

    vim-go version:

    vim-go version
    1.24
    

    vimrc you used to reproduce:

    vimrc
     -- disable vim-go snippet engine
        vim.g.go_snippet_engine = ""
    
    -- vim-go vars
    vim.g.go_fmt_command = "goimports"
    vim.g.go_list_type = "quickfix"
    vim.g.go_addtags_transform = "camelcase"
    vim.g.go_metalinter_enabled = {}
    vim.g.go_metalinter_autosave_enabled = {}
    vim.g.go_auto_type_info = 1
    

    Vim version (first three lines from :version):

    Go version (go version):

    go version
    1.15.4
    

    Go environment

    go env
    
    GO111MODULE="on"
    GOARCH="amd64"
    GOBIN=""
    GOCACHE="/Users/rafael.martins/Library/Caches/go-build"
    GOENV="/Users/rafael.martins/Library/Application Support/go/env"
    GOEXE=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="darwin"
    GOINSECURE=""
    GOMODCACHE="/Users/rafael.martins/go/pkg/mod"
    GONOPROXY=""
    GONOSUMDB=""
    GOOS="darwin"
    GOPATH="/Users/rafael.martins/go"
    GOPRIVATE=""
    GOPROXY="https://proxy.golang.org,direct"
    GOROOT="/usr/local/Cellar/go/1.15.4/libexec"
    GOSUMDB="sum.golang.org"
    GOTMPDIR=""
    GOTOOLDIR="/usr/local/Cellar/go/1.15.4/libexec/pkg/tool/darwin_amd64"
    GCCGO="gccgo"
    AR="ar"
    CC="clang"
    CXX="clang++"
    CGO_ENABLED="1"
    GOMOD=""
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/0b/160561q94fl6grsd9pvfn9x80000gp/T/go-build008007327=/tmp/go-build -gno-record-gcc-switches -fno-common"
    

    gopls version

    gopls version
    
     v0.5.3
    
  • :GoFmt on :w mess with Vim :redo

    :GoFmt on :w mess with Vim :redo

    I thought this plugin has settled this issue but sadly, it didn't. I was one of those who tried to provide a solution to a related question on SO. Still my approach, which I guess is the same being used here, will mess with redo. This is very simple to reproduce:

    • Open a Go source file.
    • Make some modification.
    • :w to save it.
    • Press u to undo the previous change.
    • :w to save it again, now with the original content.
    • Try press ctrl-r to redo the previous modification, it won't redo, but it should.

    Playing with undo and redo, the cursor may go to the top of the file without one asking for, it's very annoying.

  • Can GoCoverage use an existing cover profile?

    Can GoCoverage use an existing cover profile?

    I have some tests that require a specific environment to be set before being able to run go test. This tests create a cover profile, which I'd like to use with GoCover, however this command tries to create a cover profile by itself, and its call to go test fails because the environment is not set.

    Is there a way to use an existing cover profile?

  • Errors detected while processing go#package#InGOPATH and ~/.config/nvim/plugged/vim-go/ftplugin/go/commands.vim

    Errors detected while processing go#package#InGOPATH and ~/.config/nvim/plugged/vim-go/ftplugin/go/commands.vim

    What did you do? (required: The issue will be closed when not provided)

    When I open a Go file with vim main.go I get the following errors detected:

    image

    What did you expect to happen?

    I expect there to be no errors when opening any Go file.

    What happened instead?

    The errors above appeared

    Configuration (MUST fill this out):

    vim-go version:

    master @ 0550762

    vimrc you used to reproduce:

    https://github.com/natemurthy/dotfiles/blob/master/dot-vimrc

    Vim version (first three lines from :version):

    NVIM v0.4.4
    Build type: Release
    LuaJIT 2.0.5
    

    Go version (go version):

    go version go1.17.6 darwin/amd64
    

    Go environment

    GO111MODULE=""
    GOARCH="amd64"
    GOBIN=""
    GOCACHE="/Users/nate/Library/Caches/go-build"
    GOENV="/Users/nate/Library/Application Support/go/env"
    GOEXE=""
    GOEXPERIMENT=""
    GOFLAGS=""
    GOHOSTARCH="amd64"
    GOHOSTOS="darwin"
    GOINSECURE=""
    GOMODCACHE="/Users/nate/Gospace/pkg/mod"
    GONOPROXY=""
    GONOSUMDB=""
    GOOS="darwin"
    GOPATH="/Users/nate/Gospace"
    GOPRIVATE=""
    GOPROXY="https://proxy.golang.org,direct"
    GOROOT="/usr/local/go"
    GOSUMDB="sum.golang.org"
    GOTMPDIR=""
    GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
    GOVCS=""
    GOVERSION="go1.17.6"
    GCCGO="gccgo"
    AR="ar"
    CC="clang"
    CXX="clang++"
    CGO_ENABLED="1"
    GOMOD="/dev/null"
    CGO_CFLAGS="-g -O2"
    CGO_CPPFLAGS=""
    CGO_CXXFLAGS="-g -O2"
    CGO_FFLAGS="-g -O2"
    CGO_LDFLAGS="-g -O2"
    PKG_CONFIG="pkg-config"
    GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/m8/yqvg9vk50mq2hrjx9m4rg5l40000gn/T/go-build1330381555=/tmp/go-build -gno-record-gcc-switches -fno-common"
    

    gopls version

    golang.org/x/tools/gopls v0.8.1
    
  • Adding more packages to

    Adding more packages to "extra types"

    Added to extra types the following:

    io package now has more highlighting for some functions, and types, like below:

    • Copy / CopyBuffer
    • ByteReader / ByteScanner /ByteWriter

    Added the following packages to extra types:

    bufio

    • Reader / Scanner / Writer

    os

    • Getenv
    • Stdin / Stdout / Stderr

    strconv

    • Atoi
    • ParseFloat

    strings

    • Contains
    • Repeat
    • Replace / ReplaceAll
    • Split
    • ToLower / ToUpper
    • Trim

    sql

    • DB
    • Row/Rows
    • Stmt

    fmt

    • Scan / Scanf / Scanln
    • Sprintf
    • Errorf
    • Fprint / Fprintf
    • Print / Printf / Println

    http

    • Handle / HandleFunc
    • FileServer
    • Request
    • ResponseWriter
    • Error
    • ListenAndServe
    • NotFound
    • Redirect
    • Serve
    • StatusText
    • Handler
    • Header
    • Servemux
    • Server
    • Get / Post

    template

    Template

    log

    • Fatal / Fatalf / Fatalln
    • Print / Printf / Println
    • Logger

    json

    • Marshal / Unmarshal
    • Decoder / Encoder

    time

    • Sleep
    • Duration
    • Location
    • Time
  • Incompatible with mingw64

    Incompatible with mingw64

    What did you do? (required: The issue will be closed when not provided)

    Ran plugin with mingw64 (git bash for windows). I believe this problem likely would affect msys2 as well.

    What did you expect to happen?

    What happened instead?

    When opening a file paths are not properly formed in plugin. I get a message like: vim-go: failed to load view for file:///C:/c/path/to/my/project: invalid workspace folder path: The system cannot find the path specified.; check that the casing of the configured workspace folder path agrees with the casing reported by the operating system

    Looked into the code a little bit, has('Win32') is used by the IsWin function in util.vim. This returns 0 for msys2/mingw64. has('Win32unix') returns 1 as does has('unix').

    Also, GoInstallBinaries did not work without explicitly setting GOBIN variable as GOPATH/bin (not sure if this is related or not, I no longer have the error messages, but they complained about GOBIN).

    Configuration (MUST fill this out):

    vim-go version:

    4d6962d8

    vimrc you used to reproduce:

    vimrc
    set nocompatible              " be iMproved, required
    filetype off                  " required
    
    set rtp+=~/.vim/bundle/Vundle.vim
    call vundle#begin()
    "call vundle#begin('~/some/path/here')
    
    Plugin 'VundleVim/Vundle.vim'
    
    
    Plugin 'heavenshell/vim-pydocstring'
    Plugin 'wannesm/wmgraphviz.vim'
    Plugin 'vim-scripts/reload.vim'
    Plugin 'vim-scripts/vim-misc'
    Plugin 'romainl/Apprentice'
    Plugin 'iamcco/markdown-preview.nvim'
    Plugin 'fatih/vim-go'
    
    
    
    call vundle#end()            " required
    filetype plugin indent on    " required
    "filetype plugin on
    
    colorscheme default
    
    if &diff
        colorscheme molokai
    endif
    
    :set tabstop=4
    :set shiftwidth=4
    :set softtabstop=4
    :set expandtab
    :set autoindent
    
    augroup myvimrchooks
        au!
        autocmd bufwritepost .vimrc source ~/.vimrc
    augroup END
    
    filetype plugin on
    
    autocmd FileType yaml setlocal shiftwidth=2 tabstop=2 softtabstop=2
    
    nmap <silent> <c-p> <Plug>(pydocstring)
    
    nnoremap <leader>g :YcmCompleter GoToDefinitionElseDeclaration<CR>
    
    
    

    Vim version (first three lines from :version):

    VIM - Vi IMproved 8.2 (2019 Dec 12, compiled Nov 22 2021 19:31:05)
    Included patches: 1-3582
    Compiled by <https://www.msys2.org/>
    

    Go version (go version):

    go version go1.19 windows/amd64

    Go environment

    go env Output:
    
    set GO111MODULE=
    set GOARCH=amd64
    set GOBIN=
    set GOCACHE=C:\Users\bmccord\AppData\Local\go-build
    set GOENV=C:\Users\bmccord\AppData\Roaming\go\env
    set GOEXE=.exe
    set GOEXPERIMENT=
    set GOFLAGS=
    set GOHOSTARCH=amd64
    set GOHOSTOS=windows
    set GOINSECURE=
    set GOMODCACHE=C:\Users\bmccord\go\pkg\mod
    set GONOPROXY=
    set GONOSUMDB=
    set GOOS=windows
    set GOPATH=C:/Users/bmccord/go
    set GOPRIVATE=
    set GOPROXY=https://proxy.golang.org,direct
    set GOROOT=C:\Program Files\Go
    set GOSUMDB=sum.golang.org
    set GOTMPDIR=
    set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
    set GOVCS=
    set GOVERSION=go1.19
    set GCCGO=gccgo
    set GOAMD64=v1
    set AR=ar
    set CC=gcc
    set CXX=g++
    set CGO_ENABLED=1
    set GOMOD=NUL
    set GOWORK=
    set CGO_CFLAGS=-g -O2
    set CGO_CPPFLAGS=
    set CGO_CXXFLAGS=-g -O2
    set CGO_FFLAGS=-g -O2
    set CGO_LDFLAGS=-g -O2
    set PKG_CONFIG=pkg-config
    set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -Wl,--no-gc-sections -fmessage-length=0 -fdebug-prefix-map=C:\Users\bmccord\AppData\Local\Temp\go-build3966281748=/tmp/go-build -gno-record-gcc-switches
    

    gopls version

    gopls version Output:
    
    golang.org/x/tools/gopls v0.9.4
        golang.org/x/tools/[email protected] h1:YhHOxVi++ILnY+QnH9FGtRKZZrunSaR7OW8/dCp7bBk=
    
  • Delve options

    Delve options

    • Allowing delve to use the current working directory Currently, I am working on a code base where executables are defined inside of a /cmd/{exename}/ folder and share code, including a configuration file from the parent folder. This can be accomplished with VSCode in the launch.json file using the property cwd.

    • max string length, max array, and max recursion Reading variables, especially strings, with a max length of 20 is limiting. I decided not to change the defaults here, but allow the end user to expand them.

  • Vim/NVim freeze with GoDebugStop with Telepresence V2

    Vim/NVim freeze with GoDebugStop with Telepresence V2

    What did you do? (required: The issue will be closed when not provided)

    I used telepresence to route proxy to my local for sake of local debugging a service hosted in k8. everything's fine till I call GoDebugStop then the entire vim/neovim freeze and I have to reopen the vim/neovim again. I'm using vim(8.1.3741) and neovim(0.4.3). the error log is:

    Error detected while processing function go#debug#Stop:
    15332 line    3:
    15333 E184: No such user-defined command: Last
    

    If possible, please provide clear steps for reproducing the problem.

    - Telepresence intercept <tp-srv-name> --service <k8-srv-name> --port <routing-port> --env-file=<env-file-name>
    - :source <env-file-name> | GoDebugStart
    - Curl a simple get endpoint in terminal
    - The vim-go captures debug breakpoint successfully
    - :GoDebugContinue will successfully continue and will receive result in terminal
    - :GoDebugStop -> the editor will freeze!
    

    What did you expect to happen?

    • Stop the debugger

    What happened instead?

    • vim/nvim freeze

    Configuration (MUST fill this out):

    let g:go_snippet_case_type = 'camelcase'
    let g:go_auto_type_info = 1
    let g:go_debug_mappings = {
          \ '(go-debug-continue)': {'key': 'c', 'arguments': '<nowait>'},
          \ '(go-debug-next)': {'key': 'n', 'arguments': '<nowait>'},
          \ '(go-debug-step)': {'key': 's'},
          \ '(go-debug-print)': {'key': 'p'},
    \}
    
    " \ 'goroutines': 'botright 10new',
    let g:go_debug_windows = {
          \ 'vars':       'leftabove 30vnew',
          \ 'stack':      'leftabove 20new',
          \ 'out':        'botright 5new',
    \ }
    filetype plugin indent on
    map <leader>ds :GoDebugStart<cr>
    map <leader>dt :GoDebugStop<cr>
    map <leader>db :GoDebugBreakpoint<cr>
    

    vim-go version:

    1.26

    vimrc you used to reproduce:

    call plug#begin()
    Plug 'morhetz/gruvbox'
    Plug 'preservim/nerdtree'
    Plug 'fatih/vim-go', { 'do': ':GoInstallBinaries' }
    Plug 'ctrlpvim/ctrlp.vim'
    Plug 'airblade/vim-gitgutter'
    Plug 'tpope/vim-fugitive'
    Plug 'vim-airline/vim-airline'
    Plug 'vim-airline/vim-airline-themes'
    Plug 'elzr/vim-json'
    Plug 'brooth/far.vim'
    Plug 'preservim/nerdcommenter'
    Plug 'Xuyuanp/nerdtree-git-plugin'
    """Autocomplete Plug start
    Plug 'Shougo/deoplete.nvim'
    Plug 'roxma/nvim-yarp'
    Plug 'roxma/vim-hug-neovim-rpc'
    """Autocomplete Plug end
    Plug 'SirVer/ultisnips'
    call plug#end()
    set hidden
    set nu
    set hlsearch
    """Autocomplete start
    let g:deoplete#enable_at_startup = 1
    call deoplete#custom#option('omni_patterns', { 'go': '[^. *\t]\.\w*' })
    """Autocomplete end
    
    """Ctrlp Start
    let g:ctrlp_working_path_mode = 'ra' "r: the nearest ancestor that contains one of these directories or files: .git .hg .svn .bzr - a: like c, but only if the current working directory outside of CtrlP is not a direct ancestor of the directory of the current file.
    set wildignore+=*/tmp/*,*.so,*.swp,*.zip     " MacOSX/Linux
    let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
    let g:ctrlp_custom_ignore = {
      \ 'dir':  '\v[\/]\.(git|hg|svn)$',
      \ 'file': '\v\.(exe|so|dll)$',
      \ 'link': 'some_bad_symbolic_links',
      \ }
    let g:ctrlp_user_command = 'find %s -type f'        " MacOSX/Linux
    let g:ctrlp_reuse_window  = 'startify'
    let g:ctrlp_working_path_mode = ''
    """Ctrlp End
    
    """vim-go start
    let g:go_snippet_case_type = 'camelcase'
    let g:go_auto_type_info = 1
    let g:go_debug_mappings = {
          \ '(go-debug-continue)': {'key': 'c', 'arguments': '<nowait>'},
          \ '(go-debug-next)': {'key': 'n', 'arguments': '<nowait>'},
          \ '(go-debug-step)': {'key': 's'},
          \ '(go-debug-print)': {'key': 'p'},
    \}
    
    " \ 'goroutines': 'botright 10new',
    let g:go_debug_windows = {
          \ 'vars':       'leftabove 30vnew',
          \ 'stack':      'leftabove 20new',
          \ 'out':        'botright 5new',
    \ }
    filetype plugin indent on
    map <leader>ds :GoDebugStart<cr>
    map <leader>dt :GoDebugStop<cr>
    map <leader>db :GoDebugBreakpoint<cr>
    """vim-go end
    

    Vim version (first three lines from :version):

    VIM - Vi IMproved 8.1 (2018 May 18, compiled Feb 01 2022 09:16:32) Included patches: 1-2269, 3612, 3625, 3669, 3741 Modified by [email protected]

    Nvim version (first three lines from :version):

    NVIM v0.4.3 Build type: Release LuaJIT 2.1.0-beta3

    Go version (go version):

    1.18

    gopls version

    v0.9.1

Vim compiler plugin for Go (golang)
Vim compiler plugin for Go (golang)

Vim compiler file for Go (golang) Compiles Go files in the background and usefully underlines and reports errors to the QuickFix window: Installation:

Sep 27, 2022
A terminal based game that teaches you how to use Vim.
A terminal based game that teaches you how to use Vim.

VimMan Learn how to use Vim in its natural environment, the Terminal! About VimMan is terminal program that's a semi editor and a semi game. The purpo

Dec 5, 2022
Conception was an experimental project, looking for ways to make software development more efficient.
Conception was an experimental project, looking for ways to make software development more efficient.

Conception Note: All future development is done in the Go version. Conception is an experimental research project, meant to become a modern IDE/Langua

Jul 21, 2022
BBEdit package for Go development

BBEdit package for Go development Features Full language syntax highlighting Support for code folding func Language defaults Full set of clippings Go

Sep 12, 2022
A Golang plugin collection for SublimeText 3, providing code completion and other IDE-like features.

GoSublime Intro GoSublime is an IDE-like plugin for Sublime Text 3 mainly, but not limited to, providing integration for most of your Go/Golang develo

Jan 4, 2023
Vim plugin for https://github.com/hexdigest/gounit
Vim plugin for https://github.com/hexdigest/gounit

gounit-vim Vim plugin for gounit tool that allows you to generate Go tests easily. Demo Installation gounit-vim requires gounit to be available in you

Sep 27, 2022
Vim compiler plugin for Go (golang)
Vim compiler plugin for Go (golang)

Vim compiler file for Go (golang) Compiles Go files in the background and usefully underlines and reports errors to the QuickFix window: Installation:

Sep 27, 2022
🐉 BLAZINGLY FAST CLI plugin manager for (neo)vim

viper BLAZINGLY FAST CLI plugin manager for (neo)vim. Usage Viper does all the nice and basic things you'd expect from a (neo)vim plugin manager, and

Jun 9, 2022
Learning Vim and Vimscript doesn't have to be hard. This is the guide that you're looking for.
Learning Vim and Vimscript doesn't have to be hard. This is the guide that you're looking for.

Learn Vim (the Smart Way) What's This? Learn Vim (the Smart Way) is a guide to learn the good parts of Vim. There are many places to learn Vim: the vi

Jan 1, 2023
A terminal based game that teaches you how to use Vim.
A terminal based game that teaches you how to use Vim.

VimMan Learn how to use Vim in its natural environment, the Terminal! About VimMan is terminal program that's a semi editor and a semi game. The purpo

Dec 5, 2022
Integrated console application library, using Go structs as commands, with menus, completions, hints, history, Vim mode, $EDITOR usage, and more ...
Integrated console application library, using Go structs as commands, with menus, completions, hints, history, Vim mode, $EDITOR usage, and more ...

Gonsole - Integrated Console Application library This package rests on a readline console library, (giving advanced completion, hint, input and histor

Nov 20, 2022
Vim made in Go that you shouldn't use.

novavim This is my attempt at making Vim from scratch in Go, meaning this project will utilize no libs outside of the Go standard library: no ncurses,

Aug 4, 2022
go program that installs and customizes ohmyzsh tmux vim via various plugins and other nice to haves
go program that installs and customizes ohmyzsh tmux vim via various plugins and other nice to haves

Pimp-My-Shell Table of Contents Pimp-My-Shell Install Usage About Resources Tmux Hotkeys VIM Hotkeys Adjusting Custom Aliases Mac Fix Terminal bind ke

Dec 22, 2022
Suppress commit to master and development, merge branch to master and development

git-extension masterと名前のつくブランチをマージするのは禁止 masterとdevelopmentブランチに直接commitやmergeするのは禁止 masterブランチを親に新規ブランチを作成するのは禁止 どうしてもmasterやdevelopmentブランチに操作をしたい時は

Nov 8, 2021
A Kubebuilder plugin to accelerate the development of Kubernetes operators
A Kubebuilder plugin to accelerate the development of Kubernetes operators

Operator Builder Accelerate the development of Kubernetes Operators. Operator Builder extends Kubebuilder to facilitate development and maintenance of

Nov 24, 2022
vault-plugin-auth-usertotp is an auth method plugin for HashiCorp Vault

vault-plugin-auth-usertotp is an auth method plugin for HashiCorp Vault. Create user accounts, add TOTP tokens (user supplied pin + totp), and have peace of mind using 2FA.

Jul 5, 2021
Kubectl Locality Plugin - A plugin to get the locality of pods

Kubectl Locality Plugin - A plugin to get the locality of pods

Nov 18, 2021
vault-plugin-auth-usertotp is an auth method plugin for HashiCorp Vault.

vault-plugin-auth-usertotp is an auth method plugin for HashiCorp Vault. Create user accounts, add TOTP tokens (user supplied pin + totp), and have peace of mind using 2FA.

Jul 30, 2021
Create a Protocol Buffers (Protobuf) plugin, which is executed with the protoc compileCreate a Protocol Buffers (Protobuf) plugin, which is executed with the protoc compile

Interview Assignment Overview You assignment is to create a Protocol Buffers (Protobuf) plugin, which is executed with the protoc compiler. In this ex

Nov 19, 2021
The plugin serves as a starting point for writing a Mattermost plugin

Plugin Starter Template This plugin serves as a starting point for writing a Mattermost plugin. Feel free to base your own plugin off this repository.

Dec 10, 2021