aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/tooltip.el
diff options
context:
space:
mode:
authorNick Roberts <[email protected]>2005-04-27 22:01:14 +0000
committerNick Roberts <[email protected]>2005-04-27 22:01:14 +0000
commitabc7eb900345b1b4b3315f0fbbd70f8d4593e054 (patch)
tree718eb0d3c489084c814b7bf885a0d382250a23a3 /lisp/tooltip.el
parent9cc4d7dd649b05d5e07241dbe0b7cfcb5b51c5af (diff)
(tooltip-gud-tips): Show the associated #define
directives when a C program under GDB is not executing.
Diffstat (limited to 'lisp/tooltip.el')
-rw-r--r--lisp/tooltip.el43
1 files changed, 30 insertions, 13 deletions
diff --git a/lisp/tooltip.el b/lisp/tooltip.el
index 840aa3c200..69f35a9997 100644
--- a/lisp/tooltip.el
+++ b/lisp/tooltip.el
@@ -453,29 +453,46 @@ If TOOLTIP-GUD-DEREFERENCE is t, also prepend a `*' to EXPR."
"Show tip for identifier or selection under the mouse.
The mouse must either point at an identifier or inside a selected
region for the tip window to be shown. If tooltip-gud-dereference is t,
-add a `*' in front of the printed expression.
+add a `*' in front of the printed expression. In the case of a C program
+controlled by GDB, show the associated #define directives when program is
+not executing.
This function must return nil if it doesn't handle EVENT."
(let (process)
(when (and (eventp event)
tooltip-gud-tips-p
(boundp 'gud-comint-buffer)
+ gud-comint-buffer
+ (buffer-name gud-comint-buffer); gud-comint-buffer might be killed
(setq process (get-buffer-process gud-comint-buffer))
(posn-point (event-end event))
- (progn (setq tooltip-gud-event event)
- (eval (cons 'and tooltip-gud-display))))
+ (or (eq gud-minor-mode 'gdba)
+ (progn (setq tooltip-gud-event event)
+ (eval (cons 'and tooltip-gud-display)))))
(let ((expr (tooltip-expr-to-print event)))
(when expr
- (let ((cmd (tooltip-gud-print-command expr)))
- (unless (null cmd) ; CMD can be nil if unknown debugger
- (case gud-minor-mode
- (gdba (gdb-enqueue-input
- (list (concat cmd "\n") 'gdb-tooltip-print)))
- (t
- (setq tooltip-gud-original-filter (process-filter process))
- (set-process-filter process 'tooltip-gud-process-output)
- (gud-basic-call cmd)))
- expr)))))))
+ (if (and (eq gud-minor-mode 'gdba)
+ (not gdb-active-process))
+ (progn
+ (with-current-buffer
+ (window-buffer (let ((mouse (mouse-position)))
+ (window-at (cadr mouse)
+ (cddr mouse))))
+ (when (boundp 'cc-define-alist) ; might be a Fortran program
+ (let ((define-elt (assoc expr cc-define-alist)))
+ (unless (null define-elt)
+ (tooltip-show (cdr define-elt))
+ expr)))))
+ (let ((cmd (tooltip-gud-print-command expr)))
+ (unless (null cmd) ; CMD can be nil if unknown debugger
+ (case gud-minor-mode
+ (gdba (gdb-enqueue-input
+ (list (concat cmd "\n") 'gdb-tooltip-print)))
+ (t
+ (setq tooltip-gud-original-filter (process-filter process))
+ (set-process-filter process 'tooltip-gud-process-output)
+ (gud-basic-call cmd)))
+ expr))))))))
(defun gdb-tooltip-print ()
(tooltip-show