🧹 An Emacs minor mode to automatically tidy org-mode property drawers.
Org-mode’s property drawer is a very useful feature. We can store properties associated with an entry in property drawer. I use org-roam every day. And org-roam node is an entry with ID property. But if I create many nodes in a single file, there will be a lot of property drawers. This is really annoying. Even after they are folded, there are still lines like :PROPERTIES: ...
, which makes the whole buffer hard to read.
At first I googled for some tricks to hide property drawers completely. And I found there are many people like me who are bothered by this problem. Of course there are solutions. But these solutions involve a lot of code. So I made this package.
After org-tidy mode is turned on, these property drawers are hidden. And the symbol ♯ is appended after the headline. You can also customize how property drawers will be hidden.
(require 'org-tidy)
(add-hook 'org-mode-hook #'org-tidy-mode)
(use-package org-tidy
:ensure t
:hook
(org-mode . org-tidy-mode))
If you need to edit only one drawer temporarily, you can simply M-x org-tidy-untidy-buffer
. When you save the buffer, it will be tidied again.
If you need to edit a lot of drawers, you can M-x org-tidy-toggle
. Then the buffer will not be tidied on save, until M-x org-tidy-toggle
again.
org-tidy-top-property-style
How to display the property at the beginning of buffer.keep
will do nothing.invisible
will hide it.org-tidy-properties-style
How to display other property drawers.fringe
will hide the property drawer and show a indicator in the left fringeinline
will hide the property drawer and append a symbol (default to ♯) at the end of previous lineinvisible
will just hide the property drawer
org-tidy-properties-inline-symbol
The inline symbol.org-tidy-property-drawer-flag
Whether to tidy property drawers.org-tidy-property-drawer-property-whitelist
The whitelist of properties. If set, only property drawers which contain property in this list will be tidied.org-tidy-property-drawer-property-blacklist
Blacklist of properties. If set, property drawers which contain property in this list will not be tidied.org-tidy-general-drawer-flag
Non-nil means should tidy general drawers.org-tidy-general-drawer-name-whitelist
Whitelist of drawer names. If set, only general drawers whose name is in this list will be tidied.org-tidy-general-drawer-name-blacklist
Blacklist of drawer names. If set, general drawers whose name is in this list will not be tidied.