emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Jumping to function definitions in elp


From: Masatake YAMATO
Subject: Jumping to function definitions in elp
Date: Wed, 18 Aug 2004 01:11:42 +0900 (JST)

In *ELP Profiling Results*, function names are listed.
I have added text properties on the function names to jump
their definition quickly. If no objection, I will install 
this patch.

Regards,
Masatake YAMATO

2004-08-18  Masatake YAMATO  <address@hidden>

        * emacs-lisp/elp.el (elp-results-symname-map): New keymap.
        (elp-results-jump-to-definition-by-mouse)
        (elp-results-jump-to-definition, elp-output-insert-symname): New 
Functions.
        (elp-output-result): Use elp-output-insert-symname.

Index: lisp/emacs-lisp/elp.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/elp.el,v
retrieving revision 1.27
diff -u -r1.27 elp.el
--- lisp/emacs-lisp/elp.el      1 Sep 2003 15:45:22 -0000       1.27
+++ lisp/emacs-lisp/elp.el      17 Aug 2004 16:07:26 -0000
@@ -513,7 +513,7 @@
             (numberp elp-report-limit)
             (< cc elp-report-limit))
        nil
-      (insert symname)
+      (elp-output-insert-symname symname)
       (insert-char 32 (+ elp-field-len (- (length symname)) 2))
       ;; print stuff out, formatting it nicely
       (insert callcnt)
@@ -525,6 +525,32 @@
        (insert atstr))
       (insert "\n"))))
 
+(defvar elp-results-symname-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [mouse-2] 'elp-results-jump-to-definition-by-mouse)
+    (define-key map "\C-m" 'elp-results-jump-to-definition)
+    map)
+  "Keymap used on the function name column." )
+
+(defun elp-results-jump-to-definition-by-mouse (event)
+  "Jump to the definition of the function under the place specified by EVENT."
+  (interactive "e")
+  (posn-set-point (event-end event))
+  (elp-results-jump-to-definition))
+
+(defun elp-results-jump-to-definition ()
+  "Jump to the definition of the function under the point."
+  (interactive)
+  (find-function (get-text-property (point) 'elp-symname)))
+
+(defun elp-output-insert-symname (symname)
+  ;; Insert SYMNAME with text properties.
+  (insert (propertize symname
+                     'elp-symname (intern symname)
+                     'keymap elp-results-symname-map
+                     'mouse-face 'highlight
+                     'help-echo (substitute-command-keys 
"\\{elp-results-symname-map}"))))
+
 ;;;###autoload
 (defun elp-results ()
   "Display current profiling results.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]