summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2013-11-25 00:24:54 +0100
committerNicolas Goaziou <n.goaziou@gmail.com>2013-11-26 18:08:19 +0100
commit2b2288600568d9723bcf90789978a013bc7454a7 (patch)
tree90063256cbadd6eada146e560395c53adcda7e93
parent0ae48c544bfe8df9cd39c1d423e3a2026189883e (diff)
downloadorg-mode-2b2288600568d9723bcf90789978a013bc7454a7.tar.gz
org-element: Prepare signature change
* lisp/ob-exp.el: Declare signature change. * lisp/org-macro.el: Declare signature change. * lisp/org.el (org-backward-element, org-drag-element-backward): Avoid using optional argument from `org-element-at-point'. * testing/lisp/test-org-element.el: Update test.
-rw-r--r--lisp/ob-exp.el2
-rw-r--r--lisp/org-macro.el2
-rw-r--r--lisp/org.el33
-rw-r--r--testing/lisp/test-org-element.el6
4 files changed, 25 insertions, 18 deletions
diff --git a/lisp/ob-exp.el b/lisp/ob-exp.el
index 0a8edc2..b3d6675 100644
--- a/lisp/ob-exp.el
+++ b/lisp/ob-exp.el
@@ -43,7 +43,7 @@
(declare-function org-link-search "org" (s &optional type avoid-pos stealth))
(declare-function org-fill-template "org" (template alist))
(declare-function org-split-string "org" (string &optional separators))
-(declare-function org-element-at-point "org-element" (&optional keep-trail))
+(declare-function org-element-at-point "org-element" ())
(declare-function org-element-context "org-element" ())
(declare-function org-element-property "org-element" (property element))
(declare-function org-element-type "org-element" (element))
diff --git a/lisp/org-macro.el b/lisp/org-macro.el
index 61e9243..7e0b2b2 100644
--- a/lisp/org-macro.el
+++ b/lisp/org-macro.el
@@ -41,7 +41,7 @@
;;; Code:
(require 'org-macs)
-(declare-function org-element-at-point "org-element" (&optional keep-trail))
+(declare-function org-element-at-point "org-element" ())
(declare-function org-element-context "org-element" (&optional element))
(declare-function org-element-property "org-element" (property element))
(declare-function org-element-type "org-element" (element))
diff --git a/lisp/org.el b/lisp/org.el
index 7a4d244..268cfb7 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -148,7 +148,7 @@ Stars are put in group 1 and the trimmed body in group 2.")
(declare-function org-element--parse-objects "org-element"
(beg end acc restriction))
-(declare-function org-element-at-point "org-element" (&optional keep-trail))
+(declare-function org-element-at-point "org-element" ())
(declare-function org-element-cache-reset "org-element" (&optional all))
(declare-function org-element-contents "org-element" (element))
(declare-function org-element-context "org-element" (&optional element))
@@ -23607,18 +23607,21 @@ Move to the previous element at the same level, when possible."
(progn (goto-char origin)
(user-error "Cannot move further up"))))))
(t
- (let* ((trail (org-element-at-point 'keep-trail))
- (elem (car trail))
- (prev-elem (nth 1 trail))
+ (let* ((elem (org-element-at-point))
(beg (org-element-property :begin elem)))
(cond
;; Move to beginning of current element if point isn't
;; there already.
((null beg) (message "No element at point"))
((/= (point) beg) (goto-char beg))
- (prev-elem (goto-char (org-element-property :begin prev-elem)))
- ((org-before-first-heading-p) (goto-char (point-min)))
- (t (org-back-to-heading)))))))
+ (t (goto-char beg)
+ (skip-chars-backward " \r\t\n")
+ (unless (bobp)
+ (let ((prev (org-element-at-point)))
+ (goto-char (org-element-property :begin prev))
+ (while (and (setq prev (org-element-property :parent prev))
+ (<= (org-element-property :end prev) beg))
+ (goto-char (org-element-property :begin prev)))))))))))
(defun org-up-element ()
"Move to upper element."
@@ -23652,9 +23655,19 @@ Move to the previous element at the same level, when possible."
"Move backward element at point."
(interactive)
(if (org-with-limited-levels (org-at-heading-p)) (org-move-subtree-up)
- (let* ((trail (org-element-at-point 'keep-trail))
- (elem (car trail))
- (prev-elem (nth 1 trail)))
+ (let* ((elem (org-element-at-point))
+ (prev-elem
+ (save-excursion
+ (goto-char (org-element-property :begin elem))
+ (skip-chars-backward " \r\t\n")
+ (unless (bobp)
+ (let* ((beg (org-element-property :begin elem))
+ (prev (org-element-at-point))
+ (up prev))
+ (while (and (setq up (org-element-property :parent up))
+ (<= (org-element-property :end prev) beg))
+ (setq prev up))
+ prev)))))
;; Error out if no previous element or previous element is
;; a parent of the current one.
(if (or (not prev-elem) (org-element-nested-p elem prev-elem))
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index e533b65..2b901dc 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -2875,12 +2875,6 @@ Paragraph \\alpha."
(org-test-with-temp-text "- a"
(end-of-line)
(org-element-type (org-element-at-point)))))
- ;; With an optional argument, return trail.
- (should
- (equal '(paragraph center-block)
- (org-test-with-temp-text "#+BEGIN_CENTER\nA\n#+END_CENTER\nZ"
- (progn (search-forward "Z")
- (mapcar 'org-element-type (org-element-at-point t))))))
;; Parse a list within a block itself contained in a list.
(should
(eq 'plain-list