Contextual provides profiles support for Emacs. Switching between contexts sets global variables and runs hooks to reflect switching the user's identity or the working environment.