diff options
author | Bastien Guerry <bzg@altern.org> | 2013-02-08 17:11:13 +0100 |
---|---|---|
committer | Bastien Guerry <bzg@altern.org> | 2013-02-08 17:11:13 +0100 |
commit | eac6af707c6f81643da2c37fe52929fcb5b1110f (patch) | |
tree | 91dae18f7568667b126485527c4355fc2af1b17f | |
parent | 6bcd7c44ec12ea0f6d0da0f54f9ded46bd310637 (diff) | |
download | org-mode-eac6af707c6f81643da2c37fe52929fcb5b1110f.tar.gz |
New commands `org-next-block' and `org-previous-block'
* ob-core.el (org-babel-next-src-block)
(org-babel-previous-src-block): Rewrite using
`org-next-block'.
* org.el (org-next-block, org-previous-block): New navigation
commands.
(org-mode-map): Bind the new commands to C-c C-F and C-c C-B
respectively.
Thanks to Bill White for suggesting this.
-rw-r--r-- | lisp/ob-core.el | 15 | ||||
-rw-r--r-- | lisp/org.el | 24 |
2 files changed, 28 insertions, 11 deletions
diff --git a/lisp/ob-core.el b/lisp/ob-core.el index bdf8c54..1c523ea 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -1639,22 +1639,15 @@ buffer or nil if no such result exists." (defun org-babel-next-src-block (&optional arg) "Jump to the next source block. With optional prefix argument ARG, jump forward ARG many source blocks." - (interactive "P") - (when (looking-at org-babel-src-block-regexp) (forward-char 1)) - (condition-case nil - (re-search-forward org-babel-src-block-regexp nil nil (or arg 1)) - (error (error "No further code blocks"))) - (goto-char (match-beginning 0)) (org-show-context)) + (interactive "p") + (org-next-block arg nil org-babel-src-block-regexp)) ;;;###autoload (defun org-babel-previous-src-block (&optional arg) "Jump to the previous source block. With optional prefix argument ARG, jump backward ARG many source blocks." - (interactive "P") - (condition-case nil - (re-search-backward org-babel-src-block-regexp nil nil (or arg 1)) - (error (error "No previous code blocks"))) - (goto-char (match-beginning 0)) (org-show-context)) + (interactive "p") + (org-previous-block arg org-babel-src-block-regexp)) (defvar org-babel-load-languages) diff --git a/lisp/org.el b/lisp/org.el index 4b649a0..001e139 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -18463,6 +18463,8 @@ BEG and END default to the buffer boundaries." (org-defkey org-mode-map "\C-c\C-_" 'org-down-element) (org-defkey org-mode-map "\C-c\C-f" 'org-forward-heading-same-level) (org-defkey org-mode-map "\C-c\C-b" 'org-backward-heading-same-level) +(org-defkey org-mode-map "\C-c\C-F" 'org-next-block) +(org-defkey org-mode-map "\C-c\C-B" 'org-previous-block) (org-defkey org-mode-map "\C-c$" 'org-archive-subtree) (org-defkey org-mode-map "\C-c\C-x\C-s" 'org-advertized-archive-subtree) (org-defkey org-mode-map "\C-c\C-x\C-a" 'org-archive-subtree-default) @@ -22659,6 +22661,28 @@ Stop at the first and last subheadings of a superior heading." (if (< l level) (setq arg 1))) (setq arg (1- arg)))))) +(defun org-next-block (arg &optional backward block-regexp) + "Jump to the next block. +With a prefix argument ARG, jump forward ARG many source blocks. +When BACKWARD is non-nil, jump to the previous block. +When BLOCK-REGEXP is non-nil, use this regexp to find blocks." + (interactive "p") + (let ((re (or block-regexp org-babel-src-block-regexp)) + (re-search-fn (or (and backward 're-search-backward) + 're-search-forward))) + (if (looking-at re) (forward-char 1)) + (condition-case nil + (funcall re-search-fn re nil nil arg) + (error (error "No %s code blocks" (if backward "previous" "further" )))) + (goto-char (match-beginning 0)) (org-show-context))) + +(defun org-previous-block (arg &optional block-regexp) + "Jump to the previous block. +With a prefix argument ARG, jump backward ARG many source blocks. +When BLOCK-REGEXP is non-nil, use this regexp to find blocks." + (interactive "p") + (org-next-block arg t block-regexp)) + (defun org-forward-element () "Move forward by one element. Move to the next element at the same level, when possible." |