blob: df8797f21743d82812acf3a81150b980255f74f7 (
plain)
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)
|