Selaa lähdekoodia

optional arguments to org-babel-insert-header-arg

* lisp/ob-core.el (org-babel-insert-header-arg): Optional arguments
  for usage from Emacs Lisp programs.  In addition this function will
  now insert header arguments in the correct place instead of at the
  current point.
Eric Schulte 12 vuotta sitten
vanhempi
commit
5afd5d9785
1 muutettua tiedostoa jossa 31 lisäystä ja 25 poistoa
  1. 31 25
      lisp/ob-core.el

+ 31 - 25
lisp/ob-core.el

@@ -770,37 +770,43 @@ arguments and pop open the results in a preview buffer."
     (message "No suspicious header arguments found.")))
 
 ;;;###autoload
-(defun org-babel-insert-header-arg ()
+(defun org-babel-insert-header-arg (&optional header-arg value)
   "Insert a header argument selecting from lists of common args and values."
   (interactive)
-  (let* ((lang (car (org-babel-get-src-block-info 'light)))
+  (let* ((info (org-babel-get-src-block-info 'light))
+	 (lang (car info))
+	 (begin (nth 6 info))
 	 (lang-headers (intern (concat "org-babel-header-args:" lang)))
 	 (headers (org-babel-combine-header-arg-lists
 		   org-babel-common-header-args-w-values
 		   (when (boundp lang-headers) (eval lang-headers))))
-	 (arg (org-icompleting-read
-	       "Header Arg: "
-	       (mapcar
-		(lambda (header-spec) (symbol-name (car header-spec)))
-		headers))))
-    (insert ":" arg)
-    (let ((vals (cdr (assoc (intern arg) headers))))
-      (when vals
-	(insert
-	 " "
-	 (cond
-	  ((eq vals :any)
-	   (read-from-minibuffer "value: "))
-	  ((listp vals)
-	   (mapconcat
-	    (lambda (group)
-	      (let ((arg (org-icompleting-read
-			  "value: "
-			  (cons "default" (mapcar #'symbol-name group)))))
-		(if (and arg (not (string= "default" arg)))
-		    (concat arg " ")
-		  "")))
-	    vals ""))))))))
+	 (header-arg (or header-arg
+			 (org-icompleting-read
+			  "Header Arg: "
+			  (mapcar
+			   (lambda (header-spec) (symbol-name (car header-spec)))
+			   headers))))
+	 (vals (cdr (assoc (intern header-arg) headers)))
+	 (value (or value
+		    (cond
+		     ((eq vals :any)
+		      (read-from-minibuffer "value: "))
+		     ((listp vals)
+		      (mapconcat
+		       (lambda (group)
+			 (let ((arg (org-icompleting-read
+				     "value: "
+				     (cons "default"
+					   (mapcar #'symbol-name group)))))
+			   (if (and arg (not (string= "default" arg)))
+			       (concat arg " ")
+			     "")))
+		       vals ""))))))
+    (save-excursion
+      (goto-char begin)
+      (goto-char (point-at-eol))
+      (unless (= (char-before (point)) ?\ ) (insert " "))
+      (insert ":" header-arg) (when value (insert " " value)))))
 
 ;; Add support for completing-read insertion of header arguments after ":"
 (defun org-babel-header-arg-expand ()