branch: externals/denote
commit ef97da673cea56db84b65dd47b41b508e1481704
Author: Jean-Philippe Gagné Guay <jeanphilippe...@gmail.com>
Commit: Jean-Philippe Gagné Guay <jeanphilippe...@gmail.com>

    Add identifier sluggification
---
 denote.el | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/denote.el b/denote.el
index 1893bf0f65..7bb460fa2a 100644
--- a/denote.el
+++ b/denote.el
@@ -793,7 +793,8 @@ even an empty string to not have any such prefix."
   :group 'denote)
 
 (defcustom denote-file-name-slug-functions
-  '((title . denote-sluggify-title)
+  '((identifier . identity)
+    (title . denote-sluggify-title)
     (signature . denote-sluggify-signature)
     (keyword . denote-sluggify-keyword))
   "Specify the method Denote uses to format the components of the file name.
@@ -801,9 +802,9 @@ even an empty string to not have any such prefix."
 The value is an alist where each element is a cons cell of the
 form (COMPONENT . METHOD).
 
-- The COMPONENT is an unquoted symbol among `title', `signature',
-  `keyword' (notice the absence of `s', see below), which
-  refers to the corresponding component of the file name.
+- The COMPONENT is an unquoted symbol among `identifier', `title',
+  `signature', `keyword' (notice the absence of `s', see below),
+  which refers to the corresponding component of the file name.
 
 - The METHOD is the function to be used to format the given
   component.  This function should take a string as its parameter
@@ -816,8 +817,8 @@ form (COMPONENT . METHOD).
 Note that the `keyword' function is also applied to the keywords
 of the front matter.
 
-By default, if a function is not specified for a component, we
-use `denote-sluggify-title', `denote-sluggify-keyword' and
+By default, if a function is not specified for a component, we use
+`identity', `denote-sluggify-title', `denote-sluggify-keyword' and
 `denote-sluggify-signature'.
 
 Remember that deviating from the default file-naming scheme of Denote
@@ -1124,11 +1125,11 @@ a single one in str, if necessary according to 
COMPONENT."
   "Make STR an appropriate slug for file name COMPONENT.
 
 Apply the function specified in `denote-file-name-slug-function' to
-COMPONENT which is one of `title', `signature', `keyword'.  If the
-resulting string still contains consecutive -, _, =, or @, they are
-replaced by a single occurence of the character, if necessary according
-to COMPONENT.  If COMPONENT is `keyword', remove underscores from STR as
-they are used as the keywords separator in file names.
+COMPONENT which is one of `identifier', `title', `signature', `keyword'.
+If the resulting string still contains consecutive -, _, =, or @, they
+are replaced by a single occurence of the character, if necessary
+according to COMPONENT.  If COMPONENT is `keyword', remove underscores
+from STR as they are used as the keywords separator in file names.
 
 Also enforce the rules of the file-naming scheme."
   (let* ((slug-function (alist-get component denote-file-name-slug-functions))
@@ -1139,7 +1140,8 @@ Also enforce the rules of the file-naming scheme."
                            "_" ""
                            (funcall (or slug-function 
#'denote-sluggify-keyword) str)))
                          ((eq component 'identifier)
-                          (denote--valid-identifier str))
+                          (denote--valid-identifier
+                           (funcall (or slug-function #'identity) str)))
                          ((eq component 'signature)
                           (funcall (or slug-function 
#'denote-sluggify-signature) str)))))
     (denote--trim-right-token-characters

Reply via email to