]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new command 'shortdoc-copy-function-as-kill'
authorStefan Kangas <stefankangas@gmail.com>
Sun, 25 Sep 2022 11:48:12 +0000 (13:48 +0200)
committerStefan Kangas <stefankangas@gmail.com>
Sun, 25 Sep 2022 11:48:52 +0000 (13:48 +0200)
* lisp/emacs-lisp/shortdoc.el
(shortdoc-copy-function-as-kill): New command.
(shortdoc-mode-map): Bind above new command to "w".

etc/NEWS
lisp/emacs-lisp/shortdoc.el

index 139e65a4f19d9432a98819be86faf077f952530f..0a5b7bc29c5745f549556d50791139ebb07a0f52 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1714,6 +1714,10 @@ info node.  This command only works for the Emacs and Emacs Lisp manuals.
 
 ** Shortdoc
 
+---
+*** New command 'shortdoc-copy-function-as-kill' bound to 'w'.
+It copies the name of the function near point into the kill ring.
+
 ---
 *** 'N' and 'P' are now bound to 'shortdoc-(next|previous)-section'.
 This is in addition to the old keybindings 'C-c C-n' and 'C-c C-p'.
index 13d99adcf089db65307622089070d0df376c69de..33106808d28a1df7b4e87be342608cc717506c04 100644 (file)
@@ -1515,7 +1515,8 @@ Example:
   "N"       #'shortdoc-next-section
   "P"       #'shortdoc-previous-section
   "C-c C-n" #'shortdoc-next-section
-  "C-c C-p" #'shortdoc-previous-section)
+  "C-c C-p" #'shortdoc-previous-section
+  "w"       #'shortdoc-copy-function-as-kill)
 
 (define-derived-mode shortdoc-mode special-mode "shortdoc"
   "Mode for shortdoc."
@@ -1557,6 +1558,20 @@ With ARG, do it that many times."
   (shortdoc--goto-section arg 'shortdoc-section t)
   (forward-line -2))
 
+(defun shortdoc-copy-function-as-kill ()
+  "Copy name of the function near point into the kill ring."
+  (interactive)
+  (save-excursion
+    (goto-char (pos-bol))
+    (when-let* ((re (rx bol "(" (group (+ (not (in " "))))))
+                (string
+                 (and (or (looking-at re)
+                          (re-search-backward re nil t))
+                      (match-string 1))))
+      (set-text-properties 0 (length string) nil string)
+      (kill-new string)
+      (message string))))
+
 (provide 'shortdoc)
 
 ;;; shortdoc.el ends here