forked from mirrors/org-mode
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:
parent
0cf76b7a3f
commit
dd944fb590
|
@ -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)))
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue