     (define-key map [menu-bar debugger view breakpoints]
       (rdebug-menu-item common-map
                         "Breakpoints" 'rdebug-display-breakpoints-buffer))
+
+    (define-key map [menu-bar debugger view source]
+      (rdebug-menu-item common-map
+                        "Source" 'rdebug-display-source-buffer))
     menu))
 
 

          (t
           2))))


(defun rdebug-pick-source-window ()
  "Display the source file pointed to by `gud-last-frame'"
  (let* ((buffer (gud-find-file (car gud-last-frame)))
         (window
          (or
           ;; Buffer is already visible, re-use the window.
           (get-buffer-window buffer)
           ;; Re-use the last window
           (and gud-last-last-frame
                (get-buffer-window (gud-find-file (car gud-last-last-frame))))
           ;; Find a non-rdebug window.
           (let ((candidate nil)
                 (candidate-score -1))
             (dolist (win (window-list (selected-frame)))
               (let ((score (rdebug-pick-source-window-categorize-window win)))
                 (if (> score candidate-score)
                     (progn
                       (setq candidate       win)
                       (setq candidate-score score)))))
             candidate))))
    (save-selected-window
      (select-window window)
      (switch-to-buffer buffer))))


;; -------------------------------------------------------------------

  (define-key map "B" 'rdebug-display-breakpoints-buffer)
  (define-key map "C" 'rdebug-display-cmd-buffer)
  (define-key map "O" 'rdebug-display-output-buffer)
  (define-key map "S" 'rdebug-display-source-buffer)
  (define-key map "T" 'rdebug-display-stack-buffer)
  (define-key map "V" 'rdebug-display-variables-buffer)
  (define-key map "W" 'rdebug-display-watch-buffer)
