]> code.delx.au - gnu-emacs/commitdiff
Add mode local overrides to describe-function
authorStephen Leake <stephen_leake@stephe-leake.org>
Wed, 26 Aug 2015 20:33:41 +0000 (15:33 -0500)
committerStephen Leake <stephen_leake@stephe-leake.org>
Wed, 26 Aug 2015 21:45:06 +0000 (16:45 -0500)
* lisp/cedet/mode-local.el (describe-mode-local-overload): New; add mode
local overrides to describe-function.

* etc/NEWS: Document change.

etc/NEWS
lisp/cedet/mode-local.el

index 4851c350f17444a754b895fcae9d19fede095735..cf0804d791e31f31d889e2767c68d5ac3beda39b 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -88,7 +88,11 @@ command line when `initial-buffer-choice' is non-nil.
 \f
 * Changes in Emacs 25.1
 
-** New display-buffer action function display-buffer-use-some-frame
+** `describe-function' now displays information about mode local
+   overrides (defined by cedet/mode-local.el
+   `define-overloadable-function' and `define-mode-local-overrides'.
+
+** New `display-buffer' action function `display-buffer-use-some-frame'
 This displays the buffer in an existing frame other than the current
 frame, and allows the caller to specify a frame predicate to exclude
 frames.
index 01e37005b5d86cb2e7ed59b9abc0906376965982..ce30a985a797c0be05ded31bb703e07d8093e473 100644 (file)
@@ -625,6 +625,30 @@ SYMBOL is a function that can be overridden."
       ;; LIST ALL LOADED OVERRIDES FOR SYMBOL HERE
       )))
 
+(defun describe-mode-local-overload (symbol)
+  "For `help-fns-describe-function-functions'; add overloads for SYMBOL."
+  (when (get symbol 'mode-local-overload)
+    (let ((default (or (intern-soft (format "%s-default" (symbol-name symbol)))
+                      symbol))
+         (override (and
+                    (boundp 'describe-function-orig-buffer) ;; added in Emacs 25
+                    describe-function-orig-buffer
+                    (with-current-buffer describe-function-orig-buffer
+                      (fetch-overload symbol)))))
+      (insert (overload-docstring-extension symbol) "\n\n")
+      (insert (substitute-command-keys (format "default function: `%s'\n" default)))
+      (when (and (boundp 'describe-function-orig-buffer) ;; added in Emacs 25
+                describe-function-orig-buffer)
+       (if override
+           (insert (substitute-command-keys
+                    (format "\noverride in buffer '%s': `%s'\n"
+                            describe-function-orig-buffer override)))
+         (insert (substitute-command-keys (format "\nno override in buffer '%s'\n"
+                                                  describe-function-orig-buffer)))))
+      )))
+
+(add-hook 'help-fns-describe-function-functions 'describe-mode-local-overload)
+
 ;; Help for mode-local bindings.
 (defun mode-local-print-binding (symbol)
   "Print the SYMBOL binding."