🧹 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-styleHow to display the property at the beginning of buffer.keepwill do nothing.invisiblewill hide it.org-tidy-properties-styleHow to display other property drawers.fringewill hide the property drawer and show a indicator in the left fringeinlinewill hide the property drawer and append a symbol (default to ♯) at the end of previous lineinvisiblewill just hide the property drawer
org-tidy-properties-inline-symbolThe inline symbol.org-tidy-property-drawer-flagWhether to tidy property drawers.org-tidy-property-drawer-property-whitelistThe whitelist of properties. If set, only property drawers which contain property in this list will be tidied.org-tidy-property-drawer-property-blacklistBlacklist of properties. If set, property drawers which contain property in this list will not be tidied.org-tidy-general-drawer-flagNon-nil means should tidy general drawers.org-tidy-general-drawer-name-whitelistWhitelist of drawer names. If set, only general drawers whose name is in this list will be tidied.org-tidy-general-drawer-name-blacklistBlacklist of drawer names. If set, general drawers whose name is in this list will not be tidied.
