Re: Custom function for killing the thing at point
John Kitchin writes: > alternatively, fall back to org-mark-element. I am not sure what > differences in what you are trying to achieve and this are, but this should > cover all org elements: Sounds more reasonable as a default. (org-mark-element) will mark everything including affiliated keywords and post-blank empty lines. (:begin .. :end) will not include the affiliated keywords and extra blank lines. Best, Ihor
Re: Custom function for killing the thing at point
alternatively, fall back to org-mark-element. I am not sure what differences in what you are trying to achieve and this are, but this should cover all org elements: (defun org-kill-element () (interactive) (org-mark-element) (call-interactively #'kill-region)) John --- Professor John Kitchin (he/him/his) Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu On Fri, Aug 13, 2021 at 9:45 PM Ihor Radchenko wrote: > Rodrigo Morales writes: > > > (t > >(error "The element at point couldn't be copied."))) > > I would fall back to region between :begin and :end of the element. > > Also, it might be helpful to print a short message about what element > have just been copied. > > Best, > Ihor > >
Re: Custom function for killing the thing at point
Rodrigo Morales writes: > (t >(error "The element at point couldn't be copied."))) I would fall back to region between :begin and :end of the element. Also, it might be helpful to print a short message about what element have just been copied. Best, Ihor
Re: Custom function for killing the thing at point
Hi Rodrigo, Thanks for sharing, it seems interesting and useful. But I think this function is missing in your post: `my/kill-new'. Best regards, Juan Manuel Rodrigo Morales writes: > I just created this function for copying the thing under the cursor (it > works for some #+BEGIN blocks and links). I think it would be useful for > others, so I'm creating this post for getting feedback on the Elisp code > and sharing it to those interested. > > #+BEGIN_SRC elisp > (defun my/org-kill-thing-at-point () > "Kill the thing at point. > > The following things are currently supported > > - #+BEGIN_SRC <> > - #+BEGIN_EXPORT <> > - #+BEGIN_EXAMPLE <> > - #+BEGIN_COMMENT > - Org links (the description is not copied)" > (interactive) > (let* (content > (element (org-element-context)) > (type (org-element-type element))) > (cond ((or (eq type 'src-block) >(eq type 'export-block) >(eq type 'example-block) >(eq type 'comment-block)) >(setq content (plist-get (cadr element) :value))) > ((eq type 'link) >(setq content (plist-get (cadr element) :raw-link))) > (t >(error "The element at point couldn't be copied."))) > (my/kill-new content))) > #+END_SRC > > #+BEGIN_SRC elisp > (define-key org-mode-map (kbd "C-c c") 'my/org-kill-thing-at-point) > #+END_SRC >
Custom function for killing the thing at point
I just created this function for copying the thing under the cursor (it works for some #+BEGIN blocks and links). I think it would be useful for others, so I'm creating this post for getting feedback on the Elisp code and sharing it to those interested. #+BEGIN_SRC elisp (defun my/org-kill-thing-at-point () "Kill the thing at point. The following things are currently supported - #+BEGIN_SRC <> - #+BEGIN_EXPORT <> - #+BEGIN_EXAMPLE <> - #+BEGIN_COMMENT - Org links (the description is not copied)" (interactive) (let* (content (element (org-element-context)) (type (org-element-type element))) (cond ((or (eq type 'src-block) (eq type 'export-block) (eq type 'example-block) (eq type 'comment-block)) (setq content (plist-get (cadr element) :value))) ((eq type 'link) (setq content (plist-get (cadr element) :raw-link))) (t (error "The element at point couldn't be copied."))) (my/kill-new content))) #+END_SRC #+BEGIN_SRC elisp (define-key org-mode-map (kbd "C-c c") 'my/org-kill-thing-at-point) #+END_SRC