org-make-toc
org-make-toc copied to clipboard
modified to keep existing CUSTOM_IDs
(defun org-make-toc--link-entry-github (pos)
"Return text for entry at POS converted to GitHub style link."
(-when-let* ((title (org-link-display-format (org-entry-get pos "ITEM")))
(target (--> title
org-link-display-format
(downcase it)
(replace-regexp-in-string " " "-" it)
(replace-regexp-in-string "[^[:alnum:]_-]" "" it)))
(filename (if org-make-toc-filename-prefix
(file-name-nondirectory (buffer-file-name))
"")))
(let ((existing-id (org-entry-get pos "CUSTOM_ID")))
;; Only set the CUSTOM_ID if it doesn't already exist
(unless existing-id
(when org-make-toc-insert-custom-ids
(setf target (or (gethash pos org-make-toc-ids)
(setf (gethash pos org-make-toc-ids)
(org-make-toc--disambiguate target))))
(org-set-property "CUSTOM_ID" target)))
(org-link-make-string (concat filename "#" (or existing-id target))
(org-make-toc--visible-text title)))))
thank you very much for all you do!