diff --git a/src/mod/core.sh b/src/mod/core.sh index f293071..d8d8a49 100644 --- a/src/mod/core.sh +++ b/src/mod/core.sh @@ -16,7 +16,19 @@ std::backtrace() { std::eprintln $'\033[4m'"Backtrace:" for i in "${!FUNCNAME[@]}"; do - std::eprintln " ${FUNCNAME[$i]} called at ${BASH_SOURCE[$i]}:${BASH_LINENO[$i - 1]}" + std::eprintln " $i: ${FUNCNAME[$i]}" + + local src + src=$(realpath --relative-to "$PWD" -e "${BASH_SOURCE[$i]}") + if [ "${src:0:1}" != "." ]; then + src=./$src + fi + + if [ "${BASH_LINENO[$i]}" -eq 0 ]; then + std::eprintln $'\033[0m'" at "$'\033[1;35m'"$src" + else + std::eprintln $'\033[0m'" at "$'\033[1;35m'"$src:${BASH_LINENO[$i]}" + fi done }