Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

More intuitive priority cycling #236

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

gerazov
Copy link
Contributor

@gerazov gerazov commented Mar 27, 2022

I'm not sure if it's bound by emacs orgmode behavior, but current priority increase and decrease is a bit counterintuitive.

  • increase cycle
    • none (default priority) -> [#C] (low priority) -> [#B] (default priority) -> [#A] (high priority) -> none.
  • decrease cycle
    • none (default priority) -> [#A] (high priority) -> [#B] (default priority) -> [#C] (low priority) -> none.

Thus, the first press actually decreases priority, and then sets it to the initial state, and only then actually increases priority. The reverse is true for decrease - one needs to press 3 times to actually reduce priority.

In other words to give [#A] priority to a task with no priority, the fastest way to do it is by pressing decrease priority.

This PR modifies the cycle as follows:

  • increase cycle
    • none (default priority) -> [#A] (high priority) -> none
    • [#C] (low priority) -> [#B] (default priority) -> [#A] (high priority) -> none
  • decrease cycle
    • none (default priority) -> [#C] (low priority) -> none
    • [#A] (high priority) -> [#B] (default priority) -> [#C] (low priority) -> none

While it breaks the cycle starting with none, the increase and decrease reflect the change in priority.

@kristijanhusak
Copy link
Member

This code seems to completely break the cycle.
priority-pr-bug

@gerazov
Copy link
Contributor Author

gerazov commented Apr 4, 2022

Yes it does ... but it does consistently increase (decrease) priority. We could have it loop, i.e. none -> A -> C -> none -> A, but then the B is missing.

Maybe it would make sense to have a separate cycle up/down command that would do what increase and decrease do atm. But it all ties back to how it's done in emacs.

btw - great work on the Clocking summary table 😎

@TravonteD
Copy link
Contributor

In other words to give [#A] priority to a task with no priority, the fastest way to do it is by pressing decrease priority.
There is a binding for changing the priority to any state (iirc it's <leader>o, by default). I would say that's the fastest way to get to the highest priority.

@gerazov
Copy link
Contributor Author

gerazov commented Apr 21, 2022

Good tip! but you still need to write in the priority, so that's 4 keys. Currently I use reduce priority to mark tasks as important - it's one key in the agenda - and 3 in the org file cir 🙂

@TravonteD
Copy link
Contributor

A possible solution to this (for the sake of convenience) could be to have a set_to_priority(<num>) function that can be used in custom mappings, so that one could make a keymap for priority A,B,etc.

@gerazov
Copy link
Contributor Author

gerazov commented Apr 26, 2022

Hmm 🤔 maybe a toggle function would be convenient? e.g. toggle_high_priority() for [#A] and toggle_low_priority() for [#C], imo [#B] is not that useful.

@TravonteD
Copy link
Contributor

My previous suggestion is now possible by using the new treesitter functions. Here's an example.

local Headline = require('orgmode.treesitter.headline')
local tree_utils = require('orgmode.utils.treesitter')

vim.keymap.set('n', '<some-keymap>', function()
  local headline = Headline:new(tree_utils.closest_headline())
  headline:set_priority('A')
end)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants