lint all Md files

This commit is contained in:
Patrick Fong
2023-09-28 10:27:15 -07:00
parent 28b7782bbe
commit 8be80558c7
18 changed files with 141 additions and 143 deletions

View File

@ -44,11 +44,11 @@ things, but I've been using it full time since April 2022.
## Download ## Download
| Platform / Package | Links | Notes | | Platform / Package | Links | Notes |
| ----------| ----- | ----- | | ------------------ | ------------------------------------------------------------------------ | -------------------------- |
| macOS | [Tip ("Nightly")](https://github.com/mitchellh/ghostty/releases/tag/tip) | MacOS 12+ Universal Binary | | macOS | [Tip ("Nightly")](https://github.com/mitchellh/ghostty/releases/tag/tip) | MacOS 12+ Universal Binary |
| Linux | [Build from Source](#developing-ghostty) | | | Linux | [Build from Source](#developing-ghostty) | |
| Windows | n/a | Not supported yet | | Windows | n/a | Not supported yet |
### Configuration ### Configuration
@ -134,12 +134,12 @@ to support many of the features that
The currently support shell integration features in Ghostty: The currently support shell integration features in Ghostty:
* We do not confirm close for windows where the cursor is at a prompt. - We do not confirm close for windows where the cursor is at a prompt.
* New terminals start in the working directory of the previously focused terminal. - New terminals start in the working directory of the previously focused terminal.
* Complex prompts resize correctly by allowing the shell to redraw the prompt line. - Complex prompts resize correctly by allowing the shell to redraw the prompt line.
* The cursor at the prompt is turned into a bar. - The cursor at the prompt is turned into a bar.
* The `jump_to_prompt` keybinding can be used to scroll the terminal window - The `jump_to_prompt` keybinding can be used to scroll the terminal window
forward and back through prompts. forward and back through prompts.
#### Shell Integration Installation and Verification #### Shell Integration Installation and Verification
@ -208,15 +208,15 @@ goes for any other shell.
The high-level ambitious plan for the project, in order: The high-level ambitious plan for the project, in order:
| # | Step | Status | | # | Step | Status |
|:---:|------|:------:| | :-: | ----------------------------------------------------------- | :----: |
| 1 | [Standards-compliant terminal emulation](docs/sequences.md) | ⚠️ | | 1 | [Standards-compliant terminal emulation](docs/sequences.md) | ⚠️ |
| 2 | Competitive performance | ✅ | | 2 | Competitive performance | |
| 3 | Basic customizability -- fonts, bg colors, etc. | ✅ | | 3 | Basic customizability -- fonts, bg colors, etc. | |
| 4 | Richer windowing features -- multi-window, tabbing, panes | ✅ | | 4 | Richer windowing features -- multi-window, tabbing, panes | |
| 5 | Native Platform Experiences (i.e. Mac Preference Panel) | ⚠️ | | 5 | Native Platform Experiences (i.e. Mac Preference Panel) | ⚠️ |
| 6 | Windows Terminals (including PowerShell, Cmd, WSL) | ❌ | | 6 | Windows Terminals (including PowerShell, Cmd, WSL) | |
| N | Fancy features (to be expanded upon later) | ❌ | | N | Fancy features (to be expanded upon later) | |
Additional details for each step in the big roadmap below: Additional details for each step in the big roadmap below:
@ -261,10 +261,10 @@ Ghostty is a cross-platform terminal emulator but we don't aim for a
least-common-denominator experience. There is a large, shared core written least-common-denominator experience. There is a large, shared core written
in Zig but we do a lot of platform-native things: in Zig but we do a lot of platform-native things:
* The macOS app is a true SwiftUI-based application with all the things you - The macOS app is a true SwiftUI-based application with all the things you
would expect such as real windowing, menu bars, a settings GUI, etc. would expect such as real windowing, menu bars, a settings GUI, etc.
* macOS uses a true Metal renderer with CoreText for font discovery. - macOS uses a true Metal renderer with CoreText for font discovery.
* The Linux app is built with GTK. - The Linux app is built with GTK.
There are more improvements to be made. The macOS settings window is still There are more improvements to be made. The macOS settings window is still
a work-in-progress. Similar improvements will follow with Linux. a work-in-progress. Similar improvements will follow with Linux.
@ -310,11 +310,11 @@ tasks.
Other useful commands: Other useful commands:
* `zig build test` for running unit tests. - `zig build test` for running unit tests.
* `zig build run -Dconformance=<name>` runs a conformance test case from - `zig build run -Dconformance=<name>` runs a conformance test case from
the `conformance` directory. The `name` is the name of the file. This runs the `conformance` directory. The `name` is the name of the file. This runs
in the current running terminal emulator so if you want to check the in the current running terminal emulator so if you want to check the
behavior of this project, you must run this command in ghostty. behavior of this project, you must run this command in ghostty.
### Compiling a Release Build ### Compiling a Release Build

View File

@ -42,28 +42,28 @@ or even pair (time permitting) if you're interested.
This is the priority of bugs: This is the priority of bugs:
1. Crashes. 💥 These are just unacceptable and I'll drop everything to 1. Crashes. 💥 These are just unacceptable and I'll drop everything to
fix a crash. fix a crash.
2. Escape sequence logic or rendering issues. These are almost as bad as 2. Escape sequence logic or rendering issues. These are almost as bad as
crashes because they usually make your workflow unusable. This includes crashes because they usually make your workflow unusable. This includes
unsupported escape sequences that impact your workflow. unsupported escape sequences that impact your workflow.
3. Anything else... 3. Anything else...
## Let's Talk! ## Let's Talk!
You likely landed in the Discord community first, if for some reason you're not You likely landed in the Discord community first, if for some reason you're not
in there, join [here](https://discord.gg/ghostty). Discord is a great place to in there, join [here](https://discord.gg/ghostty). Discord is a great place to
share feedback, discuss issues, ask questions and talk to other testers. share feedback, discuss issues, ask questions and talk to other testers.
## Other FAQ ## Other FAQ
### Can I Invite a Friend? ### Can I Invite a Friend?
To the Discord, go for it! [discord.gg/ghostty](https://discord.gg/ghostty). To the Discord, go for it! [discord.gg/ghostty](https://discord.gg/ghostty).
Initially, they'll land in a public Discord channel. As mentioned, testers Initially, they'll land in a public Discord channel. As mentioned, testers
are being added slowly as bugs are fixed. Discord is being used as a sort-of are being added slowly as bugs are fixed. Discord is being used as a sort-of
waitlist, and people are added to the project as testers from there, waitlist, and people are added to the project as testers from there,
so just send them the link and they will be added at some point. so just send them the link and they will be added at some point.

18
TODO.md
View File

@ -1,15 +1,15 @@
Performance: Performance:
* for scrollback, investigate using segmented list for sufficiently large - for scrollback, investigate using segmented list for sufficiently large
scrollback scenarios. scrollback scenarios.
* Loading fonts on startups should probably happen in multiple threads - Loading fonts on startups should probably happen in multiple threads
* `deleteLines` is very, very slow which makes scroll region benchmarks terrible - `deleteLines` is very, very slow which makes scroll region benchmarks terrible
Correctness: Correctness:
* test wrap against wraptest: https://github.com/mattiase/wraptest - test wrap against wraptest: https://github.com/mattiase/wraptest
- automate this in some way - automate this in some way
* Charsets: UTF-8 vs. ASCII mode - Charsets: UTF-8 vs. ASCII mode
- we only support UTF-8 input right now - we only support UTF-8 input right now
- need fallback glyphs if they're not supported - need fallback glyphs if they're not supported
- can effect a crash using `vttest` menu `3 10` since it tries to parse - can effect a crash using `vttest` menu `3 10` since it tries to parse
@ -17,13 +17,13 @@ Correctness:
Improvements: Improvements:
* scrollback: configurable - scrollback: configurable
Mac: Mac:
* Preferences window - Preferences window
Major Features: Major Features:
* Bell - Bell
* Sixels: https://saitoha.github.io/libsixel/ - Sixels: https://saitoha.github.io/libsixel/

View File

@ -1,9 +1,8 @@
# Control and Escape Sequences # Control and Escape Sequences
⚠️ **This is super out of date. Ghostty's support is much better ⚠️ **This is super out of date. Ghostty's support is much better
than this document seems. TODO to update this.** ⚠️ than this document seems. TODO to update this.** ⚠️
This is the list of control and escape sequences known in the ecosystem This is the list of control and escape sequences known in the ecosystem
of terminal emulators and their implementation status in ghostty. Note that of terminal emulators and their implementation status in ghostty. Note that
some control sequences may never be implemented in ghostty. In these scenarios, some control sequences may never be implemented in ghostty. In these scenarios,
@ -11,35 +10,35 @@ it is noted why.
Status meanings: Status meanings:
* ✅ - Implementation is complete and considered 100% accurate. - ✅ - Implementation is complete and considered 100% accurate.
* ⚠️ - Implementation works, but may be missing some functionality. The - ⚠️ - Implementation works, but may be missing some functionality. The
details of how well it works or doesn't are in the linked page. In many details of how well it works or doesn't are in the linked page. In many
cases, the missing functionality is very specific or esoteric. Regardless, cases, the missing functionality is very specific or esoteric. Regardless,
we don't consider a sequence a green checkmark until all known feature we don't consider a sequence a green checkmark until all known feature
interactions are complete. interactions are complete.
* ❌ - Implementation is effectively non-functional, but ghostty continues - ❌ - Implementation is effectively non-functional, but ghostty continues
in the face of it (probably in some broken state). in the face of it (probably in some broken state).
* 💥 - Ghostty crashes if this control sequence is sent. - 💥 - Ghostty crashes if this control sequence is sent.
| ID | ASCII | Name | Status | | ID | ASCII | Name | Status |
|:---:|:-----:|:-----|:------:| | :---: | :-----: | :----------------------------------------- | :----: |
| `ENQ` | `0x05` | [Enquiry](sequences/enq.md) | ✅ | | `ENQ` | `0x05` | [Enquiry](sequences/enq.md) | |
| `BEL` | `0x07` | [Bell](sequences/bel.md) | ❌ | | `BEL` | `0x07` | [Bell](sequences/bel.md) | |
| `BS` | `0x08` | [Backspace](sequences/bs.md) | ⚠️ | | `BS` | `0x08` | [Backspace](sequences/bs.md) | ⚠️ |
| `TAB` | `0x09` | [Tab](sequences/tab.md) | ⚠️ | | `TAB` | `0x09` | [Tab](sequences/tab.md) | ⚠️ |
| `LF` | `0x0A` | [Linefeed](sequences/lf.md) | ⚠️ | | `LF` | `0x0A` | [Linefeed](sequences/lf.md) | ⚠️ |
| `VT` | `0x0B` | [Vertical Tab](sequences/vt.md) | ✅ | | `VT` | `0x0B` | [Vertical Tab](sequences/vt.md) | |
| `FF` | `0x0C` | [Form Feed](sequences/ff.md) | ✅ | | `FF` | `0x0C` | [Form Feed](sequences/ff.md) | |
| `CR` | `0x0D` | [Carriage Return](sequences/cr.md) | ⚠️ | | `CR` | `0x0D` | [Carriage Return](sequences/cr.md) | ⚠️ |
| `SO` | `0x0E` | [Shift Out](#) | ❌ | | `SO` | `0x0E` | [Shift Out](#) | |
| `SI` | `0x0F` | [Shift In](#) | ❌ | | `SI` | `0x0F` | [Shift In](#) | |
| `CAN` | `0x18` | [Cancel Parsing](sequences/can.md) | ✅ | | `CAN` | `0x18` | [Cancel Parsing](sequences/can.md) | |
| `SUB` | `0x1A` | [Cancel Parsing (Alias)](sequences/can.md) | ✅ | | `SUB` | `0x1A` | [Cancel Parsing (Alias)](sequences/can.md) | |
| `IND` | `ESC D` | [Index](sequences/ind.md) | ✅ | | `IND` | `ESC D` | [Index](sequences/ind.md) | |
| `NEL` | `ESC E` | [Next Line](sequences/nel.md) | ✅ | | `NEL` | `ESC E` | [Next Line](sequences/nel.md) | |
| `HTS` | `ESC H` | [Horizontal Tab Set](sequences/hts.md) | ✅ | | `HTS` | `ESC H` | [Horizontal Tab Set](sequences/hts.md) | |
| `RI` | `ESC M` | [Reverse Index](sequences/ri.md) | ⚠️ | | `RI` | `ESC M` | [Reverse Index](sequences/ri.md) | ⚠️ |
| `SS2` | `ESC N` | [Single Shift 2](#) | ❌ | | `SS2` | `ESC N` | [Single Shift 2](#) | |
| `SS3` | `ESC O` | [Single Shift 3](#) | ❌ | | `SS3` | `ESC O` | [Single Shift 3](#) | |
| `SPA` | `ESC V` | [Start Protected Area](#) | ❌ | | `SPA` | `ESC V` | [Start Protected Area](#) | |
| `EPA` | `ESC W` | [End Protected Area](#) | ❌ | | `EPA` | `ESC W` | [End Protected Area](#) | |

View File

@ -1,24 +1,24 @@
# Bell # Bell
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x07` | | Hex | `0x07` |
Rings a "bell" to alert the operator to some condition. Rings a "bell" to alert the operator to some condition.
## Implementation Details ## Implementation Details
* ghostty logs "BELL" - ghostty logs "BELL"
## TODO ## TODO
* Add a configurable visual bell -- common in most terminal emulators -- - Add a configurable visual bell -- common in most terminal emulators --
to flash the border. to flash the border.
* Mark the window as requesting attention, most operating systems support - Mark the window as requesting attention, most operating systems support
this. For example, Windows windows will flash in the toolbar. this. For example, Windows windows will flash in the toolbar.
* Support an audible bell. - Support an audible bell.
## References ## References
* https://vt100.net/docs/vt100-ug/chapter3.html - https://vt100.net/docs/vt100-ug/chapter3.html

View File

@ -1,9 +1,9 @@
# Backspace # Backspace
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x08` | | Hex | `0x08` |
Move the cursor left one cell. Move the cursor left one cell.
@ -11,9 +11,9 @@ TODO: Details about how this interacts with soft wrapping.
## Implementation Details ## Implementation Details
* ghostty implements this naively as `cursor.x -|= 1` (`-|=` being a - ghostty implements this naively as `cursor.x -|= 1` (`-|=` being a
saturating subtraction). saturating subtraction).
## TODO ## TODO
* Soft wrap integration - Soft wrap integration

View File

@ -1,9 +1,9 @@
# Cancel Parsing # Cancel Parsing
| | | | | |
| --- | --- | | ---- | ---------------- |
| Text | | | Text | |
| Hex | `0x18` or `0x1A` | | Hex | `0x18` or `0x1A` |
Cancels sequence parsing. Any partially completed sequence such as `ESC` Cancels sequence parsing. Any partially completed sequence such as `ESC`
can send `0x18` and revert back to an unparsed state. The sequence characters can send `0x18` and revert back to an unparsed state. The sequence characters

View File

@ -1,13 +1,13 @@
# Carriage Return # Carriage Return
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x0D` | | Hex | `0x0D` |
Moves the cursor to the left-most column and resets any pending wrap flags. Moves the cursor to the left-most column and resets any pending wrap flags.
## TODO ## TODO
* Integration with left/right scrolling margins - Integration with left/right scrolling margins
* Integration with origin mode - Integration with origin mode

View File

@ -1,21 +1,21 @@
# Enquiry (Answerback) # Enquiry (Answerback)
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x05` | | Hex | `0x05` |
Sends an answerback string. In the VT100, this was configurable by the Sends an answerback string. In the VT100, this was configurable by the
operator. operator.
## Implementation Details ## Implementation Details
* ghostty always sends `""` - ghostty always sends `""`
## TODO ## TODO
* Make the answerback configurable - Make the answerback configurable
## References ## References
* https://vt100.net/docs/vt100-ug/chapter3.html - https://vt100.net/docs/vt100-ug/chapter3.html

View File

@ -1,8 +1,8 @@
# Form Feed # Form Feed
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x0C` | | Hex | `0x0C` |
Equivalent to [linefeed](lf.md). Equivalent to [linefeed](lf.md).

View File

@ -1,7 +1,7 @@
# Horizontal Tab Set # Horizontal Tab Set
| | | | | |
| --- | --- | | ---- | ----------- |
| Text | `ESC H` | | Text | `ESC H` |
| Hex | `0x18 0x48` | | Hex | `0x18 0x48` |

View File

@ -1,7 +1,7 @@
# Index # Index
| | | | | |
| --- | --- | | ---- | ----------- |
| Text | `ESC D` | | Text | `ESC D` |
| Hex | `0x18 0x44` | | Hex | `0x18 0x44` |
@ -10,10 +10,10 @@ if necessary. This always unsets the pending wrap state.
If the cursor is currently outside the scrolling region: If the cursor is currently outside the scrolling region:
* move the cursor down one line if it is not on bottom line of the screen. - move the cursor down one line if it is not on bottom line of the screen.
If the cursor is inside the scrolling region: If the cursor is inside the scrolling region:
* If the cursor is on the bottom-most line of the screen: invoke - If the cursor is on the bottom-most line of the screen: invoke
[scroll up](su.md) with the value `1`. [scroll up](su.md) with the value `1`.
* Else: move the cursor one line down. - Else: move the cursor one line down.

View File

@ -1,12 +1,12 @@
# Linefeed # Linefeed
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x0A` | | Hex | `0x0A` |
Invoke [Index](ind.md). Invoke [Index](ind.md).
## TODO ## TODO
* Linefeed mode (mode 20) - Linefeed mode (mode 20)

View File

@ -1,7 +1,7 @@
# Index # Index
| | | | | |
| --- | --- | | ---- | ----------- |
| Text | `ESC E` | | Text | `ESC E` |
| Hex | `0x18 0x45` | | Hex | `0x18 0x45` |

View File

@ -1,7 +1,7 @@
# Reverse Index # Reverse Index
| | | | | |
| --- | --- | | ---- | ----------- |
| Text | `ESC M` | | Text | `ESC M` |
| Hex | `0x18 0x4D` | | Hex | `0x18 0x4D` |
@ -9,13 +9,13 @@ Reverse [index](ind.md). This unsets the pending wrap state.
If the cursor is outside of the scrolling region: If the cursor is outside of the scrolling region:
* move the cursor one line up unless it is the top-most line of the screen. - move the cursor one line up unless it is the top-most line of the screen.
If the cursor is inside the scrolling region: If the cursor is inside the scrolling region:
* If the cursor is on the top-most line: invoke [scroll down](#) with value `1` - If the cursor is on the top-most line: invoke [scroll down](#) with value `1`
* Else: move the cursor one line up. - Else: move the cursor one line up.
## TODO ## TODO
* Scroll region edge cases - Scroll region edge cases

View File

@ -1,9 +1,9 @@
# Tab # Tab
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x09` | | Hex | `0x09` |
Move the cursor right to the next tab stop. Move the cursor right to the next tab stop.
@ -17,5 +17,5 @@ Initially, tab stops are set on every 8th column.
## TODO ## TODO
* Integration with left/right margins of the scrolling region. - Integration with left/right margins of the scrolling region.
* How does horizontal tab interact with the pending wrap state? - How does horizontal tab interact with the pending wrap state?

View File

@ -1,8 +1,8 @@
# Vertical Tab # Vertical Tab
| | | | | |
| --- | --- | | ---- | ------ |
| Text | | | Text | |
| Hex | `0x0B` | | Hex | `0x0B` |
Equivalent to [linefeed](lf.md). Equivalent to [linefeed](lf.md).

View File

@ -38,4 +38,3 @@ the full test suite against only a single terminal emulator.
This test suite expects the `ghostty` binary to be in _this directory_. This test suite expects the `ghostty` binary to be in _this directory_.
You can manually copy it into place. Each time you modify the binary, you You can manually copy it into place. Each time you modify the binary, you
must rebuild the Docker image. must rebuild the Docker image.