From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Schulte Subject: Re: [babel] [PATCH] enhanced org-babel-goto-named-src-block Date: Sat, 25 Feb 2012 09:36:27 -0700 Message-ID: <87ty2eg8vt.fsf@gmx.com> References: <87hayid224.fsf@med.uni-goettingen.de> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([208.118.235.92]:41305) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S1KkE-0003Vf-Tb for emacs-orgmode@gnu.org; Sat, 25 Feb 2012 11:45:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S1Kk9-0006RS-Me for emacs-orgmode@gnu.org; Sat, 25 Feb 2012 11:45:14 -0500 Received: from mailout-us.gmx.com ([74.208.5.67]:57314) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1S1Kk9-0006R2-GN for emacs-orgmode@gnu.org; Sat, 25 Feb 2012 11:45:09 -0500 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Andreas Leha Cc: emacs-orgmode@gnu.org Applied, Thanks! Andreas Leha writes: > Hi all, > > attached is a patch that enhances org-babel-goto-named-src-block (bound > to C-c C-v g by default). Included are two enhancements: > > 1. the point is pushed to the org-mark-ring, such that returning with > C-c & becomes possible > 2. the target src block is guessed from > a) noweb-reference > b) #+call: > c) #+results: > d) symbol-at-point > if one of these is found (in that order) > > - Andreas > > > diff --git a/lisp/ob.el b/lisp/ob.el > index f021943..9962817 100644 > --- a/lisp/ob.el > +++ b/lisp/ob.el > @@ -1457,13 +1457,35 @@ If the point is not on a source block then return nil." > (defun org-babel-goto-named-src-block (name) > "Go to a named source-code block." > (interactive > - (let ((completion-ignore-case t)) > + (let ((completion-ignore-case t) > + (under-point (thing-at-point 'line))) > (list (org-icompleting-read "source-block name: " > - (org-babel-src-block-names) nil t)))) > + (org-babel-src-block-names) > + nil > + t > + (cond > + ;; noweb > + ((string-match (org-babel-noweb-wrap) under-point) > + (let ((block-name (match-string 1 under-point))) > + (string-match "[^(]*" block-name) > + (match-string 0 block-name))) > + ;; #+call: > + ((string-match org-babel-lob-one-liner-regexp under-point) > + (let ((source-info (car (org-babel-lob-get-info)))) > + (if (string-match "^\\([^\\[]+?\\)\\(\\[.*\\]\\)?(" source-info) > + (let ((source-name (match-string 1 source-info))) > + source-name)))) > + ;; #+results: > + ((string-match (concat "#\\+" org-babel-results-keyword "\\:\s+\\([^\\(]*\\)") under-point) > + (match-string 1 under-point)) > + ;; symbol-at-point > + ((and (thing-at-point 'symbol) )(org-babel-find-named-block (thing-at-point 'symbol)) > + (thing-at-point 'symbol)) > + ("")))))) > (let ((point (org-babel-find-named-block name))) > (if point > ;; taken from `org-open-at-point' > - (progn (goto-char point) (org-show-context)) > + (progn (org-mark-ring-push) (goto-char point) (org-show-context)) > (message "source-code block '%s' not found in this buffer" name)))) > > (defun org-babel-find-named-block (name) -- Eric Schulte http://cs.unm.edu/~eschulte/