mirror of
https://github.com/prdlk/dotfiles.git
synced 2026-11-02 19:32:43 +00:00
feat(config): add down-arrow binding for silent pj invocation on empty prompt
This commit is contained in:
1 parent
818bc4910b
commit
a507b25c85
3 files changed
+26
-1
No files matched your search
@@ -0,0 +1,18 @@
|
|||||||
|
function _pj_bind_down --description "down arrow: pj on an idle empty prompt, else the preset down-or-search"
|
||||||
|
# Mirror of atuin's up binding (atuin owns up, this owns down). Everything
|
||||||
|
# that legitimately needs the arrow keys keeps them:
|
||||||
|
# - non-empty buffer → multiline cursor movement / forward history search
|
||||||
|
# - paging mode → tab-completion pager navigation (tab on an empty
|
||||||
|
# line opens the pager with an empty buffer)
|
||||||
|
# - search mode → history-search navigation
|
||||||
|
set -l buf (commandline | string collect)
|
||||||
|
if test -n "$buf"; or commandline --paging-mode; or commandline --search-mode
|
||||||
|
commandline -f down-or-search
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
# PJ_QUIET keeps pj silent when the tree has no package.json, so down is a
|
||||||
|
# no-op outside JS projects instead of printing an error on every press.
|
||||||
|
PJ_QUIET=1 pj
|
||||||
|
commandline -f repaint
|
||||||
|
end
|
||||||
@@ -19,6 +19,11 @@ function fish_user_key_bindings
|
|||||||
bind -M $mode ctrl-p 'pj; commandline -f repaint'
|
bind -M $mode ctrl-p 'pj; commandline -f repaint'
|
||||||
bind -M $mode ctrl-a 'omp; commandline -f repaint'
|
bind -M $mode ctrl-a 'omp; commandline -f repaint'
|
||||||
|
|
||||||
|
# Arrow keys: atuin owns up (bound from config.fish, survives the
|
||||||
|
# fish_vi_key_bindings reset above because that only erases presets),
|
||||||
|
# down runs pj — but only on an idle, empty prompt; see _pj_bind_down.
|
||||||
|
bind -M $mode down _pj_bind_down
|
||||||
|
|
||||||
# ctrl-f: pick file(s) with television and open in nvim.
|
# ctrl-f: pick file(s) with television and open in nvim.
|
||||||
bind -M $mode ctrl-f 'yy; commandline -f repaint'
|
bind -M $mode ctrl-f 'yy; commandline -f repaint'
|
||||||
bind -M $mode ctrl-g 'lazygit; commandline -f repaint'
|
bind -M $mode ctrl-g 'lazygit; commandline -f repaint'
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ function pj --description "fzf package.json script runner with auto-detected pac
|
|||||||
end
|
end
|
||||||
|
|
||||||
if test -z "$pkg"
|
if test -z "$pkg"
|
||||||
echo "pj: no package.json found in this tree" >&2
|
# PJ_QUIET: called from the down-arrow binding, where a missing
|
||||||
|
# package.json is the normal case and must not print anything.
|
||||||
|
test -n "$PJ_QUIET"; or echo "pj: no package.json found in this tree" >&2
|
||||||
return 1
|
return 1
|
||||||
end
|
end
|
||||||
set -l root (path dirname $pkg)
|
set -l root (path dirname $pkg)
|
||||||
|
|||||||
Reference in new issue
Block a user