Mercurial > emacs
comparison lisp/progmodes/gdb-ui.el @ 94445:52a0ed7601cb
(gdb-info-stack-custom): Use
gud-tool-bar-item-visible-no-fringe.
(gdb-display-buffer): Don't pop new buffer if gud-comint-buffer
is already visible in frame. Remove optional size parameter
and add optional frame parameter.
author | Nick Roberts <nickrob@snap.net.nz> |
---|---|
date | Tue, 29 Apr 2008 00:41:23 +0000 |
parents | 912b9ac13852 |
children | 149436454788 |
comparison
equal
deleted
inserted
replaced
94444:606c1d881bf0 | 94445:52a0ed7601cb |
---|---|
95 ;; (gud-go) sends "continue" to GDB (should be "run"). | 95 ;; (gud-go) sends "continue" to GDB (should be "run"). |
96 | 96 |
97 ;;; TODO: | 97 ;;; TODO: |
98 | 98 |
99 ;; 1) Use MI command -data-read-memory for memory window. | 99 ;; 1) Use MI command -data-read-memory for memory window. |
100 ;; 2) Use tree-widget.el instead of the speedbar for watch-expressions? | 100 ;; 2) Use tree-buffer.el (from ECB) instead of the speedbar for |
101 ;; watch-expressions? Handling of watch-expressions needs to be | |
102 ;; overhauled to work for large arrays/structures by creating variable | |
103 ;; objects for visible watch-expressions only. | |
101 ;; 3) Mark breakpoint locations on scroll-bar of source buffer? | 104 ;; 3) Mark breakpoint locations on scroll-bar of source buffer? |
102 | 105 |
103 ;;; Code: | 106 ;;; Code: |
104 | 107 |
105 (require 'gud) | 108 (require 'gud) |
2254 (while (< (point) (point-max)) | 2257 (while (< (point) (point-max)) |
2255 (setq bl (line-beginning-position) | 2258 (setq bl (line-beginning-position) |
2256 el (line-end-position)) | 2259 el (line-end-position)) |
2257 (when (looking-at "#") | 2260 (when (looking-at "#") |
2258 (add-text-properties bl el | 2261 (add-text-properties bl el |
2259 '(mouse-face highlight | 2262 '(mouse-face highlight |
2260 help-echo "mouse-2, RET: Select frame"))) | 2263 help-echo "mouse-2, RET: Select frame"))) |
2261 (goto-char bl) | 2264 (goto-char bl) |
2262 (when (looking-at "^#\\([0-9]+\\)") | 2265 (when (looking-at "^#\\([0-9]+\\)") |
2263 (when (string-equal (match-string 1) gdb-frame-number) | 2266 (when (string-equal (match-string 1) gdb-frame-number) |
2264 (if (> (car (window-fringes)) 0) | 2267 (if (gud-tool-bar-item-visible-no-fringe) |
2265 (progn | 2268 (progn |
2266 (or gdb-stack-position | 2269 (put-text-property bl (+ bl 4) |
2267 (setq gdb-stack-position (make-marker))) | 2270 'face '(:inverse-video t)) |
2268 (set-marker gdb-stack-position (point)) | 2271 (setq move-to bl)) |
2269 (setq move-to gdb-stack-position)) | 2272 (or gdb-stack-position |
2270 (put-text-property bl (+ bl 4) | 2273 (setq gdb-stack-position (make-marker))) |
2271 'face '(:inverse-video t)) | 2274 (set-marker gdb-stack-position (point)) |
2272 (setq move-to bl))) | 2275 (setq move-to gdb-stack-position))) |
2273 (when (re-search-forward "\\([^ ]+\\) (" el t) | 2276 (when (re-search-forward "\\([^ ]+\\) (" el t) |
2274 (put-text-property (match-beginning 1) (match-end 1) | 2277 (put-text-property (match-beginning 1) (match-end 1) |
2275 'face font-lock-function-name-face) | 2278 'face font-lock-function-name-face) |
2276 (setq bl (match-end 0)) | 2279 (setq bl (match-end 0)) |
2277 (while (re-search-forward "<\\([^>]+\\)>" el t) | 2280 (while (re-search-forward "<\\([^>]+\\)>" el t) |
3003 (buffer-read-only nil)) | 3006 (buffer-read-only nil)) |
3004 (erase-buffer) | 3007 (erase-buffer) |
3005 (insert-buffer-substring (gdb-get-buffer-create | 3008 (insert-buffer-substring (gdb-get-buffer-create |
3006 'gdb-partial-output-buffer)) | 3009 'gdb-partial-output-buffer)) |
3007 (set-window-start window start) | 3010 (set-window-start window start) |
3008 (set-window-point window p)) | 3011 (set-window-point window p))))) |
3009 ))) | |
3010 (run-hooks 'gdb-info-locals-hook)) | 3012 (run-hooks 'gdb-info-locals-hook)) |
3011 | 3013 |
3012 (defvar gdb-locals-mode-map | 3014 (defvar gdb-locals-mode-map |
3013 (let ((map (make-sparse-keymap))) | 3015 (let ((map (make-sparse-keymap))) |
3014 (suppress-keymap map) | 3016 (suppress-keymap map) |
3052 (special-display-frame-alist gdb-frame-parameters)) | 3054 (special-display-frame-alist gdb-frame-parameters)) |
3053 (display-buffer (gdb-get-buffer-create 'gdb-locals-buffer)))) | 3055 (display-buffer (gdb-get-buffer-create 'gdb-locals-buffer)))) |
3054 | 3056 |
3055 | 3057 |
3056 ;;;; Window management | 3058 ;;;; Window management |
3057 (defun gdb-display-buffer (buf dedicated &optional size) | 3059 (defun gdb-display-buffer (buf dedicated &optional frame) |
3058 (let ((answer (get-buffer-window buf 0)) | 3060 (let ((answer (get-buffer-window buf (or frame 0))) |
3059 (must-split nil)) | 3061 (must-split nil)) |
3060 (if answer | 3062 (if answer |
3061 (display-buffer buf nil 0) ;Deiconify the frame if necessary. | 3063 (display-buffer buf nil (or frame 0)) ;Deiconify the frame if necessary. |
3062 ;; The buffer is not yet displayed. | 3064 (if (get-buffer-window gud-comint-buffer) |
3063 (pop-to-buffer gud-comint-buffer) ;Select the right frame. | 3065 (select-window (get-buffer-window gud-comint-buffer)) |
3066 ;; If the buffer is not yet displayed, select the right frame. | |
3067 (pop-to-buffer gud-comint-buffer)) | |
3064 (let ((window (get-lru-window))) | 3068 (let ((window (get-lru-window))) |
3065 (if (and window | 3069 (if (and window |
3066 (not (memq window `(,(get-buffer-window gud-comint-buffer) | 3070 (not (memq window `(,(get-buffer-window gud-comint-buffer) |
3067 ,gdb-source-window)))) | 3071 ,gdb-source-window)))) |
3068 (progn | 3072 (progn |
3069 (set-window-buffer window buf) | 3073 (set-window-buffer window buf) |
3070 (setq answer window)) | 3074 (setq answer window)) |
3071 (setq must-split t))) | 3075 (setq must-split t))) |
3072 (if must-split | 3076 (if must-split |
3073 (let* ((largest (get-largest-window)) | 3077 (let* ((largest (get-largest-window)) |
3074 (cur-size (window-height largest)) | 3078 (cur-size (window-height largest))) |
3075 (new-size (and size (< size cur-size) (- cur-size size)))) | 3079 (setq answer (split-window largest)) |
3076 (setq answer (split-window largest new-size)) | |
3077 (set-window-buffer answer buf) | 3080 (set-window-buffer answer buf) |
3078 (set-window-dedicated-p answer dedicated))) | 3081 (set-window-dedicated-p answer dedicated))) |
3079 answer))) | 3082 answer))) |
3080 | 3083 |
3081 | 3084 |