Re: [CEDET-devel] A flexible `define-overload'
Brought to you by:
zappo
From: David P. <dav...@wa...> - 2004-04-19 14:39:42
|
Following my previous proposal for a `semantic-make-obsolete-overload' function, here is a little better implementation, and an example of use with `semantic-idle-summary' (which looks a little clearer now ;-). What do you think? David (defun semantic-make-obsolete-overload (old new) "Mark OLD overload as obsoleted by NEW overload. If OLD or NEW are of the form `semantic-NAME'. The function will strip `semantic-' from the front as the name of the overload symbol." (let ((old (semantic-overload-symbol-from-function old)) (new (semantic-overload-symbol-from-function new))) (put old 'semantic-overload-obsoleted-by new) (put new 'semantic-overload-obsolete old))) ;;; Example ;; (define-overload semantic-summary-current-symbol-info () "Return a string message describing the current context.") (semantic-make-obsolete-overload 'eldoc-current-symbol-info 'summary-current-symbol-info) (define-semantic-idle-service semantic-idle-summary "Display a tag summary of the lexical token under the cursor. Call `semantic-summary-current-symbol-info' for getting the current tag to display information." (or (eq major-mode 'emacs-lisp-mode) (not (semantic-idle-summary-useful-context-p)) (let* ((found (semantic-idle-summary-current-symbol-info)) (str (cond ((stringp found) found) ((semantic-tag-p found) (funcall semantic-idle-summary-function found nil t))))) (unless (and str (boundp 'eldoc-echo-area-use-multiline-p) eldoc-echo-area-use-multiline-p) (let ((w (1- (window-width (minibuffer-window))))) (if (> (length str) w) (setq str (substring str 0 w))))) (eldoc-message str)))) |