[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: problem with org-highest-priority
From: |
Kyle Meyer |
Subject: |
Re: problem with org-highest-priority |
Date: |
Tue, 06 Oct 2020 01:09:19 -0400 |
joakim@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)