turbo-editors/turbo-jspublic Fork 0
v1.0.0
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-js.git
git clone ssh://git@rickub.com/turbo-editors/turbo-js.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

📦 Turbo JS 91999d1 · on v1.0.0 · k33g · 12h ago
ask-about-code.md · 65 lines · 3.9 KBmarkdown
Blame HistoryOpen raw

How to ask what the code means

This guide shows how to follow a name through a JavaScript project: what it is, where it is declared, and what is wrong with it. It assumes Turbo JS is installed and the language server is running — the status bar says LSP: ready when it is.

For moving around a file — searching, jumping to a line, switching windows — see How to move around a file instead.

Put the cursor on a name

Any character of it will do. Every question below asks about the position of the cursor, not about a selection, so there is nothing to highlight first.

Ask

To find Do Shortcut
What it is Code ▸ Describe symbol F1
Where it is declared Code ▸ Go to definition F12
Where its type is declared Code ▸ Go to type definition
What implements it Code ▸ Find implementations…
Everywhere it is used Code ▸ Find references… Shift-F12

typescript-language-server answers all five for plain JavaScript. Describe symbol shows a declaration's signature and the JSDoc comment written immediately above it; Go to type definition on const shape = new Circle() goes to class Circle; Find implementations… on a class lists its subclasses; Find references… lists the declaration and every call.

One answer takes you straight there. Several open a list showing each file, its line, and the text of that line; move with the arrow keys, Enter to go, Esc to stay where you are.

When nothing comes back

Three different things look alike, and the status bar tells them apart:

It says Meaning
No … found, in the question's own words The server answered, and there are none
LSP: starting… The server has not finished starting. Wait a moment and ask again.
LSP: off on the status bar No server is running. See How to enable completion.
LSP: no typescript-language-server — npm install -g typescript-language-server typescript@6 There is no typescript-language-server on PATH, nor in the directories nvm, npm, pnpm and Volta install into. See How to enable completion.

Find something by name instead

  • Code ▸ Symbol in file… lists what the file in front declares, indented, with each symbol's kind — the functions and the classes. An outline you can walk; choosing one goes to it.
  • Code ▸ Symbol in project… (Ctrl-T) asks for a name and searches the whole project.

See what is wrong

Code ▸ Problems… lists every problem the server has reported, for every file it has loaded — usually more than the one you are editing. Choosing one goes to the line.

typescript-language-server reports syntax errors in a plain .js file, on open and again on every edit: a function main( { gets a × in the gutter and a message on the status bar. A type mistake gets no mark unless you ask for checking — put // @ts-check on the first line of the file, or checkJs in a jsconfig.json — and then type errors arrive the same way.

Lines with a problem carry a mark in the gutter, beside the line number:

Mark Meaning
× An error
! A warning
i Information
· A hint

A line with more than one problem shows the worst of them.

The marks need the line numbers. They sit in the column that separates the numbers from the text, so hiding the gutter with Options ▸ Line numbers hides them too.

See also

 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
# How to ask what the code means

This guide shows how to follow a name through a JavaScript project: what it is, where it is declared, and what is wrong with it. It assumes Turbo JS is installed and the language server is running — the status bar says `LSP: ready` when it is.

For moving around a file — searching, jumping to a line, switching windows — see [How to move around a file](navigate-code.md) instead.

## Put the cursor on a name

Any character of it will do. Every question below asks about the **position of the cursor**, not about a selection, so there is nothing to highlight first.

## Ask

| To find | Do | Shortcut |
| --- | --- | --- |
| What it is | **Code ▸ Describe symbol** | `F1` |
| Where it is declared | **Code ▸ Go to definition** | `F12` |
| Where its *type* is declared | **Code ▸ Go to type definition** | |
| What implements it | **Code ▸ Find implementations…** | |
| Everywhere it is used | **Code ▸ Find references…** | `Shift-F12` |

`typescript-language-server` answers all five for plain JavaScript. **Describe symbol** shows a declaration's signature and the JSDoc comment written immediately above it; **Go to type definition** on `const shape = new Circle()` goes to `class Circle`; **Find implementations…** on a class lists its subclasses; **Find references…** lists the declaration and every call.

One answer takes you straight there. Several open a list showing each file, its line, and the text of that line; move with the arrow keys, `Enter` to go, `Esc` to stay where you are.

## When nothing comes back

Three different things look alike, and the status bar tells them apart:

| It says | Meaning |
| --- | --- |
| `No … found`, in the question's own words | The server answered, and there are none |
| `LSP: starting…` | The server has not finished starting. Wait a moment and ask again. |
| `LSP: off` on the status bar | No server is running. See [How to enable completion](enable-completion.md). |
| `LSP: no typescript-language-server — npm install -g typescript-language-server typescript@6` | There is no `typescript-language-server` on `PATH`, nor in the directories nvm, npm, pnpm and Volta install into. See [How to enable completion](enable-completion.md). |

## Find something by name instead

- **Code ▸ Symbol in file…** lists what the file in front declares, indented, with each symbol's kind — the functions and the classes. An outline you can walk; choosing one goes to it.
- **Code ▸ Symbol in project…** (`Ctrl-T`) asks for a name and searches the whole project.

## See what is wrong

**Code ▸ Problems…** lists every problem the server has reported, for **every file it has loaded** — usually more than the one you are editing. Choosing one goes to the line.

`typescript-language-server` reports **syntax errors** in a plain `.js` file, on open and again on every edit: a `function main( {` gets a `×` in the gutter and a `⚠` message on the status bar. A type mistake gets no mark unless you ask for checking — put `// @ts-check` on the first line of the file, or `checkJs` in a `jsconfig.json` — and then type errors arrive the same way.

Lines with a problem carry a mark in the gutter, beside the line number:

| Mark | Meaning |
| --- | --- |
| `×` | An error |
| `!` | A warning |
| `i` | Information |
| `·` | A hint |

A line with more than one problem shows the worst of them.

**The marks need the line numbers.** They sit in the column that separates the numbers from the text, so hiding the gutter with **Options ▸ Line numbers** hides them too.

## See also

- Every item and its key: [Menus](../reference/menus.md)
- Getting a server running: [How to enable completion](enable-completion.md)
- What the editor asks, and why: [Colouring and completion](../explanation/colouring-and-completion.md)
- What `typescript-language-server` answers, exactly: [JavaScript tools](../reference/javascript-tools.md)