From: Eric Schulte <eric.schulte@gmx.com>
To: Andreas Leha <andreas.leha@med.uni-goettingen.de>
Cc: emacs-orgmode@gnu.org
Subject: Re: [babel] [PATCH] enhanced org-babel-goto-named-src-block
Date: Sat, 25 Feb 2012 09:36:27 -0700 [thread overview]
Message-ID: <87ty2eg8vt.fsf@gmx.com> (raw)
In-Reply-To: 87hayid224.fsf@med.uni-goettingen.de
Applied, Thanks!
Andreas Leha <andreas.leha@med.uni-goettingen.de> 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/
next prev parent reply other threads:[~2012-02-25 16:45 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-22 20:51 [babel] [PATCH] enhanced org-babel-goto-named-src-block Andreas Leha
2012-02-25 16:36 ` Eric Schulte [this message]
2012-02-29 0:39 ` Thomas S. Dye
2012-02-29 8:57 ` Andreas Leha
2012-02-29 16:09 ` Thomas S. Dye
2012-02-29 19:48 ` Jonathan Leech-Pepin
2012-02-29 21:44 ` Sebastien Vauban
2012-02-29 22:24 ` Andreas Leha
2012-02-29 23:52 ` Thomas S. Dye
2012-03-01 8:19 ` Andreas Leha
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87ty2eg8vt.fsf@gmx.com \
--to=eric.schulte@gmx.com \
--cc=andreas.leha@med.uni-goettingen.de \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).