turbo-editors/turbo-pythonpublic Fork 0
bbfc62fe52548e4712c66104331c9a4de0cff21e
Commits
Clone
git clone https://git.rickub.com/turbo-editors/turbo-python.git
git clone ssh://git@rickub.com/turbo-editors/turbo-python.git

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

📦 Turbo Python 6fc62ea · on bbfc62fe52548e4712c66104331c9a4de0cff21e · k33g · 11h ago
menus.md · 150 lines · 8.1 KBmarkdown
Blame HistoryOpen raw

Reference: menus

Complete list of the menu bar's entries, with their shortcuts and the conditions under which they can be chosen.

An item marked needs a file is greyed out when no window is open.

The bar always holds File, Edit, Search, Run, Code, Options, Window, Snippets, Python and Help, in that order. A project's tools file can add menus of its own between Python and Help; they are listed under Project menus below.

File

Item Shortcut Needs a file Effect
New F4 Open an empty untitled window
Open… F3 Open the file browser and open what is chosen
Save F2 yes Write the file; asks for a name if it has none
Save as… yes Ask for a name and write to it, adopting that path
Close Ctrl-W yes Close the current window, offering to save first
Exit Alt-X Leave the editor, offering to save each modified file

Edit

Item Shortcut Needs a file Effect
Undo Ctrl-Z yes Revert the last change
Redo Ctrl-R yes Re-apply the last undone change. Ctrl-Y used to do this; it deletes a line now, as it did in Turbo C.
Insert line Ctrl-N yes Open a blank line above the cursor, leaving the cursor on its own text
Delete line Ctrl-Y yes Remove the line the cursor is on. The cursor stays on the same line number, so holding the key deletes a run.
Cut Shift-Del yes Copy the selection to the clipboard and remove it
Copy Ctrl-Ins yes Copy the selection to the clipboard
Paste Shift-Ins yes Insert the clipboard, replacing the selection
Select all Ctrl-A yes Select the whole file

The clipboard is shared between every window of one editor session.

Item Shortcut Needs a file Effect
Find… Ctrl-F yes Ask for text and options, then jump to the first match
Find next F7 yes Jump to the next match, wrapping round the end of the file
Find previous Shift-F7 yes Jump to the previous match, wrapping round the start
Go to line… Ctrl-G yes Ask for a line number, counting from one

Run

Item Shortcut Needs a file Effect
Completion Ctrl-Space yes Open the completion list at the cursor
Language server status Show whether a language server is running, and what it is doing

Code

Everything the editor asks the language server about the symbol under the cursor. Nothing here needs a selection: almost every request in the protocol takes a position rather than a range, so there is nothing extra to say by selecting first.

Its hot key is Alt-C.

Item Shortcut Needs a file Effect
Describe symbol F1 yes Show what the language server knows about the symbol under the cursor
Go to definition F12 yes Where the symbol is declared. One answer opens it; several offer the list.
Go to type definition yes Where the type of the symbol is declared, which is a different question
Find implementations… yes What implements it: the types satisfying an interface, the impl blocks of a trait
Find references… Shift-F12 yes Where it is used, counting its declaration
Symbol in file… yes The file's own outline, indented, with each symbol's kind. Choosing one goes to it.
Symbol in project… Ctrl-T no Ask for a name and search the whole project
Problems… no Every problem the server has reported, for every file it has spoken about

A list of places shows the file, the line, and the text of that line — twelve entries reading handler.go:42 say nothing about which one you want. The text comes from an open window when there is one, so a file edited and not saved is listed as it now reads.

Three answers are told apart, and the difference matters: nothing found says so in the question's own words (No references found), the server is not ready shows what it is doing instead, and one answer simply takes you there without a dialog.

Symbol in file has no shortcut on purpose. The obvious one is Ctrl-Shift-O, and a terminal cannot tell that from Ctrl-O — the shift is lost before the editor sees it.

Options

Item Needs a file Effect
Theme… List every loadable theme and apply the one chosen, immediately. With a project settings file present, also writes the choice into it.
Line numbers yes Show or hide the gutter in the current window
Create project settings Write .turbo-python/settings.toml with the theme in use, and open it. Greyed out once the project has one.
Project settings… Open .turbo-python/settings.toml. Greyed out until the project has one.

Window

Item Shortcut Needs a file Effect
Next F6 yes Bring the window behind the current one forward
New terminal F8 no Open a window running a shell, in the directory of the file in front
Project tree F9 no Open a window showing the project's files; brings the existing one forward when there is one
Tile yes Lay every window out in a grid, none overlapping
Cascade yes Stack the windows offset, every title visible
Maximise yes Give the current window the whole desktop, or put it back where it was if it already has it. The same toggle as the [■] box on the window's own frame.
List… Alt-0 yes List the open windows and bring the chosen one forward

Snippets

