gizmomogwai / org-kanban

Kanban table for org-mode
MIT License
238 stars 18 forks source link

Feature Request: Allow to set TODO keywords to be considered #16

Closed casch-at closed 5 years ago

casch-at commented 5 years ago

My org-todo-keywords are "((sequence "TODO(t)" "NEXT(n)" "|" "DONE(d@)") (sequence "PHONE(p)" "MEETING(m)" "APPOINTMENT(a)" "TALK(l)" "|") (sequence "WAITING(w@/!)" "SUSPENDED(h@/!)" "|" "CANCELLED(c@/!)"))"

But I only want TODO NEXT | DONE to be considered kanban table columns. I think this isn't currently possible, is it? Setting #:+TODO: in the file to "TODO NEXT | DONE" is not an option for me. Do you know if it is possible to set the keywords per org tree?

Thanks!

gizmomogwai commented 5 years ago

Hi @cslux, the org documentation https://orgmode.org/manual/Multiple-sets-in-one-file.html#Multiple-sets-in-one-file mentions, that all of the keywords should be different. This is the case for you.

In theory it could be possible to add another option to the table header that whitelists/blacklists allowed keywords. Whitelisting would be more convenient in your use-case.

casch-at commented 5 years ago

I also thought about a table header option. But I would have not gone for a whitelist/blacklist option, but rather allow the user to set the todo columns.

E.g.

#+BEGIN: kanban :mirrored t :match "kanban" :todo "TODO NEXT | DONE" :layout ("..." . 10)
| TODO | NEXT | DONE |
...
#+END:
gizmomogwai commented 5 years ago

Ok ... but the semantic cannot be changed be the org-kanban header. e.g. TODO | NEXT DONE would not make sense ... thats what i meant with whitelist .. allow only TODO NEXT and DONE. but lets see. not sure when i have some time to add this feature ...

casch-at commented 5 years ago

but the semantic cannot be changed be the org-kanban header. e.g. TODO | NEXT DONE would not make sense ... thats what i meant with whitelist

Makes sense, so it should be checked against the org-todo-keywords for validity!?

Don't hurry. If you haven't implemented it until I have the feeling that I need it. Than I will very likely try to implement it myself. :-)

gizmomogwai commented 5 years ago

Mh ... this is a new functionality for me. example here

#+TODO: Todo Plan Develop Test | Done
#+TODO: TODO PLAN DONE1 DONE2 DONE3
* PLAN t1
* Todo test

switching a heading with shift-left/right walks through all keywords (S-left is calling org-shiftleft) C-c C-t switches only through one set (this is calling org-todo) which is a rather length operation.

both operations lead in the worst case to removal of the todo keyword. so this is the same.

gizmomogwai commented 5 years ago

Perhaps we could also make one range of allowed TODO's e.g. allow everything between Todo and Done

casch-at commented 5 years ago

C-c C-t switches only through one set (this is calling org-todo) which is a rather length operation.

One can customize org-use-fast-{tag,todo}-selection, and org-fast-tag-selection-single-key to speed things up.

BTW, I also have an empty column header, must have something to do with my org-todo-keywords.

| CANCELLED | SUSPENDED | WAITING | TALK | APPOINTMENT | MEETING | PHONE | DONE       | NEXT       | TODO       |   |
casch-at commented 5 years ago

Ah ok! org-kanban doesn't like headings containing "|" .

E.g.

gizmomogwai commented 5 years ago

Ok .. .this would be too long for a org-kanban table column anyways :) but there is already another escaping problem with [1/2] that I had to fixup in org-kanban//cleanup-heading

gizmomogwai commented 5 years ago

Please have a look at the implementation in 7e059b4 Perhaps thats already enough. I could use some help with the nasty looking elisp code. It is not pretty :)

casch-at commented 5 years ago

Please have a look at the implementation in 7e059b4

Works! But the "|" is still a problem in the heading.

I could use some help with the nasty looking elisp code. It is not pretty :)

I'm not sure if I can help you in this regard :-). I'm not an elisp expert.

gizmomogwai commented 5 years ago

sure ... the pipe is a problem ... will have to fix that seperately ... although i am not sure how to ... last problem i had with [] i fixed by replacing with {} (as org link do not seem to support proper escaping). but in this use-case you will want to copy/paste the line, so if i replace the pipe it will not work anymore :) i will open #17 for that.