navi/shell/navi.plugin.elv
Daniel Fitzpatrick 715d3d59e4 Add elvish widget
2021-09-08 16:51:44 -05:00

31 lines
No EOL
788 B
Text

use str
fn call-navi []{
if (eq $edit:current-command '') {
answer = (navi --print)
edit:replace-input $answer
} elif (not (str:contains-any $edit:current-command '|')) {
answer = (navi --print --query $edit:current-command)
if (not-eq $answer '') {
edit:replace-input $answer
}
} else {
cmds = [(str:split '|' $edit:current-command)]
qty = (- (count $cmds) 1)
query = (all $cmds | drop $qty)
cmds = [(all $cmds | take $qty)]
answer = ''
if (eq $query '') {
answer = (navi --print)
} else {
answer = (navi --print --query $query)
}
if (not-eq $answer '') {
cmds = [$@cmds $answer]
edit:replace-input (str:join '| ' $cmds)
}
}
}
edit:insert:binding[Alt-h] = []{ call-navi >/dev/tty 2>&1 }