dense-analysis / dense-analysis/ale

gopls doesn't show any errors in gopath mode

Open
#3,481 4 comments 3 reactions 0 assignees View on GitHub
bug
Dominant language
Vim Script
Stars
14k
Forks
1.5k
Avg merge
17h 49m
Merged PRs (30d)
1

Description

## Information

**VIM version**
NVIM v0.4.4
Build type: Release

Operating System:
MacOS

## What went wrong

gopls doesn't work when I make projects in my gopath. When I make them with a go module, everything is nice and dandy.

## Reproducing the bug
```
cd /tmp
mkdir foo
cd foo
go mod init github.com/foo/bar
vim main.go

# add the following contents
package main

import "fmt"

func main() {
fmt.Prinln("vim-go")
}
```

After a second, ALE nicely shows an error on the proper place:
![image](https://user-images.githubusercontent.com/7642330/101185070-190a6400-365a-11eb-8ec5-f317439268a1.png)

Do the same exercise but in gopath mode:
```
cd $GOPATH/src/github.com
mkdir -p foo/bar && cd foo/bar
vim main.go

# add the same content as before
```

This time, ALE doesn't print anything...
![image](https://user-images.githubusercontent.com/7642330/101185295-5cfd6900-365a-11eb-943d-29f1cbfe2406.png)

However, if I explicitly run `:GoDiagnostics` as I have `vim-go` installed, I get the expected error in the quickfix window -> so it's not a gopls issue:
![image](https://user-images.githubusercontent.com/7642330/101185370-77374700-365a-11eb-9a70-b39c96c6b34f.png)

ALEInfo & vimrc

### :ALEInfo
```

Current Filetype: go
Available Linters: ['bingo', 'gobuild', 'gofmt', 'golangci-lint', 'golint', 'gometalinter', 'gopls', 'gosimple', 'gotype', 'govet', 'golangserver', 'revive', 'staticcheck']
Linter Aliases:
'gobuild' -> ['go build']
'govet' -> ['go vet']
Enabled Linters: ['gofmt', 'golint', 'gopls']
Ignored Linters: []
Suggested Fixers:
'gofmt' - Fix Go files with go fmt.
'goimports' - Fix Go files imports with goimports.
'remove_trailing_lines' - Remove all blank lines at the end of a file.
'trim_whitespace' - Remove all trailing whitespace characters at the end of every line.
Linter Variables:

let g:ale_go_go_executable = 'go'
let g:ale_go_golangci_lint_executable = 'golangci-lint'
let g:ale_go_golangci_lint_options = '--enable-all'
let g:ale_go_golangci_lint_package = 0
let g:ale_go_golint_executable = 'golint'
let g:ale_go_golint_options = ''
let g:ale_go_gopls_executable = 'gopls'
let g:ale_go_gopls_options = '--mode stdio'
let g:ale_go_langserver_executable = 'go-langserver'
let g:ale_go_langserver_options = ''
Global Variables:

let g:ale_cache_executable_check_failures = v:null
let g:ale_change_sign_column_color = 0
let g:ale_command_wrapper = ''
let g:ale_completion_delay = 100
let g:ale_completion_enabled = 1
let g:ale_completion_max_suggestions = 50
let g:ale_disable_lsp = 0
let g:ale_echo_cursor = 1
let g:ale_echo_msg_error_str = 'Error'
let g:ale_echo_msg_format = '%code: %%s'
let g:ale_echo_msg_info_str = 'Info'
let g:ale_echo_msg_warning_str = 'Warning'
let g:ale_enabled = 1
let g:ale_fix_on_save = 0
let g:ale_fixers = {'javascript': ['eslint']}
let g:ale_history_enabled = 1
let g:ale_history_log_output = 1
let g:ale_keep_list_window_open = 0
let g:ale_lint_delay = 200
let g:ale_lint_on_enter = 1
let g:ale_lint_on_filetype_changed = 1
let g:ale_lint_on_insert_leave = 1
let g:ale_lint_on_save = 1
let g:ale_lint_on_text_changed = 'normal'
let g:ale_linter_aliases = {}
let g:ale_linters = {'go': ['gofmt', 'golint', 'gopls'], 'typescript': ['tslint'], 'vue': ['eslint'], 'sh': [], 'bash': [], 'javascript': ['flow-language-server', 'eslint'], 'python': []}
let g:ale_linters_explicit = 1
let g:ale_linters_ignore = {}
let g:ale_list_vertical = 0
let g:ale_list_window_size = 10
let g:ale_loclist_msg_format = '%code: %%s'
let g:ale_lsp_root = {}
let g:ale_max_buffer_history_size = 20
let g:ale_max_signs = -1
let g:ale_maximum_file_size = v:null
let g:ale_open_list = 0
let g:ale_pattern_options = v:null
let g:ale_pattern_options_enabled = v:null
let g:ale_set_balloons = 0
let g:ale_set_highlights = 1
let g:ale_set_loclist = 1
let g:ale_set_quickfix = 0
let g:ale_set_signs = 1
let g:ale_sign_column_always = 0
let g:ale_sign_error = '!'
let g:ale_sign_info = '1'
let g:ale_sign_offset = 1000000
let g:ale_sign_style_error = '!'
let g:ale_sign_style_warning = '1'
let g:ale_sign_warning = '1'
let g:ale_sign_highlight_linenrs = 0
let g:ale_statusline_format = v:null
let g:ale_type_map = {}
let g:ale_use_global_executables = 1
let g:ale_virtualtext_cursor = 0
let g:ale_warn_about_trailing_blank_lines = 1
let g:ale_warn_about_trailing_whitespace = 1
Command History:

(executable check - success) gofmt
(finished - exit code 0) ['/bin/zsh', '-c', '''gofmt'' -e ''/var/folders/tj/7m0xyx914_3c4wwcjf9g_b3h0000gn/T/nvimVHaSwP/2/main.go''']

<<>>

(executable check - success) golint
(finished - exit code 0) ['/bin/zsh', '-c', '''golint'' ''/var/folders/tj/7m0xyx914_3c4wwcjf9g_b3h0000gn/T/nvimVHaSwP/3/main.go''']

<<>>
```

Related `.vimrc` configuration for ALE:
```
let g:ale_linters = {
\ 'sh': [],
\ 'bash': [],
\ 'python': [],
\ 'javascript': ['flow-language-server', 'eslint'],
\ 'typescript': ['tslint'],
\ 'go': ['golint', 'gopls'],
\ 'vue': ['eslint']
\}

let g:ale_fixers = {'javascript': ['eslint']}
let g:ale_sign_warning='!'
let g:ale_sign_error='!'

" only run explicit linters specified above
let g:ale_linters_explicit = 1
let g:ale_fix_on_save = 1
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.