Derek Chen-Becker <[email protected]> writes:
> I guess looking at https://orgmode.org/manual/Priorities.html, it's not
> clearly defined what valid ranges are. Are upper and lower cases considered
> equivalent? Is it strictly A-Z, or a-z, or 1-64? If it's not numeric, do
> we just allow any character whose value is >= 65? For example, 一,二, 三, 四?
> Technically, is 1 the highest possible numeric priority or would zero (or a
> negative number) be valid? I feel like maybe we should update the manual at
> the same time, and precisely specify what the allowed values are. I can
> sort of reverse engineer from the code, but is this documented anywhere
> other than the manual?
Well. You cannot reverse engineer.
1. org-priority-regexp is ".*?\\(\\[#\\([A-Z0-9]+\\)\\] ?\\)"
2. org-element.el is
(priority (and (looking-at "\\[#.\\][ \t]*")
(progn (goto-char (match-end 0))
(aref (match-string 0) 2))))
3. https://orgmode.org/worg/org-syntax.html (following the parser)
PRIORITY (optional)
A single alphanumeric character preceded by a hash sign # and
enclosed within square brackets (e.g. [#A] or [#1]). This is called a
“priority cookie”.
4. 5.4 Priorities in the manual says, "A", "B", "C", "integers, which
must all be strictly inferior to 65", "earlier in alphabet" (implying
some kind of ordered alphabet, but not CJK)
5. org-priority-highest
If you set org-priority-highest to a numeric value inferior to
65, Org assumes you want to use digits for the priority cookie.
If you set it to >=65, Org assumes you want to use alphabetical
characters.
6. org-priority-get-priority-function is a defcustom, implying that
priority might be less restrictive
7. (org-element-property :priority (org-element-at-point)) always
returns a number/character (and must be interpreted back by
org-element-interpret-data)
8. Some places in the code
(`org-latex-format-headline-default-function') plainly assume that
priority is formattable with (format "%c" ...)
I'd say that the simplest approach will be using the most restrictive
definition of priority: either a number between 0-64 or a single
alphabetic character (with code >=65).
--
Ihor Radchenko // yantar92,
Org mode maintainer,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>