[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
- [nongnu] elpa/iedit c742ae4fa6 196/301: Exit iedit when there is no occurrence, (continued)
- [nongnu] elpa/iedit c742ae4fa6 196/301: Exit iedit when there is no occurrence, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 46d5f65019 154/301: clean up old occurrences when calling from isearch, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit c55fcd5bac 189/301: avoid error if iedit-toggle-key-default already bound to iedit-mode, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit adb0d2e92d 179/301: Expand to next occurence ("incremental select"), ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit d25b655768 207/301: Merge branch 'master' of github.com:victorhge/iedit, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit d31bafa97c 171/301: Refactored for easier to show different messages, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 2d9017daea 181/301: Merge pull request #51 from jasminpatry/fix/restrict-current-line-resets-expand, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 048d8417cf 202/301: *** empty log message ***, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit a8ab03848d 158/301: complete iedit-toggle-selection, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit c0d108da3b 166/301: make the occurrence the latest kill in the kill ring, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit d89ee51834 148/301: Merge branch 'redo-prs' of github.com:lewang/iedit,
ELPA Syncer <=
- [nongnu] elpa/iedit fd801e77df 165/301: Merge pull request #38 from mgalgs/narrow-around-current-line, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 52c4865e5b 197/301: Add special prefix argument 1, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 8d20094a11 182/301: Use the original case in the iedit-replace default value, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 1242c675d2 164/301: Add save-window-excursion, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit b5a3415b00 180/301: Merge pull request #47 from zhenya1007/help-char-can-be-meta, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 6019d3c376 170/301: defvar iedit-current-symbol, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 22f4729ae9 150/301: Add test case for iedit-hide-unmatched-lines, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 4884f61a3b 188/301: Merge branch 'master' of github.com:victorhge/iedit, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 607e82c7b0 208/301: rename `iedit-current-symbol` to `iedit-default-occurrence`, ELPA Syncer, 2022/01/10
- [nongnu] elpa/iedit 1eabaa061a 210/301: Merge branch 'master' of github.com:victorhge/iedit, ELPA Syncer, 2022/01/10