-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
zsh support + macOS fixes #10
Conversation
Thanks for the PR! In your GIFs, I don't think you are using your new |
@k9withabone ah, yes, I'd updated (and not checked in) example.yaml with the shell overridden in I'll test it with bash elsewhere too. |
Got it, thanks for the clarification. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks pretty good overall. I'm just a bit confused about setting the SIGINT
handler.
752a723
to
8d5a79c
Compare
7ff2cf0
to
29d8ce7
Compare
@k9withabone Have a patch for |
Huh, that's interesting. I'll try setting up a container to see if that applies to zsh on Linux as well. Just out of curiosity, how did you figure that out? |
Wish it was glamorous, but it was mostly stepping through the debugger a lot to see if some error was being swallowed, I noticed if I read buffer output things worked. Bit of a strange one! |
Looks like it works on Linux too! The only problem now is that seems to be echoing the command. Here's the asciicast I got when running the example with zsh: {"version": 2, "width": 128, "height": 30, "timestamp": 1715890488, "duration": 13.201686, "title": "autocast example", "env": {"GOODBYE": "Goodbye!", "TERM": "xterm", "HELLO": "", "SHELL": "/usr/bin/zsh"}}
[0.000000, "o", "[example]$ "]
[0.100000, "o", "e"]
[0.200000, "o", "c"]
[0.300000, "o", "h"]
[0.400000, "o", "o"]
[0.500000, "o", " "]
[0.600000, "o", "$"]
[0.700000, "o", "H"]
[0.800000, "o", "E"]
[0.900000, "o", "L"]
[1.000000, "o", "L"]
[1.100000, "o", "O"]
[1.200000, "o", "\r\n"]
[1.200077, "o", "e\bec"]
[1.200122, "o", "ho "]
[1.200155, "o", "$HE"]
[1.200181, "o", "LL"]
[1.200187, "o", "O"]
[1.200210, "o", "\u001b[?2004l\r\r\n"]
[1.200276, "o", "\r\n"]
[1.200298, "o", "\u001b[1m\u001b[7m#\u001b[27m\u001b[1m\u001b[0m \r \r"]
[1.200317, "o", "\r\u001b[0m\u001b[27m\u001b[24m\u001b[J"]
[1.200322, "o", "[example]$ "]
[3.300322, "o", "n"]
[3.400322, "o", "a"]
[3.500322, "o", "n"]
[3.600322, "o", "o"]
[3.700322, "o", "\r\n"]
[3.700392, "o", "n\bnano"]
[3.700447, "o", "\u001b[?2004l\r\r\n"]
[3.707589, "o", "\u001b[?2004h"]
[3.707695, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[1;30r\u001b(B\u001b[m\u001b[4l\u001b[?7h\u001b[39;49m\u001b[?1h\u001b="]
[3.707778, "o", "\u001b[?1h\u001b=\u001b[?25l"]
[3.708167, "o", "\u001b[39;49m\u001b(B\u001b[m\u001b[H\u001b[2J"]
[3.708261, "o", "\u001b(B\u001b[0;7m GNU nano 7.2 \u001b[46bNew Buffer \u001b[55b \u001b[1;127H\u001b(B\u001b[m"]
[3.708305, "o", "\u001b[28;40H\u001b(B\u001b[0;7m[ Welcome to nano. For basic help, type Ctrl+G. ]\u001b(B\u001b[m"]
[3.708372, "o", "\r\u001b[29d\u001b(B\u001b[0;7m^G\u001b(B\u001b[m Help\u001b[29;17H\u001b(B\u001b[0;7m^O\u001b(B\u001b[m Write Out \u001b(B\u001b[0;7m^W\u001b(B\u001b[m Where Is \u001b(B\u001b[0;7m^K\u001b(B\u001b[m Cut\u001b[29;65H\u001b(B\u001b[0;7m^T\u001b(B\u001b[m Execute\t\u001b(B\u001b[0;7m^C\u001b(B\u001b[m Location \u001b(B\u001b[0;7mM-U\u001b(B\u001b[m Undo\u001b[29;113H"]
[3.708402, "o", "\u001b(B\u001b[0;7mM-A\u001b(B\u001b[m Set Mark\r\u001b[30d\u001b(B\u001b[0;7m^X\u001b(B\u001b[m Exit\u001b[30;17H\u001b(B\u001b[0;7m^R\u001b(B\u001b[m Read File \u001b(B\u001b[0;7m^\\\u001b(B\u001b[m Replace\t\u001b(B\u001b[0;7m^U\u001b(B\u001b[m Paste\u001b[30;65H"]
[3.708436, "o", "\u001b(B\u001b[0;7m^J\u001b(B\u001b[m Justify\t\u001b(B\u001b[0;7m^/\u001b(B\u001b[m Go To Line \u001b(B\u001b[0;7mM-E\u001b(B\u001b[m Redo\u001b[30;113H\u001b(B\u001b[0;7mM-6\u001b(B\u001b[m Copy"]
[3.708562, "o", "\r\u001b[2d\u001b[?12l\u001b[?25h"]
[5.900564, "o", "\u001b[?25l\u001b[1;119H\u001b(B\u001b[0;7mModified\u001b(B\u001b[m"]
[5.900605, "o", "\u001b[?12l\u001b[?25h"]
[5.900624, "o", "\r\u001b[2dh"]
[6.000590, "o", "\u001b[?25l\u001b[?12l\u001b[?25he"]
[6.100501, "o", "\u001b[?25l"]
[6.100579, "o", "\u001b[?12l\u001b[?25hl"]
[6.200599, "o", "\u001b[?25l\u001b[?12l\u001b[?25hl"]
[6.300579, "o", "\u001b[?25l\u001b[?12l\u001b[?25ho"]
[8.500485, "o", "\u001b[?25l"]
[8.500573, "o", "\r\u001b[28d"]
[8.500594, "o", "\u001b(B\u001b[0;7mSave modified buffer? \u001b[105b \u001b[29;1H"]
[8.500614, "o", " Y\u001b(B\u001b[m Yes\u001b[K\r\u001b[30d\u001b(B\u001b[0;7m N\u001b(B\u001b[m No \u001b[30;18H"]
[8.500634, "o", "\u001b(B\u001b[0;7mC\u001b(B\u001b[m Cancel\u001b[K\u001b[28;23H\u001b[?12l\u001b[?25h"]
[9.700551, "o", "\u001b[?25l"]
[9.700639, "o", "\r\u001b[J\u001b[30d\u001b[?12l\u001b[?25h\u001b[30;1H\u001b[?1049l\u001b[23;0;0t\r\u001b[?1l\u001b>\u001b[?2004l"]
[9.701357, "o", "\u001b[1m\u001b[7m#\u001b[27m\u001b[1m\u001b[0m \r \r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J"]
[9.701384, "o", "[example]$ "]
[9.801384, "o", "e"]
[9.901384, "o", "c"]
[10.001384, "o", "h"]
[10.101384, "o", "o"]
[10.201384, "o", " "]
[10.301384, "o", "$"]
[10.401384, "o", "G"]
[10.501384, "o", "O"]
[10.601384, "o", "O"]
[10.701384, "o", "D"]
[10.801384, "o", "B"]
[10.901384, "o", "Y"]
[11.001384, "o", "E"]
[11.101384, "o", "\r\n"]
[11.101491, "o", "e\becho"]
[11.101571, "o", " $GOODBYE"]
[11.101586, "o", "\u001b[?2004l\r\r\n"]
[11.101640, "o", "Goodbye!\r\n"]
[11.101685, "o", "\u001b[1m\u001b[7m#\u001b[27m\u001b[1m\u001b[0m \r \r\r\u001b[0m\u001b[27m\u001b[24m\u001b[J"]
[11.101686, "o", "[example]$ "]
[13.201686, "o", "\r\n"] There's some other weird output in there too. For comparison here's the example when run with bash: {"version": 2, "width": 128, "height": 30, "timestamp": 1715890421, "duration": 13.201402, "title": "autocast example", "env": {"SHELL": "/usr/bin/bash", "TERM": "xterm", "HELLO": "", "GOODBYE": "Goodbye!"}}
[0.000000, "o", "[example]$ "]
[0.100000, "o", "e"]
[0.200000, "o", "c"]
[0.300000, "o", "h"]
[0.400000, "o", "o"]
[0.500000, "o", " "]
[0.600000, "o", "$"]
[0.700000, "o", "H"]
[0.800000, "o", "E"]
[0.900000, "o", "L"]
[1.000000, "o", "L"]
[1.100000, "o", "O"]
[1.200000, "o", "\r\n"]
[1.200253, "o", "\r\n"]
[1.200291, "o", "[example]$ "]
[3.300291, "o", "n"]
[3.400291, "o", "a"]
[3.500291, "o", "n"]
[3.600291, "o", "o"]
[3.700291, "o", "\r\n"]
[3.706029, "o", "\u001b[?2004h"]
[3.706140, "o", "\u001b[?1049h\u001b[22;0;0t\u001b[1;30r\u001b(B\u001b[m\u001b[4l\u001b[?7h\u001b[39;49m\u001b[?1h\u001b="]
[3.706193, "o", "\u001b[?1h\u001b=\u001b[?25l"]
[3.706676, "o", "\u001b[39;49m\u001b(B\u001b[m\u001b[H\u001b[2J"]
[3.706719, "o", "\u001b(B\u001b[0;7m GNU nano 7.2 New Buffer \u001b[1;127H\u001b(B\u001b[m"]
[3.706782, "o", "\u001b[28;40H\u001b(B\u001b[0;7m[ Welcome to nano. For basic help, type Ctrl+G. ]\u001b(B\u001b[m"]
[3.706824, "o", "\r\u001b[29d\u001b(B\u001b[0;7m^G\u001b(B\u001b[m Help\u001b[29;17H"]
[3.706880, "o", "\u001b(B\u001b[0;7m^O\u001b(B\u001b[m Write Out \u001b(B\u001b[0;7m^W\u001b(B\u001b[m Where Is \u001b(B\u001b[0;7m^K\u001b(B\u001b[m Cut\u001b[29;65H\u001b(B\u001b[0;7m^T\u001b(B\u001b[m Execute\t\u001b(B\u001b[0;7m^C\u001b(B\u001b[m Location \u001b(B\u001b[0;7mM-U\u001b(B\u001b[m Undo\u001b[29;113H\u001b(B\u001b[0;7mM-A\u001b(B\u001b[m Set Mark\r\u001b[30d\u001b(B\u001b[0;7m^X\u001b(B\u001b[m Exit\u001b[30;17H"]
[3.706914, "o", "\u001b(B\u001b[0;7m^R\u001b(B\u001b[m Read File \u001b(B\u001b[0;7m^\\\u001b(B\u001b[m Replace\t\u001b(B\u001b[0;7m^U\u001b(B\u001b[m Paste\u001b[30;65H\u001b(B\u001b[0;7m^J\u001b(B\u001b[m Justify\t\u001b(B\u001b[0;7m^/\u001b(B\u001b[m Go To Line \u001b(B\u001b[0;7mM-E\u001b(B\u001b[m Redo\u001b[30;113H\u001b(B\u001b[0;7mM-6\u001b(B\u001b[m Copy"]
[3.706956, "o", "\r\u001b[2d\u001b[?12l\u001b[?25h"]
[5.900563, "o", "\u001b[?25l\u001b[1;119H\u001b(B\u001b[0;7mModified\u001b(B\u001b[m"]
[5.900602, "o", "\u001b[?12l\u001b[?25h"]
[5.900618, "o", "\r\u001b[2dh"]
[6.000431, "o", "\u001b[?25l"]
[6.000473, "o", "\u001b[?12l\u001b[?25h"]
[6.000508, "o", "e"]
[6.100445, "o", "\u001b[?25l"]
[6.100485, "o", "\u001b[?12l\u001b[?25hl"]
[6.200427, "o", "\u001b[?25l"]
[6.200483, "o", "\u001b[?12l\u001b[?25hl"]
[6.300425, "o", "\u001b[?25l"]
[6.300472, "o", "\u001b[?12l\u001b[?25ho"]
[8.500432, "o", "\u001b[?25l"]
[8.500607, "o", "\r\u001b[28d\u001b(B\u001b[0;7mSave modified buffer? \u001b[29;1H Y\u001b(B\u001b[m Yes\u001b[K\r\u001b[30d\u001b(B\u001b[0;7m N\u001b(B\u001b[m No \u001b[30;18H\u001b(B\u001b[0;7mC\u001b(B\u001b[m Cancel\u001b[K\u001b[28;23H\u001b[?12l\u001b[?25h"]
[9.700433, "o", "\u001b[?25l"]
[9.700533, "o", "\r"]
[9.700557, "o", "\u001b[J\u001b[30d\u001b[?12l\u001b[?25h\u001b[30;1H\u001b[?1049l\u001b[23;0;0t\r\u001b[?1l\u001b>"]
[9.700572, "o", "\u001b[?2004l"]
[9.701168, "o", "[example]$ "]
[9.801168, "o", "e"]
[9.901168, "o", "c"]
[10.001168, "o", "h"]
[10.101168, "o", "o"]
[10.201168, "o", " "]
[10.301168, "o", "$"]
[10.401168, "o", "G"]
[10.501168, "o", "O"]
[10.601168, "o", "O"]
[10.701168, "o", "D"]
[10.801168, "o", "B"]
[10.901168, "o", "Y"]
[11.001168, "o", "E"]
[11.101168, "o", "\r\n"]
[11.101344, "o", "Goodbye!\r\n"]
[11.101402, "o", "[example]$ "]
[13.201402, "o", "\r\n"] |
Doesn't look like your most recent change made a difference. Does |
@k9withabone apols, I've been away for a few weeks so not really had much time to dig into this until now. I'm seeing the same odd behaviour as you on zsh on macOS too. |
It's all good. I've been busy with other things as well. |
zsh
providerBefore:
After:
Testing:
cargo run example.yaml example.cast --overwrite --shell zsh