Built from .turbo-python/snippets.toml and your own snippets file each time it opens. Its hot key is Alt-N, because Search already answers to S.

Item Needs a file Effect
One submenu per group Insert the chosen snippet at the cursor; the items need a file open
Create snippets file no Write .turbo-python/snippets.toml with worked examples, then open it. Greyed out once the project has one.
Open snippets file no Open .turbo-python/snippets.toml. Greyed out until the project has one. Always the project's file, never your own.

See Snippets.

Python

Built from .turbo-python/tools.toml each time it opens. Its hot key is Alt-P.

Item Effect
One line per tool that names no menu Run that command, showing its output where the tool asked: a popup, a terminal window, or an editing window
Create tools file Write .turbo-python/tools.toml with the five Python commands, then open it. Greyed out once the project has one.
Open tools file Open .turbo-python/tools.toml. Greyed out until the project has one.

See Python tools.

Project menus

Not fixed: one menu per menu name in .turbo-python/tools.toml, in the order the names first appear there, between Python and Help. A project with no tools file, or whose tools all stay in Python, has none.

Item Effect
One line per tool naming that menu Run that command, showing its output where the tool asked

Their hot keys are assigned rather than fixed, so that a name from a file can never take a letter one of the menus above already answers to. The rules are in Python tools.

Help

Item Effect
Keyboard Show the keys worth knowing
About Show the version, the commit and build date when the build recorded them, and the current theme. See the version number.

Status bar

The hints along the bottom are clickable and run the same actions.

Hint Action
F1 Describe Code ▸ Describe symbol
F2 Save File ▸ Save
F3 Open File ▸ Open…
F6 Window Window ▸ Next
F7 Next Search ▸ Find next
F10 Menu Open the menu bar
Alt-X Exit File ▸ Exit

The right-hand end shows, in this order: the cursor as line:column, then either the first error the language server reported for this file (prefixed ) or the language server's state.

  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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
# Reference: menus

> Complete list of the menu bar's entries, with their shortcuts and the conditions under which they can be chosen.

An item marked **needs a file** is greyed out when no window is open.

The bar always holds File, Edit, Search, Run, Code, Options, Window, Snippets, Python and Help, in that order. A project's tools file can add menus of its own between Python and Help; they are listed under [Project menus](#project-menus) below.

## File

| Item | Shortcut | Needs a file | Effect |
| --- | --- | --- | --- |
| New | `F4` | | Open an empty untitled window |
| Open… | `F3` | | Open the file browser and open what is chosen |
| Save | `F2` | yes | Write the file; asks for a name if it has none |
| Save as… | | yes | Ask for a name and write to it, adopting that path |
| Close | `Ctrl-W` | yes | Close the current window, offering to save first |
| Exit | `Alt-X` | | Leave the editor, offering to save each modified file |

## Edit

| Item | Shortcut | Needs a file | Effect |
| --- | --- | --- | --- |
| Undo | `Ctrl-Z` | yes | Revert the last change |
| Redo | `Ctrl-R` | yes | Re-apply the last undone change. **`Ctrl-Y` used to do this**; it deletes a line now, as it did in Turbo C. |
| Insert line | `Ctrl-N` | yes | Open a blank line above the cursor, leaving the cursor on its own text |
| Delete line | `Ctrl-Y` | yes | Remove the line the cursor is on. The cursor stays on the same line number, so holding the key deletes a run. |
| Cut | `Shift-Del` | yes | Copy the selection to the clipboard and remove it |
| Copy | `Ctrl-Ins` | yes | Copy the selection to the clipboard |
| Paste | `Shift-Ins` | yes | Insert the clipboard, replacing the selection |
| Select all | `Ctrl-A` | yes | Select the whole file |

The clipboard is shared between every window of one editor session.

## Search

| Item | Shortcut | Needs a file | Effect |
| --- | --- | --- | --- |
| Find… | `Ctrl-F` | yes | Ask for text and options, then jump to the first match |
| Find next | `F7` | yes | Jump to the next match, wrapping round the end of the file |
| Find previous | `Shift-F7` | yes | Jump to the previous match, wrapping round the start |
| Go to line… | `Ctrl-G` | yes | Ask for a line number, counting from one |

## Run

| Item | Shortcut | Needs a file | Effect |
| --- | --- | --- | --- |
| Completion | `Ctrl-Space` | yes | Open the completion list at the cursor |
| Language server status | | | Show whether a language server is running, and what it is doing |

## Code

Everything the editor asks the language server about the symbol **under the cursor**. Nothing here needs a selection: almost every request in the protocol takes a position rather than a range, so there is nothing extra to say by selecting first.

Its hot key is `Alt-C`.

