Gordon Cassie
e564454ff1
More log statements.
2024-04-30 10:21:08 -07:00
Gordon Cassie
b76f5976ee
Remove unnecessary allocation.
2024-04-30 10:20:50 -07:00
Gordon Cassie
abd782a7aa
Fix typo.
2024-04-30 10:20:31 -07:00
Mitchell Hashimoto
9b4e362a33
font/coretext: shaping ligatures adds padding cells for replaced cells
...
Fixes #1708
Harfbuzz does this automatically. Our tests for harfbuzz test this. We
had a todo in CoreText to mimic this but wasn't sure if it was useful.
Turns out, it is important (see bug!)
2024-04-30 10:14:43 -07:00
Mitchell Hashimoto
d15b5e3e49
renderer/metal: skip frame update if our cell buffer is too small
...
See the comment in the diff for when this can happen.
2024-04-29 12:28:17 -07:00
Mitchell Hashimoto
cbc1ec73ed
renderer/metal: only delete values from the same array
2024-04-28 14:38:36 -07:00
Mitchell Hashimoto
71b90bb2e0
renderer/metal: font changes needs to reset cell contents
2024-04-28 14:10:54 -07:00
Mitchell Hashimoto
b1f324e87a
renderer/metal: frame index must fit up to buffer count
2024-04-28 10:02:07 -07:00
Mitchell Hashimoto
105dbe9e05
renderer/metal: go back to single buffering for now
2024-04-28 09:52:51 -07:00
Mitchell Hashimoto
a54fbe328c
renderer/metal: improved comments
2024-04-28 09:52:29 -07:00
Mitchell Hashimoto
a299338099
renderer/metal: remove old functions
2024-04-28 09:41:45 -07:00
Mitchell Hashimoto
f7714a113d
renderer/opengl: fix compilation
2024-04-28 09:40:03 -07:00
Mitchell Hashimoto
313eb1176d
renderer/metal: preedit works again
2024-04-28 09:37:06 -07:00
Mitchell Hashimoto
06f21a0daa
renderer/metal: only invert if block
2024-04-27 22:26:40 -07:00
Mitchell Hashimoto
3a7dc355a0
renderer/metal: invert text under cursor again
2024-04-27 22:13:17 -07:00
Mitchell Hashimoto
c15f4d7258
renderer/metal: render the cursor
2024-04-27 22:01:03 -07:00
Mitchell Hashimoto
fe4fc509e9
renderer/metal: use index() for all cell settings
2024-04-27 21:42:09 -07:00
Mitchell Hashimoto
ef326ad11c
renderer/metal: clear cell contents bottom-up
2024-04-26 21:53:29 -07:00
Mitchell Hashimoto
e397abcadd
renderer/metal: swap to new cell contents map
2024-04-26 21:24:14 -07:00
Mitchell Hashimoto
3f16234f72
terminal: Coordinate uses CellCountInt
2024-04-26 20:52:08 -07:00
Mitchell Hashimoto
2b67eaa18d
renderer/metal: working on cell contents map
2024-04-26 20:35:25 -07:00
Mitchell Hashimoto
ced8776120
renderer/metal: grid pos for bg/text should be ushort2
...
This saves 50% memory per vertex.
2024-04-25 19:16:40 -07:00
Mitchell Hashimoto
15b7a37cf9
terminal: export Coordinate
2024-04-25 19:07:10 -07:00
Mitchell Hashimoto
da55da2c96
renderer/metal: prepare cell contents mapping data (not implemented yet)
2024-04-23 21:51:44 -07:00
Jack N
8c8f1b6fde
fix macos build
2024-04-22 23:35:48 -07:00
Jack N
346eba3152
sprites: dont thicken via font-thicken, + add cursor thickness adjustment
2024-04-22 20:35:23 -07:00
Mitchell Hashimoto
556f52015b
renderer/metal: update comment
2024-04-22 11:06:07 -07:00
Mitchell Hashimoto
e07ae90d49
renderer/metal: rename drawcells
2024-04-22 10:59:36 -07:00
Mitchell Hashimoto
d12e3db599
renderer/metal: dedicated cell fg shader
2024-04-22 10:58:23 -07:00
Mitchell Hashimoto
e8b623e829
renderer/metal: dedicated cell bg shader
2024-04-22 10:43:29 -07:00
Mitchell Hashimoto
7a6a2b0752
renderer/metal: don't draw with zero instances
2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
8093088515
renderer/metal: move more metal objects into GPUState
2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
20bfbd9b2e
renderer/metal: implement triple-buffering
2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
2dc8ae2ed7
renderer/metal: move more frame state to the frame
2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
1d41a3ccff
renderer/metal: start setting up per-frame state
2024-04-22 10:42:35 -07:00
Mitchell Hashimoto
5f4b33d610
renderer/opengl: remove strikethrough fg mode
2024-04-22 10:40:26 -07:00
Mitchell Hashimoto
4398896905
renderer/opengl: strikethrough as sprite
2024-04-22 10:30:27 -07:00
Mitchell Hashimoto
ad08842e86
renderer/metal: remove strikethrough support from GPU
2024-04-22 10:26:51 -07:00
Mitchell Hashimoto
0f348e809e
font: strikethrough uses sprite rendering
2024-04-22 10:25:33 -07:00
Mitchell Hashimoto
57bf0b08ff
Revert "Merge pull request #1690 from TheOnlyMrCat/gtk_opacity"
...
This reverts commit cbd787c92d296fc4b990a2d1cbf5c901af5b08bc, reversing
changes made to 74e8275e8ba38116a2f6a585902e7f8897c9b085.
See: https://github.com/mitchellh/ghostty/issues/1704
2024-04-21 10:17:38 -07:00
Mitchell Hashimoto
ae987c68e0
terminfo: reset kbs back to ^?, clear high bit for encoding
2024-04-21 10:07:53 -07:00
Jon Parise
54f6abf1cf
termio: pass full command to shell integration
...
This will allow the shell integration code to inspect the full command
string rather than just the first component (shell binary).
2024-04-21 09:53:27 -07:00
Mitchell Hashimoto
542b416cf1
Merge pull request #1702 from jparise/force_shell
...
termio: fix "forced" shell integration
2024-04-20 20:49:55 -07:00
Mitchell Hashimoto
631ac651ab
terminfo: for XTGETTCAP, non-parameterized string values return encoded
...
Fixes #1699
See #1699 for a lot more research. I haven't found a definitive source
of this behavior but this appears to match most of the mainstream
terminals and xterm for the realistic terminfo entries we have and
I'm going to consider that good enough.
For non-parameterized string values in a terminfo, the XTGETTCAP result
should be the tcap encoded form. This means replacing characters such as
`\E` with their byte form of 0x1B, and control characters such as `^H`
with their actual character 0x08, and so on.
"Non-parameterized" is a bit weird, the comment in this commit explains
my best guess (thanks to some community help) of why this may be.
This commit does NOT handle all encodings, but it handles the encodings
we use and the encodings I could cross-check with other terminals. The
actual tcap encoding is much more complicated and I'm sure for specific
types of terminfo values our encoding is not correct. If and when those
come up we should fix them.
2024-04-20 20:34:49 -07:00
Jon Parise
5ea99d3626
termio: fix "forced" shell integration
...
When a shell is forced, we would supply its /-prefixed executable name
to mimic a path location. The rest of the integration detection logic
assumes just a base executable name. Fix the forced names accordingly.
Also add a unit test for this "force shell" behavior.
2024-04-20 11:37:34 -07:00
Mitchell Hashimoto
be0d52a4f2
config: rename "wcswidth" to "legacy" for "grapheme-width-method"
...
We don't actually use libc wcswidth to determine width and even if we
did some terminals use wcwidth (which behaves differently), some use
the Python wcswidth library (which behaves differently), etc. The
reality is there is no real consistency on "legacy" behavior so by
naming it "legacy" we show that we're doing our best but also gives us
wiggle room to change our behavior in the future.
Functionally nothing changes with this commit.
2024-04-19 09:56:22 -07:00
Mitchell Hashimoto
93f8db59ce
inspector: show cell codepoints and wide property
2024-04-19 09:33:43 -07:00
Mitchell Hashimoto
915e09367a
Merge pull request #1696 from mitchellh/update-zig
...
Update to Latest Zig
2024-04-18 16:40:37 -07:00
Mitchell Hashimoto
cbd787c92d
Merge pull request #1690 from TheOnlyMrCat/gtk_opacity
...
Fix background-opacity for the GTK backend
2024-04-18 15:04:56 -07:00
Mitchell Hashimoto
1f09da02ad
terminal: relax cell zero value default test
2024-04-18 14:09:11 -07:00