Hello,
> Ittay Freiman wrote:
>
> Hello,
>
> I've been using imenu for some time. It is a great package except for
> one thing: It doesn't handle overloaded methods. This means that in
> the listings (either menu / completion) I just see the method name,
> without the signature of its parameters. Can this be fixed?
Following is an advised `jde-imenu-index-class' which displays full
method signatures in the "Classes" imenu.
Sincerely,
David
----------------------------------------------------------------------
(defadvice jde-imenu-index-class (around my-jde-imenu-index-class
(tokens) activate)
"Creates an imenu index for a class. This version displays full method
signatures."
(let ((methods (semantic-find-nonterminal-by-token 'function tokens))
(fields (semantic-find-nonterminal-by-token 'variable tokens))
(classes (semantic-find-nonterminal-by-token 'type tokens))
index)
(while methods
(let* ((method-token (car methods))
(method-name (semantic-token-name method-token))
(method-type (semantic-token-type method-token))
(method-args (semantic-token-function-args method-token))
(method-pos (semantic-token-start method-token))
method-sig)
(setq method-sig (if method-type
(format "%s %s(" method-type method-name)
(format "%s(" method-name)))
(while method-args
(let ((method-arg-token (car method-args))
method-arg-type)
(when method-arg-token
(setq method-arg-type (semantic-token-type
method-arg-token))
(setq method-sig (concat method-sig method-arg-type))))
(setq method-args (cdr method-args))
(if method-args (setq method-sig (concat method-sig ","))))
(setq method-sig (concat method-sig ")"))
(setq index
(append
index (list (cons method-sig method-pos)))))
(setq methods (cdr methods)))
(while fields
(let* ((field-token (car fields))
(field-name (semantic-token-name field-token))
(field-pos (semantic-token-start field-token)))
(setq index
(append
index (list (cons field-name field-pos)))))
(setq fields (cdr fields)))
(while classes
(let* ((class-token (car classes))
(class-name (semantic-token-name class-token))
(parts (semantic-token-type-parts class-token))
(class-index (jde-imenu-index-class parts)))
(setq index
(append
index
(list (cons (concat "class " class-name) class-index)))))
(setq classes (cdr classes)))
(setq ad-return-value index)))
----------------------------------------------------------------------