delimiter sounds like a good choice to split the two attribute lists; persistent vs transient. So long as it's still possible to use persistent attribute mutations in the same line. i.e.
Code: Select all
e incredulous -blink @ talk -armcross "Didn't expect to see you here!"
If you'll humour me, in a world free from legacy concerns, being able to do stuff like the example below would be really nice. Having +
denote tag/attribute mutations, while absence of either would result in resetting them, and only attributes prefixed with +
would be valid beyond the proposed @
delimiter. This syntax modification would make the attribute mutations much more explicit and distinct from regular tag usage and (IMO) more intuitive to reason about without requiring the domain knowledge that tags are cumulative. That said, I do appreciate that would be a breaking change and would at the very least require a project level config flag to enable it (perhaps config.cumulative_attributes = True|False
?), but it seemed like the right time to bring it up as it's tangentially related to this feature/suggestion.
Code: Select all
show eileen eyecontact at left
e +wave @ +talk "Hi there!" # eyecontact, wave, talk
e "( Why am I still waving? I should stop! )" # eyecontact, wave
e -wave @ +talk +blush -eyecontact "Oops! Sometimes my arm just gets carried away!" # talk, blush
e @ +talk "Let's just pretend that didn't happen, ok?" # eyecontact, talk
e sit "( Perhaps I'll be calmer sitting down )" # sit (all other attrs have been reset)
P.S. Also, I did eventually get the config.speaking_attribute
speaking attribute working. I had been working on the 7.0.0 SDK, where it didn't always clear tags when using layeredimages. Updating to 7.1.3 solved that particular issue.