emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: problem with org-highest-priority


From: joakim
Subject: Re: problem with org-highest-priority
Date: Wed, 18 Nov 2020 23:17:05 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)

Kyle Meyer <kyle@kyleam.com> writes:

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

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
joakim@verona.se




reply via email to

[Prev in Thread] Current Thread [Next in Thread]