Just found a quick way to have tags always right aligned, taking advantage of font-lock and display property.
(add-to-list 'font-lock-extra-managed-props 'display)
(font-lock-add-keywords 'org-mode
`(("^.*?\\( \\)\\(:[[:alnum:]_@#%:]+:\\)$"
(1 `(face nil
display (space :align-to (- right ,(length (match-string 2)) 3)))
prepend))) t)
It seems this affects stuff like :PROPERTIES: as well
Also not working well for multiple tags. The tags are wrapped into the second line.
Weird since the regex includes a space before the first “:”. As for multitag, it is working properly for me.
I found out that it’s the non-English characters in tags that trigger the bug.
Nice. And since org-string-width can return pixel width, it might adapted to proportional font as well.
AHH. I see, my :PROPERTIES: is not indented. my org-adapt-indentation is set to nil.