Task Editor Rework

There are many bugs to solve about a task editor. Some of them requires huge changes in code and therefore we want to create a new version of task editor

Format of tag

Note:

  • There should be a list of allowned notations in tags which need more discussion.

Definition in Regular Expression (in Python):

  • This is deprecated and will revised later.
  • re.complie('(?:^|\s)@([^!@\s]\S*)', re.MULTILINE)

What should be a tag:

  • @tag
  • @google.com
  • @M&M should be parsed as @M

What shouldn’t be a tag:

  • @@ – it is a part of diff output
  • user@mail.com – not e-mail addresses
  • @!tag – ‘!’ is reserved for negation of tags, it might interfere with tag completion
  • @tag@ should not be a tag.

More specification:

  • @should omit the notation at the end of sentence. e.g. “go @home.” should be parsed as “@home” instead of “@home.”

Features summary

  • Redesign task structure (This tends to solve a lot of strange bugs)
  • Quick add syntax
  • Tag auto-completion
  • Undo
  • Rich text format
  • Spell check
  • Faster way of adding subtask
  • Search for text within a task-editor, and Search for Task using task browser
  • User Definable Shortcut Key

To Do List

  • make a new structure of a task -> tags, subtasks, bold, italic
  • split GTK and parser part (and write intensive tests for parser)
  • implement undo & tag completition
  • design when to autosave
  • respond to modified() signal (auto refresh of a task)
  • implement spell check
  • design keyboard friendly way how to enter lot of subtasks (including nested subtasks) (something like workflowy mode)
  • Disabled Mode (something like launchpad bugs list which is not allowed to edit title and content except for adding and deleting tags.)

Tags removal

  • remove tags only from tags line or when there is nothing more than a tag on on the single line
  • other reocurrences replace by the name of tag

Example task:

Call @boss @today
@boss

Discuss with my @boss my assignments.

After removing tag @boss

Call boss @today

Discuss with my boss my assignments.

Some Opinions

  • Refer to reStructuredText or some other markup language syntax
    • lists (subtask in GTG) start with dash and a space (nest also support)
    • rich text format // \*italic\*, \**blod\**, no underline syntax
  • restrict some field value pattern to make it parsed by Regular Expression
    • Example: restrict tag start with @ and only contains letters, numbers or some limited symbol like ‘-‘. // tag_pattern = re.compile(‘@[\w-]+’)
  • Vim auto-completion
    • I am used to the raw auto-completion in vim and its display. More discussion needed.

Conclusion

  • Suggestions tend to realize features:
    • Redesign task structure
    • Quick add syntax
    • Rich text format
    • Tag auto-completion
  • Features remained and some potential reference
    • Spell check
      • Pitijo’s code
      • python-enchant
    • Undo
      • Luca’s code

Interested people