Org Mode: Cutting the current list item (including nested lists) with a speed command
| emacs, org
Defining shortcuts in org-speed-commands
is
handy because you can use these single-key
shortcuts at the beginning of a subtree. With a
little modification, they'll also work at the
beginning of list items.
(defun my-org-use-speed-commands-for-headings-and-lists () "Activate speed commands on list items too." (or (and (looking-at org-outline-regexp) (looking-back "^\**" nil)) (save-excursion (and (looking-at (org-item-re)) (looking-back "^[ \t]*" nil))))) (setq org-use-speed-commands 'my-org-use-speed-commands-for-headings-and-lists)
I want k
to be an org-speed-commands
that cuts
the current subtree or list item. This is handy
when I'm cleaning up the Mastodon toots in my
weekly review or getting rid of outline items that
I no longer need. By default, k
is mapped to
org-cut-subtree
, but it's easy to override.
(defun my-org-cut-subtree-or-list-item (&optional n) "Cut current subtree or list item." (cond ((and (looking-at org-outline-regexp) (looking-back "^\**" nil)) (org-cut-subtree n)) ((looking-at (org-item-re)) (kill-region (org-beginning-of-item) (org-end-of-item))))) (with-eval-after-load 'org (setf (alist-get "k" org-speed-commands nil nil #'string=) #'my-org-cut-subtree-or-list-item))
So now, if I put my cursor before "1." below and press k
:
- this 1. is a - nested 2. list - with levels
it will turn into:
- this
- list
- with levels
You can find out a little more about Org Mode speed commands in the Org manual: (info "(org) Speed Keys")
.
This is part of my Emacs configuration.
You can e-mail me at sacha@sachachua.com.