branch: elpa/multiple-cursors
commit ca0e0ae9d9cae8a6a1c232fe3b49b5958a768b34
Author: Magnar Sveen <[email protected]>
Commit: Magnar Sveen <[email protected]>
Tests for rectangular-region-mode
---
features/rectangular-region.feature | 73 ++++++++++++++++++++++
.../step-definitions/multiple-cursors-steps.el | 25 ++++++++
features/support/env.el | 2 +
rectangular-region-mode.el | 4 ++
run-tests.watchr | 4 +-
5 files changed, 106 insertions(+), 2 deletions(-)
diff --git a/features/rectangular-region.feature
b/features/rectangular-region.feature
new file mode 100644
index 0000000..b1b45bc
--- /dev/null
+++ b/features/rectangular-region.feature
@@ -0,0 +1,73 @@
+Feature: Rectangular region
+
+ Scenario: Works like regular region when on one line
+ When I insert "some text"
+ And I press "H-SPC"
+ And I press "M-b"
+ Then the region should be "text"
+ And rectangular-region-mode should be on
+
+ Scenario: Works like regular region when on one line, insert
+ Given I turn on delete-selection-mode
+ When I insert "some text"
+ And I press "H-SPC"
+ And I press "M-b"
+ And I type "replacement"
+ Then I should see "some replacement"
+ And rectangular-region-mode should be off
+
+ Scenario: Works like regular region when on one line, copy 1
+ Given I turn on delete-selection-mode
+ When I insert "some text"
+ And I press "H-SPC"
+ And I press "M-b"
+ And I press "M-w"
+ Then rectangular-region-mode should be off
+
+ Scenario: Works like regular region when on one line, copy 2
+ Given I turn on delete-selection-mode
+ When I insert "some text"
+ And I press "H-SPC"
+ And I press "M-b"
+ And I press "M-w"
+ And I press "C-y"
+ Then I should see "some texttext"
+
+ Scenario: Changing multiple lines
+ Given I turn on delete-selection-mode
+ When I insert:
+ """
+ This is some text
+ This is more text
+ """
+ And I go to point "6"
+ And I press "H-SPC"
+ And I press "M-f"
+ And I press "C-n"
+ And I type "was"
+ Then I should see:
+ """
+ This was some text
+ This was more text
+ """
+ And I should have 2 cursors
+
+ Scenario: Changing multiple lines with gaps
+ Given I turn on delete-selection-mode
+ When I insert:
+ """
+ This is some text
+
+ This is more text
+ """
+ And I go to point "6"
+ And I press "H-SPC"
+ And I go to the end of the word "more"
+ And I type "was"
+ Then I should see:
+ """
+ This was text
+
+ This was text
+ """
+ And I should have 2 cursors
diff --git a/features/step-definitions/multiple-cursors-steps.el
b/features/step-definitions/multiple-cursors-steps.el
index 990f19a..3ecc367 100644
--- a/features/step-definitions/multiple-cursors-steps.el
+++ b/features/step-definitions/multiple-cursors-steps.el
@@ -15,6 +15,16 @@
(assert (eq 1 (mc/num-cursors)) nil
"Expected to have one cursor, but there are still fake cursor
overlays.")))
+(Then "^rectangular-region-mode should be off$"
+ (lambda ()
+ (assert (not rectangular-region-mode) nil
+ "Expected rectangular-region-mode mode to be off, but
wasn't.")))
+
+(Then "^rectangular-region-mode should be on$"
+ (lambda ()
+ (assert (rectangular-region-mode) nil
+ "Expected rectangular-region-mode mode to be on, but
wasn't.")))
+
(When "^I press \"\\(.+\\)\"$"
(lambda (keybinding)
(let ((macro (edmacro-parse-keys keybinding)))
@@ -57,3 +67,18 @@
(lexical-let ((ins ins))
(defun mc-test-temp-command-2 () (interactive) (insert ins))
(global-set-key (kbd "C-!") 'mc-test-temp-command-2))))
+
+(When "^I go to character \"\\(.+\\)\"$"
+ (lambda (char)
+ (goto-char (point-min))
+ (let ((search (re-search-forward (format "%s" char) nil t))
+ (message "Can not go to character '%s' since it does not exist
in the current buffer: %s"))
+ (assert search nil message char (espuds-buffer-contents)))))
+
+(When "^I go to the \\(front\\|end\\) of the word \"\\(.+\\)\"$"
+ (lambda (pos word)
+ (goto-char (point-min))
+ (let ((search (re-search-forward (format "%s" word) nil t))
+ (message "Can not go to character '%s' since it does not exist
in the current buffer: %s"))
+ (assert search nil message word (espuds-buffer-contents))
+ (if (string-equal "front" pos) (backward-word)))))
diff --git a/features/support/env.el b/features/support/env.el
index 8a61240..d7a4748 100644
--- a/features/support/env.el
+++ b/features/support/env.el
@@ -17,8 +17,10 @@
(Before
(multiple-cursors-mode 0)
+ (rectangular-region-mode 0)
(mm/clear-all)
(global-set-key (kbd "C->") 'mark-next-like-this)
+ (global-set-key (kbd "H-SPC") 'set-rectangular-region-anchor)
(switch-to-buffer
(get-buffer-create "*multiple-cursors*"))
(erase-buffer)
diff --git a/rectangular-region-mode.el b/rectangular-region-mode.el
index cb84e04..6493003 100644
--- a/rectangular-region-mode.el
+++ b/rectangular-region-mode.el
@@ -61,6 +61,10 @@
(when rectangular-region-mode
(rrm/switch-to-multiple-cursors)))
+(defadvice kill-ring-save (before switch-from-rrm-to-mc activate)
+ (when rectangular-region-mode
+ (rrm/switch-to-multiple-cursors)))
+
(define-minor-mode rectangular-region-mode
"A mode for creating a rectangular region to edit"
nil " rr" rectangular-region-mode-map
diff --git a/run-tests.watchr b/run-tests.watchr
index c2f39c2..3810cb2 100644
--- a/run-tests.watchr
+++ b/run-tests.watchr
@@ -7,13 +7,13 @@ end
def run_all_tests
system('clear')
- result = run "./util/ecukes/ecukes"
+ result = run "./util/ecukes/ecukes --graphical"
puts result
end
def run_test(file)
system('clear')
- result = run "./util/ecukes/ecukes #{file}"
+ result = run "./util/ecukes/ecukes --graphical #{file}"
puts result
end