Fix visibility with `org-cycle-separator-lines' at -1

* lisp/org.el (org-cycle-show-empty-lines): Fix visibility cycling
  with `org-cycle-separator-lines' set to -1.

Reported-by: Michael Crouch <creidieki@gmail.com>
<http://permalink.gmane.org/gmane.emacs.orgmode/97879>
This commit is contained in:
Nicolas Goaziou 2015-05-26 16:00:21 +02:00
parent b6934e3471
commit a714c3a118
1 changed files with 13 additions and 17 deletions

View File

@ -7123,7 +7123,7 @@ The region to be covered depends on STATE when called through
`org-cycle-hook'. Lisp program can use t for STATE to get the
entire buffer covered. Note that an empty line is only shown if there
are at least `org-cycle-separator-lines' empty lines before the headline."
(when (not (= org-cycle-separator-lines 0))
(when (/= org-cycle-separator-lines 0)
(save-excursion
(let* ((n (abs org-cycle-separator-lines))
(re (cond
@ -7132,30 +7132,26 @@ are at least `org-cycle-separator-lines' empty lines before the headline."
(t (let ((ns (number-to-string (- n 2))))
(concat "^\\(?:[ \t]*\n\\)\\{" ns "," ns "\\}"
"[ \t]*\\(\n[ \t]*\n\\*+\\) ")))))
beg end b e)
beg end)
(cond
((memq state '(overview contents t))
(setq beg (point-min) end (point-max)))
((memq state '(children folded))
(setq beg (point) end (progn (org-end-of-subtree t t)
(beginning-of-line 2)
(point)))))
(setq beg (point)
end (progn (org-end-of-subtree t t)
(line-beginning-position 2)))))
(when beg
(goto-char beg)
(while (re-search-forward re end t)
(unless (get-char-property (match-end 1) 'invisible)
(setq e (match-end 1))
(if (< org-cycle-separator-lines 0)
(setq b (save-excursion
(goto-char (match-beginning 0))
(org-back-over-empty-lines)
(if (save-excursion
(goto-char (max (point-min) (1- (point))))
(org-at-heading-p))
(1- (point))
(point))))
(setq b (match-beginning 1)))
(outline-flag-region b e nil)))))))
(let ((e (match-end 1))
(b (if (>= org-cycle-separator-lines 0)
(match-beginning 1)
(save-excursion
(goto-char (match-beginning 0))
(skip-chars-backward " \t\n")
(line-end-position)))))
(outline-flag-region b e nil))))))))
;; Never hide empty lines at the end of the file.
(save-excursion
(goto-char (point-max))