mirror of
https://github.com/org-roam/org-roam
synced 2025-08-01 12:17:21 -05:00
Merge branch 'master' into v2
* master: optimize filename normalize (#1460)
This commit is contained in:
36
org-roam.el
36
org-roam.el
@ -134,6 +134,35 @@ Function should return a filename string based on title."
|
|||||||
:type 'function
|
:type 'function
|
||||||
:group 'org-roam)
|
:group 'org-roam)
|
||||||
|
|
||||||
|
(defcustom org-roam-slug-trim-chars
|
||||||
|
'(;; Combining Diacritical Marks https://www.unicode.org/charts/PDF/U0300.pdf
|
||||||
|
768 ; U+0300 COMBINING GRAVE ACCENT
|
||||||
|
769 ; U+0301 COMBINING ACUTE ACCENT
|
||||||
|
770 ; U+0302 COMBINING CIRCUMFLEX ACCENT
|
||||||
|
771 ; U+0303 COMBINING TILDE
|
||||||
|
772 ; U+0304 COMBINING MACRON
|
||||||
|
774 ; U+0306 COMBINING BREVE
|
||||||
|
775 ; U+0307 COMBINING DOT ABOVE
|
||||||
|
776 ; U+0308 COMBINING DIAERESIS
|
||||||
|
777 ; U+0309 COMBINING HOOK ABOVE
|
||||||
|
778 ; U+030A COMBINING RING ABOVE
|
||||||
|
780 ; U+030C COMBINING CARON
|
||||||
|
795 ; U+031B COMBINING HORN
|
||||||
|
803 ; U+0323 COMBINING DOT BELOW
|
||||||
|
804 ; U+0324 COMBINING DIAERESIS BELOW
|
||||||
|
805 ; U+0325 COMBINING RING BELOW
|
||||||
|
807 ; U+0327 COMBINING CEDILLA
|
||||||
|
813 ; U+032D COMBINING CIRCUMFLEX ACCENT BELOW
|
||||||
|
814 ; U+032E COMBINING BREVE BELOW
|
||||||
|
816 ; U+0330 COMBINING TILDE BELOW
|
||||||
|
817 ; U+0331 COMBINING MACRON BELOW
|
||||||
|
)
|
||||||
|
"Characters to trim from Unicode normalization for slug.
|
||||||
|
|
||||||
|
By default, the characters are specified to remove Diacritical Marks from the Latin alphabet."
|
||||||
|
:type '(repeat character)
|
||||||
|
:group 'org-roam)
|
||||||
|
|
||||||
(defcustom org-roam-verbose t
|
(defcustom org-roam-verbose t
|
||||||
"Echo messages that are not errors."
|
"Echo messages that are not errors."
|
||||||
:type 'boolean
|
:type 'boolean
|
||||||
@ -315,10 +344,11 @@ Use external shell commands if defined in `org-roam-list-files-commands'."
|
|||||||
(defun org-roam--title-to-slug (title)
|
(defun org-roam--title-to-slug (title)
|
||||||
"Convert TITLE to a filename-suitable slug."
|
"Convert TITLE to a filename-suitable slug."
|
||||||
(cl-flet* ((nonspacing-mark-p (char)
|
(cl-flet* ((nonspacing-mark-p (char)
|
||||||
(eq 'Mn (get-char-code-property char 'general-category)))
|
(memq char org-roam-slug-trim-chars))
|
||||||
(strip-nonspacing-marks (s)
|
(strip-nonspacing-marks (s)
|
||||||
(apply #'string (seq-remove #'nonspacing-mark-p
|
(ucs-normalize-NFC-string
|
||||||
(ucs-normalize-NFD-string s))))
|
(apply #'string (seq-remove #'nonspacing-mark-p
|
||||||
|
(ucs-normalize-NFD-string s)))))
|
||||||
(cl-replace (title pair)
|
(cl-replace (title pair)
|
||||||
(replace-regexp-in-string (car pair) (cdr pair) title)))
|
(replace-regexp-in-string (car pair) (cdr pair) title)))
|
||||||
(let* ((pairs `(("[^[:alnum:][:digit:]]" . "_") ;; convert anything not alphanumeric
|
(let* ((pairs `(("[^[:alnum:][:digit:]]" . "_") ;; convert anything not alphanumeric
|
||||||
|
Reference in New Issue
Block a user