Commit graph

246 commits

Author SHA1 Message Date
Kovid Goyal
11f98592f7
We still need full keyboard protocol for @ send-text 2023-01-23 16:33:08 +05:30
Kovid Goyal
97467acb1f
kitten @ cmd: Dont generate key release events
We dont need them and they sometimes can spill over into the prompt if
the command is very fast.
2023-01-23 16:18:46 +05:30
Kovid Goyal
cc1f0bc3fe
Function to drain controlling tty 2023-01-23 16:07:00 +05:30
Kovid Goyal
26ca3f9bad
Simplify code 2023-01-18 16:16:11 +05:30
Kovid Goyal
bf7d27691c
Also add the EINTR fix from previous commit to writing to loop 2023-01-18 16:09:19 +05:30
Kovid Goyal
22532b4805
kitten @: Fix occasional hang until key is pressed while waiting for response from terminal
Fixes #5890
2023-01-18 16:07:42 +05:30
Kovid Goyal
2d846f53a1
... 2023-01-18 14:44:40 +05:30
Kovid Goyal
63077e5432
Dont do extremely small reads 2023-01-18 10:13:07 +05:30
Kovid Goyal
5edb1e2d6b
micro-optimization 2023-01-18 09:58:29 +05:30
Kovid Goyal
3743ae50e7
Simplify icat code and write to STDOUT rather than the terminal device
The terminal device is now used only for detection.
2023-01-06 16:16:15 +05:30
Kovid Goyal
c317c934f3
More work on ImageMagick 2023-01-05 19:15:13 +05:30
Kovid Goyal
df06578c2d
Implement --scale-up and --place 2023-01-05 19:15:12 +05:30
Kovid Goyal
73a055fe12
Fix failing test 2023-01-05 19:15:12 +05:30
Kovid Goyal
24db38ba7e
Set data size for SHM transmission as on some platforms the actual SHM size is not equal to the requested size 2023-01-05 19:15:11 +05:30
Kovid Goyal
d694f48c91
Get the other two transmission modes working as well 2023-01-05 19:15:11 +05:30
Kovid Goyal
5562a4d52f
Get file mode transmission working for unmodified PNG 2023-01-05 19:15:11 +05:30
Kovid Goyal
22d69d24d0
Fix panic when no timers are left after dispatch 2023-01-05 19:15:11 +05:30
Kovid Goyal
d76e0850ae
More work on porting icat 2023-01-05 19:15:11 +05:30
Kovid Goyal
7a1140cd03
Start work on porting icat to Go 2023-01-05 19:15:10 +05:30
Kovid Goyal
e673747ef4
readline: add alt+arrow to move by word default binding. Common on macOS 2022-12-27 10:59:13 +05:30
Kovid Goyal
2e81d00c92
make go fmt happy 2022-12-24 10:53:17 +05:30
Kovid Goyal
cd92d50a0d
Keyboard protocol: Remove CSI R from the allowed encodings of the F3 key as it conflicts with the *Cursor Position Report* escape code 2022-12-24 10:32:28 +05:30
Kovid Goyal
a2c2d81373
Cleanup readline prompt rendering 2022-12-23 15:23:42 +05:30
Kovid Goyal
40093a4702
Add tests for GraphicsCommand serialization 2022-12-18 11:56:30 +05:30
Kovid Goyal
3815cba8f3
Add stringer interface to GraphicsCommand 2022-12-17 15:34:43 +05:30
Kovid Goyal
7410cd62f9
remove unused code 2022-12-17 09:00:44 +05:30
Kovid Goyal
ae0a8e73d2
... 2022-12-17 08:59:56 +05:30
Kovid Goyal
8f3a8c828f
Add an APC to GraphicsCommand parser 2022-12-16 21:05:17 +05:30
Kovid Goyal
bb33f6c0ac
Start work on graphics support in kitty-tool 2022-12-16 18:06:52 +05:30
Kovid Goyal
71e09ba1fb
Fix show_key kitten showing incorrect CSI encoding for F3 2022-12-01 23:33:08 +05:30
Kovid Goyal
f5d2c35755
Move implementation of +hold to Go
No need to pay python interpreter startup cost for --hold
2022-12-01 22:34:56 +05:30
Kovid Goyal
b3f096b03b
kitty shell: Fix pressing enter while cursor is not at end of line causes line to be truncated visually 2022-11-26 15:30:49 +05:30
Kovid Goyal
a721ffeb7d
Finish porting clipboard kitten to Go 2022-11-26 15:15:30 +05:30
Kovid Goyal
9db1d581f7
DRYer 2022-11-16 22:37:27 +05:30
Kovid Goyal
b3bc5a5565
... 2022-11-16 22:35:59 +05:30
Kovid Goyal
fc20e8d04b
Fix spurious EOF error when select for reading from the tty fails with a temporary error 2022-11-16 22:32:35 +05:30
Kovid Goyal
86af1d5c16
Wrap EOF errors when doing terminal I/O 2022-11-16 22:23:00 +05:30
Kovid Goyal
d8574f8f85
Fix another bug in readline cursor position tracking 2022-11-16 21:28:36 +05:30
Kovid Goyal
ae93d95bbe
Get progress bar rendering working 2022-11-16 16:35:15 +05:30
Kovid Goyal
463c9debe7
More work on update-self 2022-11-16 13:41:58 +05:30
Kovid Goyal
e70c021371
Some basic TUI widgets ported to Go 2022-11-16 12:48:47 +05:30
Kovid Goyal
0c0b9e6b9c
Fix deadlock in update-self 2022-11-15 22:33:23 +05:30
Kovid Goyal
d54fe3c16a
Start work on a command to self update kitty-tool 2022-11-15 21:29:11 +05:30
Kovid Goyal
36dd5b2d00
More minor loop API additions 2022-11-15 21:00:19 +05:30
Kovid Goyal
87108a18ef
Add a callback for wakeups 2022-11-15 18:01:21 +05:30
Kovid Goyal
1881f4582e
... 2022-11-14 15:42:09 +05:30
Kovid Goyal
a5d05a2954
... 2022-11-14 15:42:09 +05:30
Kovid Goyal
29bde6c72c
Improve formatting of completion entries with descriptions 2022-11-14 15:42:09 +05:30
Kovid Goyal
a7ce642a00
Fix rendering in cells 2022-11-14 15:42:08 +05:30
Kovid Goyal
723a9c91b5
Get completion basically working 2022-11-14 15:42:08 +05:30
Kovid Goyal
9e2c96653f
More work on readline completion 2022-11-14 15:42:08 +05:30
Kovid Goyal
8d76cf8d32
Import the google shlex package as we need more sophisticated parsing 2022-11-14 15:42:08 +05:30
Kovid Goyal
7c23536bfe
Start work on readline completions 2022-11-14 15:42:08 +05:30
Kovid Goyal
f919efcd42
Move basic multi key shortcut handling into its own package 2022-11-14 15:42:08 +05:30
Kovid Goyal
dc787a6529
Allow pretty printing members of the Action enum 2022-11-14 15:42:08 +05:30
Kovid Goyal
cfb6d93dc0
Move cursor to end of input when traversing history list 2022-11-14 15:42:08 +05:30
Kovid Goyal
1523fef000
tests for history searching 2022-11-14 15:42:08 +05:30
Kovid Goyal
31dcb13836
cursor_y should be zero when resetting 2022-11-14 15:42:07 +05:30
Kovid Goyal
0c82832356
more work on history search 2022-11-14 15:42:07 +05:30
Kovid Goyal
ffea66357a
Start work on incremental history search 2022-11-14 15:42:07 +05:30
Kovid Goyal
6b48624b81
Reset keyboard state when resetting text 2022-11-14 15:42:07 +05:30
Kovid Goyal
5a425ccaad
Implement number args for repeats 2022-11-14 15:42:07 +05:30
Kovid Goyal
2f2dbfb45f
Cleanup prompt handling 2022-11-14 15:42:07 +05:30
Kovid Goyal
13a266aa42
Map ctrl+c to abort the current line 2022-11-14 15:42:07 +05:30
Kovid Goyal
8ad55f7562
Add some tests for history 2022-11-14 15:42:07 +05:30
Kovid Goyal
e1ab2383b3
Add basic history operations 2022-11-14 15:42:07 +05:30
Kovid Goyal
8574e136cd
Store cwd in history 2022-11-14 15:42:07 +05:30
Kovid Goyal
c8e8cb5ad5
Add some tests for yanking 2022-11-14 15:42:07 +05:30
Kovid Goyal
22f7145e34
Add yank actions 2022-11-14 15:42:07 +05:30
Kovid Goyal
3237db00fc
Implement word killing actions 2022-11-14 15:42:06 +05:30
Kovid Goyal
ea583f60b3
Start work on kill ring 2022-11-14 15:42:06 +05:30
Kovid Goyal
b7816d26be
Implement clear screen c-l binding 2022-11-14 15:42:06 +05:30
Kovid Goyal
19bf07abd9
Use the more efficient cell iterator api for single char horizontal cursor movement as well 2022-11-14 15:42:06 +05:30
Kovid Goyal
a008c627e3
Implement bindings for moving by simple word 2022-11-14 15:42:06 +05:30
Kovid Goyal
d260d2f480
Add some test for vertical movement 2022-11-14 15:42:06 +05:30
Kovid Goyal
00ef9c1955
Implement vertical cursor movement 2022-11-14 15:42:06 +05:30
Kovid Goyal
5509673ff3
More tests 2022-11-14 15:42:06 +05:30
Kovid Goyal
3c4a411cad
Rewrite the readline redraw code to make the screen lines explicit 2022-11-14 15:42:06 +05:30
Kovid Goyal
260249491d
Avoid Querying screen size on every resize 2022-11-14 15:42:05 +05:30
Kovid Goyal
595a78c956
DRYer 2022-11-14 15:42:05 +05:30
Kovid Goyal
88567f69b2
Start work on history support for readline 2022-11-14 15:42:05 +05:30
Kovid Goyal
9419fbc77c
Fix rendering when line wraps 2022-11-14 15:42:05 +05:30
Kovid Goyal
834385baff
Improve performance when pasting large amounts of text into readline by not redrawing on every char 2022-11-14 15:42:05 +05:30
Kovid Goyal
1058c999c8
... 2022-11-14 15:42:04 +05:30
Kovid Goyal
bf7dd1c369
Fix multiline prompts 2022-11-14 15:42:04 +05:30
Kovid Goyal
936a7a5f97
Dont write escape code for zero movement 2022-11-14 15:42:04 +05:30
Kovid Goyal
350060e0f6
... 2022-11-14 15:42:04 +05:30
Kovid Goyal
430bd23870
Fix decoding of letter trailer CSI key event 2022-11-14 15:42:04 +05:30
Kovid Goyal
9f2b2eac85
More work on shell 2022-11-14 15:42:04 +05:30
Kovid Goyal
fd36435262
Add some default readline bindings 2022-11-14 15:42:04 +05:30
Kovid Goyal
27418eed88
Beep when action could not be performed 2022-11-14 15:42:04 +05:30
Kovid Goyal
48f1690913
Wire up key event handling 2022-11-14 15:42:04 +05:30
Kovid Goyal
eff239a195
Code to erase character ranges 2022-11-14 15:42:04 +05:30
Kovid Goyal
5e5cae8391
Code to move cursor right 2022-11-14 15:42:04 +05:30
Kovid Goyal
57310a772a
Code to move cursor left 2022-11-14 15:42:04 +05:30
Kovid Goyal
066465bce7
Some tests for add_text 2022-11-14 15:42:04 +05:30
Kovid Goyal
1792c2268a
Start writing tests for readline internal functions 2022-11-14 15:42:04 +05:30
Kovid Goyal
32059dba7e
More work on readline 2022-11-14 15:42:03 +05:30
Kovid Goyal
c8296a44eb
More work on readline 2022-11-14 15:42:03 +05:30
Kovid Goyal
ef49634353
Fix some issues reported by staticcheck 2022-11-14 15:42:01 +05:30
Kovid Goyal
2cacd7a64a
get rid of interface{} since we now require Go 1.18 2022-11-14 15:42:00 +05:30
Kovid Goyal
a7f6105393
Use Unsafe rather than Dangerous to be consistent 2022-11-14 15:41:55 +05:30
Kovid Goyal
e8a321d097
Port code to serialize key events as CSI to Go 2022-11-14 15:41:55 +05:30
Kovid Goyal
ea8fb10c05
Password input: Handle SIGTSTP 2022-11-14 15:41:55 +05:30
Kovid Goyal
67115530b4
Make the loop API a thin wrapper around internal methods 2022-11-14 15:41:55 +05:30
Kovid Goyal
5cf10023c9
Nicer API for setting loop options 2022-11-14 15:41:55 +05:30
Kovid Goyal
457aab7c41
Simplify timer removal 2022-11-14 15:41:54 +05:30
Kovid Goyal
dcec926590
Do not allow adding timers before loop is run 2022-11-14 15:41:54 +05:30
Kovid Goyal
6d6bba4a4c
debugprintln should be in-band for the loop 2022-11-14 15:41:54 +05:30
Kovid Goyal
5cc5759f3e
flush_pending_writes must be non-blocking 2022-11-14 15:41:54 +05:30
Kovid Goyal
9c58cb3f41
... 2022-11-14 15:41:52 +05:30
Kovid Goyal
a75d59643c
Use one less channel 2022-11-14 15:41:52 +05:30
Kovid Goyal
bf35817d73
No need to store most channels on self 2022-11-14 15:41:52 +05:30
Kovid Goyal
1b90c03304
Refactor loop code into its own package 2022-11-14 15:41:52 +05:30
Kovid Goyal
4a49c3940a
Switch to using goroutines rather than a select()
More complex code since now we have to synchronize between threads,
but a good way to teach myself more about goroutines.
2022-11-14 15:41:52 +05:30
Kovid Goyal
fa4711bd04
Give the kill signal time to be delivered 2022-11-14 15:41:51 +05:30
Kovid Goyal
2ffba1c422
Work on implementing ttyio via TUI 2022-11-14 15:41:51 +05:30
Kovid Goyal
6f8c884bb5
Also handle SIGPIPE as the Go runtime does funky things with this signal 2022-11-14 15:41:51 +05:30
Kovid Goyal
80c5ac891d
Add license info to Go files 2022-11-14 15:41:51 +05:30
Kovid Goyal
6a2393299b
Add a write completed callback 2022-11-14 15:41:51 +05:30
Kovid Goyal
ab66b3f4c0
Add timer infra to the loop 2022-11-14 15:41:51 +05:30
Kovid Goyal
7280c712d6
Move escape code parser into wcswidth package 2022-11-14 15:41:50 +05:30
Kovid Goyal
9be2247081
Dont use the syscall package 2022-11-14 15:41:50 +05:30
Kovid Goyal
e68b5fa504
Add callback for screen resize handling 2022-11-14 15:41:50 +05:30
Kovid Goyal
c2ef6c986b
Password input now works 2022-11-14 15:41:50 +05:30
Kovid Goyal
619fcb0681
Allow debug printing 2022-11-14 15:41:50 +05:30
Kovid Goyal
10a39d3757
Fix reset mode incorrectly setting mode instead 2022-11-14 15:41:50 +05:30
Kovid Goyal
d2a15a2009
Make using alternate screen the default 2022-11-14 15:41:50 +05:30
Kovid Goyal
235eb868b2
More misc fixes for TUI 2022-11-14 15:41:50 +05:30
Kovid Goyal
5703a3370e
Move wcswidth into its own package as it is very slow to build 2022-11-14 15:41:50 +05:30
Kovid Goyal
5dca2a1a25
Fix stringifying mods 2022-11-14 15:41:50 +05:30
Kovid Goyal
4b18b575cd
Misc fixes for TUI 2022-11-14 15:41:50 +05:30
Kovid Goyal
818f68ec53
Initialize various maps 2022-11-14 15:41:50 +05:30
Kovid Goyal
cd54fefa99
Ignore more types of temporary errors 2022-11-14 15:41:50 +05:30
Kovid Goyal
4ab5456ead
Less layering 2022-11-14 15:41:49 +05:30
Kovid Goyal
10d11bc749
Drop another dependency 2022-11-14 15:41:49 +05:30
Kovid Goyal
19ffbc6f3d
Implement wcswidth() for Go 2022-11-14 15:41:49 +05:30
Kovid Goyal
79b1af28b4
Fix errors reported by compiler 2022-11-14 15:41:49 +05:30
Kovid Goyal
05d768d8df
Generate a wcwidth for Go as well 2022-11-14 15:41:49 +05:30
Kovid Goyal
9d56f8eed2
Use TUI to build a nice password read control 2022-11-14 15:41:49 +05:30
Kovid Goyal
42a5129553
Wire up key handling 2022-11-14 15:41:49 +05:30
Kovid Goyal
d6ed20323b
Implement key event parsing and matching 2022-11-14 15:41:49 +05:30
Kovid Goyal
63fdbd3fa0
Start work on decoding key events in Go 2022-11-14 15:41:49 +05:30
Kovid Goyal
99fde8723a
Wire up the signal handlers 2022-11-14 15:41:49 +05:30
Kovid Goyal
526a331f47
Wire up a bunch of callbacks 2022-11-14 15:41:49 +05:30
Kovid Goyal
3c3e7b7f70
Start work on proper TUI support 2022-11-14 15:41:49 +05:30