mirror of
https://github.com/protesilaos/denote.git
synced 2026-09-10 07:16:20 -04:00
Update to Denote version 4.0.0
This commit is contained in:
parent
23bb1ec373
commit
c98c74ec74
593
CHANGELOG.org
593
CHANGELOG.org
|
|
@ -13,6 +13,599 @@ the manual: <https://protesilaos.com/emacs/denote>.
|
|||
|
||||
#+toc: headlines 1 insert TOC here, with one headline level
|
||||
|
||||
* Version 4.0.0 on 2025-04-15
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:8a134846-72cc-4fbf-830d-6ca9fd0f9ec8
|
||||
:END:
|
||||
|
||||
This is a massive release. There is one breaking change, which should
|
||||
be easy to adapt to: this pertains to the reorganisation of the
|
||||
project to separate the "core" of Denote from its "extensions". The
|
||||
core is the ~denote~ package. Each extension now has its own package
|
||||
(details below).
|
||||
|
||||
Other than that, this version includes lots of new features for
|
||||
searching and linking as well as quality-of-life refinements. We have
|
||||
generalised the infrastructure for performing queries in the
|
||||
~denote-directory~ and made the buffers with the search results more
|
||||
useful.
|
||||
|
||||
Take your time to read through this publication. I am writing it for
|
||||
you. Also remember that the most up-to-date resource for anything
|
||||
related to Denote is its manual. You are always welcome to contact me:
|
||||
<https://protesilaos.com/contact>. Or join the development on the Git
|
||||
repository.
|
||||
|
||||
As usual, special thanks to Jean-Philippe Gagné Guay for making high
|
||||
quality contributions to Denote since the beginning of the project ~3
|
||||
years ago. Those will not always be headline features, but are
|
||||
important improvements to the underlying code base.
|
||||
|
||||
I mention contributions from Jean-Philippe and others in its context.
|
||||
Though I do not cover implementation details, otherwise this document
|
||||
will be the size of a book. This does not mean that they are no
|
||||
important though. Please consult the Git commit log for all the
|
||||
technicalities.
|
||||
|
||||
** All the "extras" are in separate packages, including the Org dynamic blocks
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:26ed2af1-60c8-4217-93b3-bbe344e4eb7b
|
||||
:END:
|
||||
|
||||
In previous versions of Denote, we included some optional extensions
|
||||
as part of the ~denote~ package. These included the files
|
||||
=denote-org-extras.el= (Org dynamic blocks, among others),
|
||||
=denote-journal-extras.el= (streamlined for journaling),
|
||||
=denote-silo-extras.el= (working with multiple Denote silos).
|
||||
|
||||
The files =denote-md-extras.el= (Markdown extras) and
|
||||
=denote-sequence.el= (sequence notes, including Luhmann-style
|
||||
alphanumeric sequences) were also part of the project during the last
|
||||
development cycle, though they never made it into a tagged release.
|
||||
|
||||
All these are now available as standalone packages on the official GNU
|
||||
ELPA archive:
|
||||
|
||||
- ~denote-org~ :: In the Emacs configuration file, replace all
|
||||
instances of =denote-org-extras= with =denote-org=.
|
||||
|
||||
- ~denote-journal~ :: Replace =denote-journal-extras= with =denote-journal=.
|
||||
|
||||
- ~denote-silo~ :: Replace =denote-silo-extras= with =denote-silo=.
|
||||
|
||||
- ~denote-markdown~ :: Replace =denote-md-extras= with =denote-markdown=.
|
||||
|
||||
- ~denote-sequence~ :: No changes to any of the defined symbols.
|
||||
Simply get the new package.
|
||||
|
||||
I will document each of these packages further below. The plan, going
|
||||
forward, is to maintain all the packages and coordinate their new
|
||||
versions.
|
||||
|
||||
** More things in "core"
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:3820e9cf-f034-4c3c-a4ed-1e7d11f1cd23
|
||||
:END:
|
||||
|
||||
While the extras are moved out to their own code repositories, all
|
||||
other features are merged into =denote.el=. Those include everything
|
||||
that was in =denote-sort.el= and =denote-rename-buffer.el=.
|
||||
|
||||
- The "sort" mechanism is mostly for package developers. We use it
|
||||
extensively in our Org dynamic blocks, which are now part of the
|
||||
~denote-org~ package.
|
||||
|
||||
- The ~denote-dired~ command (alias ~denote-sort-dired~) is the only
|
||||
user-facing "sort" command we have always provided. It produces a
|
||||
fully fledged Dired buffer showing the results of the given search
|
||||
for file names. The matching files are sorted according to the
|
||||
user's expressed preference. The details are described in the
|
||||
manual.
|
||||
|
||||
- The ~denote-rename-buffer-mode~ and all of its user options are
|
||||
unchanged. This mode automatically renames the buffer of a given
|
||||
Denote file so that it is easier to read it. Again, the manual
|
||||
covers the technicalities.
|
||||
|
||||
Users do not need to make changes, unless they are explicitly loading
|
||||
=denote-sort-dired= and =denote-rename-buffer=. In that case, they may
|
||||
just remove those calls: only ~denote~ needs to be loaded.
|
||||
|
||||
** The ~denote-query-mode~
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:36f305e2-310d-4327-941a-ca0570b473d2
|
||||
:END:
|
||||
|
||||
Many of the features I will describe below produce search results via
|
||||
the built-in Xref mechanism. Xref performs a search with a Grep or
|
||||
Grep-like program, subject to the user option ~xref-search-program~.
|
||||
The buffer those search results are displayed in runs the
|
||||
~denote-query-mode~. It supersedes ~denote-backlinks-mode~.
|
||||
|
||||
The ~denote-query-mode~ supports the following:
|
||||
|
||||
- Results are shown in the context, with the exact match in highlight.
|
||||
- Matches are grouped by file. Each file is a "heading".
|
||||
- Headings can be folded with =TAB=, just how it is done in Org buffers.
|
||||
- The results can be used for further queries. Type =C-h m=
|
||||
(~describe-mode~) to learn about all the relevant commands.
|
||||
|
||||
We have had support for Xref since the original version of Denote. It
|
||||
now is more generalised to cover backlinks, query links, and
|
||||
~denote-grep~ (more below).
|
||||
|
||||
** Use query links for file contents or file names
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:c217a37a-db73-46bd-ab5f-3f9c54f9d53b
|
||||
:END:
|
||||
|
||||
Denote has always provided the option to link directly to a file with
|
||||
a given name by referencing its identifier. This can be done with the
|
||||
command ~denote-link~, among a few others like it (always consult the
|
||||
manual of Denote).
|
||||
|
||||
In addition to these "direct links", we also support "query links".
|
||||
Those do not point to a file but instead trigger a search. The results
|
||||
are placed in a buffer that uses the appropriate major mode.
|
||||
|
||||
There are two types of query links:
|
||||
|
||||
- Query file contents :: Use the command ~denote-query-contents-link~
|
||||
to insert a query link at point for "file contents". It perform a
|
||||
search inside files in the ~denote-directory~ and put the results in
|
||||
a ~denote-query-mode~ buffer.
|
||||
|
||||
- Query file names :: Use the ~denote-query-filenames-link~ to insert
|
||||
a query link for "file names". It performs the query against file
|
||||
names (not contents!) and puts the results in a ~dired~ buffer.
|
||||
|
||||
The display of the buffer with the query link results is controlled by
|
||||
the user option ~denote-query-links-display-buffer-action~.
|
||||
|
||||
Query links are styled a little bit differently than direct links.
|
||||
Compare the ~denote-faces-link~ with ~denote-faces-query-link~. Both
|
||||
should look okay with most themes.
|
||||
|
||||
Denote query links are supported as part of the =denote:= hyperlink
|
||||
type. They are available in all file types we define (per the user
|
||||
option ~denote-file-type~) and should, in principle, work in any
|
||||
custom file type (advanced users can check the variable ~denote-file-types~).
|
||||
|
||||
** Backlinks now always show their context
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:8ebc6ae8-1087-46fa-a0ec-464749f0ac4d
|
||||
:END:
|
||||
|
||||
In the past, the command ~denote-backlinks~ would produce a bespoke
|
||||
buffer showing a list of file names that included links to the current
|
||||
file (any file with the Denote file-naming scheme can have backlinks,
|
||||
by the way, including PDFs, videos, etc.). This buffer did not provide
|
||||
any additional functionality. We used to support the option to show
|
||||
results in their context via ~denote-backlinks-show-context~. Those
|
||||
would be rendered in a standard Xref buffer.
|
||||
|
||||
The contextual results are now the default and sole option. This is
|
||||
because we have expanded the functionality of those buffers to use the
|
||||
~denote-query-mode~, as explained above. Plus, it makes our code base
|
||||
simpler.
|
||||
|
||||
Users will notice how backlikns look just like a query link for file
|
||||
contents. This is because backlinks are the original query links since
|
||||
day one of Denote.
|
||||
|
||||
** Direct links to a file with matching contents
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:a1a7b766-328d-4883-93b2-c68b49bd1aa3
|
||||
:END:
|
||||
|
||||
The command ~denote-link-to-file-with-contents~ allows users to
|
||||
produce a direct link to a file whose contents (not file name!)
|
||||
includes the given query.
|
||||
|
||||
Similarly, the command ~denote-link-to-all-files-with-contents~
|
||||
generates a typographic list (bullet list) to all files whose contents
|
||||
match the given query.
|
||||
|
||||
The manual covers all linking commands in depth.
|
||||
|
||||
** The essence of ~denote-search~ is part of ~denote~
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:5d2ac378-304c-4ea8-bbfb-b3f7b649b27d
|
||||
:END:
|
||||
|
||||
The ~denote-search~ package by Lucas Quintana uses the infrastructure
|
||||
of Denote to perform searches in file contents. We now provide its
|
||||
feature set as part of core ~denote~.
|
||||
|
||||
We decided to do this since query links already introduced all of the
|
||||
requisite generalisations to ~denote-query-mode~.
|
||||
|
||||
Users can rely on the commands ~denote-grep~, ~denote-grep-marked-dired-files~,
|
||||
and ~denote-grep-files-referenced-in-region~.
|
||||
|
||||
The placement of these buffers is subject to the user option
|
||||
~denote-grep-display-buffer-action~.
|
||||
|
||||
This functionality was introduced in two pull requests by Lucas
|
||||
Quintana, 571 and 573, with further changes by me:
|
||||
|
||||
- <https://github.com/protesilaos/denote/pull/571>.
|
||||
- <https://github.com/protesilaos/denote/pull/573>.
|
||||
|
||||
Lucas has assigned copyright to the Free Software Foundation.
|
||||
|
||||
I think this was a much-needed addition to the core of Denote. It
|
||||
complements ~denote-dired~ and query links.
|
||||
|
||||
** Formatting of links with ~denote-link-description-format~
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:635b7f04-891a-4a8b-b420-4e0d9dadc232
|
||||
:END:
|
||||
|
||||
The old user option ~denote-link-description-function~ is deprecated
|
||||
and superseded by the new ~denote-link-description-format~. The new
|
||||
user option still accepts a custom function as its value, so the old
|
||||
behaviour should be retained.
|
||||
|
||||
What the new ~denote-link-description-format~ supports is an easier
|
||||
way to customise the description of a link by using format specifiers
|
||||
for common options. For example, users who only want to see the title
|
||||
of the linked file can do this:
|
||||
|
||||
#+begin_src emacs-lisp
|
||||
(setq denote-link-description-format "%t")
|
||||
#+end_src
|
||||
|
||||
The documentation of this user option covers all the format specifiers
|
||||
and further details.
|
||||
|
||||
** Miscellaneous changes for all users
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:76a56ab5-c44b-4c67-8048-25dd0dd88dcf
|
||||
:END:
|
||||
|
||||
- The command ~denote-add-front-matter~ is superseded by
|
||||
~denote-rename-file~ and related. Those renaming commands will add
|
||||
missing front matter or rewrite the modified lines of existing front
|
||||
matter. This is due to refinements made by Jean-Philippe Gagné Guay
|
||||
to the file renaming mechanism. We discussed this deprecation in
|
||||
issue 498: <https://github.com/protesilaos/denote/issues/498>. Also
|
||||
thanks to Samuel Flint for reporting an earlier problem with file
|
||||
name signatures: <https://github.com/protesilaos/denote/issues/492>.
|
||||
|
||||
- The user option ~denote-open-link-function~ specifies the function
|
||||
used by Denote to open the file of a direct link.
|
||||
|
||||
- The user option ~denote-org-store-link-to-heading~ can now be set to
|
||||
form generic context links without a =PROPERTIES= drawer and
|
||||
corresponding =CUSTOM_ID=. Set the value of this variable to
|
||||
='context=. Read its documentation for further details.
|
||||
|
||||
- Also about ~denote-org-store-link-to-heading~, we have changed its
|
||||
default value to ~nil~, which is what we were doing for most of
|
||||
Denote's history. This means that, by default, ~org-store-link~ and
|
||||
anything building on top of it will create a link only to the
|
||||
current Denote file, like =denote:IDENTIFIER=, but not to the
|
||||
current heading within that file. To create links to the
|
||||
file+heading, set the value of this variable to ='id=.
|
||||
|
||||
- The command ~denote-dired-link-marked-notes~ is an alias for
|
||||
~denote-link-dired-marked-notes~.
|
||||
|
||||
- The user option ~denote-sort-dired-extra-prompts~ control what
|
||||
~denote-dired~ (alias ~denote-sort-dired~) prompts for. It accepts
|
||||
either a nil value or a list of symbols among ~sort-by-component~,
|
||||
~reverse-sort~, and ~exclude-regexp~. The order those symbols appear
|
||||
in the list is significant, with the leftmost coming first.
|
||||
|
||||
- There is a new ~denote-sort-identifier-comparison-function~ variable
|
||||
which determines how identifier-based sorting should be done by
|
||||
default. It complements the existing ~denote-sort-title-comparison-function~,
|
||||
~denote-sort-keywords-comparison-function~, ~denote-sort-signature-comparison-function~.
|
||||
Thanks to Maikol Solís for the contribution in pull request 517:
|
||||
<https://github.com/protesilaos/denote/pull/517>. The change is
|
||||
small, meaning that Maikol does not need to assign copyright to the
|
||||
Free Software Foundation (though I believe the paperwork is done, anyway).
|
||||
|
||||
- Lots of refinements to the doc strings of individual variables
|
||||
and/or functions as well as the manual.
|
||||
|
||||
- Lots of other contributions to discussions and questions on the Git
|
||||
repository. Granted, these are not "changes" per se but are part of
|
||||
the development effort nonetheless.
|
||||
|
||||
- Made ~denote-get-path-by-id~ use ~denote-get-file-extension-sans-encryption~
|
||||
instead of ~denote-get-file-extension~. This fixes a bug where the
|
||||
extension is duplicated if it has an encryption component. Thanks to
|
||||
eum3l for the patch in pull request 562: <https://github.com/protesilaos/denote/pull/562>.
|
||||
The change is small, meaning that the author does not need to assign
|
||||
copyright to the Free Software Foundation.
|
||||
|
||||
- Same as above for ~denote--rename-file~, which was done in pull
|
||||
request 557: <https://github.com/protesilaos/denote/pull/557>.
|
||||
|
||||
** For developers or advanced users
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:7eaf43a6-7d62-440e-bf7c-8d9536c7d36e
|
||||
:END:
|
||||
|
||||
The following have been added or modified.
|
||||
|
||||
+ NEW Function ~denote-file-has-denoted-filename-p~ :: Return non-nil
|
||||
if =FILE= respects the file-naming scheme of Denote. This tests the
|
||||
rules of Denote's file-naming scheme. Sluggification is ignored. It
|
||||
is done by removing all file name components and validating what
|
||||
remains. Thanks to Jean-Philippe Gagné Guay for the pull request
|
||||
515: <https://github.com/protesilaos/denote/pull/515>.
|
||||
|
||||
+ NEW Functions ~denote-infer-keywords-from-files~ :: Return list of
|
||||
keywords in ~denote-directory-files~. With optional
|
||||
=FILES-MATCHING-REGEXP=, only extract keywords from the matching
|
||||
files. Otherwise, do it for all files. Keep any duplicates. Users
|
||||
who do not want duplicates should refer to the functions
|
||||
~denote-keywords~.
|
||||
|
||||
+ MODIFIED Function ~denote-keywords~ :: Returns an appropriate list
|
||||
of keyword candidates, while accounting for the value of the user
|
||||
option ~denote-infer-keywords~. It now also accepts the optional
|
||||
=FILES-MATCHING-REGEXP= parameter.
|
||||
|
||||
+ MODIFIED Function ~denote-directory-files~ :: Returns a list of
|
||||
absolute file paths in variable ~denote-directory~. It now accepts
|
||||
the optional =EXCLUDE-REGEXP= parameter.
|
||||
|
||||
+ MODIFIED Function ~denote-format-file-name~ :: Formats a file name.
|
||||
The way it treats its =ID= parameter has changed. Please read its
|
||||
doc string. Thanks to Jean-Philippe Gagné Guay for the pull request
|
||||
496: <https://github.com/protesilaos/denote/pull/496>.
|
||||
|
||||
+ ALIAS Function ~denote-retrieve-filename-keywords-as-list~ :: This
|
||||
is a name that is easier to discover than ~denote-extract-keywords-from-path~,
|
||||
because of the many other functions with the =denote-retrieve-*= prefix.
|
||||
|
||||
+ MODIFIED Function ~denote-retrieve-filename-identifier~ :: Extracts
|
||||
the identifier from =FILE= name, if present, else returns nil. To
|
||||
create a new one from a date, refer to the ~denote-get-identifier~
|
||||
function. Thanks to Jean-Philippe Gagné Guay for the pull request
|
||||
476: <https://github.com/protesilaos/denote/pull/476>.
|
||||
|
||||
+ MODIFIED Function ~denote-get-identifier~ :: Converts =DATE= into a
|
||||
Denote identifier using ~denote-id-format~. If =DATE= is nil, it
|
||||
returns an empty string as the identifier. Also by Jean-Philippe in
|
||||
pull request 476 mentioned right above.
|
||||
|
||||
+ MODIFIED Function ~denote-date-prompt~ :: Prompts for a date,
|
||||
expecting =YYYY-MM-DD= or that plus =HH:MM= (or even =HH:MM:SS=).
|
||||
Can also use Org's more advanced date selection utility if the user
|
||||
option ~denote-date-prompt-use-org-read-date~ is non-nil. It now has
|
||||
the optional parameters =INITIAL-DATE= and =PROMPT-TEXT=. Thanks to
|
||||
Jean-Philippe Gagné Guay for the pull request 576:
|
||||
<https://github.com/protesilaos/denote/pull/576>.
|
||||
|
||||
- NEW Function ~denote-retrieve-groups-xref-query~ :: Accesses the
|
||||
location of xrefs for =QUERY= and group them per file. Limit the
|
||||
search to text files.
|
||||
|
||||
- NEW Function ~denote-retrieve-files-xref-query~ :: Returns sorted,
|
||||
deduplicated file names with matches for =QUERY= in their contents.
|
||||
Limits the search to text files.
|
||||
|
||||
- NEW Function ~denote-retrieve-xref-alist~ :: Returns xref alist of
|
||||
files with the location of matches for =QUERY=. With optional
|
||||
=FILES-MATCHING-REGEXP=, it limits the list of files accordingly
|
||||
(per ~denote-directory-files~). At all times, it limits the search
|
||||
to text files.
|
||||
|
||||
+ NEW Function ~denote-prepend-front-matter~ :: Prepend front matter
|
||||
to =FILE=. The =TITLE=, =KEYWORDS=, =DATE=, =ID=, =SIGNATURE=, and
|
||||
=FILE-TYPE= are passed from the renaming command and are used to
|
||||
construct a new front matter block if appropriate.
|
||||
|
||||
+ MODIFIED Function ~denote-rewrite-front-matter~ :: Rewrites front
|
||||
matter of note after ~denote-rename-file~ (or related). The =FILE=,
|
||||
=TITLE=, =KEYWORDS=, =SIGNATURE=, =DATE=, =IDENTIFIER=, and
|
||||
=FILE-TYPE= arguments are given by the renaming command and are used
|
||||
to construct new front matter values if appropriate. If
|
||||
~denote-rename-confirmations~ contains ~rewrite-front-matter~,
|
||||
prompt to confirm the rewriting of the front matter. Otherwise
|
||||
produce a ~y-or-n-p~ prompt to that effect. Thanks to
|
||||
Jean-Philippe Gagné Guay for the pull request 558:
|
||||
<https://github.com/protesilaos/denote/pull/558>.
|
||||
|
||||
** Denote "extensions" that are not in the ~denote~ package anymore
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:40e030cd-f462-44ce-add9-ab1525359ae6
|
||||
:END:
|
||||
|
||||
*** ~denote-journal~ integrates nicely with =M-x calendar=
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:f8ab710d-852f-4d8b-b0f8-9a24c5c83808
|
||||
:END:
|
||||
|
||||
The ~calendar~ can now highlight days that have journal entry. It may
|
||||
also be used as a date picker to view or write a journal entry for
|
||||
that day.
|
||||
|
||||
- Thanks to Alan Schmitt for reporting an issue with the calendar
|
||||
integration during development:
|
||||
<https://github.com/protesilaos/denote-journal/issues/8>.
|
||||
|
||||
- Thanks to Vineet C. Kulkarni for tweaking the identification of the
|
||||
journal keyword to be more robust:
|
||||
<https://github.com/protesilaos/denote-journal/pull/4>.
|
||||
|
||||
- Thanks to Honza Pokorny for fixing two small issues with the path
|
||||
expansion:
|
||||
|
||||
- <https://github.com/protesilaos/denote-journal/pull/5>
|
||||
- <https://github.com/protesilaos/denote-journal/pull/7>
|
||||
|
||||
Other than that, the package is providing the same functionality as
|
||||
the discontinued =denote-journal-extras.el=.
|
||||
|
||||
- Manual: <https://protesilaos.com/emacs/denote-journal>.
|
||||
- GitHub: <https://github.com/protesilaos/denote-journal>.
|
||||
|
||||
*** ~denote-org~ is almost the same as the discontinued =denote-org-extras.el=
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:db491fe0-0c96-4c2e-9320-dc2697106e12
|
||||
:END:
|
||||
|
||||
The only addition to dynamic blocks the optional =:not-regexp= parameter.
|
||||
This is a regular expression that can further filter the results of a
|
||||
search, such that the matching items are removed from the output.
|
||||
|
||||
The official manual of ~denote-org~ covers the technicalities.
|
||||
|
||||
- Manual: <https://protesilaos.com/emacs/denote-org>.
|
||||
- GitHub: <https://github.com/protesilaos/denote-org>.
|
||||
|
||||
Also thanks to Elias Storms for fixing a small issue with the "missing
|
||||
links" Org dynamic block, in pull request 486: <https://github.com/protesilaos/denote/pull/486>
|
||||
|
||||
*** ~denote-silo~ is the same as the discontinued =denote-silo-extras.el=
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:ed7c77f5-9b44-4e76-9ada-80ff0ed6d5f6
|
||||
:END:
|
||||
|
||||
I have only made small tweaks to it, but nothing that changes the user
|
||||
experience.
|
||||
|
||||
+ Manual: <https://protesilaos.com/emacs/denote-silo>
|
||||
+ GitHub: <https://github.com/protesilaos/denote-silo>
|
||||
|
||||
*** ~denote-markdown~ for some Markdown-specific extras
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:e01d236c-fb50-488f-9fb2-15e866fa122a
|
||||
:END:
|
||||
|
||||
This package provides some convenience functions to better integrate
|
||||
Markdown with Denote. This is mostly about converting links from one
|
||||
type to another so that they can work in different applications
|
||||
(because Markdown does not have a standardised way to define custom
|
||||
link types). It also defines an "Obsidian" file type which does not
|
||||
have any front matter but only uses a level 1 heading for the title of
|
||||
the note.
|
||||
|
||||
The code of ~denote-markdown~ used to be bundled up with the ~denote~
|
||||
package before version =4.0.0= of the latter and was available in the
|
||||
file =denote-md-extras.el=. Users of the old code will need to adapt
|
||||
their setup to use the ~denote-markdown~ package. This can be done by
|
||||
replacing all instances of =denote-md-extras= with =denote-markdown=
|
||||
across their configuration.
|
||||
|
||||
+ Manual: <https://protesilaos.com/emacs/denote-markdown>
|
||||
+ GitHub: <https://github.com/protesilaos/denote-markdown>
|
||||
|
||||
*** Write sequence notes (or "folgezettel") with ~denote-sequence~
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:6181df9e-790f-4fcf-8093-cefbba324cb5
|
||||
:END:
|
||||
|
||||
Users who want their notes to have an inherent structure can use
|
||||
~denote-sequence~. The idea is to have thoughts that naturally form
|
||||
sequences and are named accordingly. The sequence scheme is either
|
||||
numeric or alphanumeric. The manual of the package explains all the
|
||||
details.
|
||||
|
||||
+ Manual: <https://protesilaos.com/emacs/denote-sequence>
|
||||
+ GitHub: <https://github.com/protesilaos/denote-sequence>
|
||||
|
||||
I had a lot of fun developing this comprehensive package during the
|
||||
winter holidays.
|
||||
|
||||
Thanks to Claudio Migliorelli, Kierin Bell, Mirko Hernandez for
|
||||
helping me fix some issues during development:
|
||||
|
||||
- <https://github.com/protesilaos/denote/pull/518>.
|
||||
- <https://github.com/protesilaos/denote/pull/528>.
|
||||
- <https://github.com/protesilaos/denote/pull/540>.
|
||||
- <https://github.com/protesilaos/denote/pull/541>.
|
||||
- <https://github.com/protesilaos/denote-sequence/issues/2>.
|
||||
|
||||
** The ~consult-denote~ also gets a small update
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:90a9287d-a7dd-4d65-9214-4be6ebdf5943
|
||||
:END:
|
||||
|
||||
This has always been a standalone package. I made the function
|
||||
~consult-denote-file-prompt~ read the special-purpose variable
|
||||
~denote-file-prompt-use-files-matching-regexp~. This is related to
|
||||
commit =e0f1d47= in denote.git, about issue 536 as reported by Alan
|
||||
Schmitt: <https://github.com/protesilaos/denote/issues/536>. The
|
||||
variable =denote-file-prompt-use-files-matching-regexp= is meant to be
|
||||
~let~ bound and is for advanced users or developers.
|
||||
|
||||
** Feature freeze at least until the end of April 2025
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:8624e698-90cd-429e-a072-b0fa2df76662
|
||||
:END:
|
||||
|
||||
I will not develop new features or accept pull request for a couple of
|
||||
weeks. The idea is to focus on fixing any bug reports. We can then
|
||||
publish point releases quickly.
|
||||
|
||||
New features can be included after we are confident that the packages
|
||||
we have are okay.
|
||||
|
||||
** Git commits
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:5191b423-6dc5-4ca7-9bcc-39797be5707c
|
||||
:END:
|
||||
|
||||
This is just an overview of the Git commits, though remember that
|
||||
there is more that goes into a project, such as the reporting of
|
||||
inconsistencies, discussion of new ideas, et cetera. Thanks to
|
||||
everybody involved! Plus, some commits are large while others are
|
||||
tiny.
|
||||
|
||||
#+begin_src
|
||||
~/Git/Projects/denote $ git shortlog 3.1.0..4.0.0 --summary --numbered
|
||||
470 Protesilaos Stavrou
|
||||
90 Jean-Philippe Gagné Guay
|
||||
6 Kierin Bell
|
||||
4 Alan Schmitt
|
||||
3 eum3l
|
||||
2 Claudio Migliorelli
|
||||
2 Lucas Quintana
|
||||
2 grtcdr
|
||||
1 Elias Storms
|
||||
1 Laurent Gatto
|
||||
1 Maikol Solís
|
||||
1 Octavian
|
||||
1 TomoeMami
|
||||
#+end_src
|
||||
|
||||
The following are not accurate because they only reflect the changes
|
||||
after the reorganisation I made. But we have to start from somewhere.
|
||||
|
||||
#+begin_src
|
||||
~/Git/Projects/denote-journal $ git shortlog --summary --numbered
|
||||
54 Protesilaos Stavrou
|
||||
2 Honza Pokorny
|
||||
1 Vineet C. Kulkarni
|
||||
#+end_src
|
||||
|
||||
#+begin_src
|
||||
~/Git/Projects/denote-sequence $ git shortlog --summary --numbered
|
||||
22 Protesilaos Stavrou
|
||||
#+end_src
|
||||
|
||||
#+begin_src
|
||||
~/Git/Projects/denote-silo $ git shortlog --summary --numbered
|
||||
17 Protesilaos Stavrou
|
||||
#+end_src
|
||||
|
||||
#+begin_src
|
||||
~/Git/Projects/denote-org $ git shortlog --summary --numbered
|
||||
15 Protesilaos Stavrou
|
||||
#+end_src
|
||||
|
||||
#+begin_src
|
||||
~/Git/Projects/denote-markdown $ git shortlog --summary --numbered
|
||||
11 Protesilaos Stavrou
|
||||
#+end_src
|
||||
|
||||
* Version 3.1.0 on 2024-09-04
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:f089ab11-4ad7-4fd9-9bf3-2deb2e070297
|
||||
|
|
|
|||
126
README.org
126
README.org
|
|
@ -4,9 +4,9 @@
|
|||
#+language: en
|
||||
#+options: ':t toc:nil author:t email:t num:t
|
||||
#+startup: content
|
||||
#+macro: stable-version 3.1.0
|
||||
#+macro: release-date 2024-09-04
|
||||
#+macro: development-version 4.0.0-dev
|
||||
#+macro: stable-version 4.0.0
|
||||
#+macro: release-date 2025-04-15
|
||||
#+macro: development-version 4.1.0-dev
|
||||
#+export_file_name: denote.texi
|
||||
#+texinfo_filename: denote.info
|
||||
#+texinfo_dir_category: Emacs misc features
|
||||
|
|
@ -355,9 +355,6 @@ called from Lisp, it returns the path it generates. Before returning
|
|||
the path, it decides what to do with the buffer of the note, in
|
||||
accordance with the user option ~denote-kill-buffers~ ([[#h:c8fd826f-3ac9-4820-9709-4375603f8865][The ~denote-kill-buffers~ option]]).
|
||||
|
||||
[ As part of {{{development-version}}}, the ~denote~ command runs the
|
||||
hook and then kills the buffer, whereas it was the other way around before. ]
|
||||
|
||||
The file type of the new note is determined by the user option
|
||||
~denote-file-type~ ([[#h:13218826-56a5-482a-9b91-5b6de4f14261][Front matter]]).
|
||||
|
||||
|
|
@ -2569,19 +2566,16 @@ we shall act accordingly.
|
|||
:CUSTOM_ID: h:54b48277-e0e5-4188-ad54-ef3db3b7e772
|
||||
:END:
|
||||
|
||||
As part of version 3.2.0 (currently {{{development-version}}}), the
|
||||
command ~denote-add-front-matter~ is superseded by
|
||||
~denote-rename-file~ and related ([[#h:532e8e2a-9b7d-41c0-8f4b-3c5cbb7d4dca][Renaming files]]). Those commands will
|
||||
add missing front matter or rewrite the modified lines of existing
|
||||
front matter.
|
||||
As part of version 4.0.0, the command ~denote-add-front-matter~ is
|
||||
superseded by ~denote-rename-file~ and related ([[#h:532e8e2a-9b7d-41c0-8f4b-3c5cbb7d4dca][Renaming files]]). Those
|
||||
commands will add missing front matter or rewrite the modified lines
|
||||
of existing front matter.
|
||||
|
||||
* Linking notes
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: h:fc913d54-26c8-4c41-be86-999839e8ad31
|
||||
:END:
|
||||
|
||||
[ Support for query links is part of {{{development-version}}}. ]
|
||||
|
||||
Denote offers several commands for linking between notes. Those use
|
||||
the =denote:= hyperlink type. There are two types of links supported
|
||||
by Denote:
|
||||
|
|
@ -2659,8 +2653,6 @@ exactly like an ordinary link by default.
|
|||
:CUSTOM_ID: h:25a983ca-049e-43d4-8f6e-06a2325e2c3c
|
||||
:END:
|
||||
|
||||
[ The ~denote-link-to-file-with-contents~ is part of {{{development-version}}}. ]
|
||||
|
||||
#+findex: denote-link-to-file-with-contents
|
||||
The ~denote-link~ command that we covered before prompts to select a
|
||||
file among those in the ~denote-directory~ ([[#h:5e5e3370-12ab-454f-ba09-88ff44214324][Adding a single direct link using a file name prompt]]).
|
||||
|
|
@ -2685,8 +2677,6 @@ The command ~denote-link-to-file-with-contents~ is the counterpart of
|
|||
:CUSTOM_ID: h:d9a84289-2f73-4ef9-b4f0-9a0aa3e9bf0d
|
||||
:END:
|
||||
|
||||
[ Query links are part of {{{development-version}}}. ]
|
||||
|
||||
As noted in the introduction to this section of the manual, the
|
||||
=denote:= hyperlink type supports query links ([[#h:fc913d54-26c8-4c41-be86-999839e8ad31][Linking notes]]). Unlike
|
||||
direct links, they do not point to any given file. Instead, they
|
||||
|
|
@ -2796,8 +2786,6 @@ purposes ([[#h:fc913d54-26c8-4c41-be86-999839e8ad31][Linking notes]]).
|
|||
:CUSTOM_ID: h:299d3aeb-9946-489e-bd91-e06f8c4ae2a9
|
||||
:END:
|
||||
|
||||
[ The command ~denote-link-to-all-files-with-contents~ is part of {{{development-version}}}. ]
|
||||
|
||||
#+findex: denote-link-to-all-files-with-contents
|
||||
The aforementioned ~denote-add-links~ command takes a query that
|
||||
matches it against file names ([[#h:9bec2c83-36ca-4951-aefc-7187c5463f90][Insert links to all files matching a query in their file name]]).
|
||||
|
|
@ -2814,8 +2802,6 @@ counterpart of ~denote-link-to-file-with-contents~ ([[#h:25a983ca-049e-43d4-8f6e
|
|||
:CUSTOM_ID: h:6aa22a2d-3338-433e-ab9f-ba272417aab9
|
||||
:END:
|
||||
|
||||
[ This is part of {{{development-version}}}. ]
|
||||
|
||||
#+vindex: denote-open-link-function
|
||||
The user option ~denote-open-link-function~ specifies the function
|
||||
used by Denote to open the file of a link. The default value opens the
|
||||
|
|
@ -2832,10 +2818,6 @@ the command ~org-open-at-point~).
|
|||
:CUSTOM_ID: h:d99de1fb-b1b7-4a74-8667-575636a4d6a4
|
||||
:END:
|
||||
|
||||
[ Revised to also support context links that do not use a =PROPERTIES=
|
||||
drawer but which are easier to break. This is done as part of
|
||||
{{{development-version}}}. Also revised to have a nil value by default. ]
|
||||
|
||||
#+vindex: denote-org-store-link-to-heading
|
||||
The user option ~denote-org-store-link-to-heading~ determines whether
|
||||
~org-store-link~ links to the current Org heading.
|
||||
|
|
@ -2931,9 +2913,7 @@ As always, links are created only for files which qualify as a "note"
|
|||
for our purposes ([[#h:fc913d54-26c8-4c41-be86-999839e8ad31][Linking notes]]).
|
||||
|
||||
#+findex: denote-dired-link-marked-notes
|
||||
The ~denote-dired-link-marked-notes~ is an alias for
|
||||
~denote-link-dired-marked-notes~. [ The alias is part of
|
||||
{{{development-version}}}. ]
|
||||
The ~denote-dired-link-marked-notes~ is an alias for ~denote-link-dired-marked-notes~.
|
||||
|
||||
** Link to an existing note or create a new one
|
||||
:PROPERTIES:
|
||||
|
|
@ -3012,10 +2992,9 @@ creating a new one ([[#h:ad91ca39-cf10-4e16-b224-fdf78f093883][Open an existing
|
|||
:END:
|
||||
|
||||
[ Older versions of Denote had two types of formatting for the
|
||||
backlinks' buffer. As part of version =4.0.0= ({{{development-version}}}),
|
||||
we only support the standard Xref view which shows matches in their
|
||||
context. The user option ~denote-backlinks-show-context~ is thus
|
||||
removed. ]
|
||||
backlinks' buffer. As part of version =4.0.0=, we only support the
|
||||
standard Xref view which shows matches in their context. The user
|
||||
option ~denote-backlinks-show-context~ is thus removed. ]
|
||||
|
||||
#+findex: denote-backlinks
|
||||
#+findex: denote-show-backlinks-buffer
|
||||
|
|
@ -3168,12 +3147,6 @@ function ~denote-link-markdown-follow~ for the implementation details.
|
|||
:CUSTOM_ID: h:f634427c-b451-40e2-993e-e00ac627af68
|
||||
:END:
|
||||
|
||||
[ As part of {{{development-version}}}, the old user option
|
||||
~denote-link-description-function~ is deprecated and superseded by
|
||||
the new ~denote-link-description-format~. The new user option still
|
||||
accepts a custom function as its value, so the old behaviour should
|
||||
be retained. ]
|
||||
|
||||
The user option ~denote-link-description-format~ controls how the
|
||||
command ~denote-link~ and related functions create a link description
|
||||
by default.
|
||||
|
|
@ -3191,11 +3164,10 @@ If the value is a string, it treats specially the following specifiers:
|
|||
- The =%T= is the Denote =TITLE= in the file name.
|
||||
- The =%i= is the Denote =IDENTIFIER= of the file.
|
||||
- The =%I= is the identifier converted to =DAYNAME, DAYNUM MONTHNUM
|
||||
YEAR=. [ The =%I= is part of {{{development-version}}}. ]
|
||||
YEAR=.
|
||||
- The =%d= is the same as =%i= (=DATE= mnemonic).
|
||||
- The =%D= is a "do what I mean" which behaves the same as =%t= and if
|
||||
that returns nothing, it falls back to =%I=, then =%i=. [ The =%D=
|
||||
is part of {{{development-version}}}. ]
|
||||
that returns nothing, it falls back to =%I=, then =%i=.
|
||||
- The =%d= is the same as =%i= (=DATE= mnemonic).
|
||||
- The =%s= is the Denote =SIGNATURE= of the file.
|
||||
- The =%k= is the Denote =KEYWORDS= of the file.
|
||||
|
|
@ -3329,9 +3301,6 @@ its standand attachments' facility).
|
|||
:CUSTOM_ID: h:3ca4db16-8f26-4d7d-b748-bac48ae32d69
|
||||
:END:
|
||||
|
||||
[ As part of {{{development-version}}}, the code of =denote-rename-buffer.el=
|
||||
is now part of =denote.el= as part of a wider reorganisation of the project. ]
|
||||
|
||||
#+findex: denote-rename-buffer-mode
|
||||
The minor mode ~denote-rename-buffer-mode~ provides the means to
|
||||
automatically rename the buffer of a Denote file upon visiting the
|
||||
|
|
@ -3363,9 +3332,6 @@ available to all programs.
|
|||
:CUSTOM_ID: h:35507c18-35b1-41b9-9d80-52f54fcef3cb
|
||||
:END:
|
||||
|
||||
[ Updated as part of {{{development-version}}} to use a default "do
|
||||
what I mean" value. ]
|
||||
|
||||
The user option ~denote-rename-buffer-format~ controls how the
|
||||
function ~denote-rename-buffer~ chooses the name of the
|
||||
buffer-to-be-renamed.
|
||||
|
|
@ -3375,15 +3341,13 @@ are placeholders for Denote file name components ([[#h:4e9c7512-84dc-4dfb-9fa9-e
|
|||
|
||||
#+vindex: denote-rename-buffer-backlinks-indicator
|
||||
- The =%t= is the Denote =TITLE= in the front matter or the file name.
|
||||
- The =%T= is the Denote =TITLE= in the file name. [ The =%T= is part
|
||||
of {{{development-version}}}. ]
|
||||
- The =%T= is the Denote =TITLE= in the file name.
|
||||
- The =%i= is the Denote =IDENTIFIER= of the file.
|
||||
- The =%I= is the identifier converted to =DAYNAME, DAYNUM MONTHNUM
|
||||
YEAR=. [ The =%I= is part of {{{development-version}}}. ]
|
||||
YEAR=.
|
||||
- The =%d= is the same as =%i= (=DATE= mnemonic).
|
||||
- The =%D= is a "do what I mean" which behaves the same as =%t= and if
|
||||
that returns nothing, it falls back to =%I=, then =%i=. [ The =%D=
|
||||
is part of {{{development-version}}}. ]
|
||||
that returns nothing, it falls back to =%I=, then =%i=.
|
||||
- The =%s= is the Denote =SIGNATURE= of the file.
|
||||
- The =%k= is the Denote =KEYWORDS= of the file.
|
||||
- The =%b= is an indicator of whether or not the file has backlinks
|
||||
|
|
@ -3440,10 +3404,6 @@ own function and assigning it to the ~denote-rename-buffer-function~.
|
|||
:CUSTOM_ID: h:8b542c50-dcc9-4bca-8037-a36599b22779
|
||||
:END:
|
||||
|
||||
[ The ~denote-org~ package is developed in tandem with ~denote~
|
||||
{{{development-version}}} and will be available when the new Denote
|
||||
version is published. ]
|
||||
|
||||
This section is about the external package ~denote-org~ (by
|
||||
Protesilaos). The code of ~denote-org~ used to be available as part of
|
||||
the main ~denote~ package, but we decided to keep each optional
|
||||
|
|
@ -3468,10 +3428,6 @@ reflect on the status of earlier notes ([[#h:6060a7e6-f179-4d42-a9de-a9968aaebec
|
|||
:CUSTOM_ID: h:9fe01e63-f34f-4479-8713-f162a5ca865e
|
||||
:END:
|
||||
|
||||
[ With {{{development-version}}}, the code of =denote-sort.el= is
|
||||
merged into =denote.el= as part of a wider reorganisation of the
|
||||
project. ]
|
||||
|
||||
The =denote.el= file contains functions which empower user or
|
||||
developers to sort files by the given file name component ([[#h:4e9c7512-84dc-4dfb-9fa9-e15d51178e5d][The file-naming scheme]]).
|
||||
|
||||
|
|
@ -3522,8 +3478,7 @@ Users can configure the latter two by modifying the user option
|
|||
The ~denote-sort-dired-extra-prompts~ accepts either a nil value or a
|
||||
list of symbols among ~sort-by-component~, ~reverse-sort~, and
|
||||
~exclude-regexp~. The order those symbols appear in the list is
|
||||
significant, with the leftmost coming first. [ The ~exclude-regexp~
|
||||
feature is part of {{{development-version}}}. ]
|
||||
significant, with the leftmost coming first.
|
||||
|
||||
These symbols correspond to the following:
|
||||
|
||||
|
|
@ -3572,8 +3527,7 @@ function that is specific to each component ([[#h:a34228cb-484f-48fe-9cbc-8e41f3
|
|||
These are subject to user configuration:
|
||||
|
||||
#+vindex: denote-sort-identifier-comparison-function
|
||||
- ~denote-sort-identifier-comparison-function~ [ This one was missing
|
||||
is older versions and is now added as part of {{{development-version}}}. ]
|
||||
- ~denote-sort-identifier-comparison-function~
|
||||
|
||||
#+vindex: denote-sort-title-comparison-function
|
||||
- ~denote-sort-title-comparison-function~
|
||||
|
|
@ -3648,8 +3602,6 @@ Perform the comparison with `string<'."
|
|||
:CUSTOM_ID: h:e71c9d14-7e88-4386-91d0-9ad249947077
|
||||
:END:
|
||||
|
||||
[ The ~denote-grep~ command and everything related to it is part of {{{development-version}}}. ]
|
||||
|
||||
#+findex: denote-grep
|
||||
The command ~denote-grep~ searches for the given query across all
|
||||
readable files in the ~denote-directory~. It puts the collected
|
||||
|
|
@ -3685,8 +3637,6 @@ the same window where the command ~denote-grep~ is called from.
|
|||
:CUSTOM_ID: h:435592bc-e896-429f-a599-9f1bcd5ab9b8
|
||||
:END:
|
||||
|
||||
[ Part of {{{development-version}}}. ]
|
||||
|
||||
Denote commands, such as ~denote-grep~, ~denote-backlinks~, and
|
||||
~denote-query-contents-link~, produce an Xref buffer with search
|
||||
results ([[#h:893eec49-d7be-4603-bcff-fcc247244011][Speed up backlinks' or query links' buffer creation?]]).
|
||||
|
|
@ -3904,9 +3854,9 @@ across their configuration.
|
|||
:CUSTOM_ID: h:c905b733-e959-4aa4-8f2c-0ed9eba459df
|
||||
:END:
|
||||
|
||||
[ As part of version =4.0.0= ({{{development-version}}}), Denote comes
|
||||
with the ~denote-grep~ command and related functionality ([[#h:e71c9d14-7e88-4386-91d0-9ad249947077][Use ~denote-grep~ to search inside files]]).
|
||||
The core of this feature set was written by Lucas Quintana. ]
|
||||
[ As part of version =4.0.0=, Denote comes with the ~denote-grep~
|
||||
command and related functionality ([[#h:e71c9d14-7e88-4386-91d0-9ad249947077][Use ~denote-grep~ to search inside files]]).
|
||||
The core of this feature set was written by Lucas Quintana. ]
|
||||
|
||||
The ~denote-search~ package by Lucas Quintana provides a search
|
||||
utility for Denote: <https://github.com/lmq-10/denote-search>.
|
||||
|
|
@ -4962,7 +4912,7 @@ The following sections cover the specifics.
|
|||
=FILE= respects the file-naming scheme of Denote. This tests the
|
||||
rules of Denote's file-naming scheme. Sluggification is ignored. It
|
||||
is done by removing all file name components and validating what
|
||||
remains. [ This function is part of {{{development-version}}}. ]
|
||||
remains.
|
||||
|
||||
#+findex: denote-file-has-signature-p
|
||||
+ Function ~denote-file-has-signature-p~ :: Return non-nil if =FILE=
|
||||
|
|
@ -5009,7 +4959,7 @@ The following sections cover the specifics.
|
|||
=FILES-MATCHING-REGEXP=, only extract keywords from the matching
|
||||
files. Otherwise, do it for all files. Keep any duplicates. Users
|
||||
who do not want duplicates should refer to the functions
|
||||
~denote-keywords~. [ Part of {{{development-version}}}. ]
|
||||
~denote-keywords~.
|
||||
|
||||
#+findex: denote-keywords
|
||||
+ Function ~denote-keywords~ :: Return appropriate list of keyword
|
||||
|
|
@ -5019,8 +4969,7 @@ The following sections cover the specifics.
|
|||
([[#h:6a92a8b5-d766-42cc-8e5b-8dc255466a23][Standard note creation]]). In the case of keyword inferrence, use
|
||||
optional =FILES-MATCHING-REGEXP=, to extract keywords only from the
|
||||
matching files. Otherwise, do it for all files. Filter inferred
|
||||
keywords with the user option ~denote-excluded-keywords-regexp~. [
|
||||
The optional =FILES-MATCHING-REGEXP= parameter is part of {{{development-version}}}. ]
|
||||
keywords with the user option ~denote-excluded-keywords-regexp~.
|
||||
|
||||
#+findex: denote-keywords-sort
|
||||
+ Function ~denote-keywords-sort~ :: Sort =KEYWORDS= if
|
||||
|
|
@ -5059,8 +5008,7 @@ The following sections cover the specifics.
|
|||
files that satisfy ~denote-file-is-note-p~. With optional
|
||||
=EXCLUDE-REGEXP= exclude the files that match the given regular
|
||||
expression. This is done after =FILES-MATCHING-REGEXP= and
|
||||
=OMIT-CURRENT= have been applied. [ The optional =EXCLUDE-REGEXP= is
|
||||
part of {{{development-version}}}. ]
|
||||
=OMIT-CURRENT= have been applied.
|
||||
|
||||
#+findex: denote-directory-subdirectories
|
||||
+ Function ~denote-directory-subdirectories~ :: Return list of
|
||||
|
|
@ -5170,8 +5118,7 @@ The following sections cover the specifics.
|
|||
|
||||
=ID= is a string holding the identifier of the note. It can be an
|
||||
empty string, in which case its respective file name component is
|
||||
not added to the base file name. [ This is changed as part of
|
||||
{{{development-version}}}. ]
|
||||
not added to the base file name.
|
||||
|
||||
=DIR-PATH= and =ID= form the base file name.
|
||||
|
||||
|
|
@ -5206,9 +5153,7 @@ The following sections cover the specifics.
|
|||
from =PATH= and return them as a list of strings. =PATH= must be a
|
||||
Denote-style file name where keywords are prefixed with an
|
||||
underscore. If =PATH= has no such keywords, which is possible,
|
||||
return nil ([[#h:4e9c7512-84dc-4dfb-9fa9-e15d51178e5d][The file-naming scheme]]). [ As part of {{{development-version}}},
|
||||
this function has an alias ~denote-retrieve-filename-keywords-as-list~
|
||||
which should make it easier to discover this functionality. ]
|
||||
return nil ([[#h:4e9c7512-84dc-4dfb-9fa9-e15d51178e5d][The file-naming scheme]]).
|
||||
|
||||
#+findex: denote-extract-id-from-string
|
||||
+ Function ~denote-extract-id-from-string~ :: Return existing Denote
|
||||
|
|
@ -5217,8 +5162,7 @@ The following sections cover the specifics.
|
|||
#+findex: denote-retrieve-filename-identifier
|
||||
+ Function ~denote-retrieve-filename-identifier~ :: Extract identifier
|
||||
from =FILE= name, if present, else return nil. To create a new one
|
||||
from a date, refer to the ~denote-get-identifier~ function. [ This
|
||||
is changed as part of {{{development-version}}}. ]
|
||||
from a date, refer to the ~denote-get-identifier~ function.
|
||||
|
||||
#+findex: denote-retrieve-filename-title
|
||||
+ Function ~denote-retrieve-filename-title~ :: Extract Denote title
|
||||
|
|
@ -5242,7 +5186,7 @@ The following sections cover the specifics.
|
|||
#+findex: denote-get-identifier
|
||||
+ Function ~denote-get-identifier~ :: Convert =DATE= into a Denote
|
||||
identifier using ~denote-id-format~. If =DATE= is nil, return an
|
||||
empty string as the identifier. [ This is changed as part of {{{development-version}}}. ]
|
||||
empty string as the identifier.
|
||||
|
||||
#+findex: denote-retrieve-front-matter-title-value
|
||||
+ Function ~denote-retrieve-front-matter-title-value~ :: Return title value from
|
||||
|
|
@ -5328,8 +5272,7 @@ The following sections cover the specifics.
|
|||
=PROMPT-TEXT= use it in the minibuffer instead of the default
|
||||
prompt. =INITIAL-DATE= is a string that can be processed by
|
||||
~denote-valid-date-p~, a value that can be parsed by ~decode-time~
|
||||
or nil. [ The =INITIAL-DATE= and =PROMPT-TEXT= are part of
|
||||
{{{development-version}}}. ]
|
||||
or nil.
|
||||
|
||||
#+findex: denote-command-prompt
|
||||
+ Function ~denote-command-prompt~ :: Prompt for command among
|
||||
|
|
@ -5583,8 +5526,6 @@ The following sections cover the specifics.
|
|||
:CUSTOM_ID: h:e824c215-1c31-4b26-b994-7df67341d075
|
||||
:END:
|
||||
|
||||
[ All of the following are part of {{{development-version}}}. ]
|
||||
|
||||
- Function ~denote-retrieve-groups-xref-query~ :: Access location of
|
||||
xrefs for =QUERY= and group them per file. Limit the search to text
|
||||
files.
|
||||
|
|
@ -5617,18 +5558,17 @@ The following sections cover the specifics.
|
|||
+ Function ~denote-prepend-front-matter~ :: Prepend front matter to
|
||||
=FILE=. The =TITLE=, =KEYWORDS=, =DATE=, =ID=, =SIGNATURE=, and
|
||||
=FILE-TYPE= are passed from the renaming command and are used to
|
||||
construct a new front matter block if appropriate. [ This function
|
||||
is available as part of {{{development-version}}}. ]
|
||||
construct a new front matter block if appropriate.
|
||||
|
||||
#+findex: denote-rewrite-front-matter
|
||||
+ Function ~denote-rewrite-front-matter~ :: Rewrite front matter of
|
||||
note after ~denote-rename-file~ (or related) The =FILE=, =TITLE=,
|
||||
note after ~denote-rename-file~ (or related). The =FILE=, =TITLE=,
|
||||
=KEYWORDS=, =SIGNATURE=, =DATE=, =IDENTIFIER=, and =FILE-TYPE=
|
||||
arguments are given by the renaming command and are used to construct
|
||||
new front matter values if appropriate. If ~denote-rename-confirmations~
|
||||
contains ~rewrite-front-matter~, prompt to confirm the rewriting of
|
||||
the front matter. Otherwise produce a ~y-or-n-p~ prompt to that
|
||||
effect. [ This function is changed as part of {{{development-version}}}. ]
|
||||
effect.
|
||||
|
||||
#+findex: denote-add-front-matter-prompt
|
||||
+ Function ~denote-add-front-matter-prompt~ :: Prompt to add a
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
;; Author: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; Maintainer: Protesilaos Stavrou <info@protesilaos.com>
|
||||
;; URL: https://github.com/protesilaos/denote
|
||||
;; Version: 3.1.0
|
||||
;; Version: 4.0.0
|
||||
;; Package-Requires: ((emacs "28.1"))
|
||||
|
||||
;; This file is NOT part of GNU Emacs.
|
||||
|
|
@ -4235,7 +4235,7 @@ they have front matter and what that may be."
|
|||
|
||||
;;;;; Creation of front matter
|
||||
|
||||
(make-obsolete 'denote-add-front-matter nil "Use `denote-rename-file' or related. Starting with version 3.2.0.")
|
||||
(make-obsolete 'denote-add-front-matter nil "Use `denote-rename-file' or related. Starting with version 4.0.0.")
|
||||
|
||||
;;;###autoload
|
||||
(defun denote-change-file-type-and-front-matter (file new-file-type)
|
||||
|
|
@ -4856,7 +4856,7 @@ the active region specially, is up to it."
|
|||
(defalias 'denote-insert-link 'denote-link
|
||||
"Alias for `denote-link' command.")
|
||||
|
||||
(make-obsolete 'denote-link-with-signature nil " 3.2.0: Use the `denote-link-description-format'.")
|
||||
(make-obsolete 'denote-link-with-signature nil " 4.0.0: Use the `denote-link-description-format'.")
|
||||
|
||||
(defun denote-link--collect-identifiers (regexp)
|
||||
"Return collection of identifiers in buffer matching REGEXP."
|
||||
|
|
|
|||
Loading…
Reference in a new issue