[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/el-search 48103e3 221/332: * el-search/el-search.el: Fi
From: |
Stefan Monnier |
Subject: |
[elpa] externals/el-search 48103e3 221/332: * el-search/el-search.el: Fix handling of void replacements |
Date: |
Tue, 1 Dec 2020 15:48:49 -0500 (EST) |
branch: externals/el-search
commit 48103e38d6887dc372f82f79e30ca32fa76183df
Author: Michael Heerdegen <michael_heerdegen@web.de>
Commit: Michael Heerdegen <michael_heerdegen@web.de>
* el-search/el-search.el: Fix handling of void replacements
(el-search--replace-hunk): If we effectively killed a match, also kill
any left empty line or trailing whitespace.
(el-search--search-and-replace-pattern): Don't try to move to the
beginning of a void replacement.
---
el-search.el | 30 ++++++++++++++++++++++++------
1 file changed, 24 insertions(+), 6 deletions(-)
diff --git a/el-search.el b/el-search.el
index e140ed8..6f123ea 100644
--- a/el-search.el
+++ b/el-search.el
@@ -3080,10 +3080,23 @@ reindent."
(insert to-insert)
(when insert-newline-after
(insert "\n"))
- (save-excursion
- ;; the whole enclosing sexp might need re-indenting
- (condition-case nil (up-list) (scan-error))
- (indent-region opoint (1+ (point)))))))
+ (if (string= to-insert "")
+ ;; We deleted the match. Clean up.
+ (if (save-excursion (goto-char (line-beginning-position))
+ (looking-at (rx bol (* space) eol)))
+ (delete-region (match-beginning 0) (min (1+ (match-end 0))
(point-max)))
+ (save-excursion
+ (skip-chars-backward " \t")
+ (when (looking-at (rx (+ space) eol))
+ (delete-region (match-beginning 0) (match-end 0))))
+ (when (and (looking-back (rx space) (1- (point)))
+ (looking-at (rx (+ space))))
+ (delete-region (match-beginning 0) (match-end 0)))
+ (indent-according-to-mode))
+ (save-excursion
+ ;; the whole enclosing sexp might need re-indenting
+ (condition-case nil (up-list) (scan-error))
+ (indent-region opoint (1+ (point))))))))
(defun el-search--format-replacement (replacement original replace-expr-input
splice)
;; Return a printed representation of REPLACEMENT. Try to reuse the
@@ -3229,13 +3242,18 @@ Thanks!"))))
(end-of-buffer nil)))))
(replacement-contains-another-match
(funcall replacement-contains-another-match-p))
+ (void-replacement-p (lambda () (and splice (null
new-expr))))
(do-replace
(lambda ()
(save-excursion
(save-restriction
(widen)
- (el-search--replace-hunk (list (point)
(el-search--end-of-sexp)) to-insert)))
- (el-search--ensure-sexp-start) ;skip
potentially newly added whitespace
+ (el-search--replace-hunk
+ (list (point) (el-search--end-of-sexp))
+ to-insert)))
+ (unless (funcall void-replacement-p)
+ ;;skip potentially newly added whitespace
+ (el-search--ensure-sexp-start))
(cl-incf nbr-replaced)
(cl-incf nbr-replaced-total)
(setq replaced-this t)))
- [elpa] externals/el-search a2e367e 189/332: Fix starting a search with `el-search-this-sexp', (continued)
- [elpa] externals/el-search a2e367e 189/332: Fix starting a search with `el-search-this-sexp', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search d1706eb 190/332: Display match count for *El Occur* buffers, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 97626ac 192/332: Use local binding of `post-command-hook' to reset wrap flag, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 16a5f70 193/332: * el-search/el-search.el: Shorten the query-replace prompt, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 224f384 196/332: ; * el-search/el-search.el: Mention Emacs Bug#29857 in the header, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 1175d21 200/332: Allow `string' and `symbol' el-search patterns to set match data, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search b88b65a 204/332: Declare any search started with `el-search-this-sexp' single-buffer, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 6b01504 210/332: Add command `el-search-ibuffer-marked-buffers', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search d869368 211/332: Implement `cl-print-object' for el-search-objects, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 6251577 213/332: * el-search/el-search.el: Add `el-search-edit-search-description', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 48103e3 221/332: * el-search/el-search.el: Fix handling of void replacements,
Stefan Monnier <=
- [elpa] externals/el-search 7c099aa 225/332: Small improvements to el-search--search-and-replace-pattern, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search da7857b 227/332: * el-search/el-search.el: Add `el-search-looking-at', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 9f400b4 234/332: * el-search/el-search.el: Fix infloop in el-search--flatten-tree, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 3bb5b76 236/332: * el-search/el-search.el: Prefer adverb "backward" in names and text, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 41e0251 224/332: * el-search/el-search.el: Bump version to 1.6; some minor tweaks, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search c4eeae5 223/332: * el-search/el-search.el: Fix single buffer query-replace, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search bd67d58 239/332: [el-search] Raise user-error when replacement contains gensyms, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 96b7423 245/332: [el-search] Special case 'el-search-make-matcher' for '_', Stefan Monnier, 2020/12/01
- [elpa] externals/el-search eef5de0 243/332: [el-search] Save two 'eval' calls, Stefan Monnier, 2020/12/01
- [elpa] externals/el-search 427afa8 253/332: [el-search] Bump version to 1.7.1, Stefan Monnier, 2020/12/01