diff options
| author | Kim F. Storm | 2005-10-24 22:06:47 +0000 |
|---|---|---|
| committer | Kim F. Storm | 2005-10-24 22:06:47 +0000 |
| commit | 64ef03e90ed191729d5429e850664f27fbf2d5e2 (patch) | |
| tree | 9f4ac28847d06613d351a6ddd4d4bbd38d784f70 | |
| parent | 47ab3ac3ab4ac76698d7e041b5587f6f0a1f6490 (diff) | |
| download | emacs-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.el | 58 |
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. |
| 2461 | PUTSTRING is displayed by putting an overlay into the current buffer with a | 2486 | PUTSTRING 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) |