blob: 97f36a85f6cf3b810e837538e118eaee8a2c9f1f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
|
# rafta.nvim
A rafta task client for your favourite editor
## Concept & Ideas
### Design
I love how [oil.nvim] works. The way you edit files feels very vim-like. My
goal is to achieve something very similar with tasks taken from rafta instead
of files. Here's my idea of how it should look (minus the pretty colors):
```
An unkpecified task 4
An very long task about very important ongoing stuff 2
An incomplete task 1
Another incomplete task 10
Guess what, this task ain't done
An incomplete task again 2
A completed task
A blocked task, bummer
*** You are offlline, will update next timee rafta.nvim is opened online ***
```
- **Status Column**:
- Undefined
- Ongoing
- Pending/Todo
- Done
- Blocked
- **Tags Column** (how many labels are attached to a given tag):
- 1+ tags
- 0 tags
- **Other columns**:
- Recurrence is enabled for that task
- A Planned/Scheduled date is set for that task
- A Deadline exists for that task
- The task has a description (markdown file)
- **Color defines priority**
- 0 (undefined): `#f2f1f0`
- 1 (Highest): `#D84141`
- 2 (Very High): `#D75D47`
- 3 (High): `#DCA056`
- 4 (Medium): `#52C782`
- 5 (Low): `#52A2C7`
- 6 (Lowest): `#665FC4`
To help the user know if the current task has schedules, deadlines, etc... The
current line should be highlighted differently (since the columns are accross
the screen).
### Usage
I don't want to force commands onto users, so I'll provide lua function which
they can configure how they please:
**Opening the rafta client** (could be used to LazyLoad):
- `open()`
- `open_tab()`
- `open_split()`
- `open_vsplit()`
**Managing Tasks**:
- `set_priority()`
- `sort(pattern string)` I have yet to figure out a spec for this
- `filter(pattern string)` I have yet to figure out a spec for this
- `set_labels()` (edit each label on a separate row in a floating window)
- `set_schedule()` (nvim input window[^1])
- `set_deadline()` (nvim input window[^1])
- `set_scheduled()` (nvim input window)
- `view_description()` opens a `.md` file in a new buffer (default: Enter key)
- `toggle_view_deadlines(show boolean)` (nil arg is a true toggle)
- `toggle_view_schedules(show boolean)`
- `toggle_view_priority(show boolean)` Shows priority number (default: hidden)
- Tasks titles are just edited via insert mode
- Saving the buffer uploads changed tasks (Same goes for descriptions)
- If when coming back online, there is a conflict, a vimdiff could be opened
where each version is represented in a toml-like file (easier to diff for
humans than json). Sections which have no content are ommited (but all
sections alway have the same order for easy diffs)
```
[Title]
This is the task title
[Scheduled]
2015-08-21,19:20
[Tags]
Work
ThatOneProject
TeamBuilding
[Description]
# Just append the markdown file here...
```
[^1]: Maybe also offer a datetimepicker floating window also?
|