branch: externals/org-gnosis
commit 9eedd4fa2e6fc8ec02588d630f39ac0c04451773
Author: Thanos Apollo <pub...@thanosapollo.org>
Commit: Thanos Apollo <pub...@thanosapollo.org>

    org-gnosis-insert: Create node if it does not already exist.
    
    * If user enters a node that does not exist, create it & insert it as an id 
link.
---
 org-gnosis.el | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/org-gnosis.el b/org-gnosis.el
index f7e10c20b0..b1dd3020d3 100644
--- a/org-gnosis.el
+++ b/org-gnosis.el
@@ -359,13 +359,24 @@ instead."
 
 ;;;###autoload
 (defun org-gnosis-insert ()
-  "Insert gnosis node."
+  "Insert gnosis node.
+
+If node does not exist, create it."
   (interactive)
   (let* ((node (org-gnosis--find "Select gnosis node: "
                                 (org-gnosis-select '[title tags] 'nodes '1=1)
                                 (org-gnosis-select 'title 'nodes '1=1)))
         (id (concat "id:" (car (org-gnosis-select 'id 'nodes `(= ,node title) 
'1=1)))))
-    (org-insert-link nil id node)))
+    (cond ((< (length id) 4)
+          (save-window-excursion
+            (org-gnosis--create-file node)
+            ;; Save buffer to store new node id
+            (save-buffer)
+            (setf id (concat "id:"
+                             (car (org-gnosis-select 'id 'nodes `(= ,node 
title) '1=1)))))
+          (org-insert-link nil id node)
+          (message "Created new node: %s" node))
+         (t (org-insert-link nil id node)))))
 
 ;;;###autoload
 (defun org-gnosis-insert-tag ()

Reply via email to