aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/gdba.el76
1 files changed, 56 insertions, 20 deletions
diff --git a/gdb/gdba.el b/gdb/gdba.el
index 5f7d52a..09abd87 100644
--- a/gdb/gdba.el
+++ b/gdb/gdba.el
@@ -335,7 +335,8 @@ program."
(gdb-registers-buffer
gdb-registers-buffer-name)
(gdb-breakpoints-buffer
- gdb-breakpoints-buffer-name)
+ gdb-breakpoints-buffer-name
+ gud-breakpoints-mode)
(gdb-frames-buffer
gdb-frames-buffer-name)))
@@ -798,6 +799,8 @@ The key should be one of the cars in `gdb-instance-buffer-rules-assoc'."
(setq gdb-buffer-type key)
(make-variable-buffer-local 'gdb-buffer-instance)
(setq gdb-buffer-instance instance)
+ (if (cdr (cdr rules))
+ (funcall (car (cdr (cdr rules)))))
new))))
(defun gdb-rules-name-maker (rules) (car (cdr rules)))
@@ -867,6 +870,58 @@ The key should be one of the cars in `gdb-instance-buffer-rules-assoc'."
'gdb-breakpoints-buffer)))
+(defun gud-toggle-bp-this-line ()
+ (interactive)
+ (save-excursion
+ (beginning-of-line 1)
+ (if (not (looking-at "\\([0-9]*\\)\\s-*\\S-*\\s-*\\S-*\\s-*\\(.\\)"))
+ (error "Not recognized as breakpoint line (demo foo).")
+ (gdb-instance-enqueue-idle-input
+ gdb-buffer-instance
+ (list
+ (concat
+ (if (eq ?y (char-after (match-beginning 2)))
+ "server disable "
+ "server enable ")
+ (buffer-substring (match-beginning 0)
+ (match-end 1))
+ "\n")
+ '(lambda () nil)))
+ )))
+
+(defun gud-delete-bp-this-line ()
+ (interactive)
+ (save-excursion
+ (beginning-of-line 1)
+ (if (not (looking-at "\\([0-9]*\\)\\s-*\\S-*\\s-*\\S-*\\s-*\\(.\\)"))
+ (error "Not recognized as breakpoint line (demo foo).")
+ (gdb-instance-enqueue-idle-input
+ gdb-buffer-instance
+ (list
+ (concat
+ "server delete "
+ (buffer-substring (match-beginning 0)
+ (match-end 1))
+ "\n")
+ '(lambda () nil)))
+ )))
+
+(defvar gud-breakpoints-mode-map nil)
+
+(defun gud-breakpoints-mode ()
+ "Major mode for gud breakpoints.
+
+\\{gud-breakpoints-mode-map}"
+ (setq major-mode 'gud-breakpoints-mode)
+ (setq mode-name "Breakpoints")
+ (use-local-map gud-breakpoints-mode-map))
+
+(if gud-breakpoints-mode-map
+ nil
+ (setq gud-breakpoints-mode-map (make-sparse-keymap))
+ (define-key gud-breakpoints-mode-map " " 'gud-toggle-bp-this-line)
+ (define-key gud-breakpoints-mode-map "d" 'gud-delete-bp-this-line))
+
;;
;; Registers buffers
;;
@@ -1831,22 +1886,3 @@ Link exprs of the form:
(provide 'gud)
;;; gud.el ends here
-
-(defun gdb-toggle-bp-this-line ()
- (interactive)
- (save-excursion
- (beginning-of-line 1)
- (if (not (looking-at "\\([0-9]*\\)\\s-*\\S-*\\s-*\\S-*\\s-*\\(.\\)"))
- (error "Not recognized as breakpoint line (demo foo).")
- (gdb-instance-enqueue-idle-input
- gdb-buffer-instance
- (list
- (concat
- (if (eq ?y (char-after (match-beginning 2)))
- "server disable "
- "server enable ")
- (buffer-substring (match-beginning 0)
- (match-end 1))
- "\n")
- '(lambda () nil)))
- )))