summary refs log tree commit diff stats
path: root/emacs/elisp/eldoc-context.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs/elisp/eldoc-context.el')
-rw-r--r--emacs/elisp/eldoc-context.el40
1 files changed, 40 insertions, 0 deletions
diff --git a/emacs/elisp/eldoc-context.el b/emacs/elisp/eldoc-context.el
new file mode 100644
index 0000000..df8797f
--- /dev/null
+++ b/emacs/elisp/eldoc-context.el
@@ -0,0 +1,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)
\ No newline at end of file