-
-
Notifications
You must be signed in to change notification settings - Fork 2.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(zsh): handle backtick trigger edge case #4090
Conversation
I'd advocate for Alternative B as I've used the backtick as my trigger for 6+ years. The key is right next to the on an American layout and quite convenient. Thank you! |
It's just important that the cursor is in the 'command' part before the trigger; the actual position is not important.
For the current version, the The approach would still extract the correct command. More testing of these changes is needed. |
7943054
to
4024a29
Compare
An error occured when the trigger was assigned to '('
That was also my intention, but temporarily moving the cursor before calling the ls ; kill -9 `[TAB] Please test the latest patch. The zsh version affects many users, and it's source <(curl -fsSL https://raw.githubusercontent.com/LangLangBart/fzf/refs/heads/zsh_backtick/shell/completion.zsh) |
The patch works for me and my backtick trigger! Thank you! |
Thanks for testing. I will add man zshoptions | less --pattern 'WARN_CREATE_GLOBAL' WARN_CREATE_GLOBAL
Print a warning message when a global parameter is created in a
function by an assignment or in math context. This often indi-
cates that a parameter has not been declared local when it
should have been. Parameters explicitly declared global from
within a function using typeset -g do not cause a warning. Note
that there is no warning when a local parameter is assigned to
in a nested function, which may also indicate an error. # see 'zshbuiltins' for 'typeset'
man zshbuiltins |
c5c8b0a
to
845595c
Compare
Thanks, it all looks good to me, is there anything else you want to address? |
I am finished. During testing, I found no other issues. I hope The bugs (missing enhancement) reported from my |
No problem at all, I really appreciate your help. |
Merged thanks! |
Thank you @LangLangBart ! Really appreciate the fast turn around and response to my report. |
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [junegunn/fzf](https://github.com/junegunn/fzf) | minor | `v0.55.0` -> `v0.56.3` | 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>junegunn/fzf (junegunn/fzf)</summary> ### [`v0.56.3`](https://github.com/junegunn/fzf/releases/tag/v0.56.3): 0.56.3 [Compare Source](junegunn/fzf@v0.56.2...v0.56.3) - Bug fixes in zsh scripts - fix(zsh): handle backtick trigger edge case ([#​4090](junegunn/fzf#4090)) - revert(zsh): remove 'fc -RI' call in the history widget ([#​4093](junegunn/fzf#4093)) - Thanks to [@​LangLangBart](https://github.com/LangLangBart) for the contributions ### [`v0.56.2`](https://github.com/junegunn/fzf/releases/tag/v0.56.2): 0.56.2 [Compare Source](junegunn/fzf@v0.56.1...v0.56.2) - Bug fixes - Fixed abnormal scrolling behavior when `--wrap` is set ([#​4083](junegunn/fzf#4083)) - \[zsh] Fixed warning message when `ksh_arrays` is set ([#​4084](junegunn/fzf#4084)) ### [`v0.56.1`](https://github.com/junegunn/fzf/releases/tag/v0.56.1): 0.56.1 [Compare Source](junegunn/fzf@v0.56.0...v0.56.1) - Bug fixes and improvements - Fixed a race condition which would cause fzf to present stale results after `reload` ([#​4070](junegunn/fzf#4070)) - `page-up` and `page-down` actions now work correctly with multi-line items ([#​4069](junegunn/fzf#4069)) - `{n}` is allowed in `SCROLL` expression in `--preview-window` ([#​4079](junegunn/fzf#4079)) - \[zsh] Fixed regression in history loading with shared option ([#​4071](junegunn/fzf#4071)) - \[zsh] Better command extraction in zsh completion ([#​4082](junegunn/fzf#4082)) - Thanks to [@​LangLangBart](https://github.com/LangLangBart), [@​jaydee-coder](https://github.com/jaydee-coder), [@​alex-huff](https://github.com/alex-huff), and [@​vejkse](https://github.com/vejkse) for the contributions ### [`v0.56.0`](https://github.com/junegunn/fzf/releases/tag/v0.56.0): 0.56.0 [Compare Source](junegunn/fzf@v0.55.0...v0.56.0) - Added `--gap[=N]` option to display empty lines between items. - This can be useful to visually separate adjacent multi-line items. ```sh ``` ### All bash functions, highlighted declare -f | perl -0777 -pe 's/^}\n/}\0/gm' | bat --plain --language bash --color always | fzf --read0 --ansi --reverse --multi --highlight-line --gap ``` <img width="855" alt="image" src="https://github.com/user-attachments/assets/b3d2eaf2-bf44-4e3a-8d7b-9878629dd9be"> - Or just to make the list easier to read. For single-line items, you probably want to set `--color gutter:-1` as well to hide the gutter. ```sh fzf --info inline-right --gap --color gutter:-1 ``` <img width="855" alt="image" src="https://github.com/user-attachments/assets/113757a1-ccfd-42a6-b946-83533f408e69"> - Added `noinfo` option to `--preview-window` to hide the scroll indicator in the preview window - Bug fixes - Thanks to [@​LangLangBart](https://github.com/LangLangBart), [@​akinomyoga](https://github.com/akinomyoga), and [@​charlievieth](https://github.com/charlievieth) for fixing the bugs </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **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:eyJjcmVhdGVkSW5WZXIiOiIzNy40NDAuNyIsInVwZGF0ZWRJblZlciI6IjM3LjQ0MC43IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Description
FZF_COMPLETION_TRIGGER
#4088If a single backtick is used as a trigger, the
words
array fails to populatewith the command elements.
The idea here is to temporarily alter the
LBUFFER
before calling__fzf_extract_command
by escaping the backtick.The idea is to move the
CURSOR
before the trigger.This approach seems a bit hacky, which is why this PR is marked as a draft.
Alternative A
Create a list of invalid triggers, since other characters have also been found
to cause the same issue:
Testing covered only ASCII values 32-126; others were excluded for simplicity.
&
;
[
`
|
If the user attempts to use one, display a message using
zle -M [string]
toindicate the error. This places the string below the command line, prompting the
user to choose a different trigger character.
Alternative B
Fall back to the old extraction method if the words array is empty and the
LBUFFER
is not empty, with the downside that it would only work for the firstcommand.
Alternative B might be the best option. If a user encounters an issue like the
one described in #1992, simply suggest using a different trigger?