diff options
author | Charles Berry <ccberry@ucsd.edu> | 2016-06-14 09:35:03 -0700 |
---|---|---|
committer | Charles Berry <ccberry@ucsd.edu> | 2016-06-14 09:40:35 -0700 |
commit | dd944fb5903046a88312a3ec33f6d5789cfb165f (patch) | |
tree | d8680e3a1a11a5b4b84baf1ff3f5b2e6d039819e | |
parent | 0cf76b7a3fae6ccc14ef7921bac173511202bbe2 (diff) | |
download | org-mode-dd944fb5903046a88312a3ec33f6d5789cfb165f.tar.gz |
org-babel-goto-named-src-block bugfix
* lisp/ob-core.el (org-babel-goto-named-src-block): The user prompt
(i.e. `initial-input' arg of `completing-read') will be the name of
the results block, noweb reference, call reference, or symbol if
point is in such.
* testing/lisp/test-ob.el (test-ob/goto-named-src-block): Simulate
interactive use of `org-babel-goto-named-src-block'.
-rw-r--r-- | lisp/ob-core.el | 16 | ||||
-rw-r--r-- | testing/lisp/test-ob.el | 42 |
2 files changed, 53 insertions, 5 deletions
diff --git a/lisp/ob-core.el b/lisp/ob-core.el index 2e9a4d1..7221eb4 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -1691,15 +1691,21 @@ If the point is not on a source block then return nil." (list (completing-read "source-block name: " all-block-names nil t (let* ((context (org-element-context)) - (type (org-element-type context))) + (type (org-element-type context)) + (noweb-ref + (and (memq type '(inline-src-block src-block)) + (org-in-regexp (org-babel-noweb-wrap))))) (cond - ((and (memq type '(inline-src-block src-block)) ;<<noweb>> - (org-in-regexp (org-babel-noweb-wrap)))) + (noweb-ref + (buffer-substring + (+ (car noweb-ref) (length org-babel-noweb-wrap-start)) + (- (cdr noweb-ref) (length org-babel-noweb-wrap-end)))) ((memq type '(babel-call inline-babel-call)) ;#+CALL: (org-element-property :call context)) - ((org-element-property :results context)) ;#+RESULTS: + ((car (org-element-property :results context))) ;#+RESULTS: ((let ((symbol (thing-at-point 'symbol))) ;Symbol. - (and (member-ignore-case symbol all-block-names) + (and symbol + (member-ignore-case symbol all-block-names) symbol))) (t ""))))))) (let ((point (org-babel-find-named-block name))) diff --git a/testing/lisp/test-ob.el b/testing/lisp/test-ob.el index aa26602..7085e8f 100644 --- a/testing/lisp/test-ob.el +++ b/testing/lisp/test-ob.el @@ -1697,6 +1697,48 @@ echo \"$data\" (goto-char (org-babel-where-is-src-block-result t nil "bbbb"))) (org-trim (buffer-substring-no-properties (point) (point-max))))))) +(ert-deftest test-ob/goto-named-src-block () + "Test interactive use of `org-babel-goto-named-src-block'." + (org-test-with-temp-text-in-file + " +#+NAME: abc +#+BEGIN_SRC emacs-lisp :results value +(1+ 1) +#+END_SRC +#+CALL: abc( lorem() ) :results raw :wrap EXAMPLE +#+BEGIN_SRC emacs-lisp +<<abc>> +#+END_SRC +abc +#+RESULTS: abc +: 2 +" + ;; non-existent name + (should-not + (execute-kbd-macro "\M-xorg-babel-goto-named-src-block\nno-name\n")) + ;; correct name + (execute-kbd-macro "\M-xorg-babel-goto-named-src-block\nabc\n") + (should (= 14 (point))) + ;; call line - autocompletion + (forward-line 3) + (execute-kbd-macro "\M-xorg-babel-goto-named-src-block\n\n") + (should (= 14 (point))) + ;; noweb reference - autocompletion + (forward-line 5) + (execute-kbd-macro "\M-xorg-babel-goto-named-src-block\n\n") + (should (= 14 (point))) + ;; at symbol - autocompletion + (forward-line 7) + (execute-kbd-macro "\M-xorg-babel-goto-named-src-block\n\n") + (should (= 14 (point))) + ;; in results - autocompletion + (forward-line 8) + (execute-kbd-macro "\M-xorg-babel-goto-named-src-block\n\n") + (should (= 14 (point))) + (forward-line 9) + (execute-kbd-macro "\M-xorg-babel-goto-named-src-block\n\n") + (should (= 14 (point))))) + (provide 'test-ob) ;;; test-ob ends here |