diff --git a/CHANGELOG.md b/CHANGELOG.md index f4f001e..5d8fe51 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ * [#374][gh-374] Add support for `org-ref` `cite:` links * [#380][gh-380] Allow `org-roam-buffer-position` to also be `top` or `bottom` * [#385][gh-385] Add `org-roam-graph-node-extra-config` to configure Graphviz nodes +* [#435][gh-435] Add `org-roam-graph-edge-extra-config` to configure Graphviz edges ## 1.0.0 (23-03-2020) diff --git a/org-roam-graph.el b/org-roam-graph.el index e24db98..0a0abed 100644 --- a/org-roam-graph.el +++ b/org-roam-graph.el @@ -67,6 +67,13 @@ Example: :type '(alist) :group 'org-roam) +(defcustom org-roam-graph-edge-extra-config nil + "Extra options for graphviz edges. +Example: + '((\"dir\" . \"back\"))" + :type '(alist) + :group 'org-roam) + (defcustom org-roam-graph-max-title-length 100 "Maximum length of titles in graph nodes." :type 'number @@ -134,22 +141,33 @@ into a digraph." :where (and (in to selected) (in from selected))]) (edges (org-roam-db-query edges-query))) (insert "digraph \"org-roam\" {\n") + (dolist (option org-roam-graph-extra-config) - (insert (concat (car option) + (insert (concat " " + (car option) "=" (cdr option) ";\n"))) + (insert (format " node [%s];\n" + (->> org-roam-graph-node-extra-config + (mapcar (lambda (n) + (concat (car n) "=" (cdr n)))) + (s-join ",")))) + (insert (format " edge [%s];\n" + (->> org-roam-graph-edge-extra-config + (mapcar (lambda (n) + (concat (car n) "=" (cdr n)))) + (s-join ",")))) + (dolist (node nodes) (let* ((file (xml-escape-string (car node))) (title (or (caadr node) (org-roam--path-to-slug file))) (shortened-title (s-truncate org-roam-graph-max-title-length title)) - (base-node-properties (list (cons "label" (s-replace "\"" "\\\"" shortened-title)) - (cons "URL" (concat "org-protocol://roam-file?file=" - (url-hexify-string file))) - (cons "tooltip" (xml-escape-string title)))) - (node-properties (append base-node-properties - org-roam-graph-node-extra-config))) + (node-properties (list (cons "label" (s-replace "\"" "\\\"" shortened-title)) + (cons "URL" (concat "org-protocol://roam-file?file=" + (url-hexify-string file))) + (cons "tooltip" (xml-escape-string title))))) (insert (format " \"%s\" [%s];\n" file