This document describes some of the features supported by gopls
. It is
currently under construction, so, for a comprehensive list, see the
Language Server Protocol.
Here, only special features outside of the LSP are described.
Gopls supports some extended syntax for workspace/symbol
requests, when using
the fuzzy
symbol matcher (the default). Inspired by the popular fuzzy matcher
FZF, the following special characters are
supported within symbol queries:
Character | Usage | Match |
---|---|---|
' |
'abc |
exact |
^ |
^printf |
exact prefix |
$ |
printf$ |
exact suffix |
Gopls provides some support for Go template files, that is, files that
are parsed by text/template
or html/template
.
Gopls recognizes template files based on their file extension, which may be
configured by the
templateExtensions
setting.
Making this list empty turns off template support.
In template files, template support works inside
the default {{
delimiters. (Go template parsing
allows the user to specify other delimiters, but
gopls does not know how to do that.)
Gopls template support includes the following features:
- Diagnostics: if template parsing returns an error, it is presented as a diagnostic. (Missing functions do not produce errors.)
- Syntax Highlighting: syntax highlighting is provided for template files.
- Definitions: gopls provides jump-to-definition inside templates, though it does not understand scoping (all templates are considered to be in one global scope).
- References: gopls provides find-references, with the same scoping limitation as definitions.
- Completions: gopls will attempt to suggest completions inside templates.
In addition to configuring templateExtensions
, you may need to configure your
editor or LSP client to activate gopls
for template files. For example, in
VS Code
you will need to configure both
files.associations
and build.templateExtensions
(the gopls setting).