Commit graph

385 commits

Author SHA1 Message Date
Kovid Goyal
88567f69b2
Start work on history support for readline 2022-11-14 15:42:05 +05:30
Kovid Goyal
fe91af5e09
Go stdlib doesnt even have a way to lock files 2022-11-14 15:42:05 +05:30
Kovid Goyal
5e2255591c
Dont send invalid kitty-cmd escape code over tty 2022-11-14 15:42:05 +05:30
Kovid Goyal
b89dfc6d1d
Actually run the remote control commands from the shell 2022-11-14 15:42:05 +05:30
Kovid Goyal
59edf1d349
Code to show help 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
c0f17c279e
Add a generic ring buffer
Go's stdlib is very anemic
2022-11-14 15:42:05 +05:30
Kovid Goyal
7264bea8c9
Fix selector incorrectly marking fd as ready on EINTR 2022-11-14 15:42:04 +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
565526624f
Start work on porting kitty shell to Go 2022-11-14 15:42:03 +05:30
Kovid Goyal
e536ef7844
Suggestions for sub command names as well 2022-11-14 15:42:03 +05:30
Kovid Goyal
0dab006733
Allow un-ambiguous prefixes for command names 2022-11-14 15:42:03 +05:30
Kovid Goyal
75ead358a2
Show suggestions for options based on levenshtein distance 2022-11-14 15:42:03 +05:30
Kovid Goyal
654bd23109
DRYer 2022-11-14 15:42:03 +05:30
Kovid Goyal
6b04c42730
update wcswidth go version to match unicode 15 update in master 2022-11-14 15:42:03 +05:30
Kovid Goyal
74b1cac344
Allow using unabiguous long option prefixes 2022-11-14 15:42:03 +05:30
Kovid Goyal
2633356842
No need to use a map 2022-11-14 15:42:02 +05:30
Kovid Goyal
3bd4fd999a
All completion tests pass again 2022-11-14 15:42:02 +05:30
Kovid Goyal
262e2fb7a3
Various fixes from the completion merge 2022-11-14 15:42:02 +05:30
Kovid Goyal
97716fea8b
More work on merging completions with parse tree 2022-11-14 15:42:02 +05:30
Kovid Goyal
bf74413c1f
Work on merging completion tree with parse tree 2022-11-14 15:42:02 +05:30
Kovid Goyal
79ca0408e7
split up types.go 2022-11-14 15:42:02 +05:30
Kovid Goyal
97acb60981
Move completion package into cli 2022-11-14 15:42:02 +05:30
Kovid Goyal
e608a945de
Output version information at bottom of help 2022-11-14 15:42:02 +05:30
Kovid Goyal
5771bd0c01
Make adding subcommands a bit nicer 2022-11-14 15:42:02 +05:30
Kovid Goyal
4396dede85
Get rid of the cobra dependency 2022-11-14 15:42:02 +05:30
Kovid Goyal
90c1745976
Fix parsing of list options 2022-11-14 15:42:02 +05:30
Kovid Goyal
c4ab964d09
Tests for CLI parsing 2022-11-14 15:42:02 +05:30
Kovid Goyal
04022ed363
Various fixes to CLI parsing 2022-11-14 15:42:02 +05:30
Kovid Goyal
79cfc1e70a
Move kitty-tool __complete__ to use the new CLI framework 2022-11-14 15:42:01 +05:30
Kovid Goyal
e7c14c78d0
Work on outputting help for commands 2022-11-14 15:42:01 +05:30
Kovid Goyal
cb2389efa5
Use the standard library deque
Drops a dependency
2022-11-14 15:42:01 +05:30
Kovid Goyal
4316018966
... 2022-11-14 15:42:01 +05:30
Kovid Goyal
a0bf6177e2
Use a LRUCache rather than an Unbounded one 2022-11-14 15:42:01 +05:30
Kovid Goyal
3078b9074a
Also report submatch positions 2022-11-14 15:42:01 +05:30
Kovid Goyal
dffb87ced9
Make the cache re-useable 2022-11-14 15:42:01 +05:30
Kovid Goyal
4adea5b7fe
Make ReplaceAll re-useable 2022-11-14 15:42:01 +05:30
Kovid Goyal
317b108497
Allow using :role:'payload' in addition to :role:payload as the former can be used in Go `` string literals 2022-11-14 15:42:01 +05:30
Kovid Goyal
7c41737370
Couple more errors found by linting 2022-11-14 15:42:01 +05:30
Kovid Goyal
8221713995
Allow defining options using a struct 2022-11-14 15:42:01 +05:30
Kovid Goyal
ef49634353
Fix some issues reported by staticcheck 2022-11-14 15:42:01 +05:30
Kovid Goyal
b1e08adbce
Utility function to sort with key 2022-11-14 15:42:00 +05:30
Kovid Goyal
e7f38929d9
DRYer 2022-11-14 15:42:00 +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
a44c89504b
More convenient interface for sorting 2022-11-14 15:42:00 +05:30
Kovid Goyal
8807f6d539
Code to get exe name for usage message 2022-11-14 15:42:00 +05:30
Kovid Goyal
2f83bbdc85
command validation 2022-11-14 15:42:00 +05:30
Kovid Goyal
41a841c83d
Validate string slice fields 2022-11-14 15:42:00 +05:30
Kovid Goyal
0cf8876f8a
Validate count struct fields 2022-11-14 15:42:00 +05:30
Kovid Goyal
a3a89b3e21
More efficient multi line scanning 2022-11-14 15:42:00 +05:30
Kovid Goyal
2ddbe2a2bc
Automatically camel-case destination 2022-11-14 15:42:00 +05:30
Kovid Goyal
707963b694
Code to conveniently read option values into a struct 2022-11-14 15:42:00 +05:30
Kovid Goyal
1811949706
Implement cloning of commands 2022-11-14 15:42:00 +05:30
Kovid Goyal
bc38bd75fd
Start work on getting rid of the cobra dependency
Command line parsing is easy and I can do it better.
2022-11-14 15:42:00 +05:30
Kovid Goyal
54ec486d3a
Now completion for hyperlinked_grep is automatic thanks to delegation
Also fix delegation for zsh when the command being completed differs
from the current command.
2022-11-14 15:42:00 +05:30
Kovid Goyal
5666b1b0fd
Implement completion for fish 2022-11-14 15:41:59 +05:30
Kovid Goyal
ef9b765f81
Dont count bash's idiotic option equals as arguments 2022-11-14 15:41:59 +05:30
Kovid Goyal
a2bb360eec
Dont output escape strings in descriptions 2022-11-14 15:41:59 +05:30
Kovid Goyal
7cf9b21fc0
Show local executables for kityt command completion even without ./ 2022-11-14 15:41:59 +05:30
Kovid Goyal
454c2e32e7
... 2022-11-14 15:41:59 +05:30
Kovid Goyal
53dc079c10
Use compopt to manage files and spaces 2022-11-14 15:41:59 +05:30
Kovid Goyal
08c697e99a
Get delegate based completion working for bash 2022-11-14 15:41:59 +05:30
Kovid Goyal
1dce092ac0
Add trailing spaces for bash completion 2022-11-14 15:41:59 +05:30
Kovid Goyal
24c2d27eea
handle bash splitting completion cmdline on equals 2022-11-14 15:41:59 +05:30
Kovid Goyal
b04b483b3f
Remove common prefix for bash as well 2022-11-14 15:41:59 +05:30
Kovid Goyal
a7c997c6ef
Add a debug function to print to parent kitty stdout 2022-11-14 15:41:59 +05:30
Kovid Goyal
266e51310c
Basic BASH completion 2022-11-14 15:41:59 +05:30
Kovid Goyal
928a4db817
Implement delegate based completion fof the ssh and hyperlinked_grep kittens 2022-11-14 15:41:59 +05:30
Kovid Goyal
dc403156a9
Delegate based completion for kitty cmd 2022-11-14 15:41:59 +05:30
Kovid Goyal
2cc359ccc8
Get zsh completion working apart from delegation 2022-11-14 15:41:58 +05:30
Kovid Goyal
cbbda23e01
Utility code to find longest common prefix/suffix and to quote strings for various shells 2022-11-14 15:41:58 +05:30
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