This new release of jless
ships with two major new features: basic YAML support and copying to clipboard!
jless
will now check the file extension of the input file, and automatically parse .yml
and .yaml
files as YAML and use the same viewer as for JSON data. Alternatively passing in a --yaml
flag will force jless
to parse the input as YAML and can be used when reading in YAML data from stdin
. (alias yless="jless --yaml"
perhaps?) YAML aliases are automatically expanded, but their corresponding anchors are not visible, nor are comments. YAML supports non-string keys, and even non-scalar keys in mappings (e.g., the key of map can be an array with multiple elements). Non-string keys are shown with square brackets, e.g., [true]: "value"
, instead of quotes. Non-scalar keys are handled on the screen and displayed properly, but you cannot expand and collapse their individual elements.
While navigating data, jless
also now supports copying various items to your system clipboard.
yy
will copy the value of the currently focused node, pretty printedyv
will copy the value of the currently focused node in a "nicely" printed one-line formatyk
will copy the key of the current key/value pairyp
will copy the path from the root JSON element to the currently focused node, e.g.,.foo[3].bar
yb
functions likeyp
, but always uses the bracket form for object keys, e.g.,["foo"][3]["bar"]
, which is useful if the environment where you'll paste the path doesn't support the.key
format, like in Pythonyq
will copy ajq
style path that will select the currently focused node, e.g.,.foo[].bar
This release also includes a couple of new movement commands, and some stability fixes. The full list of changes can be seen below.
Full list of changes
New features:
- Support displaying YAML files with autodetection via file extension, or explicit
--yaml
or--json
flags. - Support copying values (with
yy
oryv
), object keys (withyk
), and paths to the currently focused node (withyp
,yb
oryq
). - Implement
ctrl-u
andctrl-d
commands to jump up and down by half the screen's height, or by a specified number of lines. - Implement
ctrl-b
andctrl-f
commands for scrolling up and down by the height of the screen. (Aliases forPageUp
andPageDown
)
Improvements:
- Keep focused line in same place on screen when toggling between line and data modes; fix a crash when focused on a closing delimiter and switching to data mode.
- Pressing Escape will clear the input buffer and stop highlighting search matches.
Bug Fixes:
- Ignore clicks on the status bar or below rather than focusing on hidden lines, and don't re-render the screen, allowing the path in the status bar to be highlighted and copied.
- Issue #61: Display error message for unrecognized CSI escape sequences and other IO errors instead of panicking.
- Issue #62: Fix broken window resizing / SIGWINCH detection caused by clashing signal handler registered by rustyline.
- PR #54: Fix panic when using Ctrl-C or Ctrl-D to cancel entering search input.
Other Notes:
- Upgraded regex crate to 1.5.5 due to CVE-2022-24713. jless accepts and compiles untrusted input as regexes, but you'd only DDOS yourself, so it's not terribly threatening vulnerability.