| # Features |
| |
| 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](https://microsoft.github.io/language-server-protocol/). |
| |
| ## Special features |
| |
| Here, only special features outside of the LSP are described. |
| |
| ### Symbol Queries |
| |
| Gopls supports some extended syntax for `workspace/symbol` requests, when using |
| the `fuzzy` symbol matcher (the default). Inspired by the popular fuzzy matcher |
| [FZF](https://github.com/junegunn/fzf), the following special characters are |
| supported within symbol queries: |
| |
| | Character | Usage | Match | |
| | --------- | --------- | ------------ | |
| | `'` | `'abc` | exact | |
| | `^` | `^printf` | exact prefix | |
| | `$` | `printf$` | exact suffix | |
| |
| ## Template Files |
| |
| 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`](https://github.com/golang/tools/blob/master/gopls/doc/settings.md#templateextensions-string) 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. |
| |
| ### Configuring your editor |
| |
| 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`](https://code.visualstudio.com/docs/languages/identifiers) |
| and `build.templateExtensions` (the gopls setting). |
| |
| <!--TODO(rstambler): Automatically generate a list of supported features.--> |
| |