- (throw 'multishell-do-list token)
- (if (equal token
- (catch 'multishell-do-list
- (multishell-pop-to-shell-worker arg name here)))
- (multishell-list)))))
+ (throw 'multishell-minibuffer-exit token)
+ (let ((got (catch 'multishell-minibuffer-exit
+ (multishell-pop-to-shell-worker arg name here))))
+ ;; Handle catch or plain fall-through - see cond comments for protocol.
+ (cond
+ ;; Caught token from recursive invocation in minibuffer:
+ ((equal token got) (multishell-list))
+ ;; Caught specifaction of multishell args, eg from multishell-list:
+ ((listp got) (multishell-pop-to-shell-worker (nth 2 got)
+ (nth 0 got)
+ (nth 1 got)))
+ ;; Regular fallthrough - just relay the result:
+ (t got))))))