diff options
| author | Henrik Lissner <henrik@lissner.net> | 2016-02-23 10:13:31 -0500 |
|---|---|---|
| committer | Henrik Lissner <henrik@lissner.net> | 2016-02-23 10:13:31 -0500 |
| commit | 8b2ca83b7cdc4ef76aa9a1af7797b70d1cb25a5e (patch) | |
| tree | c0d2ee9f70c9883dca35af0dc9efeb11427fc0a8 | |
| parent | bfa438cf62e29074b3fc68c582765a7e0f9907e4 (diff) | |
Fix #52, #39, and #5 (linewise surrounding)
| -rwxr-xr-x | evil-surround.el | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/evil-surround.el b/evil-surround.el index 5aed32b..a66e0ab 100755 --- a/evil-surround.el +++ b/evil-surround.el @@ -286,22 +286,31 @@ Becomes this: (let* ((overlay (make-overlay beg end nil nil t)) (pair (evil-surround-pair char)) (open (car pair)) - (close (cdr pair))) + (close (cdr pair)) + (beg-pos (overlay-start overlay))) (unwind-protect (progn - (goto-char (overlay-start overlay)) - + (goto-char beg-pos) (cond ((eq type 'block) (evil-surround-block beg end char)) ((eq type 'line) + (back-to-indentation) + (setq beg-pos (point)) (insert open) - (newline-and-indent) - (indent-region (overlay-start overlay) (overlay-end overlay)) + (when force-new-line (newline-and-indent)) (goto-char (overlay-end overlay)) + (if force-new-line + (when (eobp) + (newline-and-indent)) + (backward-char) + (evil-last-non-blank) + (forward-char)) (insert close) - (indent-according-to-mode) - (newline)) + (when (or force-new-line + (/= (line-number-at-pos) (line-number-at-pos beg-pos))) + (indent-region beg-pos (point)) + (newline-and-indent))) (force-new-line (insert open) @@ -309,13 +318,14 @@ Becomes this: (newline-and-indent) (goto-char (overlay-end overlay)) (newline-and-indent) - (insert close)) + (insert close) + (indent-region beg-pos (point))) (t (insert open) (goto-char (overlay-end overlay)) (insert close))) - (goto-char (overlay-start overlay))) + (goto-char beg-pos)) (delete-overlay overlay))))) (evil-define-operator evil-Surround-region (beg end type char) |
