{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}