           (set-process-query-on-exit-flag proc nil)
           (set-process-filter proc 'rosemacs/rosnode-filter)))
       )))
+
+(defun rosemacs/get-stamp-string ()
+  (goto-char (point-min))
+  (let ((pos (re-search-forward "^\\(Last updated.*\\)$" nil t)))
+    (if pos
+	(match-string 1)
+      "Last updated: <>")))
+
+(defun update-ros-node-buffer ()
+  (let ((ros-node-buffer (get-buffer-create "*ros-nodes*")))
+    (save-excursion
+      (set-buffer ros-node-buffer)
+      (let ((old-stamp (rosemacs/get-stamp-string)))
+        (erase-buffer)
+        (princ (format "Master uri: %s\n" (getenv "ROS_MASTER_URI")) ros-node-buffer)
+        (princ old-stamp ros-node-buffer)
+        (let ((time-stamp-pattern "5/^Last updated: <%02H:%02M:%02S")) (time-stamp))
+        (princ "\n\n" ros-node-buffer)
+        (dolist (n rosemacs/nodes)
+          (princ (format "%s\n" n) ros-node-buffer))))))
+
 
 (defun rosemacs/display-nodes ()
   (interactive)

                 (end-pt (match-end 0)))
            (when found-finish
              (rosemacs/parse-node-list start-pt (match-beginning 0))
              (delete-region (point-min) end-pt)))))
    ))

(defun rosemacs/track-nodes (interval)
  (interactive "nEnter rosnode update interval in seconds (0 to stop tracking)")
  (let ((name "*rosnode-tracker*"))
    (let ((old-proc (get-process name)))
      (when old-proc

          (rosemacs-list-diffs rosemacs/nodes sorted-nodes)
        (setq rosemacs/nodes sorted-nodes
              rosemacs/nodes-vec (vconcat rosemacs/nodes))
        (update-ros-node-buffer)
        (when added
          (lwarn '(rosemacs) :debug "New nodes: %s" added)
          (rosemacs/add-event (format "New nodes: %s" added)))
