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'.
This commit is contained in:
Charles Berry 2016-06-14 09:35:03 -07:00
parent 0cf76b7a3f
commit dd944fb590
2 changed files with 53 additions and 5 deletions

View File

@ -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)))

View File

@ -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