static name_token command_help[] = {
  { BREAKPOINTS, "List breakpoints.\nAn argument specifies a specific breakpoint to list." },
  { QUIT, "Exit nitfol." },
  { LANGUAGE, "Show the current source language." },
  { COND, "Set a condition for an existing breakpoint." },
  { RESTORE, "Restore a saved game." },
  { BREAK, "Set a breakpoint.\nAn 'if' clause specifies a condition." },
  { STEPI, "Step exactly one instruction.\nAn argument specifies a repeat count." },
  { RESTART, "Restart the game." },
  { OBJECT_TREE, "Display the object tree.\nAn argument says which object to use as the root of the tree." },
  { DISABLE_DISPLAY, "Temporarily disable an automatic display." },
  { SELECT_FRAME, "Select a specific stack frame." },
  { ALIAS, "Add an alias" },
  { DOWN_SILENTLY, "Silently select the child of the selected frame.\nAn argument specifies how many frames down to go." },
  { FRAME, "Show the selected stack frame.\nAn argument specifies a stack frame to show." },
  { GIVE, "Give an object an attribute.\nWith a tilde clears the attribute instead of setting it." },
  { SET, "Evaluate an expression without printing its value." },
  { PRINT, "Evaluates an expression and prints the result.\nThis can include function calls." },
  { UP_FRAME, "Select the parent of the selected frame.\nAn argument specifies how many frames up to go." },
  { '#', "Enter a comment" },
  { CONT, "Continue execution.\nAn argument sets the ignore count of the current breakpoint." },
  { DUMPMEM, "Dump memory to a file" },
  { UNDO, "Undo last move (not last debugger command)." },
  { DISPLAY, "Print value of an expression each time the program stops." },
  { MOVE, "Move an object around the object tree." },
  { UP_SILENTLY, "Select the parent of the selected frame silently.\nAn argument specifies how many frames up to go." },
  { COPYING, "Show licensing information." },
  { RECORDOFF, "Stop recording a script." },
  { JUMP, "Continue execution at a new location." },
  { RECORDON, "Start recording a script." },
  { RALIAS, "Add a recursive alias" },
  { LIST_GLOBALS, "List all global variables and their values.\nWith an argument, list all only those with a specific value." },
  { BACKTRACE, "Display the parent functions of the current frame.\nAn argument specifies how many frames back to show.\nIf the argument is negative, start from the first frame instead of the current." },
  { FIND, "Find objects whose shortnames contain a string." },
  { FINISH, "An argument specifies a repeat count." },
  { DOWN_FRAME, "Select the child of the selected frame.\nAn argument specifies how many frames down to go." },
  { IGNORE, "Set the ignore count for a breakpoint." },
  { REPLAYOFF, "Halt replay." },
  { NEXTI, "Step one instruction, stepping over subroutine calls.\nStep a specified number of instructions, stepping over subroutine calls." },
  { HELP, "Print list of commands." },
  { REDO, "Redo undid move.  Only works immediately after an 'undo'." },
  { ENABLE_BREAK, "Re-enabled a breakpoint." },
  { UNTIL, "Resume execution until the program reaches a line number greater than the current line." },
  { REPLAY, "Replay a recorded script." },
  { UNALIAS, "Remove an alias" },
  { REMOVE, "Remove an object from the object tree." },
  { INFOSOURCES, "List source files." },
  { DELETE, "Delete a breakpoint." },
  { SYMBOL_FILE, "Load debugging info from a file (usually 'gameinfo.dbg')." },
  { AUTOMAP, "Start automapping" },
  { WARRANTY, "Show warranty information." },
  { DISABLE_BREAK, "Temporarily disable a breakpoint." },
  { UNDISPLAY, "Stop automatically displaying an expression." },
  { ENABLE_DISPLAY, "Re-enable an automatic display." },
  { STEP, "Step through program to a different source line.\nAn argument specifies a repeat count." },
  { INFOSOURCE, "Get information on the current source file." },
  { NEXT, "Step through program, stepping over subroutine calls.\nAn argument specifies a repeat count." }
};
