             (setq p (+ 1 (point-max))))
         (setq p (next-single-property-change p prop))))))
 
+(defun sayid-current-buffer-except-sayid ()
+  (let ((cb (current-buffer) ))
+    (if (eq (sayid-find-a-window)
+            (get-buffer-window cb))
+        nil
+      cb)))
+
 (defun sayid-setup-buf (meta-ansi save-to-ring pos)
   (let ((id-at-point (get-text-property (point) 'id))  ;; we might not be in the sayid buffer, but whatever
-        (orig-buf (current-buffer))
+        (orig-buf (sayid-current-buffer-except-sayid))
         (sayid-buf (sayid-init-buf)))
     (if save-to-ring
         (push-buf-state-to-ring meta-ansi))

      (if id-at-point
          (try-goto-prop 'id id-at-point)
        (goto-char 1)))
    (pop-to-buffer orig-buf)))

(defun colorize ()
  (interactive)


(defun sayid-pprint-buf-exit ()
  (interactive)
  (sayid-pop-to-buffer-reuse-visible-sayid (car sayid-buf-spec)))

(defun sayid-get-views ()
  (sayid-req-get-value '("op" "sayid-get-views")))
