From 70232e4b1798725d81edab1dfd7984d41d120e0e Mon Sep 17 00:00:00 2001 From: stardiviner Date: Tue, 12 May 2020 21:44:04 +0800 Subject: [PATCH] org-pcomplete.el: improve header arguments completion * lisp/org-pcomplete.el (pcomplete/org-mode/block-option/src): Make it complete real all available header arguments like command `org-babel-insert-header-arg'. --- lisp/org-pcomplete.el | 16 +++++++++++----- testing/lisp/test-org-pcomplete.el | 17 +++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/lisp/org-pcomplete.el b/lisp/org-pcomplete.el index 28b40fadd..65651512a 100644 --- a/lisp/org-pcomplete.el +++ b/lisp/org-pcomplete.el @@ -418,11 +418,17 @@ (defun pcomplete/org-mode/block-option/src () (symbol-plist 'org-babel-load-languages) 'custom-type))))))) - (while (pcomplete-here - '("-n" "-r" "-l" - ":cache" ":colnames" ":comments" ":dir" ":eval" ":exports" - ":file" ":hlines" ":no-expand" ":noweb" ":results" ":rownames" - ":session" ":shebang" ":tangle" ":tangle-mode" ":var")))) + (let* ((info (org-babel-get-src-block-info 'light)) + (lang (car info)) + (lang-headers (intern (concat "org-babel-header-args:" lang))) + (headers (org-babel-combine-header-arg-lists + org-babel-common-header-args-w-values + (and (boundp lang-headers) (eval lang-headers t))))) + (while (pcomplete-here + (append (mapcar + (lambda (arg) (format ":%s" (symbol-name (car arg)))) + headers) + '("-n" "-r" "-l")))))) (defun pcomplete/org-mode/block-option/clocktable () "Complete keywords in a clocktable line." diff --git a/testing/lisp/test-org-pcomplete.el b/testing/lisp/test-org-pcomplete.el index e6b0e8a7e..4a7184100 100644 --- a/testing/lisp/test-org-pcomplete.el +++ b/testing/lisp/test-org-pcomplete.el @@ -75,6 +75,23 @@ (ert-deftest test-org-pcomplete/keyword () (buffer-string)) t))) +(ert-deftest test-org-pcomplete/src-block () + "Test Babel src block header arguments completion." + (should + (string-prefix-p + "#+begin_src emacs-lisp" + (org-test-with-temp-text "#+begin_src emac" + (pcomplete) + (buffer-string)) + t)) + (should + (string-prefix-p + "#+begin_src emacs-lisp :session" + (org-test-with-temp-text "#+begin_src emacs-lisp :sess" + (pcomplete) + (buffer-string)) + t))) + (ert-deftest test-org-pcomplete/link () "Test link completion" (should -- 2.26.2