emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/embark d7e5b347b1 2/2: Force multiline behavior with pr


From: ELPA Syncer
Subject: [elpa] externals/embark d7e5b347b1 2/2: Force multiline behavior with prefix arg to embark-insert
Date: Mon, 21 Feb 2022 00:57:30 -0500 (EST)

branch: externals/embark
commit d7e5b347b1ceabb49a8a90a4c8ddadc39e953e4f
Author: Omar Antolín <omar.antolin@gmail.com>
Commit: Omar Antolín <omar.antolin@gmail.com>

    Force multiline behavior with prefix arg to embark-insert
---
 embark.el | 48 ++++++++++++++++++++++++++----------------------
 1 file changed, 26 insertions(+), 22 deletions(-)

diff --git a/embark.el b/embark.el
index 52824eec50..b4b65f9aa9 100644
--- a/embark.el
+++ b/embark.el
@@ -3369,7 +3369,7 @@ Return the category metadatum as the type of the target."
   (interactive)
   (user-error "Not meant to be called directly"))
 
-(defun embark-insert (string)
+(defun embark-insert (string &optional multiline)
   "Insert STRING at point.
 Some whitespace is also inserted if necessary to avoid having the
 inserted string blend into the existing buffer text.  More
@@ -3381,27 +3381,31 @@ constituent character next to an existing word 
constituent.
 
 2. For a multiline inserted string, newlines may be added before
 or after as needed to ensure the inserted string is on lines of
-its own."
-  (interactive "sInsert: ")
-  (let ((multiline (string-match-p "\n" string)))
-    (cl-flet* ((maybe-space ()
-                 (and (looking-at "\\w") (looking-back "\\w" 1)
-                      (insert " ")))
-               (maybe-newline ()
-                 (or (looking-back "^[ \t]*" 40) (looking-at "\n\n")
-                     (newline-and-indent)))
-               (maybe-whitespace ()
-                 (if multiline (maybe-newline) (maybe-space)))
-               (ins-string ()
-                 (save-excursion
-                   (insert string)
-                   (when (looking-back "\n" 1) (delete-char -1))
-                   (maybe-whitespace))
-                 (maybe-whitespace)))
-      (if buffer-read-only
-          (with-selected-window (other-window-for-scrolling)
-            (ins-string))
-        (ins-string)))))
+its own.
+
+If MULTILINE is non-nil (interactively, if called with a prefix
+argument), force the behavior for of the multiline case even if
+STRING contains no newlines."
+  (interactive "sInsert: \nP")
+  (setq multiline (or multiline (string-match-p "\n" string)))
+  (cl-flet* ((maybe-space ()
+               (and (looking-at "\\w") (looking-back "\\w" 1)
+                    (insert " ")))
+             (maybe-newline ()
+               (or (looking-back "^[ \t]*" 40) (looking-at "\n\n")
+                   (newline-and-indent)))
+             (maybe-whitespace ()
+               (if multiline (maybe-newline) (maybe-space)))
+             (ins-string ()
+               (save-excursion
+                 (insert string)
+                 (when (looking-back "\n" 1) (delete-char -1))
+                 (maybe-whitespace))
+               (maybe-whitespace)))
+    (if buffer-read-only
+        (with-selected-window (other-window-for-scrolling)
+          (ins-string))
+      (ins-string))))
 
 (define-obsolete-function-alias
   'embark-save



reply via email to

[Prev in Thread] Current Thread [Next in Thread]