diff --git a/lisp/org-babel.el b/lisp/org-babel.el index 4e609934d..dba933112 100644 --- a/lisp/org-babel.el +++ b/lisp/org-babel.el @@ -264,6 +264,15 @@ If the point is not on a source block then return nil." (goto-char top) (looking-at org-babel-src-block-regexp) (point)))))) +(defun org-babel-goto-named-source-block (&optional name) + "Go to a named source-code block." + (interactive "ssource-block name: ") + (let ((point (org-babel-find-named-block name))) + (if point + ;; taken from `org-open-at-point' + (progn (goto-char point) (org-show-context)) + (message "source-code block '%s' not found in this buffer" name)))) + (defun org-babel-find-named-block (name) "Find a named source-code block. Return the location of the source block identified by @@ -272,11 +281,10 @@ according to org-babel-named-src-block-regexp." (save-excursion (let ((case-fold-search t) (regexp (org-babel-named-src-block-regexp-for-name name)) msg) - (unless (or (re-search-forward regexp nil t) - (re-search-backward regexp nil t)) - (progn (setq msg (format "source-code block '%s' not found in this buffer" name)) - (message msg) (error msg)))) - (point))) + (goto-char (point-min)) + (when (or (re-search-forward regexp nil t) + (re-search-backward regexp nil t)) + (match-beginning 0))))) (defun org-babel-find-named-result (name) "Return the location of the result named NAME in the current diff --git a/org-babel.org b/org-babel.org index fe58ecd35..bcc0887ec 100644 --- a/org-babel.org +++ b/org-babel.org @@ -122,6 +122,8 @@ and the results to be collected in the same table. At the same time I introduced org-babel-named-src-block-regexp, to match src-blocks with srcname. + + ** TODO support for working with =*Org Edit Src Example*= buffers [1/4] *** TODO set buffer-local-process variables appropriately [DED] I think something like this would be great. You've probably