瀏覽代碼

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.
Nicolas Goaziou 11 年之前
父節點
當前提交
8720c49807
共有 1 個文件被更改,包括 4 次插入8 次删除
  1. 4 8
      lisp/org.el

+ 4 - 8
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.
   "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
 Returns 0 for the first headline in the buffer, and nil if before the
 first headline."
 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)
 (defun org-reduced-level (l)
   "Compute the effective level of a heading.
   "Compute the effective level of a heading.