feat: add $width variable for preview commands#452
Conversation
Add a new placeholder variable $width that exposes the actual view width (in columns) to preview commands. This enables tools like delta to use --side-by-side with the correct width. Similar to how fzf exposes $FZF_PREVIEW_COLUMNS, this allows users to configure preview commands that adapt to the view size: ```toml [preview] revision_command = ["util", "exec", "--", "bash", "-c", """jj show --color always --git -r $change_id | delta --side-by-side --width $width"""] ``` The width updates dynamically when the preview pane is resized.
|
Hey thanks, I’d suggest renaming the placeholder to Also, |
The initial implementation used
done, thanks! |
… is only populated by the preview
- Rename WidthPlaceholder to PreviewWidthPlaceholder - Change placeholder value from $width to $preview_width - Rename local variable back to previewWidth for consistency
done! This PR is ready, let me know otherwise. |
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [idursun/jjui](https://github.com/idursun/jjui) | patch | `v0.9.8` → `v0.9.9` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>idursun/jjui (idursun/jjui)</summary> ### [`v0.9.9`](https://github.com/idursun/jjui/releases/tag/v0.9.9) [Compare Source](idursun/jjui@v0.9.8...v0.9.9) ### Release Notes Another release with small improvements and bug fixes. Thanks to all contributors! #### 🎉 New Features ##### Custom Commands & Lua API Enhancements - **Custom Commands with Sequence Keys** ([#​420](idursun/jjui#420)) - Added `key_sequence` property allowing custom commands to be invoked with multiple key presses in sequence - Added `desc` property for command descriptions - Introduced sequence overlay UI showing available key sequences when first key is pressed - Example: `key_sequence = ["w", "b", "l"]` - **Lua API: Choose Method and UI** ([#​427](idursun/jjui#427)) ([#​442](idursun/jjui#442)) - New `choose()` function for interactive selection prompts in Lua scripts - New `input()` function to prompt users for text input with customizable title and prompt - New `split_lines()` function for text processing - **Lua API: Await on Operation Results** ([#​422](idursun/jjui#422)) - `start_inline_describe()` now returns boolean indicating if operation was applied or cancelled - Enables conditional command execution based on user actions - Fixes [#​310](idursun/jjui#310) - **Lua API: Interactive Commands** ([commit 8b257263](idursun/jjui@8b257263)) - Added `jj_interactive` Lua function for interactive jj command execution ##### Navigation & UI Improvements - **Ace Jump for Operations** ([#​445](idursun/jjui#445)) - Pressing 'f' in set\_parents/duplicate/rebase/squash modes now triggers ace jump - After jump completes, returns to the original operation mode instead of normal mode - Closes [#​394](idursun/jjui#394) - **Preview Width Variable** ([#​452](idursun/jjui#452)) - Added `$preview_width` placeholder variable for preview commands - Exposes actual view width (in columns) to enable tools like delta to use `--side-by-side` correctly - Width updates dynamically when preview pane is resized - Similar to fzf's `$FZF_PREVIEW_COLUMNS` - **Configurable Flash Message Display Time** ([#​456](idursun/jjui#456)) - New config key: `ui.flash_message_display_seconds` (default: 4) - Special value `0` means messages display until manually dismissed - Fixes [#​455](idursun/jjui#455) - **Page Up/Down Key Configuration** ([#​437](idursun/jjui#437)) - ScrollUp/Down keys now registered in config instead of hardcoded - Keys exposed to configuration for customization - Fixes [#​360](idursun/jjui#360) ##### SSH & Authentication - **SSH Askpass Support** ([#​423](idursun/jjui#423)) - New `[ssh] hijack_askpass` setting to prompt for SSH passphrases/PINs within jjui - Works on Linux and macOS - Properly handles prompt overriding and cancellation - Fixes [#​100](idursun/jjui#100) #### 🐛 Bug Fixes - **Exec Command History** ([#​458](idursun/jjui#458)) - Fixed issue where selected command history wasn't applied in exec mode - Input value now properly updated when selecting from fuzzy/regex suggestions - Selected commands correctly saved to history - **Menu Pagination Display** ([#​446](idursun/jjui#446)) - Fixed incorrect `%d/%d` pagination display - Height now calculated before pagination render - Added tab/shift+tab to short help menu - Fixes [#​444](idursun/jjui#444) - **Flash Message Width** ([#​432](idursun/jjui#432)) - Added maxWidth (50% of screen) to flash message rendering - Messages now properly line-wrap instead of extending beyond window width - **Operation Log Refresh** ([#​431](idursun/jjui#431)) - Operation log now returns Refresh and SelectionChanged messages upon closing - Fixes [#​430](idursun/jjui#430) - **Custom Commands List Sorting** ([commit 3fa9783a](idursun/jjui@3fa9783a)) - Fixed custom commands list to use stable sort - Fixes [#​424](idursun/jjui#424) - **JJ Error Pass-through** ([#​421](idursun/jjui#421)) - jjui now properly passes through stderr from jj commands - Error messages are more informative and show actual jj errors - **Navigation Message Display** ([commit 94a4a874](idursun/jjui@94a4a874)) - Navigation messages now only shown for paged scrolls #### What's Changed - main: pass through jj error by [@​baggiiiie](https://github.com/baggiiiie) in [#​421](idursun/jjui#421) - feat(lua): add ability to await on operation results (cancelled/applied) by [@​idursun](https://github.com/idursun) in [#​422](idursun/jjui#422) - oplog: return Refresh and SelectionChanged upon oplog closing by [@​baggiiiie](https://github.com/baggiiiie) in [#​431](idursun/jjui#431) - feat(nix): add comprehensive nix flake by [@​doprz](https://github.com/doprz) in [#​426](idursun/jjui#426) - Add option to hijack SSH Askpass to prompt for passphrase/pin by [@​oliverpool](https://github.com/oliverpool) in [#​423](idursun/jjui#423) - feat(lua): add choose method and ui by [@​idursun](https://github.com/idursun) in [#​427](idursun/jjui#427) - flash: add maxWidth to flash msg rendering by [@​baggiiiie](https://github.com/baggiiiie) in [#​432](idursun/jjui#432) - keys: add pageup/down to keys config by [@​baggiiiie](https://github.com/baggiiiie) in [#​437](idursun/jjui#437) - chore(github): Add Adda0 as an automatic reviewer for Nix-related changes by [@​Adda0](https://github.com/Adda0) in [#​440](idursun/jjui#440) - feat: add .editorconfig by [@​doprz](https://github.com/doprz) in [#​434](idursun/jjui#434) - Add input and log to custom\_commands API by [@​ArnaudBger](https://github.com/ArnaudBger) in [#​442](idursun/jjui#442) - oplog,list: refactor scrolling with Scrollable/StreamableList interface by [@​baggiiiie](https://github.com/baggiiiie) in [#​429](idursun/jjui#429) - menu: calculate height before pagination render by [@​baggiiiie](https://github.com/baggiiiie) in [#​446](idursun/jjui#446) - operations: enable ace jump for set\_parents/duplicate/rebase/squash by [@​baggiiiie](https://github.com/baggiiiie) in [#​445](idursun/jjui#445) - feat: make flash message display time configurable by [@​living180](https://github.com/living180) in [#​456](idursun/jjui#456) - feat: add $width variable for preview commands by [@​pablospe](https://github.com/pablospe) in [#​452](idursun/jjui#452) - status: fix exec command history not applied by [@​baggiiiie](https://github.com/baggiiiie) in [#​458](idursun/jjui#458) #### New Contributors - [@​doprz](https://github.com/doprz) made their first contribution in [#​426](idursun/jjui#426) - [@​oliverpool](https://github.com/oliverpool) made their first contribution in [#​423](idursun/jjui#423) - [@​living180](https://github.com/living180) made their first contribution in [#​456](idursun/jjui#456) - [@​pablospe](https://github.com/pablospe) made their first contribution in [#​452](idursun/jjui#452) **Full Changelog**: <idursun/jjui@v0.9.8...v0.9.9> </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi43NS4xIiwidXBkYXRlZEluVmVyIjoiNDIuNzUuMSIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90IiwiYXV0b21hdGlvbjpib3QtYXV0aG9yZWQiLCJkZXBlbmRlbmN5LXR5cGU6OnBhdGNoIl19-->
Summary
$widthplaceholder variable that exposes the actual view width (in columns) to preview commands--side-by-sidewith the correct widthMotivation
When using delta with
--side-by-sidein preview commands, there's no way to pass the correct width because jjui pipes command output to an internal buffer (no TTY). This is similar to Discussion #163.Similar to how fzf exposes
$FZF_PREVIEW_COLUMNS, this adds a$widthvariable.Example usage