Commit Graph

318 Commits

Author SHA1 Message Date
Daniel - 7c9f795a38
Add function to jump to template associated with the item at point 2022-12-15 14:16:52 +01:00
Daniel - 64bc1c762b
Jump to first open checkbox in currently clocked-in item by default
When no open checkbox is found, just jump to the headline of the item, as
before.
2022-11-19 16:09:38 +01:00
Daniel - 69f3f80a6e
Allow empty template when inserting checklists to Org item
In some cases, the backlinks may be sufficient as checklist.
2022-11-12 16:56:29 +01:00
Daniel - bba3adef3d
No not print empty backlink table when inserting checklist
In case there are not backlinks, replace the empty backlink table with a simple
"none".  I think that's cleaner :)
2022-11-12 15:46:49 +01:00
Daniel - d8c8e2b272
Do not backlinks in checklists when scheduled in the future
Items scheduled in the future are generally ignored, so let's do this in
checklists as well.
2022-11-12 11:50:53 +01:00
Daniel - 150b17c22b
Look up parent depth for backlinks in checklist via item property 2022-10-30 12:04:13 +01:00
Daniel - c9dcc7778e
Use Org builtin function to format links in strings 2022-10-29 10:17:28 +02:00
Daniel - 0c84493abc
Do not include TEMPLATE in inserted checklists
References to item at point contained in templates are usually not meant to be
considered manually, but just to automatically insert backreferences.
2022-10-09 11:36:43 +02:00
Daniel - 754e22dc77
Update function name and docstring for Org template copy function
We are now not merely copying a template from another item, but more abstractly
insert a checklist consisting of backlinks and a template.  Update docstring and
function name to reflect that, but keep the old name of `db/org-copy-template`
as an obsolete alias.
2022-10-09 11:22:36 +02:00
Daniel - 564990a1af
Automatically add backlinks when copying templates
Experimental

Backlinks are an integral part of the checklist for the item at point, so why
not include them per default?

Copying is for now done unconditionally and without any customization.  If those
will turn out necessary, then they will be added later.
2022-10-09 10:25:39 +02:00
Daniel - 799f1be1f6
Remove obsolete template copying functions
Everything is now covered by `db/org-copy-template`.
2022-10-09 09:56:09 +02:00
Daniel - 7169a6b83e
Allow general org-read-date syntax in workload overview report
This is already allowed by the docstring, but now also supported by calling
`org-read-date` on the original inputs (if given).
2022-10-07 15:45:53 +02:00
Daniel - 047627c6ac
Allow no start date in workload overview report
This is different from the previous default start date of today, as now all past
items will also be considered.  Additionally, also include the start date (or
today, if not given) to be included in the result table to show all efforts
still left for that day.
2022-10-07 15:42:02 +02:00
Daniel - bc3ab8b901
Fix template copy mechanism when template is in other buffer
Forgot to switch buffer when marker in other buffer is given.
2022-10-03 10:11:17 +02:00
Daniel - 12b001221c
Fix workload report in case of time range with individual timestamps
Simply replacing the first and last characters of a timestampt with `[` and `]`
is not sufficient when a time range is given with a start timestamp and an end
timestamp, because then the result would be something like `[2022-09-30 Fri
08:00>--<2022-09-30 Fri 09:00]`.  So let's replace all `<` with `[` and all `>`
with `]`, just to be save.
2022-09-30 14:54:30 +02:00
Daniel - befcf95d1f
Include deadlines in agenda time grid effort summary
When deadlines are listed on the time grid because they are due, their effort
should also be considered in the effort summary, shouldn't it?
2022-09-23 15:47:45 +02:00
Daniel - f4f69b34c7
Add first version of workload overview report
This report will list the incremental planned workload between a given time
range using a given increment.  This way, one may better at finding time to
schedule new tasks coming in.

