summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/simple.el16
1 files changed, 11 insertions, 5 deletions
diff --git a/lisp/simple.el b/lisp/simple.el
index b8442fd9b68..418cba339bf 100644
--- a/lisp/simple.el
+++ b/lisp/simple.el
@@ -1611,8 +1611,11 @@ Outline mode sets this.")
(get-char-property (point) 'invisible)))
(if (eq buffer-invisibility-spec t)
prop
- (memq prop buffer-invisibility-spec))))
- (goto-char (next-single-property-change (point) 'invisible)))
+ (or (memq prop buffer-invisibility-spec)
+ (assq prop buffer-invisibility-spec)))))
+ (if (get-text-property (point) 'invisible)
+ (goto-char (next-single-property-change (point) 'invisible))
+ (goto-char (next-overlay-change (point)))))
(setq arg (1- arg)))
(while (< arg 0)
(beginning-of-line)
@@ -1620,11 +1623,14 @@ Outline mode sets this.")
(signal 'beginning-of-buffer nil))
(while (and (not (bobp))
(let ((prop
- (get-char-property (point) 'invisible)))
+ (get-char-property (1- (point)) 'invisible)))
(if (eq buffer-invisibility-spec t)
prop
- (memq prop buffer-invisibility-spec))))
- (goto-char (previous-single-property-change (point) 'invisible)))
+ (or (memq prop buffer-invisibility-spec)
+ (assq prop buffer-invisibility-spec)))))
+ (if (get-text-property (1- (point)) 'invisible)
+ (goto-char (previous-single-property-change (point) 'invisible))
+ (goto-char (previous-overlay-change (point)))))
(setq arg (1+ arg))))
(move-to-column (or goal-column temporary-goal-column))
nil)