Commit graph

898 commits

Author SHA1 Message Date
Kovid Goyal
3a198833da
Simplify escape code wrapping 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
f86ce03d3b
Fix set-colors 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
7f77f7e408
Only send cancel async if there is an async id 2022-11-14 15:41:54 +05:30
Kovid Goyal
65c3630099
send_text other than from stdin works 2022-11-14 15:41:54 +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
0a2455c8be
Get scroll_window working 2022-11-14 15:41:54 +05:30
Kovid Goyal
bacca88213
Get set_font_size working 2022-11-14 15:41:54 +05:30
Kovid Goyal
bd1b3d9f6e
Implement streaming mode for socket IO 2022-11-14 15:41:54 +05:30
Kovid Goyal
364533b1ed
Work on supporting streaming remote commands with passwords 2022-11-14 15:41:54 +05:30
Kovid Goyal
d7985689c9
Allow debugprintln to controlling tty easily 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
a388a658ce
Fix payload update code in multi send commands 2022-11-14 15:41:54 +05:30
Kovid Goyal
b5e2871aa0
Remove not needed chunking code 2022-11-14 15:41:54 +05:30
Kovid Goyal
a4b2e2a196
more work on porting command parsing to Go 2022-11-14 15:41:54 +05:30
Kovid Goyal
6f4968305a
more work on porting rc command parsing to Go 2022-11-14 15:41:54 +05:30
Kovid Goyal
79c8862d4c
Work on conversion of args parsing to go code 2022-11-14 15:41:53 +05:30
Kovid Goyal
ef71b071db
Automap a bunch of json fields from identically named options 2022-11-14 15:41:53 +05:30
Kovid Goyal
249df69ac9
Use the new styling API for CLI infra 2022-11-14 15:41:53 +05:30
Kovid Goyal
4a4500d56b
Dont make urls part of styling, instead have a dedicated UrlFunc API
Since urls can potentially change a lot, caching them makes no sense
2022-11-14 15:41:53 +05:30
Kovid Goyal
be22f49012
Fix usage of numbered colors for underlines 2022-11-14 15:41:53 +05:30
Kovid Goyal
f9695a7947
Add url support to styling 2022-11-14 15:41:53 +05:30
Kovid Goyal
29d9b70f0c
More ansi styling tests 2022-11-14 15:41:53 +05:30
Kovid Goyal
42a8ca0842
Write some tests for the style wrapper 2022-11-14 15:41:53 +05:30
Kovid Goyal
91c61478dd
Start work on easily generating ANSI formatted strings 2022-11-14 15:41:53 +05:30
Kovid Goyal
9c58cb3f41
... 2022-11-14 15:41:52 +05:30
Kovid Goyal
b2e610f9b1
Implement socket I/O 2022-11-14 15:41:52 +05:30
Kovid Goyal
a960937095
Simplify serialization code and avoid extra copy 2022-11-14 15:41:52 +05:30
Kovid Goyal
0cda5d43a6
Fix final write detection 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
b1f9139ca5
Use a fully random async_id rather than a uuid 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
ee12349a50
Use Go's os.File this allows us to implement WriteString without using unsafe 2022-11-14 15:41:52 +05:30
Kovid Goyal
69c847a48f
Fix failing test 2022-11-14 15:41:51 +05:30
Kovid Goyal
03705cbec0
Fix transmission of async rc commands 2022-11-14 15:41:51 +05:30
Kovid Goyal
ff2ff9c04f
Port short uuid code to Go 2022-11-14 15:41:51 +05:30
Kovid Goyal
a22ba9f739
Fix failing test 2022-11-14 15:41:51 +05:30
Kovid Goyal
c86f8a698c
@ ls works phew 2022-11-14 15:41:51 +05:30
Kovid Goyal
fa4711bd04
Give the kill signal time to be delivered 2022-11-14 15:41:51 +05:30
Kovid Goyal
174bc25afb
Make timeout checking more efficient 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
0913b64c6b
Dont vendor base85 2022-11-14 15:41:51 +05:30
Kovid Goyal
32e59257d2
Refactor io in preparation for using 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
c8292d77f1
Re-use the escape code parser for wcswidth calculation 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
7bb310d3af
Port recent changes from cli.py to Go 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
e18b6638bb
Allow propagating errors from the escape code handlers 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
Kovid Goyal
67f03621ae
Handle EINTR in IsTerminal 2022-11-14 15:41:49 +05:30
Kovid Goyal
10cef16210
DRYer 2022-11-14 15:41:49 +05:30
Kovid Goyal
6a79b450f7
Drop another dependency and get a better read password function 2022-11-14 15:41:48 +05:30
Kovid Goyal
eb4ee13f73
Drop another dependency 2022-11-14 15:41:48 +05:30
Kovid Goyal
cf287015de
... 2022-11-14 15:41:48 +05:30
Kovid Goyal
246277e7af
Refactor tty code into its own package 2022-11-14 15:41:48 +05:30
Kovid Goyal
13758e9600
Drop one dependency 2022-11-14 15:41:48 +05:30
Kovid Goyal
73e4deb1c2
Show suggestions based on levenshtein distance 2022-11-14 15:41:48 +05:30
Kovid Goyal
68d589826a
... 2022-11-14 15:41:48 +05:30
Kovid Goyal
7457746d65
Fix @command form not supporting global options 2022-11-14 15:41:48 +05:30
Kovid Goyal
eec8f04e93
fix reading from tty 2022-11-14 15:41:48 +05:30
Kovid Goyal
3a7d26a3ef
Work on reading command responses 2022-11-14 15:41:48 +05:30
Kovid Goyal
91b15d1a90
Fix incorrect err handling 2022-11-14 15:41:48 +05:30
Kovid Goyal
12b0f632bd
Allow OSC to be terminated by BEL
Also prevent changing streaming state unless in reset state
2022-11-14 15:41:48 +05:30
Kovid Goyal
84cb2638d6
Work on an escape code parser 2022-11-14 15:41:48 +05:30
Kovid Goyal
ce3062cbde
UTF-8 decode/encode for Go
The builtin utf-8 package has semantics not suitable for us
2022-11-14 15:41:48 +05:30
Kovid Goyal
e599a2c87f
The stupid term package is not EINTR safe 2022-11-14 15:41:48 +05:30
Kovid Goyal
15e1f376a4
EINTR safe function to get tty size 2022-11-14 15:41:48 +05:30
Kovid Goyal
82d0bd9364
Use the term package to get tty size since it has a function for it 2022-11-14 15:41:47 +05:30
Kovid Goyal
6a9f3feba2
... 2022-11-14 15:41:47 +05:30
Kovid Goyal
2e31178980
Workaround for go unix package not wrapping pselect() on darwin 2022-11-14 15:41:47 +05:30
Kovid Goyal
141b9c8f08
Adjust select() timeout on EINTR 2022-11-14 15:41:47 +05:30
Kovid Goyal
17629add66
Handle EINTR 2022-11-14 15:41:47 +05:30
Kovid Goyal
352a78f056
Add a debug print method to tty and use pselect rather than select for greater timeout precision 2022-11-14 15:41:47 +05:30
Kovid Goyal
2ef5d0a140
... 2022-11-14 15:41:47 +05:30
Kovid Goyal
08b4741024
Get rid of a couple of unneeded dependencies 2022-11-14 15:41:47 +05:30
Kovid Goyal
11ffa961bc
Use local hyperlinks for :doc: 2022-11-14 15:41:47 +05:30
Kovid Goyal
ad6d928c12
Port various recent changes to CLI help output 2022-11-14 15:41:47 +05:30
Kovid Goyal
9b703078dd
See if at least the field names are the same 2022-11-14 15:41:47 +05:30
Kovid Goyal
43e93414ea
Some work on implementing TTYIO 2022-11-14 15:41:47 +05:30
Kovid Goyal
6c3a439455
Use the io.Reader interface 2022-11-14 15:41:47 +05:30
Kovid Goyal
a7bc2fcba8
Code to parse socket addresses 2022-11-14 15:41:47 +05:30
Kovid Goyal
417c8887b9
Start on testing infra for command to JSON serialization 2022-11-14 15:41:47 +05:30
Kovid Goyal
47feb73cdf
Code to generate structs for JSON marshalling 2022-11-14 15:41:47 +05:30
Kovid Goyal
63512f0512
Implement setting of option values into a struct 2022-11-14 15:41:46 +05:30
Kovid Goyal
a32251cab4
Handle aliased flags 2022-11-14 15:41:46 +05:30
Kovid Goyal
2ca8ae8e5f
normalize flag names so that underscores are interchangeable with hyphens 2022-11-14 15:41:46 +05:30
Kovid Goyal
2d466f343d
Finish mapping of python cli opt to go cli opt 2022-11-14 15:41:46 +05:30
Kovid Goyal
4596dc39ce
Fix formatting of lines with only spaces 2022-11-14 15:41:46 +05:30
Kovid Goyal
605882582e
Transfer response_timeout 2022-11-14 15:41:46 +05:30
Kovid Goyal
e127579ae6
DRYer 2022-11-14 15:41:46 +05:30
Kovid Goyal
b3be6792fd
General cleanup 2022-11-14 15:41:46 +05:30
Kovid Goyal
6c25f0cf4b
Use cobra's builtin machinery for creating new types 2022-11-14 15:41:46 +05:30
Kovid Goyal
82410c58ed
Hide the default completion command 2022-11-14 15:41:46 +05:30
Kovid Goyal
3a87cfce3e
Get bool set flags ported 2022-11-14 15:41:46 +05:30
Kovid Goyal
15ffd8e6d8
Support older Go 2022-11-14 15:41:46 +05:30
Kovid Goyal
33e16df586
Add some basic RC serialization tests 2022-11-14 15:41:46 +05:30
Kovid Goyal
4432c1a2ea
Move the command types into a separate package 2022-11-14 15:41:46 +05:30
Kovid Goyal
bab914c497
Create hidden alias commands so kitty-tool @ls also works 2022-11-14 15:41:45 +05:30
Kovid Goyal
780b5ca8bd
misc fixes 2022-11-14 15:41:45 +05:30
Kovid Goyal
20ad7ca437
Output VCSRevision with --version 2022-11-14 15:41:45 +05:30
Kovid Goyal
d39036de2a
Add vcs revision to version string 2022-11-14 15:41:45 +05:30
Kovid Goyal
4ac4ee643e
Have the rc command wrapper sauto-generated on build 2022-11-14 15:41:45 +05:30
Kovid Goyal
47f35a06e6
Start work on generating rc cmd wrappers 2022-11-14 15:41:45 +05:30
Kovid Goyal
77f7ce82c0
Parse global options 2022-11-14 15:41:45 +05:30
Kovid Goyal
10b74d0703
Update documentation of --to 2022-11-14 15:41:45 +05:30
Kovid Goyal
393820e77a
Dont sort flags by default 2022-11-14 15:41:45 +05:30
Kovid Goyal
1325844539
Add some go testing infrastructure 2022-11-14 15:41:44 +05:30
Kovid Goyal
63da2e1ec6
gofmt 2022-11-14 15:41:44 +05:30
Kovid Goyal
06bd1f5d48
DRYer 2022-11-14 15:41:44 +05:30
Kovid Goyal
2a7aa46b77
Use pager even for usage + error 2022-11-14 15:41:44 +05:30
Kovid Goyal
c04b002d4e
Use a pager for displaying usage, matches kitty behavior
Also dont tell less to squeeze lines
2022-11-14 15:41:44 +05:30
Kovid Goyal
46840df1ad
CLI help output make kitty.conf a clickable URL 2022-11-14 15:41:43 +05:30
Kovid Goyal
aaf0dea8dc
Use a single wrapper binary for all command line tools
This is because Go has a multi megabyte overhead for its binaries
2022-11-14 15:41:43 +05:30
Kovid Goyal
abaafc2d68
Parse roles in the help strings 2022-11-14 15:41:43 +05:30
Kovid Goyal
c97556de65
Show help when command is specified 2022-11-14 15:41:43 +05:30
Kovid Goyal
bbf7504303
Start work on implementing kitty @ as a static binary using Go 2022-11-14 15:41:43 +05:30