1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
|
# Reference: command line
> Neutral description of the `turbo-go` command, its flags, and the environment it reads.
## Synopsis
```
turbo-go [flags] [file...]
```
Each `file` is opened in its own window. A file that does not exist yet is opened as an empty buffer bound to that path. With no file at all, one empty untitled window is opened.
## Flags
| Flag | Type | Default | Description |
| --- | --- | --- | --- |
| `-theme <name>` | string | the project's, else `turbo-classic` | Theme to start with, overriding the project's own. An unknown name falls back to the default without an error. |
| `-list-themes` | bool | `false` | Print every loadable theme with its description, then the user theme directory, and exit. |
| `-no-lsp` | bool | `false` | Do not start a language server. Colouring and editing are unaffected. |
| `-version` | bool | `false` | Print `Turbo Go <version>` on one line, with the commit and build date when the build recorded them, and exit. See [the version number](versioning.md). |
| `-h`, `-help` | bool | `false` | Print the flag list and exit. |
## Environment
| Variable | Read by | Effect |
| --- | --- | --- |
| `TURBO_GO_THEME_DIR` | theme loading | Directory to read user themes from, instead of the platform configuration directory. |
| `TERM` | tcell | Which terminal description to use. |
| `GOBIN`, `GOPATH`, `HOME` | gopls lookup | Searched, in that order, when `gopls` is not on `PATH`. |
## Files
| Path | Purpose |
| --- | --- |
| `$TURBO_GO_THEME_DIR/*.toml` | User themes, when the variable is set. |
| `./.turbo-go/settings.toml` | This project's settings, read once at start-up. See [project settings](project-settings.md). |
| `~/.config/turbo-go/themes/*.toml` | User themes on Linux (`os.UserConfigDir`). |
| `~/Library/Application Support/turbo-go/themes/*.toml` | User themes on macOS. |
| `<module>/go.mod` | Located by walking up from the first file; its directory becomes the language server's root. |
## Exit status
| Status | Meaning |
| --- | --- |
| `0` | The editor exited normally, or an informational flag was used. |
| `1` | The terminal could not be opened or initialised. The reason is printed to standard error. |
## Make targets
Run from a checkout.
| Target | What it runs |
| --- | --- |
| `make help` | List the targets. This is the default. |
| `make test` | `go test ./...` |
| `make test-verbose` | `go test -v ./...` |
| `make cover` | `go test -cover ./...` |
| `make build` | `go build -o bin/turbo-go .` |
| `make install` | `scripts/install.sh` — build and install onto your PATH |
| `make uninstall` | `scripts/install.sh --uninstall` |
| `make run FILE=x.go` | `make build`, then `./bin/turbo-go x.go` |
| `make fmt` | `go fmt ./...` |
| `make vet` | `go vet ./...` |
| `make check` | `fmt`, then `vet`, then `test` |
| `make clean` | Remove `bin/` |
## Examples
```bash
turbo-go # one empty window
turbo-go main.go go.mod # two windows
turbo-go -theme turbo-dark main.go # a different theme
turbo-go -no-lsp main.go # no language server
turbo-go -list-themes # what themes exist
```
## Installer
`scripts/install.sh`, also reachable as `make install`.
| Option | Description |
| --- | --- |
| `-p`, `--prefix DIR` | Install into `DIR` instead of `$GOBIN` or `$GOPATH/bin`. |
| `--with-gopls` | Install `gopls` as well, if it is not already there. |
| `--uninstall` | Remove an installed `turbo-go` and stop. |
| `-h`, `--help` | Print the options and stop. |
| Exit status | Meaning |
| --- | --- |
| `0` | Installed, removed, or help printed. |
| `1` | Go missing or too old, the build failed, or the destination could not be written. Nothing is installed and an existing installation is left untouched. |
## Errors
| Message | Cause |
| --- | --- |
| `turbo-go: opening the terminal: …` | tcell could not open the terminal; usually `TERM` is unset or unknown. |
| `turbo-go: initialising the terminal: …` | The terminal was opened but could not be put into raw mode. |
| `Cannot open` (in a dialog) | The path is a directory, or is not readable. |
| `Cannot save` (in a dialog) | The directory does not exist, or is not writable. |
|