@@ -44,6 +44,15 @@ iqnc_mime_setup(){
44
44
zsh-mime-setup
45
45
}
46
46
47
+ iqnc_get_cmd_idx (){
48
+ integer QSUB QI
49
+ local -a cmd=(" $@ " )
50
+ for (( QI= 1 ;QI< $# cmd;QI++ )) ; do
51
+ [[ $cmd [QI] != (\! # )(sudo|noglob|command|builtin|[ $'\t\n\v']#) ]]&&{QSUB=QI;break;}
52
+ done
53
+ REPLY=$QSUB
54
+ (( REPLY))
55
+ }
47
56
iqnc_util_swap4 (){
48
57
local Q=$1 Q0=$2
49
58
shift 0+2
@@ -135,18 +144,20 @@ iqnc_view_switch(){
135
144
}
136
145
137
146
iqnc_exec_command_cb (){
138
- integer QEXISTS
139
- local CMD=${(Q@ )${(@ )${(@ zA)ZUI[QUERY_BUFFER]} [1]} }
147
+ integer QEXISTS QSUB=1
148
+ local -a cmd=(${(@ zA)ZUI[QUERY_BUFFER]} )
149
+ iqnc_get_cmd_idx " $cmd [@]" && QSUB=REPLY
150
+ local CMD=${cmd[QSUB]## \! # }
140
151
ZUI[COMMAND]=$ZUI [QUERY_BUFFER]
141
152
{
142
- if [[ $ZUI [COMMAND] != [[:space:]]# ]];then
153
+ if [[ $ZUI [COMMAND] != [[:space:]$' \1 ' - $' \x1b ' ]# ]];then
143
154
builtin print -r -- $ZUI [COMMAND]>> ! $NCCHIST
144
155
else
145
156
THROW " No command entered ($ZUI [COMMAND]), " " " " " " cannot execute"
146
157
fi
147
158
# No such command?
148
- builtin type ${ CMD# \! } & > /dev/null|| \
149
- THROW " No such command" " : " " " $CMD
159
+ builtin type $CMD & > /dev/null|| \
160
+ THROW " Error: " " no such command" " : " $CMD
150
161
} always {
151
162
if CATCH \* ; then
152
163
iqw " $CAUGHT [@]"
@@ -157,7 +168,6 @@ iqnc_exec_command_cb(){
157
168
iqnc_cmd_next $CIN
158
169
159
170
# iqnc_hub
160
- iqw " Executed command: " \` $CMD \` " which returned: " $ZUI [RET]
161
171
fi
162
172
}
163
173
ZUI[QUERY_BUFFER]= ZUI[COMMAND]=
@@ -248,6 +258,7 @@ iqnc_search_prompt(){
248
258
249
259
iqnc_exec_prompt (){
250
260
ZUI[QUERY_PROMPT]= " $PWD /:> "
261
+ ZUI[QUERY_PROMPT_RET]= ${ZUI[RET]:- 0}
251
262
ZUI[IN_QUERY]= $PR_CMD_EXEC
252
263
typeset -g in_query= $PR_CMD_EXEC
253
264
ZUI[cursor]= $# ZUI[QUERY_BUFFER]+1
@@ -264,17 +275,21 @@ iqnc_db(){
264
275
265
276
iqnc_get_cmd_out (){
266
277
local TPE= $1 cmd= (" $@ [2,-1]" )
278
+ integer QSUB= 1 QI
267
279
if [[ $TPE == whole || -n ${(M)cmd[1,-2]:# builtin} || $cmd [1] == \! * ]]; then
268
280
ZUI[TMP]=$( mktemp)
269
- [[ $cmd [1] == \! * ]]&& iqw " Notice: " " in the same-shell process run (" \
281
+ [[ $cmd [1] == \! * && $cmd [1] != \!\! * ]]&& \
282
+ iqw " Notice: " " in the same-shell process-run (" \
270
283
" leading ! detected" " )"
271
- cmd[1]=${cmd[1]# \! }
272
- eval " $cmd [@]" & > ! $ZUI [TMP]
284
+ cmd[1]=${cmd[1]## \! # }
285
+ eval " $cmd [@]" < /dev/tty & > ! $ZUI [TMP]
273
286
ZUI[RET]=$?
274
- local CMD_PT=" (${(~j.|.)${=NC_LS_LIKE_COMMANDS} } )"
287
+ local CMD_PT=" (${(~j.|.)${(@ s: : )NC_LS_LIKE_COMMANDS} } )"
288
+
289
+ iqnc_get_cmd_idx " $cmd [@]" && QSUB=REPLY
290
+ [[ -n $aliases [$cmd [QSUB]] ]]&& cmd[QSUB]= (${(s: : )aliases[$cmd[QSUB]]} )
275
291
276
- if [[ $cmd [1] == $~CMD_PT || ($cmd [1] == (noglob| command) && \
277
- $cmd [2] == $~CMD_PT) ]]
292
+ if [[ $cmd [QSUB] == $~CMD_PT && $ZUI [RET] -eq 0 ]]
278
293
then
279
294
reply=(" ${(@ f)$(builtin print -C2 -a ${(@ f)$(<$ZUI [TMP])} )} " )
280
295
else
@@ -287,7 +302,9 @@ iqnc_get_cmd_out(){
287
302
[[ $cmd [1] == noglob ]]&& {local -a stdbuf1= (noglob $stdbuf1 ); cmd[1]= (); }
288
303
[[ $cmd [1] == builtin ]]&& local -a stdbuf1= (${(M)stdbuf1:# noglob} )
289
304
[[ $cmd [1] == command ]]&& cmd[1]= ()
290
- [[ -n $aliases [$cmd [1]] ]]&& cmd[1]= (${(s: : )aliases[$cmd[1]]} )
305
+
306
+ iqnc_get_cmd_idx " $cmd [@]" && QSUB= REPLY
307
+ [[ -n $aliases [$cmd [QSUB]] ]]&& cmd[QSUB]= (${(s: : )aliases[$cmd[QSUB]]} )
291
308
coproc {$stdbuf1 " $cmd [@]" 2>&1 < /dev/tty; }
292
309
ZUI[RET]= $?
293
310
fi
@@ -322,7 +339,7 @@ cmd-contents-view(){iqnc_cmd_next $VIEW;}
322
339
cmd-main-view (){iqnc_cmd_next $CIN ;}
323
340
cmd-tags-view (){iqnc_cmd_next $TAGS ;}
324
341
cmd-set-view (){local -A Qe=(main 0 preview 1 hist 2 tags 3 " " 0);iqnc_cmd_next $Qe [$1 ]; }
325
- cmd-show-stdin (){ZUI[HAVE_0_INPUT]=1;ZUI[IO_COUNT]= 33 ; iqnc_hub ; }
342
+ cmd-show-stdin (){ZUI[HAVE_0_INPUT]=1;ZUI[IO_COUNT]= 18 ; iqnc_cmd_next $CIN ; }
326
343
# Commands
327
344
cmd-open-cmd (){zcurses end;eval " $@ " ; -zui_glib_refresh; }
328
345
cmd-open-tig (){curses end;command tig " $@ " ; -zui_glib_refresh; }
@@ -515,14 +532,14 @@ if ((!$+Opts[--refresh])); then
515
532
integer Q0_SAVE_PIPE tmout
516
533
if int/nc::test-stdin Q0_SAVE_PIPE REPLY; then
517
534
ZUI[FIRST_0_INPUT]=$REPLY
518
- ZUI[HAVE_0_INPUT]=1 ZUI[IO_COUNT]=30
535
+ ZUI[HAVE_0_INPUT]=1 ZUI[IO_COUNT]=15
519
536
fi
520
537
iqnc_create_histories
521
538
cmd-exec-prompt
522
539
fi
523
540
524
541
# zui::bindkey F3 "{print q:$ZUI[mark]}"
525
- zui::bindkey F9 ' {print \\n cursor:$ZUI[cursor], cmdno:$ZUI[CMD_NO], query:$ZUI[IN_QUERY], qbuf: $ZUI[QUERY_BUFFER], view:$ZUI[SEARCH_BUFFER_PREVIEW], gl:$ZUI[SEARCH_BUFFER_GLOBAL], sbuff:$ZUI[SEARCH_BUFFER], current:$ZUI[CURRENT_IDX], PVIEW_Q:$ZUI[CURRENT_IDX_PVIEW_BKP_$ZUI[QPATH]], PVIEW:$ZUI[CURRENT_IDX_PVIEW_BKP], TAG:$ZUI[CURRENT_IDX_TAGS_BKP], main:$ZUI[CURRENT_IDX_MAIN_BKP] sptr:$ZUI[status_pointer]|tee -a /tmp/reply;}'
542
+ zui::bindkey F9 ' {print \\n\\r ${jobtexts[*]} ${#jobtexts} cursor:$ZUI[cursor], cmdno:$ZUI[CMD_NO], query:$ZUI[IN_QUERY], qbuf: $ZUI[QUERY_BUFFER], view:$ZUI[SEARCH_BUFFER_PREVIEW], gl:$ZUI[SEARCH_BUFFER_GLOBAL], sbuff:$ZUI[SEARCH_BUFFER], current:$ZUI[CURRENT_IDX], PVIEW_Q:$ZUI[CURRENT_IDX_PVIEW_BKP_$ZUI[QPATH]], PVIEW:$ZUI[CURRENT_IDX_PVIEW_BKP], TAG:$ZUI[CURRENT_IDX_TAGS_BKP], main:$ZUI[CURRENT_IDX_MAIN_BKP] sptr:$ZUI[status_pointer]|tee -a /tmp/reply;}'
526
543
zui::bindkey F10 ' {builtin source $NC_CON_DIR/iqnc --refresh||\
527
544
iqw -r "Reload finished with error: " $?;}'
528
545
zui::bindkey F14 ' {builtin zcurses end;sleep 3;}'
@@ -606,7 +623,7 @@ iqnc_fill_preview(){
606
623
local TPE=$REPLY
607
624
int/nc::get-stx-cmd -q $TPE || \
608
625
THROW " Error: no highlighter command found: bat, {src-,}highlight"
609
- local -a qcmd=(" $reply [@]" " $QPATH " )
626
+ local -a qcmd=(" $reply [@]" -- " $QPATH " )
610
627
iq0items=(" ${(@ f)$($qcmd [@])} " )
611
628
iqw " Showing file: " " \` $QPATH :t\` " " , of type: " $TPE
612
629
else
@@ -634,7 +651,7 @@ iqnc_fill_preview(){
634
651
635
652
iqnc_fill_cmd (){
636
653
local TXT= () cmd= () CMD_PT QEX
637
- integer QI
654
+ integer QSUB = 1 QI
638
655
ZUI[text_mode]= all
639
656
ZUI[COLORING_PATTERN]= " ·[^·]##·"
640
657
ZUI[COLORING_MATCH_MULTIPLE]= 1
@@ -643,30 +660,34 @@ iqnc_fill_cmd(){
643
660
reply= ()
644
661
645
662
ZUI[COMMAND]= ${1:- $ZUI [COMMAND]}
646
- [[ $ZUI [COMMAND] != $~NC[WRONGSTR] ]]&& ZUI[HAVE_0_INPUT]= 0
663
+ [[ $ZUI [COMMAND] != [[:space:] $' \1 ' - $' \x1b ' ] # ]]&&ZUI[HAVE_0_INPUT]=0
647
664
: ${ZUI[COMMAND]:= ${NC_DEFAULT_LS_COMMAND:- $NC_DEFAULT_COMMAND } }
648
665
if [[ -n $ZUI [COMMAND] ]]; then
649
666
[[ -e $ZUI [QPATH] ]]&& ZUI[COMMAND]=${ZUI[COMMAND]// \% s/ ${(q)ZUI[QPATH]} }
650
667
[[ -e $ZUI [QPATH] ]]|| ZUI[COMMAND]=${ZUI[COMMAND]// \% s/ }
651
668
ZUI[COMMAND_PREV]=$ZUI [COMMAND]
652
669
cmd=(" ${(z@ )ZUI[COMMAND]} " )
653
- QEX=${(M)cmd[1]# \! }
654
- cmd[1]=${cmd[1]# \! }
670
+ QEX=${(M)cmd[1]## \! # }
671
+ cmd[1]=${cmd[1]## \! # }
672
+ iqnc_get_cmd_idx " $cmd [@]" && QSUB=REPLY
655
673
ZUI[COMMAND]=
656
674
CMD_PT=" (${(~j.|.)${(@ )=NC_LS_LIKE_COMMANDS} } )"
657
675
# Include ls-options
658
- if [[ -n $NC_DEFAULT_LS_LIKE_OPTS && ($cmd [1 ] == $~CMD_PT || \
659
- $cmd [1] == (command | noglob| sudo ) && $cmd [2] == $~CMD_PT) ]]
676
+ if [[ ($cmd [QSUB ] == $~CMD_PT || \
677
+ $cmd [1] == (sudo | noglob| command | builtin ) && $cmd [2] == $~CMD_PT) ]]
660
678
then
661
- QI=2; [[ $cmd [2] == $~CMD_PT ]]&& QI=3
662
- cmd[QI,0]=(${(s: : )NC_DEFAULT_LS_LIKE_OPTS} )
679
+ if [[ -n $NC_DEFAULT_LS_LIKE_OPTS ]]; then
680
+ QI=2; [[ $cmd [2] == $~CMD_PT ]]&& QI=3
681
+ [[ $cmd [QSUB] == $~CMD_PT ]]&& QI=QSUB+1
682
+ cmd[QI,0]=(${(s: : )NC_DEFAULT_LS_LIKE_OPTS} )
683
+ fi
663
684
ZUI[ls-command]=1
664
685
else
665
686
ZUI[ls-command]=0
666
687
fi
667
688
668
689
if [[ $cmd [1] == cd || $cmd [1] == builtin && $cmd [2] == cd ]]; then
669
- iqw " Changing directory to: " " " " " " $cmd [-1]"
690
+ iqw " Moving CWD to: " " " " " " $cmd [-1]"
670
691
iqnc_push_pwd
671
692
eval " $cmd [@]"
672
693
iqnc_fill_cmd
@@ -675,16 +696,21 @@ iqnc_fill_cmd(){
675
696
676
697
iqnc_get_cmd_out $ZUI [cmd-mode] $QEX$cmd [1] " ${(@ )cmd[2,-1]} "
677
698
if [[ $ZUI [cmd-mode] == whole || -n $QEX ]]; then
678
- iq0items=(" $reply [@]" )
699
+ if [[ $QEX == ' !!' ]]; then
700
+ iqw " !!" " -CMD-OUT:»: " " ${(j: ·\n ·: )reply} "
701
+ else
702
+ iq0items=(" $reply [@]" )
703
+ fi
679
704
else
680
705
iq0items=() q0input=()
681
- ZUI[HAVE_0_INPUT]=1 ZUI[IO_COUNT]=30
706
+ ZUI[HAVE_0_INPUT]=1 ZUI[IO_COUNT]=15
682
707
fi
683
708
684
709
-zui_glib_special_text " Output of cmd: ·$ZUI [COMMAND_PREV]· run in: ·$PWD ·:" TXT
685
- if [[ $iq0items = $~NC[WRONGSTR] && $ZUI [cmd-mode] = whole ]]
710
+ if [[ $QEX != ' !!' && $iq0items = [[:space:]$' \1' -$' \x1b ' ]# &&\
711
+ ($ZUI [cmd-mode] = whole || $QEX = \! ) ]]
686
712
then
687
- iqw " Command " " $cmd " " " " had no output "
713
+ iqw " Executed: " " \` $cmd [QSUB] \` " " " " – NO OUTPUT "
688
714
return
689
715
fi
690
716
else
@@ -872,7 +898,7 @@ iqnc_fill_help(){
872
898
(( ZUI[VIEW_CHANGE])) || return 0
873
899
if [[ -n $ZUI [COMMAND] ]]; then
874
900
local CMD=$ZUI [COMMAND]
875
- iqnc_cmd_next $CIN $ZUI [GEN_B_IDX]
901
+ iqnc_cmd_next $CIN
876
902
fi
877
903
builtin unset ' ZUI[COMMAND]'
878
904
iqnc_util_set_current_idx
0 commit comments