(vc-fetch-master-properties): For RCS file,
[bpt/emacs.git] / lisp / gud.el
index a12c84c..58e2670 100644 (file)
 ;; before use.)
 (defvar gud-menu-map (make-sparse-keymap "Gud") nil)
 (define-key gud-menu-map [refresh] '("Refresh" . gud-refresh))
-(define-key gud-menu-map [remove] '("Remove breakpoint" . gud-remove))
+(define-key gud-menu-map [remove] '("Remove Breakpoint" . gud-remove))
 (define-key gud-menu-map [tbreak] nil) ; gdb, sdb and xdb
-(define-key gud-menu-map [break] '("Set breakpoint" . gud-break))
+(define-key gud-menu-map [break] '("Set Breakpoint" . gud-break))
 (define-key gud-menu-map [up] nil)     ; gdb, dbx, and xdb
 (define-key gud-menu-map [down] nil)   ; gdb, dbx, and xdb
-(define-key gud-menu-map [print] '("Print expression" . gud-print))
+(define-key gud-menu-map [print] '("Print Expression" . gud-print))
 (define-key gud-menu-map [finish] nil) ; gdb or xdb
-(define-key gud-menu-map [stepi] '("Step instruction" . gud-stepi))
-(define-key gud-menu-map [step] '("Step line" . gud-step))
-(define-key gud-menu-map [next] '("Next line" . gud-next))
+(define-key gud-menu-map [stepi] '("Step Instruction" . gud-stepi))
+(define-key gud-menu-map [step] '("Step Line" . gud-step))
+(define-key gud-menu-map [next] '("Next Line" . gud-next))
 (define-key gud-menu-map [cont] '("Continue" . gud-cont))
 \f
 ;; ======================================================================
@@ -230,18 +230,26 @@ we're in the GUD buffer)."
   "Return a new keymap which inherits from MAP and has name `Gud'."
   (nconc (make-sparse-keymap "Gud") map))
 
+(defun gud-make-debug-menu ()
+  "Make sure the current local map has a [menu-bar debug] submap.
+If it doesn't, replace it with a new map that inherits it,
+and create such a submap in that new map."
+  (if (lookup-key (current-local-map) [menu-bar debug])
+      nil
+    (use-local-map (gud-new-keymap (current-local-map)))
+    (define-key (current-local-map) [menu-bar debug]
+      (cons "Gud" (gud-new-keymap gud-menu-map)))))
+
 (defun gud-gdb-find-file (f)
   (save-excursion
     (let ((buf (find-file-noselect f)))
       (set-buffer buf)
-      (use-local-map (gud-new-keymap (current-local-map)))
-      (define-key (current-local-map) [menu-bar debug]
-       (cons "Gud" (gud-new-keymap gud-menu-map)))
+      (gud-make-debug-menu)
       (local-set-key [menu-bar debug tbreak]
-                    '("Temporary breakpoint" . gud-tbreak))
-      (local-set-key [menu-bar debug finish] '("Finish function" . gud-finish))
-      (local-set-key [menu-bar debug up] '("Up stack" . gud-up))
-      (local-set-key [menu-bar debug down] '("Down stack" . gud-down))
+                    '("Temporary Breakpoint" . gud-tbreak))
+      (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
+      (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
+      (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
       buf)))
 
 (defvar gdb-minibuffer-local-map nil
@@ -281,10 +289,10 @@ and source-file directory for your debugger."
   (gud-def gud-print  "print %e"     "\C-p" "Evaluate C expression at point.")
 
   (local-set-key "\C-i" 'gud-gdb-complete-command)
-  (local-set-key [menu-bar debug tbreak] '("Temporary breakpoint" . gud-tbreak))
-  (local-set-key [menu-bar debug finish] '("Finish function" . gud-finish))
-  (local-set-key [menu-bar debug up] '("Up stack" . gud-up))
-  (local-set-key [menu-bar debug down] '("Down stack" . gud-down))
+  (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
+  (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
+  (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
+  (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
   (setq comint-prompt-regexp "^(.*gdb[+]?) *")
   (setq paragraph-start comint-prompt-regexp)
   (run-hooks 'gdb-mode-hook)
@@ -455,10 +463,8 @@ available with older versions of GDB."
                   (find-tag-noselect f)
                 (find-file-noselect f))))
       (set-buffer buf)
-      (use-local-map (gud-new-keymap (current-local-map)))
-      (define-key (current-local-map) [menu-bar debug]
-       (cons "Gud" (gud-new-keymap gud-menu-map)))
-      (local-set-key [menu-bar debug tbreak] '("Temporary breakpoint" . gud-tbreak))
+      (gud-make-debug-menu)
+      (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
       buf)))
 
 ;;;###autoload
@@ -494,7 +500,7 @@ and source-file directory for your debugger."
   (setq comint-prompt-regexp  "\\(^\\|\n\\)\\*")
   (setq paragraph-start comint-prompt-regexp)
   (local-set-key [menu-bar debug tbreak]
-    '("Temporary breakpoint" . gud-tbreak))
+    '("Temporary Breakpoint" . gud-tbreak))
   (run-hooks 'sdb-mode-hook)
   )
 \f
@@ -688,11 +694,9 @@ This works in IRIX 4, 5 and 6.")
   (save-excursion
     (let ((buf (find-file-noselect f)))
       (set-buffer buf)
-      (use-local-map (gud-new-keymap (current-local-map)))
-      (define-key (current-local-map) [menu-bar debug]
-       (cons "Gud" (gud-new-keymap gud-menu-map)))
-      (local-set-key [menu-bar debug up] '("Up stack" . gud-up))
-      (local-set-key [menu-bar debug down] '("Down stack" . gud-down))
+      (gud-make-debug-menu)
+      (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
+      (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
       buf)))
 
 ;;;###autoload
@@ -752,8 +756,8 @@ and source-file directory for your debugger."
 
   (setq comint-prompt-regexp  "^[^)\n]*dbx) *")
   (setq paragraph-start comint-prompt-regexp)
-  (local-set-key [menu-bar debug up] '("Up stack" . gud-up))
-  (local-set-key [menu-bar debug down] '("Down stack" . gud-down))
+  (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
+  (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
   (run-hooks 'dbx-mode-hook)
   )
 \f
@@ -820,16 +824,13 @@ containing the executable being debugged.")
       (if realf
          (let ((buf (find-file-noselect realf)))
            (set-buffer buf)
-           (use-local-map (gud-new-keymap (current-local-map)))
-           (define-key (current-local-map) [menu-bar debug]
-             (cons "Gud" (gud-new-keymap gud-menu-map)))
+           (gud-make-debug-menu)
            (local-set-key [menu-bar debug tbreak]
-                          '("Temporary breakpoint" . gud-tbreak))
+                          '("Temporary Breakpoint" . gud-tbreak))
            (local-set-key [menu-bar debug finish]
-                          '("Finish function" . gud-finish))
-           (local-set-key [menu-bar debug up] '("Up stack" . gud-up))
-           (local-set-key [menu-bar debug up] '("Up stack" . gud-up))
-           (local-set-key [menu-bar debug down] '("Down stack" . gud-down))
+                          '("Finish Function" . gud-finish))
+           (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
+           (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
            buf)
        nil))))
 
@@ -866,10 +867,10 @@ directories if your program contains sources from more than one directory."
 
   (setq comint-prompt-regexp  "^>")
   (setq paragraph-start comint-prompt-regexp)
-  (local-set-key [menu-bar debug tbreak] '("Temporary breakpoint" . gud-tbreak))
-  (local-set-key [menu-bar debug finish] '("Finish function" . gud-finish))
-  (local-set-key [menu-bar debug up] '("Up stack" . gud-up))
-  (local-set-key [menu-bar debug down] '("Down stack" . gud-down))
+  (local-set-key [menu-bar debug tbreak] '("Temporary Breakpoint" . gud-tbreak))
+  (local-set-key [menu-bar debug finish] '("Finish Function" . gud-finish))
+  (local-set-key [menu-bar debug up] '("Up Stack" . gud-up))
+  (local-set-key [menu-bar debug down] '("Down Stack" . gud-down))
   (run-hooks 'xdb-mode-hook))
 \f
 ;; ======================================================================
@@ -879,7 +880,7 @@ directories if your program contains sources from more than one directory."
 (defvar gud-perldb-history nil)
 
 (defun gud-perldb-massage-args (file args)
-  (cons "-d" (cons "-emacs" args)))
+  (cons "-d" (cons (car args) (cons "-emacs" (cdr args)))))
 
 ;; There's no guarantee that Emacs will hand the filter the entire
 ;; marker at once; it could be broken up across several strings.  We
@@ -937,7 +938,7 @@ directories if your program contains sources from more than one directory."
   (save-excursion
     (let ((buf (find-file-noselect f)))
       (set-buffer buf)
-      (define-key (current-local-map) [menu-bar debug] (cons "Gud" (copy-keymap gud-menu-map)))
+      (gud-make-debug-menu)
       buf)))
 
 ;;;###autoload
@@ -1077,10 +1078,9 @@ comint mode, which see."
   (setq major-mode 'gud-mode)
   (setq mode-name "Debugger")
   (setq mode-line-process '(":%s"))
-  (use-local-map (gud-new-keymap comint-mode-map))
+  (use-local-map comint-mode-map)
+  (gud-make-debug-menu)
   (define-key (current-local-map) "\C-c\C-l" 'gud-refresh)
-  (define-key (current-local-map) [menu-bar debug]
-    (cons "Gud" (gud-new-keymap gud-menu-map)))
   (make-local-variable 'gud-last-frame)
   (setq gud-last-frame nil)
   (make-local-variable 'comint-prompt-regexp)
@@ -1156,7 +1156,7 @@ comint mode, which see."
       (if w
          (setcar w file)))
     (apply 'make-comint (concat "gud" filepart) program nil
-          (if file-word (funcall massage-args file args) args)))
+          (funcall massage-args file args)))
   ;; Since comint clobbered the mode, we don't set it until now.
   (gud-mode)
   (make-local-variable 'gud-marker-filter)