summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <n.goaziou@gmail.com>2014-01-10 10:22:49 (GMT)
committer Nicolas Goaziou <n.goaziou@gmail.com>2014-01-10 10:22:49 (GMT)
commit8720c4980724229545755b08fbac1724cd2e74be (patch)
treef469b747a2c1ffda3cce02fbbc0cdc83382a6c60
parent432decf7257bae34d0d2cdf0bbce2cefde6b51c3 (diff)
downloadorg-mode-8720c4980724229545755b08fbac1724cd2e74be.zip
org-mode-8720c4980724229545755b08fbac1724cd2e74be.tar.gz
Speed improvement
* lisp/org.el (org-get-previous-line-level): Do not call `org-current-level' twice unless necessary. Also, avoid using `line-number-at-pos' when the information needed is to know if point is in the first line of the visible part of the buffer.
-rw-r--r--lisp/org.el12
1 files changed, 4 insertions, 8 deletions
diff --git a/lisp/org.el b/lisp/org.el
index edbcc09..8949b02 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -7887,14 +7887,10 @@ The level is the number of stars at the beginning of the headline."
"Return the outline depth of the last headline before the current line.
Returns 0 for the first headline in the buffer, and nil if before the
first headline."
- (let ((current-level (org-current-level))
- (prev-level (when (> (line-number-at-pos) 1)
- (save-excursion
- (beginning-of-line 0)
- (org-current-level)))))
- (cond ((null current-level) nil) ; Before first headline
- ((null prev-level) 0) ; At first headline
- (prev-level))))
+ (and (org-current-level)
+ (or (and (/= (line-beginning-position) (point-min))
+ (save-excursion (beginning-of-line 0) (org-current-level)))
+ 0)))
(defun org-reduced-level (l)
"Compute the effective level of a heading.