I don’t think my proposed syntaxes “should” be a problem in that respect. A project should only be recognized if there’s no text after the “:”. Otherwise anytime you use a colon in your notes it would turn into a project. I guess do let me know if you see another TaskPaper reader struggle with that… I haven’t kept careful track of what’s out there.
Hmm. I know you’re the father of the syntax so I’m not going to argue but tags after colons are supported in Taskmator and PlainTasks for Sublime Text. Could just be a happy accident.
No you are right, I’d forgot that bit! What about:
? My Search ? @a and @b//*
I have no major complaint with that other than hard to recognize when scanning a document. Might be prime for mistakes with all the white space requirements so support something like this too:
?My Search?@a and @b//*
Hum… I agree again, without syntax highlighting those question marks blend it pretty good. I like the idea of using a question mark in the syntax since it seems to be a good match for running a query. Here’s a new list of ideas:
- Do Next Week [?] @due >[d] today and @due <[d] end of next week
- Do Next Week ?? @due >[d] today and @due <[d] end of next week
- Do Next Week -?- @due >[d] today and @due <[d] end of next week
- Do Next Week :? @due >[d] today and @due <[d] end of next week
Any preferences? I sorta like :?
as I can make it mean “defining a query” in my head. Though it probably sticks out the least visually.
Not a fan of starting without some anchor text or characters. If we break it down, there’s a name and a parameter part. You currently have syntax for tags with parameters like so:
@due(2015-11-11)
Extrapolate a bit without conflicting too much with Markdown:
##Do Next Week(@due >[d] today and @due <[d] end of next week)
That would also stand out a bit better too. It would look like a header with Markdown parsing so I don’t think it’s too terrible.
I’d even be good with @@Do Next Week(@due >[d] today and @due <[d] end of next week)
but that might make parsing harder but it is supported with other apps (not recognized as a valid tag).
That seems more inline with Taskpaper format since it resembles the tag/attribute relationship.
As far as I can tell curly braces are not yet used in TaskPaper (or Markdown). What about this syntax:
Do Next Week: {@due >[d] today and @due <[d] end of next week}
I could not find out with 100% certainty whether you allow tags after projects lines, or whether they strictly must end with the colon, so this syntax extension might be problematic for the parser.
But I must say I like its unobtrusiveness. The curly braces are a good hint in my opinion that something is evaluated here (compared to the static metadata in @tags) and it makes sense to attach the curly braces block to a project line, since it will usually return more than one item, and saved searches might appear in the side bar in a similar way that projects do.
Thought I’d pitch in with my 2 cents.
The @ symbol is associated with a tag so @tag makes sense. Why not extrapolate that to queries. ? symbol is associate with queries, so in my mind, ?My Search(@due >[d] today and @due <[d] end of next week) would make perfect sense, or if we need to make it stand out a little more, simply use ??My Search(@due >[d] today and @due <[d] end of next week)
It would be nice if search will allow to filter repetitive tasks as well.
I don’t have an idea how it should look… Maybe some one has one.
Maybe tags should be to contains arrays, eg @repeat(mon, tue, wed) and search can allow to check if tag contains something…
I’m not quite sure what your goal is, but you can search based on tag values. For example:
@repeat mon
Will match @repeat(mon, tue, wed)
while:
@repeat fri
Will not.
Just thought I’d chime in again to say I’m so glad you’re working on this, Jesse, and I can’t wait to see the final implementation.
I love the thought of searches being plain-text and so easily saveable.
Well now that I’ve started implementation all of my syntax ideas go out the window They all run into issues of one sort or another when I actually start the implementation. Instead I’m going for the simplest solution which is to embed the search in a tag. So from my above example searches will look like:
Do Next Week @search(@due >[d] today and @due <[d] end of next week)
Now I’m not sure why I felt the need to invent a new syntax. The above case “Do Next Week” would be displayed in the sidebar with some searchy icon next to it to distinguish from a normal project, and and when you select it the search will get applied.
No harm in that. I think it’s weird having tags within tags but it would work. Most TP based apps would simply display that line as a note so it shouldn’t be too distracting.
One comment about your implementation plans. I assume this will act like a filter. It would be good if clicking that filter somehow highlighted the filter tag in the document too. Makes editing it easier. It would be a pain to try to edit a filter name by first showing all and then searching for the filter by name.
Just posted a first version to try:
Got it. The @search
tag is still activated as a normal tag upon clicking. That seems wrong. I forgot to put a title in front of it and then went to click and edit. Instead it filtered the view for @search
tags. But of course, on the other hand it’s a quick way to see all of the filters.
What’s your recommendation? Place all filters at the head of the document?
I think I broke the syntax:
Overdue @search((@due <[d] today or @today) and not @done)
Adding to my list… should be possible eventually, but currently no ‘)’ is allowed.
I love the implementation so far. Is the syntax exactly the same as FT?
A little hard to test while a )
breaks it but I can eagerly await the update.
In the meantime I think you can rewrite these searches (at least some) using except
or union
. So it could be rewritten as:
Overdue @search(@due <[d] today or @today except @done)
I “think” that’s right… just typing in browser, haven’t tested.