diff --git a/README.org b/README.org index dec097c..443d74e 100644 --- a/README.org +++ b/README.org @@ -5685,6 +5685,46 @@ byte code: 13 return #+end_src +*** [[http://yummymelon.com/devnull/writing-better-elisp-docstrings.html][Writing Better Elisp Docstrings]] +:PROPERTIES: +:CUSTOM_ID: sec:describe-function-at-point +:END: + +#+caption[Describe Elisp function at point]: +#+caption: Describe Elisp function at point. +#+name: lst:describe-function-at-point +#+begin_src emacs-lisp -n :results silent +;; Stolen from Charles Choi: +;; http://yummymelon.com/devnull/writing-better-elisp-docstrings.html +;; GAV: Org changes the semantics of calling `beginning-of-defun'. +(defun describe-function-at-point () + "Call `describe-function' on the Elisp function at point. +Switch temporarily from `org-mode' to `text-mode', since `org-mode' +changes the semantics of calling `beginning-of-defun'." + (interactive) + (let ((mode major-mode)) + (when (eq major-mode 'org-mode) + (text-mode)) + (save-excursion + (beginning-of-defun) + (forward-char) + (forward-sexp 2) + (let ((end-point (point))) + (backward-sexp) + (let* ((fn-name (buffer-substring (point) end-point)) + (interned (intern-soft fn-name))) + (if interned + (describe-function interned) + (message "Can't find function at point"))))) + (when (eq mode 'org-mode) + (org-mode)))) + +(with-eval-after-load 'org-mode + (keymap-set org-mode-map "C-c d" #'describe-function-at-point)) +(with-eval-after-load 'emacs-lisp-mode + (keymap-set emacs-lisp-mode-map "C-c d" #'describe-function-at-point)) +#+end_src + ** [[https://go.dev/][Go Programming]] :PROPERTIES: :CUSTOM_ID: sec:go-programming