This function is referenced in some doc string already, and could as well be
public, so let's make it so. This amounts to removing a dash from it's function
name.
This allows the same copy behavior as before (apart from newly introduced bugs,
that is), but in addition gives the possibility to copy bodies of arbitraty
items that can be choosen interactively. This might come in handy when copying
general checklists from anywhere in the main Org mode file to the current task.
This allows to insert links to items that were recently clocked into. The
selection to those items is done via `org-clock-select-task`, which itself will
display items from `org-clock-history`.
So far, we only considered one link in a headline and replaced it with its
description when linking to it. When there are multiple links, this will fail.
This commit changes this by iterating over all links in the headline, not only
the first one.
So far, when a link is discovered in a headline, we only keep the description of
that link. This will throw away the context of that link, which is
undesirable. So let's keep it.
When inserting links to other Org items or to the currently clocked-in item, the
complete target headline is used as a description in the newly inserted link.
When that target headline is itself a link, the newly inserted link will contain
the complete link as a description, rendering it unreadable and also
malformed (it's not allowed to have two consequtive brackets in the description
of a link). To remedy this, we now explicitly check the target headline for
being a link, and if so, only use the description of it as the description in
the newly inserted link.
When the link to another item is already present in the history of
`org-store-link`, nothing is updated. Inserting the topmost link then results
in a wrong link being inserted.
Not using `org-store-link` at all fixes this problem and also leaves the history
of `org-store-link` untouched. It also simplifies the implementation by not
relying on the complexity of `org-store-link`, but instead just only using
`org-entry-get` and `org-id-get-create`.
The `default-buffer` is apparently not optional when the current buffer is not
associated with a file. If `default-buffer` is missing and the current buffer
is not a file-buffer, e.g., a note buffer, then `org-refile-get-targets` fails.
When finding the location of an Org mode item to link to,
`org-refile-get-location` may return a point even if the target buffer is not
the default buffer. Resolving point in the default buffer thus yields a false
marker and the inserted link is wrong. To remedy this, also consider the file
name returned by `org-refile-get-location` to resolve point in the file buffer
for that file.
`org-refile-get-location` sometimes only returns a point and not a marker. In
that case, manually convert the point to a marker to ensure that calling
functions now where to go to. Additionally, ensure that
`db/org-default-org-file` is opened if not already done so, and error out if the
current buffer is not associated with a file and no default Org file exists.
We are only using the refile mechanism for convenience here, and not for actual
refiling. The refile verification function is thus not relevant here. To take
effect, we also have to ignore the cache, as it may hold precomputed targets
that have used the refile verification function in a previous run.
Sometimes an instance of a periodic tasks requires individual subtasks. In this
case, refiling there is very helpful. In other cases, the extra entries should
not be disturbing too much, I think … I hope.
Include all headlines in Org agenda files and as well as all extra text search
files in interactive selections. To make this more managable, introduce a
dedicated function to query the user for a target item.
The main entry point is now `db/org-find-links-to-current-item', which decides
how to obtain the ID and CUSTOM_ID of the item to look for. The main work is
done by `db/org-find-items-linking-to-id', which does some checks, build the
query, and then calls `org-search-view' (which, indeed, does the actual work).
Users should call `db/org-find-links-to-current-item' only.
Neither logging information not tasks should be part of that file, so keeping it
in `org-agenda-files' is not really necessary. Indeed, it has only been
included in there to allow `org-search-view' to search that file. However, with
using `org-agenda-text-search-extra-files' makes this approach obsolete.
Previously, we only copied the last element in the subtree, assuming that this
encompasses all of the content of the subtree. However, this is not true, and
thus we have to do something more elaborate. Now, starting from the end of the
subtree, we go up all elements in the subtree until we reach either the headline
or a drawer. Everything in between is copied as template to the current
location.
The shortcut in the frequently-used menu now points there, and not anymore to
the dedicated home and work files. If only a single main Org Mode file is used,
this variable should be sufficient.
If separate things should be done, generate a separate item for it, or leave
some note at the corresponding series element. Periodic tasks are quite rigid
and should not be used for collecting individual subtasks.