 (defmacro on-click
   "Takes a body of expressions and yields a View.OnClickListener object that
   will invoke the body.  The body takes an implicit argument 'view' that is the
-  view that was clicked." [& body]
+  view that was clicked."
+  [& body]
   `(on-click-call (fn [~'view] ~@body)))
 
 (defn on-create-context-menu-call
   "Takes a function and yields a View.OnCreateContextMenuListener object that
-  will invoke the function.  This function must take the three arguments
-  described in on-create-context-menu."
+  will invoke the function.  This function must take the following three
+  arguments:
+
+  menu: the context menu that is being built
+  view: the view for which the context menu is being built
+  info: extra information about the item for which the context menu should be
+        shown.  This information will vary depending on the class of view."
   [handler-fn]
   (reify android.view.View$OnCreateContextMenuListener
     (onCreateContextMenu [this menu view info]


(defn on-focus-change-call
  "Takes a function and yields a View.OnFocusChangeListener object that will
  invoke the function.  This function must take the three arguments This
  function must take the two arguments described in on-focus-change."
  [handler-fn]
  (reify android.view.View$OnFocusChangeListener
    (onFocusChange [this view focused?]

  key-code: the code for the physical key that was pressed
  event:    the KeyEvent object containing full information about the event

  The body should evaluate to a truthy value if it has consumed the event.
  Otherwise, it should evaluate to false or nil."
  [& body]
  `(on-key-call (fn [~'view ~'key-code ~'event] ~@body)))

