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

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

[nongnu] elpa/iedit d89ee51834 148/301: Merge branch 'redo-prs' of githu


From: ELPA Syncer
Subject: [nongnu] elpa/iedit d89ee51834 148/301: Merge branch 'redo-prs' of github.com:lewang/iedit
Date: Mon, 10 Jan 2022 22:58:58 -0500 (EST)

branch: elpa/iedit
commit d89ee518343364fbf47bb7a5d3a2d0f13eacc3de
Merge: 0d6193362d 27de77eda5
Author: Victor Ren <victorhge@gmail.com>
Commit: Victor Ren <victorhge@gmail.com>

    Merge branch 'redo-prs' of github.com:lewang/iedit
    
    Conflicts:
            iedit-rect.el
            iedit-tests.el
---
 iedit-lib.el   | 13 +++++++++++-
 iedit-rect.el  | 34 +++++++++++++++----------------
 iedit-tests.el | 63 +++++++++++++++++++++++++++++++++++++++++++++++-----------
 iedit.el       | 21 ++++++++++++++++++--
 test-util.el   | 14 +++++++++++++
 5 files changed, 113 insertions(+), 32 deletions(-)

diff --git a/iedit-lib.el b/iedit-lib.el
index 159bb4eb41..05128bb59f 100644
--- a/iedit-lib.el
+++ b/iedit-lib.el
@@ -3,7 +3,7 @@
 
 ;; Copyright (C) 2010, 2011, 2012 Victor Ren
 
-;; Time-stamp: <2012-12-22 23:41:03 Victor Ren>
+;; Time-stamp: <2012-12-22 23:52:42 Victor Ren>
 ;; Author: Victor Ren <victorhge@gmail.com>
 ;; Keywords: occurrence region simultaneous rectangle refactoring
 ;; Version: 0.97
