aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKim F. Storm2005-10-24 22:06:47 +0000
committerKim F. Storm2005-10-24 22:06:47 +0000
commit64ef03e90ed191729d5429e850664f27fbf2d5e2 (patch)
tree9f4ac28847d06613d351a6ddd4d4bbd38d784f70
parent47ab3ac3ab4ac76698d7e041b5587f6f0a1f6490 (diff)
downloademacs-64ef03e90ed191729d5429e850664f27fbf2d5e2.tar.gz
emacs-64ef03e90ed191729d5429e850664f27fbf2d5e2.zip
(gdb-ann3): Bind mouse-3 in left fringe
to gdb-mouse-toggle-breakpoint-fringe. (gdb-mouse-toggle-breakpoint-margin): Rename from gdb-mouse-toggle-breakpoint. Fix doc. (gdb-mouse-toggle-breakpoint-fringe): New defun. (gdb-put-string): Add optional SPROPS arg. Add props to string. (gdb-put-breakpoint-icon): Add gdb-bptno and gdb-enabled string properties also for fringe breakpoint bitmaps.
-rw-r--r--lisp/progmodes/gdb-ui.el58
1 files changed, 44 insertions, 14 deletions
diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el
index 9b48f7403b3..61b537bfc44 100644
--- a/lisp/progmodes/gdb-ui.el
+++ b/lisp/progmodes/gdb-ui.el
@@ -350,10 +350,9 @@ Also display the main routine in the disassembly buffer if present."
350 (define-key gud-minor-mode-map [left-fringe mouse-1] 350 (define-key gud-minor-mode-map [left-fringe mouse-1]
351 'gdb-mouse-set-clear-breakpoint) 351 'gdb-mouse-set-clear-breakpoint)
352 (define-key gud-minor-mode-map [left-margin mouse-3] 352 (define-key gud-minor-mode-map [left-margin mouse-3]
353 'gdb-mouse-toggle-breakpoint) 353 'gdb-mouse-toggle-breakpoint-margin)
354; Currently only works in margin. 354 (define-key gud-minor-mode-map [left-fringe mouse-3]
355; (define-key gud-minor-mode-map [left-fringe mouse-3] 355 'gdb-mouse-toggle-breakpoint-fringe)
356; 'gdb-mouse-toggle-breakpoint)
357 356
358 (setq comint-input-sender 'gdb-send) 357 (setq comint-input-sender 'gdb-send)
359 ;; 358 ;;
@@ -1400,8 +1399,8 @@ static char *magick[] = {
1400 (gud-remove nil) 1399 (gud-remove nil)
1401 (gud-break nil))))))) 1400 (gud-break nil)))))))
1402 1401
1403(defun gdb-mouse-toggle-breakpoint (event) 1402(defun gdb-mouse-toggle-breakpoint-margin (event)
1404 "Enable/disable breakpoint in left fringe/margin with mouse click." 1403 "Enable/disable breakpoint in left margin with mouse click."
1405 (interactive "e") 1404 (interactive "e")
1406 (mouse-minibuffer-check event) 1405 (mouse-minibuffer-check event)
1407 (let ((posn (event-end event))) 1406 (let ((posn (event-end event)))
@@ -1419,7 +1418,33 @@ static char *magick[] = {
1419 0 'gdb-enabled (car (posn-string posn))) 1418 0 'gdb-enabled (car (posn-string posn)))
1420 "disable " 1419 "disable "
1421 "enable ") 1420 "enable ")
1422 bptno "\n")) 'ignore)))))))) 1421 bptno "\n"))
1422 'ignore))))))))
1423
1424(defun gdb-mouse-toggle-breakpoint-fringe (event)
1425 "Enable/disable breakpoint in left fringe with mouse click."
1426 (interactive "e")
1427 (mouse-minibuffer-check event)
1428 (let* ((posn (event-end event))
1429 (pos (posn-point posn))
1430 obj)
1431 (when (numberp pos)
1432 (with-selected-window (posn-window posn)
1433 (save-excursion
1434 (set-buffer (window-buffer (selected-window)))
1435 (goto-char pos)
1436 (dolist (overlay (overlays-in pos pos))
1437 (when (overlay-get overlay 'put-break)
1438 (setq obj (overlay-get overlay 'before-string))))
1439 (when (stringp obj)
1440 (gdb-enqueue-input
1441 (list
1442 (concat
1443 (if (get-text-property 0 'gdb-enabled obj)
1444 "disable "
1445 "enable ")
1446 (get-text-property 0 'gdb-bptno obj) "\n")
1447 'ignore))))))))
1423 1448
1424(defun gdb-breakpoints-buffer-name () 1449(defun gdb-breakpoints-buffer-name ()
1425 (with-current-buffer gud-comint-buffer 1450 (with-current-buffer gud-comint-buffer
@@ -2456,7 +2481,7 @@ of the current session."
2456 (error (setq gdb-find-file-unhook t))))) 2481 (error (setq gdb-find-file-unhook t)))))
2457 2482
2458;;from put-image 2483;;from put-image
2459(defun gdb-put-string (putstring pos &optional dprop) 2484(defun gdb-put-string (putstring pos &optional dprop &rest sprops)
2460 "Put string PUTSTRING in front of POS in the current buffer. 2485 "Put string PUTSTRING in front of POS in the current buffer.
2461PUTSTRING is displayed by putting an overlay into the current buffer with a 2486PUTSTRING is displayed by putting an overlay into the current buffer with a
2462`before-string' string that has a `display' property whose value is 2487`before-string' string that has a `display' property whose value is
@@ -2467,7 +2492,9 @@ PUTSTRING."
2467 (let ((overlay (make-overlay pos pos buffer)) 2492 (let ((overlay (make-overlay pos pos buffer))
2468 (prop (or dprop 2493 (prop (or dprop
2469 (list (list 'margin 'left-margin) putstring)))) 2494 (list (list 'margin 'left-margin) putstring))))
2470 (put-text-property 0 (length string) 'display prop string) 2495 (put-text-property 0 1 'display prop string)
2496 (if sprops
2497 (add-text-properties 0 1 sprops string))
2471 (overlay-put overlay 'put-break t) 2498 (overlay-put overlay 'put-break t)
2472 (overlay-put overlay 'before-string string)))) 2499 (overlay-put overlay 'before-string string))))
2473 2500
@@ -2490,21 +2517,24 @@ BUFFER nil or omitted means use the current buffer."
2490 (add-text-properties 2517 (add-text-properties
2491 0 1 '(help-echo "mouse-1: set/clear bkpt, mouse-3: enable/disable bkpt") 2518 0 1 '(help-echo "mouse-1: set/clear bkpt, mouse-3: enable/disable bkpt")
2492 putstring) 2519 putstring)
2493 (if enabled (add-text-properties 2520 (if enabled
2494 0 1 `(gdb-bptno ,bptno gdb-enabled t) putstring) 2521 (add-text-properties
2522 0 1 `(gdb-bptno ,bptno gdb-enabled t) putstring)
2495 (add-text-properties 2523 (add-text-properties
2496 0 1 `(gdb-bptno ,bptno gdb-enabled nil) putstring)) 2524 0 1 `(gdb-bptno ,bptno gdb-enabled nil) putstring))
2497 (gdb-remove-breakpoint-icons start end) 2525 (gdb-remove-breakpoint-icons start end)
2498 (if (display-images-p) 2526 (if (display-images-p)
2499 (if (>= (or left-fringe-width 2527 (if (>= (or left-fringe-width
2500 (if source-window (car (window-fringes source-window))) 2528 (if source-window (car (window-fringes source-window)))
2501 gdb-buffer-fringe-width) 8) 2529 gdb-buffer-fringe-width) 8)
2502 (gdb-put-string 2530 (gdb-put-string
2503 nil (1+ start) 2531 nil (1+ start)
2504 `(left-fringe breakpoint 2532 `(left-fringe breakpoint
2505 ,(if enabled 2533 ,(if enabled
2506 'breakpoint-enabled 2534 'breakpoint-enabled
2507 'breakpoint-disabled))) 2535 'breakpoint-disabled))
2536 'gdb-bptno bptno
2537 'gdb-enabled enabled)
2508 (when (< left-margin-width 2) 2538 (when (< left-margin-width 2)
2509 (save-current-buffer 2539 (save-current-buffer
2510 (setq left-margin-width 2) 2540 (setq left-margin-width 2)