From 7f5d354194fc9274dfd581e706b0276490cae1ab Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 7 Nov 1993 22:19:57 +0000 Subject: (compare-windows-skip-whitespace): Return t if there is whitespace before point. --- lisp/compare-w.el | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) (limited to 'lisp/compare-w.el') diff --git a/lisp/compare-w.el b/lisp/compare-w.el index a52e8e07541..a6bd00e1a07 100644 --- a/lisp/compare-w.el +++ b/lisp/compare-w.el @@ -134,19 +134,29 @@ If `compare-ignore-case' is non-nil, changes in case are also ignored." ;; and find the latest point at which a match ends. ;; Don't try starting points before START, though. ;; Value is non-nil if whitespace is found. + +;; If there is whitespace before point, but none after, +;; then return t, but don't advance point. (defun compare-windows-skip-whitespace (start) (let ((end (point)) + (beg (point)) (opoint (point))) - (while (and (looking-at compare-windows-whitespace) - (<= end (match-end 0)) - ;; This match goes past END, so advance END. - (progn (setq end (match-end 0)) - (> (point) start))) + (while (or (and (/= (point) start) + ;; Consider at least the char before point, + ;; unless it is also before START. + (= (point) opoint)) + (and (looking-at compare-windows-whitespace) + (<= end (match-end 0)) + ;; This match goes past END, so advance END. + (progn (setq end (match-end 0)) + (> (point) start)))) ;; keep going back until whitespace ;; doesn't extend to or past end (forward-char -1)) + (setq beg (point)) (goto-char end) - (/= end opoint))) + (or (/= beg opoint) + (/= end opoint)))) (provide 'compare-w) -- cgit v1.2.1