summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-04-30 16:24:55 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2022-04-30 16:24:55 +0200
commit93549c2b28770a84e1d1b9478a0861e2050df602 (patch)
tree24aea2846bdf15e0a43693551e02fef34d1daa80
parentc1fa5bd8ee3c7f37a9b9304eab6b522cf8718472 (diff)
downloademacs-93549c2b28770a84e1d1b9478a0861e2050df602.tar.gz
emacs-93549c2b28770a84e1d1b9478a0861e2050df602.tar.bz2
emacs-93549c2b28770a84e1d1b9478a0861e2050df602.zip
Avoid using if-let in subr.el
* lisp/subr.el (string-lines): Avoid using if-let (from subr-x) in subr (bug#55194).
-rw-r--r--lisp/subr.el45
1 files changed, 24 insertions, 21 deletions
diff --git a/lisp/subr.el b/lisp/subr.el
index 14cab04d429..5fadac6e16c 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -6654,27 +6654,30 @@ lines."
(let ((lines nil)
(start 0))
(while (< start (length string))
- (if-let ((newline (string-search "\n" string start)))
- (progn
- (when (or (not omit-nulls)
- (not (= start newline)))
- (let ((line (substring string start
- (if keep-newlines
- (1+ newline)
- newline))))
- (when (not (and keep-newlines omit-nulls
- (equal line "\n")))
- (push line lines))))
- (setq start (1+ newline))
- ;; Include the final newline.
- (when (and (= start (length string))
- (not omit-nulls)
- (not keep-newlines))
- (push "" lines)))
- (if (zerop start)
- (push string lines)
- (push (substring string start) lines))
- (setq start (length string))))
+ (let ((newline (string-search "\n" string start)))
+ (if newline
+ (progn
+ (when (or (not omit-nulls)
+ (not (= start newline)))
+ (let ((line (substring string start
+ (if keep-newlines
+ (1+ newline)
+ newline))))
+ (when (not (and keep-newlines omit-nulls
+ (equal line "\n")))
+ (push line lines))))
+ (setq start (1+ newline))
+ ;; Include the final newline.
+ (when (and (= start (length string))
+ (not omit-nulls)
+ (not keep-newlines))
+ (push "" lines)))
+ ;; No newline in the remaining part.
+ (if (zerop start)
+ ;; Avoid a string copy if there are no newlines at all.
+ (push string lines)
+ (push (substring string start) lines))
+ (setq start (length string)))))
(nreverse lines)))
(defun buffer-match-p (condition buffer-or-name &optional arg)