diff --git a/lib/call_stack.tcl b/lib/call_stack.tcl
index fe3158c..23ae17f 100755
--- a/lib/call_stack.tcl
+++ b/lib/call_stack.tcl
@@ -1,24 +1,21 @@
 #!/usr/bin/wish
 
-# This file provides many valuable stack inquiry procedures like
-# get_file_proc_names, get_stack_var, etc..
+# This file provides many valuable stack inquiry procedures like get_file_proc_names, get_stack_var, etc..
 
 my_source [list print.tcl]
 
 
 proc get_file_proc_names { file_path { name_regex "" } } {
 
-  # Get all proc names from the file indicated by file_path and return them
-  # as a list.
+  # Get all proc names from the file indicated by file_path and return them as a list.
 
   # Description of argument(s):
-  # file_path                       The path to the file whose proc names are
-  #                                 to be retrieved.
-  # name_regex                      A regular expression to be used to narrow
-  #                                 the result to just the desired procs.
+  # file_path                       The path to the file whose proc names are to be retrieved.
+  # name_regex                      A regular expression to be used to narrow the result to just the desired
+  #                                 procs.
 
-  # The first sed command serves to eliminate curly braces from the target
-  # file.  They are a distraction to what we are trying to do.
+  # The first sed command serves to eliminate curly braces from the target file.  They are a distraction to
+  # what we are trying to do.
   # TCL proc lines begin with...
   # - Zero or more spaces...
   # - The "proc" keyword...
@@ -34,14 +31,12 @@
 
 proc get_stack_var { var_name { default {} } { init_stack_ix 1 } } {
 
-  # Starting with the caller's stack level, search upward in the call stack,
-  # for a variable named "${var_name}" and return its value.  If the variable
-  # cannot be found, return ${default}.
+  # Starting with the caller's stack level, search upward in the call stack, for a variable named
+  # "${var_name}" and return its value.  If the variable cannot be found, return ${default}.
 
   # Description of argument(s):
   # var_name                        The name of the variable be searched for.
-  # default                         The value to return if the the variable
-  #                                 cannot be found.
+  # default                         The value to return if the the variable cannot be found.
 
   for {set stack_ix $init_stack_ix} {$stack_ix <= [info level]} \
       {incr stack_ix} {
@@ -56,19 +51,15 @@
 
 proc get_stack_var_level { var_name { init_stack_ix 1 } { fail_on_err 1 } } {
 
-  # Starting with the caller's stack level, search upward in the call stack,
-  # for a variable named "${var_name}" and return its associated stack level.
-  # If the variable cannot be found, return -1.
+  # Starting with the caller's stack level, search upward in the call stack, for a variable named
+  # "${var_name}" and return its associated stack level.  If the variable cannot be found, return -1.
 
   # Description of argument(s):
   # var_name                        The name of the variable be searched for.
-  # init_stack_ix                   The level of the stack where the search
-  #                                 should start.  The default is 1 which is
-  #                                 the caller's stack level.
-  # fail_on_err                     Indicates that if the variable cannot be
-  #                                 found on the stack, this proc should write
-  #                                 to stderr and exit with a non-zero return
-  #                                 code.
+  # init_stack_ix                   The level of the stack where the search should start.  The default is 1
+  #                                 which is the caller's stack level.
+  # fail_on_err                     Indicates that if the variable cannot be found on the stack, this proc
+  #                                 should write to stderr and exit with a non-zero return code.
 
   for {set stack_ix $init_stack_ix} {$stack_ix <= [info level]} \
       {incr stack_ix} {
@@ -91,16 +82,12 @@
 
 proc get_stack_proc_name { { level -1 } { include_args 0 } } {
 
-  # Get the name of the procedure at the indicated call stack level and
-  # return it.
+  # Get the name of the procedure at the indicated call stack level and return it.
 
   # Description of argument(s):
-  # level                           The call stack level: 0 would mean this
-  #                                 procedure's level (i.e.
-  #                                 get_stack_proc_name's level), -1 would
-  #                                 indicate the caller's level, etc.
-  # include_args                    Indicates whether proc arg values should
-  #                                 be included in the result.
+  # level                           The call stack level: 0 would mean this procedure's level (i.e.
+  #                                 get_stack_proc_name's level), -1 would indicate the caller's level, etc.
+  # include_args                    Indicates whether proc arg values should be included in the result.
 
   # Set default.
   set_var_default level -1
@@ -127,24 +114,19 @@
 
   # Example:
   # set call_stack [get_call_stack 0]
-  # call_stack: get_call_stack calc_wrap_stack_ix_adjust sprint_var
-  # sprint_vars print_vars
+  # call_stack: get_call_stack calc_wrap_stack_ix_adjust sprint_var sprint_vars print_vars
 
   # Description of argument(s):
-  # stack_top_ix                    The index to the bottom of the stack to be
-  #                                 returned.  0 means include the entire
-  #                                 stack.  1 means include the entire stack
-  #                                 with the exception of this procedure
-  #                                 itself, etc.
-  # include_args                    Indicates whether proc args should be
-  #                                 included in the result.
+  # stack_top_ix                    The index to the bottom of the stack to be returned.  0 means include the
+  #                                 entire stack.  1 means include the entire stack with the exception of
+  #                                 this procedure itself, etc.
+  # include_args                    Indicates whether proc args should be included in the result.
 
   set_var_default stack_top_ix -1
 
   # Get the current stack size.
   set stack_size [info level]
-  # Calculate stack_bottom_ix.  Example:  if stack_size is 5, stack_bottom_ix
-  # is -4.
+  # Calculate stack_bottom_ix.  Example:  if stack_size is 5, stack_bottom_ix is -4.
   set stack_bottom_ix [expr 1 - $stack_size]
   for {set stack_ix $stack_top_ix} {$stack_ix >= $stack_bottom_ix} \
       {incr stack_ix -1} {