The current implementation might be slow, because it's calling a complete
parsing process for each step in the overview report.  One could instead think
about calling it only once and then disecting the individual tasks for when they
are planned specifically.  But before we dive in these complications, let's
frist see whether the report is worth it.
2022-09-17 10:17:25 +02:00
Daniel - 5396c7c37f
Fix typo in workload report timestamp extraction 2022-09-15 10:22:27 +02:00
Daniel - 257c2c815d
Convert active timestamps in workload report into inactive ones
Otherwise, agenda views get mixed up.
2022-09-10 09:55:55 +02:00
Daniel - e5bad8b847
Allow entries in workload report to be sorted 2022-09-10 09:40:32 +02:00
Daniel - 735570d7c0
Include various timestamps in workload report
This should make it easier to decide which entries could be moved in case too
much work is planned for the upcoming days.
2022-09-10 09:25:37 +02:00
Daniel - cbd088977e
Update docstring for workload report 2022-09-10 09:17:41 +02:00
Daniel - 2e895a23fa
Allow nil dates in workload report to ignore those constraints
Emacs Lisp is fun :)
2022-09-10 09:12:02 +02:00
Daniel - 2616693233
Allow custom org-ql filter expression in workload report
Nice!
2022-09-08 18:37:42 +02:00
Daniel - 5ab5ec6aec
Format links in workload report to not include links themselves
Standard.
2022-09-07 18:06:36 +02:00
Daniel - 88a0d85006
Handle unset efforts in workload report 2022-09-07 17:41:09 +02:00
Daniel - 2e09ef6c9e
Add workload report functionality
This special kind of dynamic block inserts all planned tasks between two dates
and sums up it's efforts.  This could help in deciding what additional tasks to
accept or what dates to promise for completion of new tasks.
2022-09-06 18:34:12 +02:00
Daniel - 4e25b535ca
Fix search logic when jumping to first non-finished checkbox
Also stay put when no open checkbox is found, i.e., do not move to the end of
the subtree.
2022-08-29 17:58:02 +02:00
Daniel - 5479efabee
Add function to jump to first open checkbox in subtree
Still needs a nice key binding.
2022-08-28 19:07:51 +02:00
Daniel - 46d968d316
Manually insert link when invoking interruption capture template
The provided %K shortcut inserts text links an not id: links.
2022-07-22 18:21:55 +02:00
Daniel - c91a6d36db
Add helper to evaluate source blocks in subtree without confirmation 2022-07-21 21:54:35 +02:00
Daniel - 3b13921097
Change default org-ql query for db/org-backlinks to `(not (done))`
Using `(todo)` (the previous default) excluded NOTEs and TOPICs (among others)
which I am usually interested in.
2022-06-30 16:51:55 +02:00
Daniel - 39cb696fc4
Allow NOTEs as refile-targets again
This partially reverts cff8720a44, but keeps the
doc-string.

Rationale: TOPICs may contain notes which should be reviewd regularly.  Those
TOPICs should also be tagged with NOTE but could (and should) in addition
contain sub-items about concrete tasks.  In this case refiling to a NOTE should
be allowed.

Maybe limiting refiling to NOTE:TOPIC combinations would be more strict here,
but I think this complexity is not (yet) worth it.
2022-06-29 16:51:19 +02:00
Daniel - f3186b45f7
Allow limiting number of parent ascents when listing backlinks
Sometimes only the backlinks to the items itself might be interesting, or
backlinks to the current item and its direct parent.  To allow for easy
insertion of dynamic backlink blocks in those cases as well, include a
:parent-depth parameter.  The default value of nil means no limit is imposed, as
has been the case until now.
2022-06-20 18:01:11 +02:00
Daniel - cff8720a44
Exclude NOTE entries in main org file as refile targets
The idea is that those entries represent project notes which should not get
tasks refiled as sub-items (sub-headings to structure these notes are fine,
though, and must be added directly).  To connect tasks with project notes, use
links and backlinks instead.

