Nice. But I’d rather see per-object checkboxes, like in some Markdown variants. You just place [ ] or [x] in a paragraph, in a header etc. and the object becomes “task”. Issue is with interpretation of what would one task marker in the middle if a paragraph and second at the end mean.
I’d say that semantic could be that the task marker preceding/following the whole object content (e.g., content of a paragraph, of a header right after sequence of #s or following it’s content, preceding or following a paragraph without empty lines etc.) and if it was placed inside the object content, than it will split it into serialized parts and it will belong to the part following (or preceding) it (this should be further discussed what feels more natural to the majority of people, both variants are OK, it’s just a matter of informed choice; but see below in the examples). The nicest think about it is that it is fully backwards compatible with thencurrent list items tasks! Last, task marker standing alone on separated line will belong to section (whatever it is, e.g. third-level of the document based on headings etc.). I will like to see the same principle applied for tags and for the attributes.
Examples:
Paragraph
[x] A paragraph of text turned into a task paragraph.
Another paragraph of text turned into a task paragraph. [x]
[x]
A paragraph
of text, the same principle (due to how Markdown is parsed).
The very same
paragraph task. [x]
Splitted paragraph (by preceding; see above in the description)
[x] The first task in a paragraph. [x] The second one. [x] The third one.
I would prefare the second variant (by following; see above in the description)
The first task in a paragraph. [x] The second one. [x] The third one. [x]
This second variant have some advantages over the variant “by preceding”:
-
It feels more natural and leave space for syntactic denoting of inline lists like: We (1) do something [x], then (2) we do something else [ ].
Look how this, in fact, renders here in the forum:
We (1) do something , then (2) we do something else .
-
Easier to parse. There is no need to parse whole paragraph to get the idea whether it is already splitted into task parts or not, also avoiding some uglier: [x] [x] text text [x] text where the first [x] is for the whole paragraph followed by the [x] for the first part. It’s non-intuitive and ugly. On the other hand, the [x] text text [x] text [x] is far more clear, I think and it indeed does not break the backward compatibility with the list item tasks.
Headers
# [x] Header turned into a task
##### Header turned into a task [x]
## [x] Header splitted into [x] three tasks [x] beying a task as whole [x]
Lists
- [ ] nothing changed
- [ ] except they can be also [x] split as anything else [ ]
So, the only interpretation decision for the parser concerning the trailing task marker that is left is simply to count splits - be there no split, then the whole content of the object is a task, be there a split it belongs to the last part. Easy.
Quotes
[x]
> The whole quote is a task.
>
> - [ ] with
> - [x] some
> - [ ] sub-tasks.
We can clearly continue to imagine that every block object consisting of text can be either turned into task or even split into several of them or both. And the very same principles should hold also for assigning the [attr: ibutes] and the #hashtags.
Sidenote: To clear my point of view about all this. I think about the tasks, attributes and hashtags etc. rather as about “taskiness”, “attributiness” and “tagginess” assigned to some portions of content (they are all, in fact, just data and are becoming metadata that is forming the metacontents only tohether with the content they are assigned to).
What do you think? Also pinging @zef to know his opinion.