Task Editor Rework
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
Related bugs
- Have a link to the parent(s) in the task editor (there is already some code)
- Add tag, due and others via keyboard (like RTM)
- Create subtask with Keyboard (<Tab> may not recommended)
- Tags’ background color should be the tag’s color
- Spell checking in the edit view
- Undo support in the task editor
- Autocomplete for tags (With Tab or C-Enter better according to ploum)
- Delete subtask but arrow left
- Creating a task in the task editor should support the quickadd syntax
- Drag and dropping tasks open in the taskeditor on to tags should refresh the content of the editor
- First line tags mess up the description
- Basic text formatting such as Bold, Italic, Underlined
- In task editor, there are accessibility problems like labels not associated with text edit controls for dates
- gtg_new_task does not support subtasks (needs a split of GTK and parsing part)
- Task with big attribute content causes huge memory uses
- Highlighting tags does not work properly (Tag mis-recognition with ‘)’, ‘,’ or other notation behind)
- Selecting a link opens the link in the browser
- convert selected lines to subtask by clicking the subtask button
- Workflowy mode for task editor (Need more discussion, pure imitation is not elegant.)
- Put into a clipboard also rich text version of copied task description
- Importing dashed lines should create subtasks immediately
- Simpleway how to input a lot of new tasks withing a certain structure
- removing non-existing subtask
- Minimal neweditor size for big toolbars
- Hiding a task editor after canceling delete
- Having a tag in subtask title the task “inherits” tags
- Context menu on an URL should have a “Copy Link Location” command
- tags in subtask subject lines seem to cause problems
- ”-“ + Enter would raise an error in Task Editor
- In-editor search
- User-definable Shortcut Key
- Hidden part of calendar
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
- Spell check
Interested people
- huxuan
- IzidorMatusov
- Song Yangyu