Function: org-roam-migrate-v1-to-v2

org-roam-migrate-v1-to-v2 is a natively compiled function defined in org-roam-migrate.el.

Signature

(org-roam-migrate-v1-to-v2)

Documentation

Convert the current buffer to v2 format.

Source Code

;; Defined in /nix/store/60hpqw2cczhjli65ml5v1p4g0q2kbyhb-emacs-packages-deps/share/emacs/site-lisp/elpa/org-roam-20260425.1623/org-roam-migrate.el
(defun org-roam-migrate-v1-to-v2 ()
  "Convert the current buffer to v2 format."
  ;; Create file level ID
  (org-with-point-at 1
    (org-id-get-create))
  ;; Replace roam_key into properties drawer roam_ref
  (when-let* ((refs (mapcan #'split-string-and-unquote
                            (cdar (org-collect-keywords '("roam_key"))))))
    (let ((case-fold-search t))
      (org-with-point-at 1
        (dolist (ref refs)
          (org-roam-ref-add ref))
        (while (re-search-forward "^#\\+roam_key:" (point-max) t)
          (beginning-of-line)
          (kill-line 1)))))

  ;; Replace roam_alias into properties drawer roam_aliases
  (when-let* ((aliases (mapcan #'split-string-and-unquote
                               (cdar (org-collect-keywords '("roam_alias"))))))
    (dolist (alias aliases)
      (org-roam-alias-add alias)))
  (let ((case-fold-search t))
    (org-with-point-at 1
      (while (re-search-forward "^#\\+roam_alias:" (point-max) t)
        (beginning-of-line)
        (kill-line 1))))

  ;; Replace #+roam_tags into #+filetags
  (org-with-point-at 1
    (let* ((roam-tags (org-roam-migrate-get-prop-list "ROAM_TAGS"))
           (file-tags (cl-mapcan (lambda (value)
                                   (cl-mapcan
                                    (lambda (k) (org-split-string k ":"))
                                    (split-string value)))
                                 (org-roam-migrate-get-prop-list "FILETAGS")))
           (tags (append roam-tags file-tags))
           (tags (seq-map (lambda (tag)
                            (replace-regexp-in-string
                             "[^[:alnum:]_@#%]"
                             "_"
                             tag)) tags))
           (tags (seq-uniq tags)))
      (when tags
        (org-roam-migrate-prop-set "filetags" (org-make-tag-string tags))))
    (let ((case-fold-search t))
      (org-with-point-at 1
        (while (re-search-forward "^#\\+roam_tags:" (point-max) t)
          (beginning-of-line)
          (kill-line 1)))))
  (save-buffer))