-
Notifications
You must be signed in to change notification settings - Fork 3
Description
State set per-conference, such as macros set in a conference's rc file, persists after the user switches to a different conference. For example, if one joins the "unix" conference on M-Net, the prompt is set to a mock shell prompt for the superuser: m-net:/:# . However, if one then switches to (say) the "general" conference, one observes that one still has the same prompt from "unix".
Per-conference state ought to be set in a per-conference environment that is created on entry to the conference, and discarded when leaving. For macros, this is simple enough to do: have a conference-local macro dictionary that is consulted in expand before the global and default dictionaries (one may think of this as imperfectly analogous to block scoping in e.g. a programming language). Other sorts of state could be accommodated accordingly.
I'm sure there are edge cases that add complexity here. For example, suppose a user manually defines a macro while in some conference: where should that definition go? Suppose it goes into the global macro dictionary but refers to something local to the conference, etc. A set of reasonable decisions can be made here, but the design space is a touch wider than it appears on first glance.