diff lisp/tooltip.el @ 33140:61f4c87b845c

(tooltip-gud-tips-setup): New function. (tooltip-gud-tips-p): Add :set to call tooltip-gud-tips-setup. (tooltip-mode): Call tooltip-gud-tips-setup. (tooltip-gud-tips): Use `gud-basic-call' instead of process-send-string, so the prompt gets frobbed appropriately. Handle nil return value from `tooltip-gud-print-command'.
author Miles Bader <miles@gnu.org>
date Thu, 02 Nov 2000 04:28:01 +0000
parents a35cc9700ff7
children 73a360d50e18
line wrap: on
line diff
--- a/lisp/tooltip.el	Thu Nov 02 02:29:18 2000 +0000
+++ b/lisp/tooltip.el	Thu Nov 02 04:28:01 2000 +0000
@@ -1,6 +1,6 @@
 ;;; tooltip.el --- Show tooltip windows
 
-;; Copyright (C) 1997, 1999 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
 
 ;; Author: Gerd Moellmann <gerd@acm.org>
 ;; Keywords: help c mouse tools
@@ -93,6 +93,9 @@
   "*Non-nil means show tooltips in GUD sessions."
   :type 'boolean
   :tag "GUD"
+  :set #'(lambda (symbol on)
+	   (setq tooltip-gud-tips-p on)
+	   (if on (tooltip-gud-tips-setup)))
   :group 'tooltip)
 
 
@@ -184,20 +187,22 @@
     ;; `ignore' is the default binding for mouse movements.
     (define-key global-map [mouse-movement]
       (if on 'tooltip-mouse-motion 'ignore))
-    (when (and on tooltip-gud-tips-p)
-      (global-set-key [S-mouse-3] 'tooltip-gud-toggle-dereference)
-      (add-hook 'gdb-mode-hook
-		#'(lambda () (setq tooltip-gud-debugger 'gdb)))
-      (add-hook 'sdb-mode-hook
-		#'(lambda () (setq tooltip-gud-debugger 'sdb)))
-      (add-hook 'dbx-mode-hook
-		#'(lambda () (setq tooltip-gud-debugger 'dbx)))
-      (add-hook 'xdb-mode-hook
-		#'(lambda () (setq tooltip-gud-debugger 'xdb)))
-      (add-hook 'perldb-mode-hook
-		#'(lambda () (setq tooltip-gud-debugger 'perldb))))))
+    (tooltip-gud-tips-setup)))
 
-
+(defun tooltip-gud-tips-setup ()
+  "Setup debugger mode-hooks for tooltips."
+  (when (and tooltip-mode tooltip-gud-tips-p)
+    (global-set-key [S-mouse-3] 'tooltip-gud-toggle-dereference)
+    (add-hook 'gdb-mode-hook
+	      #'(lambda () (setq tooltip-gud-debugger 'gdb)))
+    (add-hook 'sdb-mode-hook
+	      #'(lambda () (setq tooltip-gud-debugger 'sdb)))
+    (add-hook 'dbx-mode-hook
+	      #'(lambda () (setq tooltip-gud-debugger 'dbx)))
+    (add-hook 'xdb-mode-hook
+	      #'(lambda () (setq tooltip-gud-debugger 'xdb)))
+    (add-hook 'perldb-mode-hook
+	      #'(lambda () (setq tooltip-gud-debugger 'perldb)))))
 
 ;;; Timeout for tooltip display
 
@@ -416,12 +421,12 @@
 		      (eval (cons 'and tooltip-gud-display))))
       (let ((expr (tooltip-expr-to-print event)))
 	(when expr
-	  (setq tooltip-gud-original-filter (process-filter process))
-	  (set-process-filter process 'tooltip-gud-process-output)
-	  (process-send-string
-	   process (concat (tooltip-gud-print-command expr) "\n"))
-	  expr)))))
-
+	  (let ((cmd (tooltip-gud-print-command expr)))
+	    (unless (null cmd)	       ; CMD can be nil if unknown debugger
+	      (setq tooltip-gud-original-filter (process-filter process))
+	      (set-process-filter process 'tooltip-gud-process-output)
+	      (gud-basic-call cmd)
+	      expr)))))))
 
 
 ;;; Tooltip help.