| Item | Shortcut | Needs a file | Effect |
| --- | --- | --- | --- |
| Describe symbol | `F1` | yes | Show what the language server knows about the symbol under the cursor |
| Go to definition | `F12` | yes | Where the symbol is declared. One answer opens it; several offer the list. |
| Go to type definition | | yes | Where the *type* of the symbol is declared, which is a different question |
| Find implementations… | | yes | What implements it: the types satisfying an interface, the impl blocks of a trait |
| Find references… | `Shift-F12` | yes | Where it is used, counting its declaration |
| Symbol in file… | | yes | The file's own outline, indented, with each symbol's kind. Choosing one goes to it. |
| Symbol in project… | `Ctrl-T` | no | Ask for a name and search the whole project |
| Problems… | | no | Every problem the server has reported, for every file it has spoken about |

A list of places shows the file, the line, and the text of that line — twelve entries reading `handler.go:42` say nothing about which one you want. The text comes from an open window when there is one, so a file edited and not saved is listed as it now reads.

Three answers are told apart, and the difference matters: **nothing found** says so in the question's own words (`No references found`), **the server is not ready** shows what it is doing instead, and **one answer** simply takes you there without a dialog.

*Symbol in file* has no shortcut on purpose. The obvious one is `Ctrl-Shift-O`, and a terminal cannot tell that from `Ctrl-O` — the shift is lost before the editor sees it.

## Options

| Item | Needs a file | Effect |
| --- | --- | --- |
| Theme… | | List every loadable theme and apply the one chosen, immediately. With a project settings file present, also writes the choice into it. |
| Line numbers | yes | Show or hide the gutter in the current window |
| Create project settings | | Write `.turbo-python/settings.toml` with the theme in use, and open it. **Greyed out once the project has one.** |
| Project settings… | | Open `.turbo-python/settings.toml`. **Greyed out until the project has one.** |

## Window

| Item | Shortcut | Needs a file | Effect |
| --- | --- | --- | --- |
| Next | `F6` | yes | Bring the window behind the current one forward |
| New terminal | `F8` | no | Open a window running a shell, in the directory of the file in front |
| Project tree | `F9` | no | Open a window showing the project's files; brings the existing one forward when there is one |
| Tile | | yes | Lay every window out in a grid, none overlapping |
| Cascade | | yes | Stack the windows offset, every title visible |
| Maximise | | yes | Give the current window the whole desktop, or put it back where it was if it already has it. The same toggle as the `[■]` box on the window's own frame. |
| List… | `Alt-0` | yes | List the open windows and bring the chosen one forward |

## Snippets

Built from `.turbo-python/snippets.toml` and your own snippets file each time it opens. Its hot key is `Alt-N`, because Search already answers to S.

| Item | Needs a file | Effect |
| --- | --- | --- |
| One submenu per group | | Insert the chosen snippet at the cursor; the items need a file open |
| Create snippets file | no | Write `.turbo-python/snippets.toml` with worked examples, then open it. **Greyed out once the project has one.** |
| Open snippets file | no | Open `.turbo-python/snippets.toml`. **Greyed out until the project has one.** Always the project's file, never your own. |

See [Snippets](snippets.md).

## Python

Built from `.turbo-python/tools.toml` each time it opens. Its hot key is `Alt-P`.

| Item | Effect |
| --- | --- |
| One line per tool that names no `menu` | Run that command, showing its output where the tool asked: a popup, a terminal window, or an editing window |
| Create tools file | Write `.turbo-python/tools.toml` with the five Python commands, then open it. **Greyed out once the project has one.** |
| Open tools file | Open `.turbo-python/tools.toml`. **Greyed out until the project has one.** |

See [Python tools](python-tools.md).

## Project menus

Not fixed: one menu per `menu` name in `.turbo-python/tools.toml`, in the order the names first appear there, between Python and Help. A project with no tools file, or whose tools all stay in Python, has none.

| Item | Effect |
| --- | --- |
| One line per tool naming that menu | Run that command, showing its output where the tool asked |

Their hot keys are assigned rather than fixed, so that a name from a file can never take a letter one of the menus above already answers to. The rules are in [Python tools](python-tools.md#hot-keys).

## Help

| Item | Effect |
| --- | --- |
| Keyboard | Show the keys worth knowing |
| About | Show the version, the commit and build date when the build recorded them, and the current theme. See [the version number](versioning.md). |

## Status bar

The hints along the bottom are clickable and run the same actions.

| Hint | Action |
| --- | --- |
| `F1 Describe` | Code ▸ Describe symbol |
| `F2 Save` | File ▸ Save |
| `F3 Open` | File ▸ Open… |
| `F6 Window` | Window ▸ Next |
| `F7 Next` | Search ▸ Find next |
| `F10 Menu` | Open the menu bar |
| `Alt-X Exit` | File ▸ Exit |

The right-hand end shows, in this order: the cursor as `line:column`, then either the first error the language server reported for this file (prefixed `⚠`) or the language server's state.