mirror of
https://github.com/org-roam/org-roam
synced 2025-08-01 12:17:21 -05:00
remove roam_tags
See #1492. Primary reason really is that I do want tags to be exactly like Org tags, so we can reuse some of Org's cool features related to tags.
This commit is contained in:
@ -280,9 +280,7 @@ If UPDATE-P is non-nil, first remove the file in the database."
|
|||||||
(deadline nil)
|
(deadline nil)
|
||||||
(level 0)
|
(level 0)
|
||||||
(aliases (org-entry-get (point) "ROAM_ALIASES"))
|
(aliases (org-entry-get (point) "ROAM_ALIASES"))
|
||||||
(roam-tags (when-let ((rtags (org-entry-get (point) "ROAM_TAGS")))
|
(tags org-file-tags)
|
||||||
(split-string-and-unquote rtags)))
|
|
||||||
(tags (append roam-tags org-file-tags))
|
|
||||||
(refs (org-entry-get (point) "ROAM_REFS")))
|
(refs (org-entry-get (point) "ROAM_REFS")))
|
||||||
(condition-case nil
|
(condition-case nil
|
||||||
(progn
|
(progn
|
||||||
|
37
org-roam.el
37
org-roam.el
@ -791,6 +791,25 @@ window instead."
|
|||||||
(org-set-property prop (combine-and-quote-strings lst))
|
(org-set-property prop (combine-and-quote-strings lst))
|
||||||
(org-delete-property prop))))
|
(org-delete-property prop))))
|
||||||
|
|
||||||
|
(defun org-roam-set-keyword (key value)
|
||||||
|
"Set keyword KEY to VALUE.
|
||||||
|
If the property is already set, it's value is replaced."
|
||||||
|
(org-with-point-at 1
|
||||||
|
(let ((case-fold-search t))
|
||||||
|
(if (re-search-forward (concat "^#\\+" key ":\\(.*\\)") (point-max) t)
|
||||||
|
(if (= (string-blank-p value) 0)
|
||||||
|
(kill-whole-line)
|
||||||
|
(replace-match (concat " " value) 'fixedcase nil nil 1))
|
||||||
|
(while (and (not (eobp))
|
||||||
|
(looking-at "^[#:]"))
|
||||||
|
(if (save-excursion (end-of-line) (eobp))
|
||||||
|
(progn
|
||||||
|
(end-of-line)
|
||||||
|
(insert "\n"))
|
||||||
|
(forward-line)
|
||||||
|
(beginning-of-line)))
|
||||||
|
(insert "#+" key ": " value "\n")))))
|
||||||
|
|
||||||
;;;; Tags
|
;;;; Tags
|
||||||
(defun org-roam-tag-completions ()
|
(defun org-roam-tag-completions ()
|
||||||
"Return list of tags for completions within Org-roam."
|
"Return list of tags for completions within Org-roam."
|
||||||
@ -812,10 +831,11 @@ window instead."
|
|||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (org-roam-node-point node))
|
(goto-char (org-roam-node-point node))
|
||||||
(if (= (org-outline-level) 0)
|
(if (= (org-outline-level) 0)
|
||||||
(org-roam-add-property tag "ROAM_TAGS")
|
(let ((current-tags (split-string (or (cadr (assoc "FILETAGS"
|
||||||
(let ((current-tags (org-get-tags)))
|
(org-collect-keywords '("filetags"))))
|
||||||
(cl-pushnew tag current-tags)
|
""))))
|
||||||
(org-set-tags current-tags))))))
|
(org-roam-set-keyword "filetags" (string-join (seq-uniq (cons tag current-tags)) " ")))
|
||||||
|
(org-set-tags (seq-uniq (cons tag (org-get-tags))))))))
|
||||||
|
|
||||||
(defun org-roam-tag-remove ()
|
(defun org-roam-tag-remove ()
|
||||||
"Remove a tag to the node at point."
|
"Remove a tag to the node at point."
|
||||||
@ -824,8 +844,13 @@ window instead."
|
|||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char (org-roam-node-point node))
|
(goto-char (org-roam-node-point node))
|
||||||
(if (= (org-outline-level) 0)
|
(if (= (org-outline-level) 0)
|
||||||
(org-roam-remove-property "ROAM_TAGS")
|
(let* ((current-tags (split-string (or (cadr (assoc "FILETAGS"
|
||||||
(let* ((current-tags (org-get-tags))
|
(org-collect-keywords '("filetags"))))
|
||||||
|
(user-error "No tag to remove"))))
|
||||||
|
(tag (completing-read "Tag: " current-tags)))
|
||||||
|
(org-roam-set-keyword "filetags" (string-join (delete tag current-tags) " ")))
|
||||||
|
(let* ((current-tags (or (org-get-tags)
|
||||||
|
(user-error "No tag to remove")))
|
||||||
(tag (completing-read "Tag: " current-tags)))
|
(tag (completing-read "Tag: " current-tags)))
|
||||||
(org-set-tags (delete tag current-tags)))))))
|
(org-set-tags (delete tag current-tags)))))))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user