У меня есть эта функция (известно, что она работает нормально)
function problem_open -e on_problem_open -d "select from existing problems"
set matches (find $FD_PROB_HOME/ -maxdepth 1 -mindepth 1 -type d ! -name ".git")
if test 1 -eq (count $matches)
if test -d $matches
set -U FD_PROB_CURRENT $matches[1]
echo "chose option 1"
return
end
end
set -g dcmd "dialog --stdout --no-tags --menu 'select the file to edit' 20 60 20 "
set c 1
for option in $matches
set l (basename "$option")
set -g dcmd "$dcmd $c '$l'"
set c (math $c + 1)
end
set choice (eval "$dcmd")
#clear
if test $status -eq 0
echo "edit option $choice"
set -U FD_PROB_CURRENT $matches[$choice]
end
end
, когда я вызываю problem_open
напрямую, диалог отображается нормально. Когда я вызываю функцию косвенно, через emit on_problem_open
диалоговое окно не отображается.
Есть идеи, почему это происходит? Это ожидаемое поведение с событиями?
Я могу обойти эту проблему, но это будет нелепый взлом.