Kyle Meyer <k...@kyleam.com> writes: > joa...@verona.se writes: > >> This used to work: >> (defun jv-org-priorities () >> (setq org-highest-priority ?0 ;; 64 @ 48 0, bugs start happening if you >> have higher prios tnan 0, like '!' >> org-lowest-priority ?E ;; E >> org-default-priority ?0 ;; 0 >> org-priority-regexp ".*?\\(\\[#\\([;:<=>?@A-Z0-9]\\)\\] ?\\)" >> )) >> >> I could then have priority cookies from [#0] to [#E]. >> >> With the current org I get [#48] instead of [#0]. >> >> Is there any way to restore the previous behaviour? > > The change in behavior you describe came with 4f98694bf (Allow numeric > values for priorities, 2020-01-30). Based on quickly skimming that > commit, I think the issue boils down to intentionally not supporting a > mix of numbers and letters. I'm out of time tonight to look at it too > closely, but I think support for your use case could be restored with > something like the lightly tested patch below.
Thanks, I tested your patch, and it helps a little bit. - m-x org-priority works, I can set any priority from 0 to Z - org-priority-down and org-priority-down doesn't work as expected, as they worked previously. I dont step through all the priority cookies, instead I quickly wind up in prio 0, then I'm stuck there, for lack of better description. - sorting of priorities still work with or withouth the patch, that is prio 0 is highest prio, prio Z is lowest prio. I would like to mention that in my case the characters between letters and numbers are also priority cookies, @ is a cookie as well as 0 and z. Limiting to just letters and numbers would be fine for me though, I dont use the in-between prios much. Because the sorting still works, I have been able to work around this new behaviour, by writing the cookie by hand. I'm not sure how to proceed. It seems I'm the only org-user affected by this change? Should I maintain a local patch to get the behaviour I want? What is the recomended way to do that? I usually run org-plus-contrib from elpa. > > diff --git a/lisp/org.el b/lisp/org.el > index 425e9391b..8237f39f6 100644 > --- a/lisp/org.el > +++ b/lisp/org.el > @@ -11166,8 +11166,7 @@ (defun org-priority (&optional action show) > (unless org-priority-enable-commands > (user-error "Priority commands are disabled")) > (setq action (or action 'set)) > - (let ((nump (< org-priority-lowest 65)) > - current new news have remove) > + (let (current new news have remove) > (save-excursion > (org-back-to-heading t) > (when (looking-at org-priority-regexp) > @@ -11181,27 +11180,18 @@ (defun org-priority (&optional action show) > (integerp action)) > (if (not (eq action 'set)) > (setq new action) > - (setq > - new > - (if nump > - (string-to-number > - (read-string (format "Priority %s-%s, SPC to remove: " > - (number-to-string org-priority-highest) > - (number-to-string org-priority-lowest)))) > - (progn (message "Priority %c-%c, SPC to remove: " > - org-priority-highest org-priority-lowest) > - (save-match-data > - (setq new (read-char-exclusive))))))) > + (setq new > + (progn (message "Priority %c-%c, SPC to remove: " > + org-priority-highest org-priority-lowest) > + (save-match-data > + (setq new (read-char-exclusive)))))) > (when (and (= (upcase org-priority-highest) org-priority-highest) > (= (upcase org-priority-lowest) org-priority-lowest)) > (setq new (upcase new))) > (cond ((equal new ?\s) (setq remove t)) > ((or (< (upcase new) org-priority-highest) (> (upcase new) > org-priority-lowest)) > - (user-error > - (if nump > - "Priority must be between `%s' and `%s'" > - "Priority must be between `%c' and `%c'") > - org-priority-highest org-priority-lowest)))) > + (user-error "Priority must be between `%c' and `%c'" > + org-priority-highest org-priority-lowest)))) > ((eq action 'up) > (setq new (if have > (1- current) ; normal cycling > @@ -11235,7 +11225,7 @@ (defun org-priority (&optional action show) > (setq remove t))) > ;; Numerical priorities are limited to 64, beyond that number, > ;; assume the priority cookie is a character. > - (setq news (if (> new 64) (format "%c" new) (format "%s" new))) > + (setq news (format "%c" new)) > (if have > (if remove > (replace-match "" t t nil 1) > > -- Joakim Verona joa...@verona.se