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. 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)