              (type-info (shm-node-type-info node)))
         (if type-info
             (shm-present-type-info node type-info)
-          (error "Unable to get type information for that node (tried the whole decl, too)."))))
+          (if shm-type-info-fallback-to-ghci
+              (haskell-process-do-type)
+            (error "Unable to get type information for that node (tried the whole decl, too).")))))
      (t (error "Not an expression, operator, pattern binding or declaration.")))))
 
 (defun shm/describe-node (&optional node)

  :group 'shm
  :type 'bool)

(defcustom shm-idle-timeout
  0.2
  "Number of seconds before re-parsing."

      (let ((type-info (shm-node-type-info current)))
        (if type-info
            (shm-present-type-info current type-info)
          (if shm-type-info-fallback-to-ghci
              (haskell-process-do-type)
            (error "Unable to get type information for that node.")))))
     ((and (string= (shm-node-type-name current) "Name")
           (let ((parent-name (shm-node-type-name (cdr (shm-node-parent (shm-current-node-pair))))))
             (or (string= parent-name "Match")
