{Begin SubSec Greeting and User Profiles}
{Title Greeting and User Profiles}
{Text

{Tag Greeting}

{index greeting and user profiles}

Many of the features of Interlisp are parameterized to allow the user to adjust the system to his or her own tastes.  Among the more commonly adjusted parameters are {var PROMPT#FLG} ({PageRef var PROMPT#FLG}), {var DWIMWAIT} ({PageRef var DWIMWAIT}), {fn CHANGESLICE} ({PageRef fn CHANGESLICE}), {fn LOWERCASE} ({PageRef fn LOWERCASE}), {var #UNDOSAVES} ({PageRef var #UNDOSAVES}), {var INITIALSLST} ({PageRef var INITIALSLST}), etc.  In addition, the user can modify the action of system functions in ways not specifically provided for by using {fn ADVISE} ({PageRef Fn ADVISE}).

In order to encourage this procedure, and to make it as painless and automatic as possible, the programmeer's assistant includes a facility for both a site-defined profile and a user-defined profile.  When Interlisp is first run, it calls the function {fn GREET} (see below).  This provides a way of setting defaults for a particular community of users, patching bugs, etc.

Greeting (i.e., the initialization) is undoable, and is stored as a separate event on the history list ({pageref tag HistoryListFormat}).  The user can explicitly invoke the greeting operation at any time via the function {fn GREET}.  This can also be use to effect another user's initialization.



{FnDef {FnName GREET} {FnArgs NAME {anonarg}}
{Text
Performs the greeting for the user whose username is {arg NAME} (if {arg NAME}={lisp NIL}, uses the login name).  When Interlisp first starts up, it performs {lisp (GREET)}.

Before {fn GREET} performs the indicated initialization, it first undoes the effects of the previous greeting.  The side effects of the greeting operation are stored on a global variable as well as the history list, thus enabling the previous greeting to be undone even if it is no longer on the history list.  In addition, {fn MAKESYS} is advised to undo the effects of the previous greeting, thereby returning the system to a pristine state.

{fn GREET} initializes in the following way:  It first evaluates each item in the list {var PREGREETFORMS},{index PREGREETFORMS Var} then it loads the file returned from {lisp (GREETFILENAME T)}, then it loads the file returned from {lisp (GREETFILENAME {arg USERNAME})}, then it evaluates each item on {var POSTGREETFORMS},{index POSTGREETFORMS Var} and finally it prints a greeting such as "{lisp Hello, {arg XXX}.}", where {arg XXX} is the {arg FIRSTNAME} component of the user's entry on {var INITIALSLST} ({PageRef var INITIALSLST}).  The loads are performed "silently" by rebinding {var PRETTYHEADER} ({PageRef Var PRETTYHEADER}) to {lisp NIL}.
}}


{FnDef {FnName GREETFILENAME} {FnArgs USER}
{Text
{fn GREETFILENAME} is a system-dependent function.  Its purpose is to locate existing files used for greeting and return them.  If {arg USER} is {lisp T}, then it returns the filename of the site-defined profile (if it exists).  Otherwise, {arg USER} is interpreted to be a user's system name, and it returns the filename for the user-defined profile (if it exists).
}}



{VarDef {Name GREETDATES}
{Text
The value of {var GREETDATES} can be used to specify special greeting messages for various dates.  {var GREETDATES} is a list of elements of the form
{lisp ({arg DATESTRING} . {arg STRING})}, e.g. {lisp ("25-DEC" . "Merry Christmas")}.  The user can add entries to this list in his/her {lisp INIT.LISP} file by using a {filecom ADDVARS} file package command like {lisp (ADDVARS (GREETDATES ("8-FEB" . "Happy Birthday")))}.  On the specified date, the {fn GREET} will use the indicated salutation.
}}



{Begin Note}
Date: 17 JUL 1979 2208-PDT
From: TEITELMAN
Subject: greeting is now under a resetsave

permits user to change global settings just for the duration of the greeting.  separate resetlst for system initialization and user initializaion.
{End Note}


}{End SubSec Greeting and User Profiles}