         session-client (repl/client-session repl-client :session session-id)
         responses-promise (promise)]
     (.setHistoryActionFn repl-view history-action-fn)
+    
+    ;; TODO need to make client-session accept a single arg to avoid
+    ;; dummy message sends
+    (handle-responses repl-view log-panel nil (session-client {:op "describe"}))
+    
     (comp (partial eval-expression repl-view log-panel session-client)
       (fn [expr add-to-log?]
         (reset! retained-input nil)

(defn eval-expression
  [repl-view log-component client expr]
  (try
    (handle-responses repl-view log-component expr
      (repl/message client (if (map? expr)
                             expr
                             {:op :eval :code expr :ns (.getCurrentNamespace repl-view)})))  
    (catch Throwable t
      (CCWPlugin/logError (eval-failure-msg nil expr) t)
      (log log-component (eval-failure-msg nil expr) :err))))

                                                        .getLaunch
                                                        ccw.launching.LaunchUtils/getProjectName))
        ^StyledText input-widget (.viewerWidget repl-view)
        ; a bunch of atoms are just fine, since access to them is already
        ; serialized via the SWT event thread
        history (atom history)
        current-step (atom -1)
        retained-input (atom nil)
