From 1bd4e3a32a75b409fdbfb9ef4bbed4dd5dbd6981 Mon Sep 17 00:00:00 2001 From: Don Armstrong Date: Tue, 4 Dec 2012 01:39:03 +0000 Subject: [PATCH] update iedit --- emacs_el/iedit-lib.el | 9 ++++----- emacs_el/iedit-tests.el | 29 ++++++++++++++++++++++++----- emacs_el/iedit.el | 10 ++++++++-- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/emacs_el/iedit-lib.el b/emacs_el/iedit-lib.el index 5af1785..636c0bb 100644 --- a/emacs_el/iedit-lib.el +++ b/emacs_el/iedit-lib.el @@ -3,7 +3,7 @@ ;; Copyright (C) 2010, 2011, 2012 Victor Ren -;; Time-stamp: <2012-09-07 16:28:18 Victor Ren> +;; Time-stamp: <2012-10-17 08:48:28 Victor Ren> ;; Author: Victor Ren ;; Keywords: occurrence region simultaneous rectangle refactoring ;; Version: 0.97 @@ -376,15 +376,14 @@ occurrence, it will abort Iedit mode." (iedit-move-conjoined-overlays another-occurrence))) ;; deletion (dolist (another-occurrence (remove occurrence iedit-occurrences-overlays)) - (let* ((beginning (+ (overlay-start another-occurrence) offset)) - (ending (+ beginning change))) - (delete-region beginning ending) + (let ((beginning (+ (overlay-start another-occurrence) offset))) + (delete-region beginning (+ beginning change)) (unless (eq beg end) ;; replacement (goto-char beginning) (insert-and-inherit value)) (run-hook-with-args 'after-change-functions beginning - ending + (+ beginning (- beg end)) change))))))))))))) (defun iedit-next-occurrence () diff --git a/emacs_el/iedit-tests.el b/emacs_el/iedit-tests.el index 06d5fc9..916457d 100644 --- a/emacs_el/iedit-tests.el +++ b/emacs_el/iedit-tests.el @@ -2,7 +2,7 @@ ;; Copyright (C) 2010, 2011, 2012 Victor Ren -;; Time-stamp: <2012-08-09 17:17:03 Victor Ren> +;; Time-stamp: <2012-10-22 14:01:57 Victor Ren> ;; Author: Victor Ren ;; Version: 0.97 ;; X-URL: http://www.emacswiki.org/emacs/Iedit @@ -30,6 +30,7 @@ ;;; Code: (require 'ert) (require 'iedit) +(require 'iedit-rect) (ert-deftest iedit-compile-test () (let ((byte-compile-error-on-warn t )) @@ -128,6 +129,25 @@ foo" 123foo456123foo456 123foo456"))))) +(ert-deftest iedit-overlay-at-end-of-buffer () + (with-iedit-test-fixture + "foo +foo" + (lambda () + (iedit-mode) + (highlight-changes-mode 1) + (goto-char (point-min)) + (goto-char (point-at-eol)) + (iedit-mode) + (delete-region (point) (1- (point))) + (should (string= (buffer-string) + "fo +fo")) + (insert "b") + (should (string= (buffer-string) + "fob +fob"))))) + (ert-deftest iedit-mode-start-from-isearch-test () (with-iedit-test-fixture "foo @@ -143,7 +163,7 @@ foo" (isearch-process-search-char ?f) (isearch-process-search-char ?o) (isearch-process-search-char ?o) - (iedit-mode) + (call-interactively 'iedit-mode-from-isearch) (should (string= iedit-initial-string-local "foo")) (should (= 4 (length iedit-occurrences-overlays))) (iedit-mode) @@ -342,8 +362,7 @@ foo" (iedit-mode) ; turn off iedit (goto-char 2) (set-mark-command nil) - (forward-char 1) - (forward-line 1) + (goto-char 7) (iedit-rectangle-mode) (iedit-blank-occurrences) (should (string= (buffer-string) "f o @@ -463,7 +482,7 @@ arfoo (should (= 1 (length iedit-occurrences-overlays))) (iedit-mode) (goto-char 13) - (iedit-mode-on-function) + (iedit-mode-toggle-on-function) (should (= 4 (length iedit-occurrences-overlays))) (iedit-mode) (iedit-mode) diff --git a/emacs_el/iedit.el b/emacs_el/iedit.el index 9eea9c8..48d2122 100644 --- a/emacs_el/iedit.el +++ b/emacs_el/iedit.el @@ -2,7 +2,7 @@ ;; Copyright (C) 2010, 2011, 2012 Victor Ren -;; Time-stamp: <2012-09-12 15:22:33 Victor Ren> +;; Time-stamp: <2012-10-22 14:14:53 Victor Ren> ;; Author: Victor Ren ;; Keywords: occurrence region simultaneous refactoring ;; Version: 0.97 @@ -340,6 +340,7 @@ Keymap used within overlays: (setq iedit-only-complete-symbol-local complete-symbol) (setq mark-active nil) (run-hooks 'deactivate-mark-hook) + (setq iedit-initial-string-local occurrence) (iedit-start (iedit-regexp-quote occurrence) beg end)))) (defun iedit-mode-from-isearch (regexp) @@ -352,7 +353,12 @@ Keymap used within overlays: (isearch-regexp isearch-string) (t (regexp-quote isearch-string))))) (list regexp))) + (if (or isearch-regexp isearch-word) + nil + (setq iedit-initial-string-local isearch-string)) (isearch-exit) + (setq mark-active nil) + (run-hooks 'deactivate-mark-hook) (iedit-start regexp (point-min) (point-max)) ;; TODO: reconsider how to avoid the loop in iedit-same-length (if (iedit-same-length) @@ -363,7 +369,6 @@ Keymap used within overlays: (defun iedit-start (occurrence-regexp beg end) "Start Iedit mode for the `occurrence-regexp' in the current buffer." (setq iedit-unmatched-lines-invisible iedit-unmatched-lines-invisible-default) - (setq iedit-initial-string-local occurrence-regexp) (setq iedit-initial-region (list beg end)) (iedit-start2 occurrence-regexp beg end) (run-hooks 'iedit-mode-hook) @@ -401,6 +406,7 @@ the initial string globally." (iedit-cleanup) + (setq iedit-initial-string-local nil) (setq iedit-mode nil) (force-mode-line-update) (remove-hook 'kbd-macro-termination-hook 'iedit-done t) -- 2.39.2