diff --git i/src/textual.cc w/src/textual.cc index 5488c6a3..dfbcbcbc 100644 --- i/src/textual.cc +++ w/src/textual.cc @@ -255,7 +255,7 @@ void instance_t::parse() bool error_flag = false; xact_t * previous_xact = NULL; - while (in.good() && ! in.eof()) { + while (in.good() && ! in.eof() && in.peek() != '^' && in.good()) { try { if (xact_t * xact = read_next_directive(error_flag, previous_xact)) { previous_xact = xact; diff --git i/src/xact.cc w/src/xact.cc index a0e5b8b4..00bfc9c8 100644 --- i/src/xact.cc +++ w/src/xact.cc @@ -814,7 +814,14 @@ void auto_xact_t::extend_xact(xact_base_t& xact, parse_context_t& context) string fullname = account->fullname(); assert(! fullname.empty()); - if (contains(fullname, "$account")) { + if (contains(fullname, "$account_base")) { + fullname = regex_replace(fullname, regex("\\$account_base\\>"), + initial_post->account->name); + while (account->parent) + account = account->parent; + account = account->find_account(fullname); + } + else if (contains(fullname, "$account")) { fullname = regex_replace(fullname, regex("\\$account\\>"), initial_post->account->fullname()); while (account->parent)