       )))
 
 (defun mural-query-save-tag (query)
+  "Run by ido-mode to refresh results on keypress.  Runs
+QUERY (the current contents of the minibuffer) against
+mural-current-tagfile, which was setup on entry to
+ido-completing-read"
   (let ((qresult (mural-query query mural-current-tagfile)))
     (setq mural-last-query-result qresult)
     (mapcar 'mural-tag-tagname qresult)))
 
-;;(mural-parse-response "MATCH foo bar 1\nMATCH hi bye 2\nDONE hi hi")
-;; returns '((tag file row) ...)
 (defun mural-parse-response (tagfile results)
+  "RESULTS is a tab-delimited string of the format
+    MATCH tag file row
+    ...
+    DONE ...
+
+mural-parse-response parses this into '((tag file-path row tagfile-path) ...).
+Filenames are resolved relative to TAGFILE"
   (delq nil
         (mapcar
          (lambda (x)
-           ;; spaces in the filename?  tough.
            (let ((row (split-string x "\t")))
              (if (equal (elt row 0) "MATCH")
                  ;; MATCH tag filename row

      proc)))

(defun mural-start-server (tagfile)
  (if (not tagfile)
      (error "tagfile not provided"))
  (message "Starting mural server")

  (elt tag 2))

(defun mural-open-dwim ()
  "Interactively search for a tag in the current repository and
open it in a new buffer"
  (interactive)
  (let ((taginfo (mural-read-tag (buffer-file-name))))
    (find-file (mural-tag-filename taginfo))