This helps to prevent accidental refiling of tasks under notes and loosing them
there.  A drawback is that `C-u org-refile` won't list notes as visiting targets
anymore; for this, use imenu instead.
2022-06-11 21:17:57 +02:00
Daniel - 7e2860a9d9
Try to increase readability of db/org-backlinks implementation
Mostly making use of pcase-*, but I am not quite sure whether the `(,foo . ,bar)
syntax really helps …

Also adjusted some comments and some formatting.
2022-06-11 09:25:25 +02:00
Daniel - b03a8f9517
Visually separate different groups of priorities in backlinks dblock
Use an hline for this, should increase readability.
2022-06-11 09:10:17 +02:00
Daniel - 10e01d4b3b
Transpose output of backlink dynamic block to emphasize backlinks
We are interested in the backlinks so we now put them first.  The backlink
targets (i.e., current item or any of its parents) are now grouped after the
priority of the item containing the backlink.
2022-06-10 18:46:22 +02:00
Daniel - b84eb291e3
Use org-ql regexp search to find backlins
This is because org-ql link queries seem to be broken when target links contain
brackets in their description.
2022-06-09 21:27:35 +02:00
Daniel - de314f6ac2
Refactor org link formatting functions to avoid duplicate code 2022-05-20 19:34:56 +02:00
Daniel - 2c01e1e09c
Do not format links directly in backlink dynamic block
They will show as links in links and will thus be mostly incomprehensible.
2022-05-20 19:22:57 +02:00
Daniel - c572451c14
Do not output headlines without backlinks in dynamic blocks 2022-05-20 19:09:39 +02:00
Daniel - 05a126bfed
Introduce dynamic block to show backlinks of Org item at point
This dynamic block will list all items (including their priority) that link to
the item at point or to any of its parent items.  The use case for this is to
have a series of periodic appointments where certain topics should be
discussed (“jour fixe”), and where those topics can be referenced in those
appointments via backlinks.  However, simple backlinks to an item on a fixed
date is not sufficient here, as there might not be enough time on that day to
discuss all items.  To avoid having to manipulate all backlinks that could not
be discussed, one could simply add a reference to the parent item of all
appointments of the jour fixe series.  Using the new dynamic block introduced
here, this item will be on the list of open topics until it's closed.
2022-05-14 11:43:08 +02:00
Daniel - a36671dc61
Fix minor indentation glitch 2022-05-08 17:04:45 +02:00
Daniel - 9184756c07
Refactor function to return backlinks to item at point
Extract function to return actual list of backlinks, to later use it for
extracting backlinks of item at point and all its parents.
2022-05-05 22:08:02 +02:00
Daniel - 8f18c159d0
Code cosmetics
And not using `nconc`, as I am not quite sure whether it would also affect
`org-agenda-text-search-extra-files`.
2022-04-16 10:19:28 +02:00
Daniel - 341dec6a6a
Simplify code searching for backlinks
Reduce the conditional parts and extract common code.
2022-04-16 10:13:00 +02:00
Daniel - b670ee57f6
Only search Org buffers when querying for backlinks
It does not make sense to look in non-Org buffers for backlinks of items, but
this was indeed what happend until now: the function `db/org-get-location` only
checked whether the current buffer is associated with a file, and if so uses it
for querying the user for an item to select.  This does not make sense, as
`db/org-get-location` is supposed to return a mark to an Org item.

This is now fixed by `db/org-get-location` to also check whether the current
buffer is also an Org buffer.  It's as simple as that.
2022-04-16 10:08:11 +02:00
Daniel - 1d5f318b5b
Add function to return list of Org items linking to item at point
This function is not meant for interactive use, but instead should be used in
source blocks such as

```
(db/org-backlinks-to-item-at-point)
```

This will add a table of all items linking to the current item at point, and cut
be used in item templates, for example.

Background: I tried to achive this functionality with `org-ql` directly, but
somehow failed.  This function simply encapsulates the corresponding call to
`org-ql-query`, adding the ID property of item at point automatically.
2022-04-16 09:58:46 +02:00
Daniel - fdc32eaa6d
Clear refile cache when updating the headline of an org mode item 2022-04-02 08:56:18 +02:00