@@ -548,17 +548,20 @@ value of `iedit-occurrence-context-lines' is used for 
this time."
 (defun iedit-upcase-occurrences ()
   "Covert occurrences to upper case."
   (interactive "*")
+  (iedit-barf-if-buffering)
   (iedit-apply-on-occurrences 'upcase-region))
 
 (defun iedit-downcase-occurrences()
   "Covert occurrences to lower case."
   (interactive "*")
+  (iedit-barf-if-buffering)
   (iedit-apply-on-occurrences 'downcase-region))
 
 (defun iedit-replace-occurrences(to-string)
   "Replace occurrences with STRING.
 This function preserves case."
   (interactive "*sReplace with: ")
+  (iedit-barf-if-buffering)
   (let* ((ov (iedit-find-current-occurrence-overlay))
          (offset (- (point) (overlay-start ov)))
          (from-string (downcase (buffer-substring-no-properties
@@ -575,6 +578,7 @@ This function preserves case."
 (defun iedit-blank-occurrences()
   "Replace occurrences with blank spaces."
   (interactive "*")
+  (iedit-barf-if-buffering)
   (let* ((ov (car iedit-occurrences-overlays))
          (offset (- (point) (overlay-start ov)))
          (count (- (overlay-end ov) (overlay-start ov))))
@@ -588,6 +592,7 @@ This function preserves case."
 (defun iedit-delete-occurrences()
   "Delete occurrences."
   (interactive "*")
+  (iedit-barf-if-buffering)
   (iedit-apply-on-occurrences 'delete-region))
 
 ;; todo: add cancel buffering function
@@ -691,6 +696,7 @@ FORMAT."
                             (iedit-default-occurrence-number-format
                              start-at))))
      (list 1 nil)))
+  (iedit-barf-if-buffering)
   (unless format-string
     (setq format-string (iedit-default-occurrence-number-format start-at)))
   (let ((iedit-number-occurrence-counter start-at)
@@ -833,6 +839,11 @@ it just means mark is active."
            (null iedit-read-only-occurrences-overlays))
       (error "Iedit lib is active")))
 
+(defun iedit-barf-if-buffering()
+  "Signal error if Iedit lib is buffering."
+  (or  (null iedit-buffering)
+      (error "Iedit is buffering")))
+
 (provide 'iedit-lib)
 
 ;;; iedit-lib.el ends here
diff --git a/iedit-rect.el b/iedit-rect.el
index 95d2c88e7d..9a662079ca 100644
--- a/iedit-rect.el
+++ b/iedit-rect.el
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 2010, 2011, 2012 Victor Ren
 
-;; Time-stamp: <2012-12-09 00:34:58 Victor Ren>
+;; Time-stamp: <2013-01-18 17:24:41 Victor Ren>
 ;; Author: Victor Ren <victorhge@gmail.com>
 ;; Keywords: occurrence region simultaneous rectangle refactoring
 ;; Version: 0.97
@@ -81,7 +81,7 @@ current mode is iedit-rect. Otherwise it is nil.
              '(iedit-rectangle-mode . nil))
 
 ;;;###autoload
-(defun iedit-rectangle-mode ()
+(defun iedit-rectangle-mode (&optional beg end)
   "Toggle Iedit-rect mode.
 
 When Iedit-rect mode is on, a rectangle is started with visible
@@ -90,22 +90,24 @@ Iedit mechanism.
 
 Commands:
 \\{iedit-rect-keymap}"
-  (interactive)
+  (interactive (when (iedit-region-active)
+                 (list (region-beginning)
+                       (region-end))))
   (if iedit-rectangle-mode
       (iedit-rectangle-done)
     (iedit-barf-if-lib-active)
-    (if (iedit-region-active)
-        (let ((beg (region-beginning))
-              (end (region-end)))
-          (setq mark-active nil)
-          (run-hooks 'deactivate-mark-hook)
-          (iedit-rectangle-start beg end)))))
+    (if (and beg end)
+        (progn (setq mark-active nil)
+               (run-hooks 'deactivate-mark-hook)
+               (iedit-rectangle-start beg end))
+      (error "no region available."))))
 
 (defun iedit-rectangle-start (beg end)
   "Start Iedit mode for the region as a rectangle."
   (barf-if-buffer-read-only)
+  (setq beg (copy-marker beg))
+  (setq end (copy-marker end t))
   (setq iedit-occurrences-overlays nil)
-  (setq iedit-rectangle (list beg end))
   (setq iedit-initial-string-local nil)
   (setq iedit-occurrence-keymap iedit-rect-keymap)
   (save-excursion
@@ -124,13 +126,11 @@ Commands:
                           (point)))
                        iedit-occurrences-overlays)
                  (forward-line 1))
-            until (> (point) end))
-      ))
-  (setq iedit-rectangle-mode
-        (propertize
-         (concat " Iedit-rect:"
-                 (number-to-string (length iedit-occurrences-overlays)))
-         'face 'font-lock-warning-face))
+            until (> (point) end))))
+  (setq iedit-rectangle (list beg end))
+  (setq iedit-rectangle-mode (propertize
+                    (concat " Iedit-rect:" (number-to-string (length 
iedit-occurrences-overlays)))
+                    'face 'font-lock-warning-face))
   (force-mode-line-update)
   (add-hook 'kbd-macro-termination-hook 'iedit-rectangle-done nil t)
   (add-hook 'change-major-mode-hook 'iedit-rectangle-done nil t)
diff --git a/iedit-tests.el b/iedit-tests.el
index 8bb59eeaae..4e21a13f3f 100644
--- a/iedit-tests.el
+++ b/iedit-tests.el
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 2010, 2011, 2012 Victor Ren
 
-;; Time-stamp: <2012-12-09 00:11:33 Victor Ren>
+;; Time-stamp: <2013-01-18 17:30:39 Victor Ren>
 ;; Author: Victor Ren <victorhge@gmail.com>
 ;; Version: 0.97
 ;; X-URL: http://www.emacswiki.org/emacs/Iedit
@@ -37,20 +37,42 @@
     (should (byte-compile-file "iedit.el"))
     (delete-file "iedit.elc" nil)))
 
+(defmacro with-iedit-test-buffer (buffer-name &rest body)
+  (declare (indent 1) (debug t))
+  `(progn
+     (when (get-buffer ,buffer-name)
+       (kill-buffer ,buffer-name))
+     (with-current-buffer (get-buffer-create ,buffer-name)
+       ,@body)))
+
+(defun marker-position-list (l)
+  "convert list of markers to positions"
+  (mapcar (lambda (m) (marker-position m)) l))
+
+(defun goto-word (word &optional beginning)
+  (goto-char (point-min))
+  (search-forward word)
+  (when beginning
+    (goto-char (- (point) (length word)))))
+
+(defun goto-word-beginning (word)
+  (goto-word word t))
+
+
 (defun with-iedit-test-fixture (input-buffer-string body)
   "iedit test fixture"
   (let ((old-transient-mark-mode transient-mark-mode)
         (old-iedit-transient-sensitive iedit-transient-mark-sensitive))
     (unwind-protect
         (progn
-          (with-temp-buffer
+          (with-iedit-test-buffer "* iedit transient mark *"
             (transient-mark-mode t)
             (setq iedit-transient-mark-sensitive t)
             (insert input-buffer-string)
             (goto-char 1)
             (iedit-mode)
             (funcall body))
-          (with-temp-buffer
+          (with-iedit-test-buffer "* iedit NO transient mark *"
             (setq iedit-transient-mark-sensitive nil)
             (transient-mark-mode -1)
             (insert input-buffer-string)
@@ -389,7 +411,7 @@ fob")))))
      (goto-char 2)
      (set-mark-command nil)
      (goto-char 7)
-     (iedit-rectangle-mode)
+     (call-interactively 'iedit-rectangle-mode)
      (iedit-blank-occurrences)
      (should (string= (buffer-string) "f o
   oo barfoo foo")))))
@@ -441,7 +463,7 @@ fob")))))
 
 (ert-deftest iedit-rectangle-start-test ()
   (with-iedit-test-fixture
-"foo
+   "foo
  foo
   barfoo
     foo"
@@ -450,12 +472,12 @@ fob")))))
      (set-mark-command nil)
      (forward-char 3)
      (forward-line 3)
-     (iedit-rectangle-mode)
-     (should (equal iedit-rectangle '(1 19))))))
+     (call-interactively 'iedit-rectangle-mode)
+     (should (equal (marker-position-list iedit-rectangle) '(1 19))))))
 
 (ert-deftest iedit-kill-rectangle-error-test ()
   (with-iedit-test-fixture
-"foo
+   "foo
  foo
   barfoo
     foo"
@@ -463,9 +485,9 @@ fob")))))
      (iedit-mode)
      (set-mark-command nil)
      (goto-char 22)
-     (iedit-rectangle-mode)
+     (call-interactively 'iedit-rectangle-mode)
      (should (iedit-same-column))
-     (should (equal iedit-rectangle '(1 22)))
+     (should (equal (marker-position-list iedit-rectangle) '(1 22)))
      (iedit-prev-occurrence)
      (delete-char -1)
      (should (not (iedit-same-column)))
@@ -481,9 +503,9 @@ fob")))))
    (iedit-mode)
    (set-mark-command nil)
    (goto-char 22)
-   (iedit-rectangle-mode)
+   (call-interactively 'iedit-rectangle-mode)
    (should (iedit-same-column))
-   (should (equal iedit-rectangle '(1 22)))
+   (should (equal (marker-position-list iedit-rectangle) '(1 22)))
    (iedit-kill-rectangle)
    (should (string= (buffer-string)
 "
@@ -492,6 +514,23 @@ arfoo
  foo"))
  (should (equal killed-rectangle '("foo" " fo" "  b" "   "))))))
 
+(ert-deftest iedit-kill-rectangle-fill-extra-spaces ()
+  "lines within rectangle shorter than rectangle right column
+  should have spaces filled in."
+  (with-iedit-test-fixture
+   "foo
+ foo
+  barfoo
+    foo"
+   (lambda ()
+     (iedit-mode)
+     (setq indent-tabs-mode nil)
+     (set-mark-command nil)
+     (goto-word "barfoo")
+     (call-interactively 'iedit-rectangle-mode)
+     (should (iedit-same-column))
+     (should (equal '(1 27) (marker-position-list iedit-rectangle))))))
+
 (ert-deftest iedit-restrict-defun-test ()
   (with-iedit-test-fixture
 "a
diff --git a/iedit.el b/iedit.el
index 1e5adc75d8..7117ae1b82 100644
--- a/iedit.el
+++ b/iedit.el
@@ -2,7 +2,7 @@
 
 ;; Copyright (C) 2010, 2011, 2012 Victor Ren
 
-;; Time-stamp: <2012-12-22 21:59:17 Victor Ren>
+;; Time-stamp: <2013-01-02 23:21:38 Victor Ren>
 ;; Author: Victor Ren <victorhge@gmail.com>
 ;; Keywords: occurrence region simultaneous refactoring
 ;; Version: 0.97
@@ -33,7 +33,7 @@
 ;;
 ;; Normal scenario of iedit-mode is like:
 ;;
-;; - Highlight certain contents - by press C-;
+;; - Highlight certain contents - by press C-; (The default binding)
 ;;   All occurrences of a symbol, string in the buffer or a region may be
 ;;   highlighted corresponding to current mark, point and prefix argument.
 ;;   Refer to the document of `iedit-mode' for details.
@@ -234,6 +234,7 @@ This is like `describe-bindings', but displays only Iedit 
keys."
     (define-key map (char-to-string help-char) iedit-help-map)
     (define-key map [help] iedit-help-map)
     (define-key map [f1] iedit-help-map)
+    (define-key map (kbd "M-;") 'iedit-toggle-selection)
     map)
   "Keymap used while Iedit mode is enabled.")
 
@@ -462,6 +463,22 @@ the initial string globally."
       (iedit-replace-occurrences iedit-last-occurrence-global)
     (message "No global modification available.")))
 
+(defun iedit-toggle-selection ()
+  "Select or deselect the occurrence under point."
+  (interactive)
+  (iedit-barf-if-buffering)
+  (let ((ov (iedit-find-current-occurrence-overlay)))
+    (if ov
+        (iedit-restrict-region (overlay-start ov) (overlay-end ov) t)
+      (goto-char (if (> (point)(length iedit-initial-string-local))
+                     ( - (point) (length iedit-initial-string-local))
+                   (point-min)))
+      (iedit-add-next-occurrence-overlay (iedit-regexp-quote 
iedit-initial-string-local))
+      (setq iedit-mode (propertize
+                    (concat " Iedit:" (number-to-string
+                                       (length iedit-occurrences-overlays)))
+                    'face 'font-lock-warning-face))
+      (force-mode-line-update))))
 
 (defun iedit-restrict-function(&optional arg)
   "Restricting Iedit mode in current function."
diff --git a/test-util.el b/test-util.el
new file mode 100644
index 0000000000..7cf5502f48
--- /dev/null
+++ b/test-util.el
@@ -0,0 +1,14 @@
+(defun marker-position-list (l)
+  "convert list of markers to positions"
+  (mapcar (lambda (m) (marker-position m)) l))
+
+(defun goto-word (word &optional beginning)
+  (goto-char (point-min))
+  (search-forward word)
+  (when beginning
+    (goto-char (- (point) (length word)))))
+
+(defun goto-word-beginning (word)
+  (goto-word word t))
+
+(provide 'test-util)
\ No newline at end of file



reply via email to

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