3.3.3. - Basic Utility Macros
These straightforward macros combine a number of built-in functions and commands to provide a higher level of functionality with minimal input. First, here is their usage:
help [topic] # Display help files config # Edit hardware configuration onsim # Turn on simulate mode offsim # Turn off simulate mode debug [value] # Select debugging categories bug # Mail a bug report whats object # Identify the object gpset variable value # Comment if a variable has changed
Here are the definitions for some:
# Examine help file, use default if no argument. def help ' if ($#) gethelp("$1"); else { local t for (t="help";;) if (gethelp(t) || (t = input("\nSubject? ")) == ") break } '
# View (and modify), then reread configuration file. # Use -s flag if in simulate mode. Re-order motor numbers # with _assign. Check for monochromator mnemonics. def config ' wait(-1) user_waitall sync unix(sprintf("%s/edconf %s %s/%s",\ SPECD, set_sim(-1)? "-s":", SPECD, SPEC)) reconfig user_config _assign _assign_mono ' def user_config ''
# Turn simulate mode on. Comment on printer and file if changed. def onsim '{ local t if (!(t = set_sim(1))) { qcomment "Simulate mode ON" } printf("Simulate was %s, is now %s.\n", t? "on":"off",\ set_sim(-1)? "ON":"OFF") }' # Turn simulate mode off. def offsim '{ local t if (t = set_sim(0)) { qcomment "Simulate mode OFF" } printf("Simulate was %s, is now %s.\n", t? "on":"off",\ set_sim(-1)? "ON":"OFF") }'
# Easy way to set the debug level. # +arg adds bits to DEBUG. -arg removes them. def debug '{ local t if ($# == 0) { gethelp("debug") t = input(sprintf("\nDebug value (%d)? ", DEBUG)) } else t = "$*" if (index(t, "+")) DEBUG |= 0+t else if (index(t, "-")) DEBUG &= ~(0-t) else DEBUG = 0+t }'
# Send a bug report to the administrator. def bug ' print "The mail utility will be run for you. Describe your" print "problem to the administrator. When you are done, type ^D." { local s s = unix(sprintf("%s -s \"Bug from %s\" %s", MAIL, USER, ADMIN)) printf("Bug report %ssent to %s.", s? "not ":", ADMIN) } '
# Set something and comment if it has changed. def gpset ' if ($1 != $2) { comment "$2 reset from %g to %g" "$2,$1" $2 = $1 } '