emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] master 7fd1093: Tweak heredoc expansion in shell-script-mo


From: Lars Ingebrigtsen
Subject: [Emacs-diffs] master 7fd1093: Tweak heredoc expansion in shell-script-mode
Date: Tue, 15 Oct 2019 21:47:26 -0400 (EDT)

branch: master
commit 7fd1093d28e8be4683f45000fa9c0440cbe8182c
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>

    Tweak heredoc expansion in shell-script-mode
    
    * lisp/progmodes/sh-script.el (sh--maybe-here-document): Allow
    expanding <<E, too.
---
 lisp/progmodes/sh-script.el | 42 ++++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 20 deletions(-)

diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el
index 2046080..604d13e 100644
--- a/lisp/progmodes/sh-script.el
+++ b/lisp/progmodes/sh-script.el
@@ -4356,27 +4356,29 @@ The document is bounded by `sh-here-document-word'."
   (or arg (sh--maybe-here-document)))
 
 (defun sh--maybe-here-document ()
-  (or (not (looking-back "[^<]<< " (line-beginning-position)))
+  (when (and (looking-back "[^<]<<[ E]" (line-beginning-position))
+             (save-excursion
+              (backward-char 2)
+               (not
+                (or (sh-quoted-p)
+                    (sh--inside-noncommand-expression (point)))))
+             (not (nth 8 (syntax-ppss))))
+    (let ((tabs (if (string-match "\\`-" sh-here-document-word)
+                    (make-string (/ (current-indentation) tab-width) ?\t)
+                  ""))
+          (delim (replace-regexp-in-string "['\"]" ""
+                                           sh-here-document-word)))
+      (delete-char -1)
+      (insert sh-here-document-word)
+      (or (eolp) (looking-at "[ \t]") (insert ?\s))
+      (end-of-line 1)
+      (while
+         (sh-quoted-p)
+       (end-of-line 2))
+      (insert ?\n tabs)
       (save-excursion
-       (backward-char 2)
-        (or (sh-quoted-p)
-            (sh--inside-noncommand-expression (point))))
-      (nth 8 (syntax-ppss))
-      (let ((tabs (if (string-match "\\`-" sh-here-document-word)
-                      (make-string (/ (current-indentation) tab-width) ?\t)
-                    ""))
-            (delim (replace-regexp-in-string "['\"]" ""
-                                            sh-here-document-word)))
-       (insert sh-here-document-word)
-       (or (eolp) (looking-at "[ \t]") (insert ?\s))
-       (end-of-line 1)
-       (while
-           (sh-quoted-p)
-         (end-of-line 2))
-       (insert ?\n tabs)
-       (save-excursion
-          (insert ?\n tabs (replace-regexp-in-string
-                            "\\`-?[ \t]*" "" delim))))))
+        (insert ?\n tabs (replace-regexp-in-string
+                          "\\`-?[ \t]*" "" delim))))))
 
 (define-minor-mode sh-electric-here-document-mode
   "Make << insert a here document skeleton."



reply via email to

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