emacs/elisp/eldoc-context.el (view raw)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | (provide 'eldoc-context)
(defun rgr/toggle-context-help ()
"Turn on or off the context help.
Note that if ON and you hide the help buffer then you need to
manually reshow it. A double toggle will make it reappear"
(interactive)
(with-current-buffer (help-buffer)
(unless (local-variable-p 'context-help)
(set (make-local-variable 'context-help) t))
(if (setq context-help (not context-help))
(progn
(if (not (get-buffer-window (help-buffer)))
(display-buffer (help-buffer)))))
(message "Context help %s" (if context-help "ON" "OFF"))))
(defun rgr/context-help ()
"Display function or variable at point in *Help* buffer if visible.
Default behaviour can be turned off by setting the buffer local
context-help to false"
(interactive)
(let ((rgr-symbol (symbol-at-point))) ; symbol-at-point http://www.emacswiki.org/cgi-bin/wiki/thingatpt%2B.el
(with-current-buffer (help-buffer)
(unless (local-variable-p 'context-help)
(set (make-local-variable 'context-help) t))
(if (and context-help (get-buffer-window (help-buffer))
rgr-symbol)
(if (fboundp rgr-symbol)
(describe-function rgr-symbol)
(if (boundp rgr-symbol) (describe-variable rgr-symbol)))))))
(defadvice eldoc-print-current-symbol-info
(around eldoc-show-c-tag activate)
(cond
((eq major-mode 'emacs-lisp-mode) (rgr/context-help) ad-do-it)
((eq major-mode 'lisp-interaction-mode) (rgr/context-help) ad-do-it)
((eq major-mode 'apropos-mode) (rgr/context-help) ad-do-it)
(t ad-do-it)))
(global-set-key (kbd "C-c h") 'rgr/toggle-context-help) |