Kovid Goyal
1ff4f2df4f
Refactor the CLI markup code to make it re-useable
2022-11-14 15:41:58 +05:30
Kovid Goyal
8796168469
Port code to truncate strings to visual width to Go
2022-11-14 15:41:58 +05:30
Kovid Goyal
d16ad40bbf
avoid extra string copy in Stringwidth
2022-11-14 15:41:58 +05:30
Kovid Goyal
5c0858d6b7
Start work on zsh completion serialization
2022-11-14 15:41:58 +05:30
Kovid Goyal
a32a8d096d
Allow commands to customize argument parsing
2022-11-14 15:41:58 +05:30
Kovid Goyal
7737369fc9
Add completion for the kittens
2022-11-14 15:41:58 +05:30
Kovid Goyal
25a7ec9a07
Extra completion for some kitty options
2022-11-14 15:41:58 +05:30
Kovid Goyal
c2a2b4c087
Add various special purpose entry points
2022-11-14 15:41:58 +05:30
Kovid Goyal
3a8bab90dc
Get rid of WordPrefix
2022-11-14 15:41:58 +05:30
Kovid Goyal
0ff2446a1a
More completion work
2022-11-14 15:41:58 +05:30
Kovid Goyal
946d44c43f
Implement completespec in go
2022-11-14 15:41:58 +05:30
Kovid Goyal
f657e6e916
Allow using a base directory other than the cwd when completing files
2022-11-14 15:41:57 +05:30
Kovid Goyal
c5afceb4cb
Basic completion for options
2022-11-14 15:41:57 +05:30
Kovid Goyal
18c3e46ac6
When completing on patterns exclude directories that only contain files that dont match
2022-11-14 15:41:57 +05:30
Kovid Goyal
3c29ce936b
Dont recurse for file completion
...
We could potentially end up recursing over the entire file system. And
for completion we only present the candidates in the immediate directory
anyway.
2022-11-14 15:41:57 +05:30
Kovid Goyal
c9d986f9a8
args completion for rc commands
2022-11-14 15:41:57 +05:30
Kovid Goyal
6faa908733
And more corner cases
2022-11-14 15:41:57 +05:30
Kovid Goyal
ced741b247
More corner cases
2022-11-14 15:41:57 +05:30
Kovid Goyal
c47ccc8a59
...
2022-11-14 15:41:57 +05:30
Kovid Goyal
3326e9ef49
Move code to walk with symlinks to the utils module
2022-11-14 15:41:57 +05:30
Kovid Goyal
134fce8507
Allow completing paths with ~ prefix
2022-11-14 15:41:57 +05:30
Kovid Goyal
5d89a6c3c4
Work on completion of file args
2022-11-14 15:41:57 +05:30
Kovid Goyal
8c6b391eda
...
2022-11-14 15:41:57 +05:30
Kovid Goyal
8c2e435793
Code to complete executables in PATH
2022-11-14 15:41:57 +05:30
Kovid Goyal
10cf7f06c6
Code to get file/dir completion candidates for a prefix
2022-11-14 15:41:56 +05:30
Kovid Goyal
d679ea2cdf
Allow generating completions for multiple command lines for more efficient testing
2022-11-14 15:41:56 +05:30
Kovid Goyal
54378de52b
More work on command completion
2022-11-14 15:41:56 +05:30
Kovid Goyal
63287e4115
More work on completions
2022-11-14 15:41:56 +05:30
Kovid Goyal
d703cb51cd
...
2022-11-14 15:41:56 +05:30
Kovid Goyal
005a9c7090
Add an entry point for the completion tool
2022-11-14 15:41:56 +05:30
Kovid Goyal
f4de6d2a10
More work on completions
2022-11-14 15:41:56 +05:30
Kovid Goyal
e60b331152
start work on porting completion to Go
2022-11-14 15:41:56 +05:30
Kovid Goyal
3d79eb5730
more tests for indent and wrap
2022-11-14 15:41:56 +05:30
Kovid Goyal
af7f4e97cf
More work on the new formatter
2022-11-14 15:41:56 +05:30
Kovid Goyal
aad8cb3d1e
Use the new formatter for CLI help output
2022-11-14 15:41:56 +05:30
Kovid Goyal
40a9ab8929
Allow ignoring lines containing a sentinel
2022-11-14 15:41:56 +05:30
Kovid Goyal
e433b90297
Dont drop trailing escape codes when stripping trailing whitespace
2022-11-14 15:41:56 +05:30
Kovid Goyal
1ac7d9c10d
Basic wrap is working
2022-11-14 15:41:56 +05:30
Kovid Goyal
ef5f0025e1
Start work on more sophisticated indent+wrap implementation
2022-11-14 15:41:56 +05:30
Kovid Goyal
32804f01b2
Allow parsing strings with escape code parser
2022-11-14 15:41:55 +05:30
Kovid Goyal
7ecc1b7950
Remove markup from ref_hyperlink text
2022-11-14 15:41:55 +05:30
Kovid Goyal
a7f6105393
Use Unsafe rather than Dangerous to be consistent
2022-11-14 15:41:55 +05:30
Kovid Goyal
081390b5a2
Utility functions to allow using string/[]byte interchangeably without copies
2022-11-14 15:41:55 +05:30
Kovid Goyal
61094c6bfb
Add strikethrough formatting
2022-11-14 15:41:55 +05:30
Kovid Goyal
6672904e64
Fix spurious error message when setting image to none
2022-11-14 15:41:55 +05:30
Kovid Goyal
905c4d641c
Allow using many image formats in RC commands
2022-11-14 15:41:55 +05:30
Kovid Goyal
fa7a6dfd4a
Implement stdin echo loop for socket i/o as well
2022-11-14 15:41:55 +05:30
Kovid Goyal
cb452ba9fc
Implement sen text from stdin for the tty backend
2022-11-14 15:41:55 +05:30
Kovid Goyal
85169c989f
...
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
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