redcar 0.10 → 0.11.0dev
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +14 -0
- data/Rakefile +68 -29
- data/lib/redcar.rb +2 -2
- data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +2 -1
- data/plugins/application_swt/spec/application_swt/gradient_spec.rb +3 -12
- data/plugins/core/lib/core/resource.rb +13 -5
- data/plugins/document_search/features/find.feature +366 -214
- data/plugins/document_search/features/incremental_search.feature +351 -0
- data/plugins/document_search/features/replace.feature +16 -16
- data/plugins/document_search/features/step_definitions/find_steps.rb +16 -0
- data/plugins/document_search/features/support/env.rb +11 -0
- data/plugins/document_search/lib/document_search.rb +149 -109
- data/plugins/document_search/lib/document_search/commands.rb +251 -202
- data/plugins/document_search/lib/document_search/find_speedbar.rb +138 -81
- data/plugins/document_search/lib/document_search/incremental_search_speedbar.rb +70 -0
- data/plugins/document_search/lib/document_search/query_options.rb +15 -39
- data/plugins/document_search/plugin.rb +1 -1
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +6 -2
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +2 -2
- data/plugins/file_parser/lib/file_parser.rb +6 -1
- data/plugins/html_view/features/step_definitions/web_view_steps.rb +12 -0
- data/plugins/html_view/features/support/env.rb +16 -0
- data/plugins/html_view/lib/html_view.rb +5 -1
- data/plugins/line_tools/lib/line_tools.rb +16 -0
- data/plugins/project/features/find_file.feature +28 -0
- data/plugins/project/features/open_and_save_files.feature +11 -0
- data/plugins/project/features/step_definitions/file_steps.rb +6 -1
- data/plugins/project/features/support/env.rb +2 -0
- data/plugins/project/lib/project.rb +49 -6
- data/plugins/project/lib/project/commands.rb +18 -6
- data/plugins/project/lib/project/find_file_dialog.rb +19 -8
- data/plugins/project/lib/project/find_recent_dialog.rb +30 -0
- data/plugins/project/lib/project/manager.rb +41 -10
- data/plugins/project/lib/project/recent.rb +64 -0
- data/plugins/project/spec/fixtures/myproject/vendor/bar.rb +0 -0
- data/plugins/project/spec/fixtures/myproject/vendor/plugins/bar.rb +0 -0
- data/plugins/{find-in-project → project_search}/TODO.md +3 -3
- data/plugins/project_search/features/support/env.rb +6 -0
- data/plugins/project_search/features/word_search.feature +34 -0
- data/plugins/project_search/lib/project_search.rb +73 -0
- data/plugins/project_search/lib/project_search/binary_data_detector.rb +46 -0
- data/plugins/project_search/lib/project_search/commands.rb +62 -0
- data/plugins/project_search/lib/project_search/hit.rb +17 -0
- data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/images/collapsed.png +0 -0
- data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/images/expanded.png +0 -0
- data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/images/spinner.gif +0 -0
- data/plugins/project_search/lib/project_search/lucene_index.rb +64 -0
- data/plugins/project_search/lib/project_search/lucene_refresh.rb +22 -0
- data/plugins/project_search/lib/project_search/project.rb +14 -0
- data/plugins/project_search/lib/project_search/query.rb +29 -0
- data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/stylesheets/style.css +14 -3
- data/plugins/project_search/lib/project_search/views/_file.html.erb +60 -0
- data/plugins/{find-in-project/lib/find_in_project → project_search/lib/project_search}/views/index.html.erb +12 -9
- data/plugins/project_search/lib/project_search/word_search.rb +105 -0
- data/plugins/project_search/lib/project_search/word_search_controller.rb +207 -0
- data/plugins/project_search/plugin.rb +8 -0
- data/plugins/project_search/spec/fixtures/project/binary_file.bin +0 -0
- data/plugins/project_search/spec/fixtures/project/foo.txt +43 -0
- data/plugins/project_search/spec/fixtures/project/qux.rb +3 -0
- data/plugins/project_search/spec/project_search/binary_data_detector_spec.rb +24 -0
- data/plugins/project_search/spec/project_search/word_search_spec.rb +157 -0
- data/plugins/project_search/spec/spec_helper.rb +27 -0
- data/plugins/redcar/redcar.rb +77 -71
- data/plugins/ruby/lib/ruby/syntax_checker.rb +1 -1
- data/plugins/snippets/features/snippets.feature +12 -0
- data/plugins/snippets/lib/snippets/tab_handler.rb +1 -1
- metadata +46 -25
- data/plugins/document_search/features/find_and_replace.feature +0 -723
- data/plugins/document_search/lib/document_search/find_and_replace_speedbar.rb +0 -142
- data/plugins/find-in-project/lib/find_in_project.rb +0 -35
- data/plugins/find-in-project/lib/find_in_project/commands.rb +0 -30
- data/plugins/find-in-project/lib/find_in_project/controllers.rb +0 -170
- data/plugins/find-in-project/lib/find_in_project/views/_divider.html.erb +0 -4
- data/plugins/find-in-project/lib/find_in_project/views/_file_heading.html.erb +0 -10
- data/plugins/find-in-project/lib/find_in_project/views/_file_line.html.erb +0 -6
- data/plugins/find-in-project/plugin.rb +0 -11
- data/plugins/project/lib/project/recent_directories.rb +0 -54
data/CHANGES
CHANGED
@@ -1,3 +1,17 @@
|
|
1
|
+
Version 0.11 (TBA)
|
2
|
+
==================
|
3
|
+
|
4
|
+
Enhancements:
|
5
|
+
|
6
|
+
* Fuzzy file finder now recognizes directories "a/c/repocontr" (Tim Felgentreff)
|
7
|
+
* Recent project fuzzy finder (Benedikt Müller)
|
8
|
+
* Improved DocumentSearch, with UI refinements, added Replace All commands (Tom Murray)
|
9
|
+
* Raise/lower region behaves better when you select multiple lines (Benedikt Müller)
|
10
|
+
* Project search backed by Lucene (Dan Lucraft)
|
11
|
+
|
12
|
+
Bugfixes:
|
13
|
+
* Fixed Unicode problems in DocumentSearch (Tom Murray)
|
14
|
+
|
1
15
|
Version 0.10 (17 January 2011)
|
2
16
|
==============================
|
3
17
|
|
data/Rakefile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
REDCAR_VERSION = "0.
|
1
|
+
REDCAR_VERSION = "0.11.0dev" # also change in lib/redcar.rb!
|
2
2
|
require 'rubygems'
|
3
3
|
require 'fileutils'
|
4
4
|
require 'spec/rake/spectask'
|
@@ -41,43 +41,82 @@ task :release_docs do
|
|
41
41
|
sh "rsync -e 'ssh -p #{port}' -avz doc/ danlucraft.com:#{docs_dir}/latest/"
|
42
42
|
end
|
43
43
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
FileUtils.rm COVERAGE_DATA if File.exist?(COVERAGE_DATA)
|
48
|
-
Rake::Task["specs_ci"].invoke
|
49
|
-
Rake::Task["cucumber_ci"].invoke
|
44
|
+
def jruby_run(cmd)
|
45
|
+
opts = "-J-XstartOnFirstThread" if Config::CONFIG["host_os"] =~ /darwin/
|
46
|
+
sh("jruby --debug #{opts} -S #{cmd}; echo 'done'")
|
50
47
|
end
|
51
48
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
49
|
+
### CI
|
50
|
+
namespace :ci do
|
51
|
+
def rspec(options = "")
|
52
|
+
files = Dir['plugins/*/spec/*/*_spec.rb'] + Dir['plugins/*/spec/*/*/*_spec.rb'] + Dir['plugins/*/spec/*/*/*/*_spec.rb']
|
53
|
+
rspec_opts = "#{options} -c #{files.join(" ")}"
|
54
|
+
"$GEM_HOME/bin/spec #{rspec_opts}"
|
55
|
+
end
|
57
56
|
|
58
|
-
def
|
59
|
-
|
60
|
-
|
61
|
-
end
|
57
|
+
def cucumber(options = "")
|
58
|
+
"bin/cucumber #{options} plugins/*/features"
|
59
|
+
end
|
62
60
|
|
63
|
-
|
64
|
-
|
65
|
-
sh("jruby --debug #{opts} -S #{cmd} && echo 'done'")
|
66
|
-
end
|
61
|
+
namespace :rcov do
|
62
|
+
COVERAGE_DATA = "coverage.data"
|
67
63
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
64
|
+
def rcov_run(cmd, opts)
|
65
|
+
excluded_files = "jsignal_internal,(erb),features/,spec/,vendor/,openssl/,yaml/,json/,yaml,gems,file:,(eval),(__FORWARDABLE__)"
|
66
|
+
cmd = %{rcov --aggregate #{COVERAGE_DATA} -x "#{excluded_files}" #{cmd} -- #{opts}}
|
67
|
+
jruby_run(cmd)
|
68
|
+
end
|
69
|
+
|
70
|
+
desc "Run the coverage task for specs"
|
71
|
+
task :specs do
|
72
|
+
cmd = rspec
|
73
|
+
cmd, opts = cmd.split.first, cmd.split[1..-1].join(" ")
|
74
|
+
rcov_run(cmd, opts)
|
75
|
+
end
|
76
|
+
|
77
|
+
desc "Run the coverage task for features"
|
78
|
+
task :cucumber do
|
79
|
+
cmd = cucumber
|
80
|
+
cmd, opts = cmd.split.first, cmd.split[1..-1].join(" ")
|
81
|
+
rcov_run(cmd, opts)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
desc "Run the coverage task"
|
86
|
+
task :rcov do
|
87
|
+
FileUtils.rm COVERAGE_DATA if File.exist?(COVERAGE_DATA)
|
88
|
+
Rake::Task["ci:rcov:specs"].invoke
|
89
|
+
Rake::Task["ci:rcov:cucumber"].invoke
|
90
|
+
end
|
91
|
+
|
92
|
+
def find_ci_reporter(filename)
|
93
|
+
jruby_gem_path = %x[jruby -rubygems -e "p Gem.path.first"].gsub("\n", "").gsub('"', "")
|
94
|
+
result = Dir.glob("#{jruby_gem_path}/gems/ci_reporter-*/lib/ci/reporter/rake/#{filename}.rb").reverse.first
|
95
|
+
result || raise("Could not find ci_reporter gem in #{jruby_gem_path}")
|
96
|
+
end
|
97
|
+
|
98
|
+
desc "Run the specs with JUnit output for the Hudson reporter"
|
99
|
+
task :specs do
|
100
|
+
rspec_loader = find_ci_reporter "rspec_loader"
|
101
|
+
rspec_opts = "--require #{rspec_loader} --format CI::Reporter::RSpec"
|
102
|
+
jruby_run(rspec(rspec_opts))
|
103
|
+
end
|
104
|
+
|
105
|
+
desc "Run the features with JUnit output for the Hudson reporter"
|
106
|
+
task :cucumber do
|
107
|
+
reports_folder = "features/reports"
|
108
|
+
FileUtils.rm_rf reports_folder if File.exist? reports_folder
|
109
|
+
jruby_run(cucumber("-f progress -f junit --out #{reports_folder}"))
|
110
|
+
end
|
73
111
|
end
|
74
112
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
113
|
+
desc "Run specs and features with JUnit output"
|
114
|
+
task :ci do
|
115
|
+
Rake::Task["ci:specs"].invoke
|
116
|
+
Rake::Task["ci:cucumber"].invoke
|
79
117
|
end
|
80
118
|
|
119
|
+
|
81
120
|
### TESTS
|
82
121
|
|
83
122
|
desc "Run all specs and features"
|
data/lib/redcar.rb
CHANGED
@@ -51,9 +51,9 @@ end
|
|
51
51
|
#
|
52
52
|
# and so on.
|
53
53
|
module Redcar
|
54
|
-
VERSION = '0.
|
54
|
+
VERSION = '0.11.0dev' # also change in the Rakefile!
|
55
55
|
VERSION_MAJOR = 0
|
56
|
-
VERSION_MINOR =
|
56
|
+
VERSION_MINOR = 11
|
57
57
|
VERSION_RELEASE = 0
|
58
58
|
|
59
59
|
ENVIRONMENTS = [:user, :debug, :test]
|
@@ -124,19 +124,10 @@ describe Redcar::ApplicationSWT::Gradient do
|
|
124
124
|
subject { Redcar::ApplicationSWT::Gradient.new( "black" ) }
|
125
125
|
|
126
126
|
it "should return the SWT system color corresponding to that name" do
|
127
|
+
Redcar::ApplicationSWT.instance_variable_set("@display", Swt::Widgets::Display.current) if Redcar::ApplicationSWT.display.nil?
|
127
128
|
subject.swt_colors[0].should == Redcar::ApplicationSWT.display.get_system_color(Swt::SWT::COLOR_BLACK)
|
128
129
|
end
|
129
130
|
|
130
131
|
end
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
subject { Redcar::ApplicationSWT::Gradient.new( "none" ) }
|
135
|
-
|
136
|
-
it "should return the SWT system color corresponding to that name" do
|
137
|
-
subject.swt_colors[0].should == Redcar::ApplicationSWT.display.get_system_color(Swt::SWT::NONE)
|
138
|
-
end
|
139
|
-
|
140
|
-
end
|
141
|
-
|
142
|
-
end
|
132
|
+
end
|
133
|
+
|
@@ -3,6 +3,10 @@ module Redcar
|
|
3
3
|
class Resource
|
4
4
|
attr_reader :block, :task
|
5
5
|
|
6
|
+
class << self
|
7
|
+
attr_accessor :compute_synchronously
|
8
|
+
end
|
9
|
+
|
6
10
|
def self.task_queue
|
7
11
|
Redcar.app.task_queue
|
8
12
|
end
|
@@ -44,11 +48,15 @@ module Redcar
|
|
44
48
|
end
|
45
49
|
|
46
50
|
def compute
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
@
|
51
|
+
if Resource.compute_synchronously
|
52
|
+
@value = block.call
|
53
|
+
else
|
54
|
+
@mutex.synchronize do
|
55
|
+
unless @task and @task.pending?
|
56
|
+
@task = Resource::Task.new(self)
|
57
|
+
@task.description = @description
|
58
|
+
@future = Resource.task_queue.submit(@task)
|
59
|
+
end
|
52
60
|
end
|
53
61
|
end
|
54
62
|
end
|
@@ -1,78 +1,50 @@
|
|
1
|
-
# Note: Because settings persist, even after the speedbar is closed, any setting changed in a
|
2
|
-
# scenario will affect subsequent scenarios. To mitigate the chance of error, please inset a
|
3
|
-
# "Current Settings" comment line after each scenario that changes settings.
|
4
|
-
#
|
5
|
-
# Because the Find speedbar and the find operations of the Find and Replace speedbar are supposed to
|
6
|
-
# function identically, all scenarios here should be copied to find_and_replace.feature, with the
|
7
|
-
# references to FindMenuCommand and FindSpeedbar adjusted accordingly.
|
8
|
-
|
9
1
|
@speedbar
|
10
2
|
Feature: Find
|
11
3
|
|
12
4
|
Background:
|
13
5
|
Given I open a new edit tab
|
14
6
|
|
7
|
+
# Begin: Scenarios adapted from incremental_search.feature
|
8
|
+
|
15
9
|
Scenario: Open Find speedbar
|
16
10
|
When I replace the contents with "Foo\nBar\nBaz"
|
17
11
|
And I move the cursor to 0
|
18
|
-
And I
|
19
|
-
Then
|
20
|
-
|
21
|
-
Scenario: Change settings
|
22
|
-
When I run the command DocumentSearch::FindMenuCommand
|
23
|
-
And I choose "Plain" in the "query_type" field in the speedbar
|
24
|
-
And I uncheck "Match case" in the speedbar
|
25
|
-
And I check "Wrap around" in the speedbar
|
26
|
-
Then "Plain" should be chosen in the "query_type" field in the speedbar
|
27
|
-
And "Match case" should not be checked in the speedbar
|
28
|
-
And "Wrap around" should be checked in the speedbar
|
29
|
-
|
30
|
-
# Current Settings: Plain, No Match case, Wrap around
|
12
|
+
And I open the find speedbar
|
13
|
+
Then I should see the find speedbar
|
31
14
|
|
32
15
|
Scenario: Search for a word should select next occurrence
|
33
16
|
When I replace the contents with "Foo\nBar\nBaz"
|
34
17
|
And I move the cursor to 0
|
35
|
-
And I
|
18
|
+
And I open the find speedbar
|
36
19
|
And I type "Bar" into the "Find" field in the speedbar
|
20
|
+
And I press "Next" in the speedbar
|
37
21
|
Then the selected text should be "Bar"
|
38
22
|
|
39
23
|
Scenario: Search twice should move to the next occurrence
|
40
24
|
When I replace the contents with "Foo\nBar\nFoo"
|
41
25
|
And I move the cursor to 0
|
42
|
-
And I
|
26
|
+
And I open the find speedbar
|
43
27
|
And I type "Foo" into the "Find" field in the speedbar
|
28
|
+
And I press "Next" in the speedbar
|
44
29
|
Then the selection should be on line 0
|
45
30
|
When I press "Next" in the speedbar
|
46
31
|
Then the selected text should be "Foo"
|
47
32
|
And the selection should be on line 2
|
48
33
|
|
49
|
-
Scenario: Search should incrementally update
|
50
|
-
When I replace the contents with "Foo\nBaar\nBaaz"
|
51
|
-
And I move the cursor to 0
|
52
|
-
And I run the command DocumentSearch::FindMenuCommand
|
53
|
-
And I type "Ba" into the "Find" field in the speedbar
|
54
|
-
Then the selected text should be "Ba"
|
55
|
-
And the selection should be on line 1
|
56
|
-
When I type "Baa" into the "Find" field in the speedbar
|
57
|
-
And the selection should be on line 1
|
58
|
-
When I type "Baaz" into the "Find" field in the speedbar
|
59
|
-
Then the selected text should be "Baaz"
|
60
|
-
And the selection should be on line 2
|
61
|
-
When I type "Baa" into the "Find" field in the speedbar
|
62
|
-
Then the selection should be on line 2
|
63
|
-
|
64
34
|
Scenario: Search for a word adjacent to cursor should select word
|
65
35
|
When I replace the contents with "Foo\nBar\nBaz"
|
66
36
|
And I move the cursor to 0
|
67
|
-
And I
|
37
|
+
And I open the find speedbar
|
68
38
|
And I type "Foo" into the "Find" field in the speedbar
|
39
|
+
And I press "Next" in the speedbar
|
69
40
|
Then the selected text should be "Foo"
|
70
41
|
|
71
42
|
Scenario: Search for a word should find occurrence after the cursor
|
72
43
|
When I replace the contents with "Foo\nBar\nBaz\nFoo"
|
73
44
|
And I move the cursor to 1
|
74
|
-
And I
|
45
|
+
And I open the find speedbar
|
75
46
|
And I type "Foo" into the "Find" field in the speedbar
|
47
|
+
And I press "Next" in the speedbar
|
76
48
|
Then the selection should be on line 3
|
77
49
|
And the selected text should be "Foo"
|
78
50
|
When I press "Next" in the speedbar
|
@@ -81,145 +53,190 @@ Feature: Find
|
|
81
53
|
|
82
54
|
Scenario: Search for a word should wrap to earlier occurrence if none left
|
83
55
|
When I replace the contents with "Foo\nBar\nBaz"
|
84
|
-
And I move the cursor to
|
85
|
-
And I
|
56
|
+
And I move the cursor to 3
|
57
|
+
And I open the find speedbar
|
86
58
|
And I type "Foo" into the "Find" field in the speedbar
|
59
|
+
And I press "Next" in the speedbar
|
87
60
|
Then the selected text should be "Foo"
|
88
61
|
And the selection should be on line 0
|
89
62
|
|
90
|
-
Scenario:
|
91
|
-
When I replace the contents with "
|
63
|
+
Scenario: Should start searching after the selection if the query matches exactly
|
64
|
+
When I replace the contents with "Foobar\nBarfoo\nBazhmm\nFoobar"
|
65
|
+
And I select from 0 to 6
|
66
|
+
And I open the find speedbar
|
67
|
+
And I type "Foobar" into the "Find" field in the speedbar
|
68
|
+
And I press "Next" in the speedbar
|
69
|
+
Then the selected text should be "Foobar"
|
70
|
+
And the selection should be on line 3
|
71
|
+
|
72
|
+
Scenario: Should start search within the selection if it matches the beginning of the query
|
73
|
+
When I replace the contents with "Foobar\nBarfoo\nBazhmm\nFoobar"
|
74
|
+
And I select from 0 to 3
|
75
|
+
And I open the find speedbar
|
76
|
+
And I type "Foobar" into the "Find" field in the speedbar
|
77
|
+
And I press "Next" in the speedbar
|
78
|
+
Then the selected text should be "Foobar"
|
79
|
+
And the selection range should be from 0 to 6
|
80
|
+
|
81
|
+
Scenario: Should start search within the selection if the query matches partially
|
82
|
+
When I replace the contents with "Foobar\nBarfoo\nBazhmm\nFoobar"
|
83
|
+
And I select from 0 to 6
|
84
|
+
And I open the find speedbar
|
85
|
+
And I type "Foo" into the "Find" field in the speedbar
|
86
|
+
And I press "Next" in the speedbar
|
87
|
+
Then the selected text should be "Foo"
|
88
|
+
And the selection range should be from 0 to 3
|
89
|
+
|
90
|
+
Scenario: Not thrown off by multi-byte characters
|
91
|
+
When I replace the contents with "Benedikt Müller"
|
92
92
|
And I move the cursor to 0
|
93
|
-
And I
|
94
|
-
And I type "
|
95
|
-
|
93
|
+
And I open the find speedbar
|
94
|
+
And I type "ler" into the "Find" field in the speedbar
|
95
|
+
And I press "Next" in the speedbar
|
96
|
+
Then the selected text should be "ler"
|
97
|
+
And the selection range should be from 12 to 15
|
96
98
|
|
97
|
-
Scenario:
|
98
|
-
When I replace the contents with "
|
99
|
+
Scenario: Not thrown off by multi-byte characters 2
|
100
|
+
When I replace the contents with "Benedikt Müller\n foo "
|
99
101
|
And I move the cursor to 0
|
100
|
-
And I
|
101
|
-
And I type "
|
102
|
-
And I
|
103
|
-
Then the selected text should be "
|
104
|
-
|
105
|
-
Then the selected text should be "Baz"
|
102
|
+
And I open the find speedbar
|
103
|
+
And I type "foo" into the "Find" field in the speedbar
|
104
|
+
And I press "Next" in the speedbar
|
105
|
+
Then the selected text should be "foo"
|
106
|
+
And the selection range should be from 17 to 20
|
106
107
|
|
107
|
-
|
108
|
+
Scenario: Not thrown off by multi-byte characters 3
|
109
|
+
When I replace the contents with "你好, 凯兰\nYou make my heart super happy."
|
110
|
+
And I move the cursor to 0
|
111
|
+
And I open the find speedbar
|
112
|
+
And I type "you" into the "Find" field in the speedbar
|
113
|
+
And I press "Next" in the speedbar
|
114
|
+
Then the selected text should be "You"
|
115
|
+
And the selection range should be from 7 to 10
|
108
116
|
|
109
|
-
Scenario:
|
110
|
-
When I replace the contents with "Foo\nBar\nBaz"
|
117
|
+
Scenario: Handles repeated search across by multi-byte characters
|
118
|
+
When I replace the contents with "Foo\n你好, 凯兰\nFoo\nBar\nFoo\nBaz"
|
111
119
|
And I move the cursor to 0
|
112
|
-
And I
|
113
|
-
And I type "
|
114
|
-
|
120
|
+
And I open the find speedbar
|
121
|
+
And I type "foo" into the "Find" field in the speedbar
|
122
|
+
And I press "Next" in the speedbar
|
123
|
+
Then the selected text should be "Foo"
|
124
|
+
And the selection should be on line 0
|
115
125
|
When I press "Next" in the speedbar
|
116
|
-
Then the selected text should be "
|
126
|
+
Then the selected text should be "Foo"
|
127
|
+
And the selection should be on line 2
|
128
|
+
When I press "Next" in the speedbar
|
129
|
+
Then the selected text should be "Foo"
|
130
|
+
And the selection should be on line 4
|
131
|
+
When I press "Next" in the speedbar
|
132
|
+
Then the selected text should be "Foo"
|
133
|
+
And the selection should be on line 0
|
134
|
+
When I press "Next" in the speedbar
|
135
|
+
Then the selected text should be "Foo"
|
136
|
+
And the selection should be on line 2
|
137
|
+
|
138
|
+
Scenario: Should select multi-byte characters
|
139
|
+
When I replace the contents with "Benedikt Müller"
|
140
|
+
And I move the cursor to 0
|
141
|
+
And I open the find speedbar
|
142
|
+
And I type "mül" into the "Find" field in the speedbar
|
143
|
+
And I press "Next" in the speedbar
|
144
|
+
Then the selected text should be "Mül"
|
145
|
+
And the selection range should be from 9 to 12
|
146
|
+
|
147
|
+
Scenario: Should select multi-byte characters
|
148
|
+
When I replace the contents with "Benedikt Müller"
|
149
|
+
And I move the cursor to 0
|
150
|
+
And I open the find speedbar
|
151
|
+
And I type "mül" into the "Find" field in the speedbar
|
152
|
+
And I press "Next" in the speedbar
|
153
|
+
Then the selected text should be "Mül"
|
154
|
+
And the selection range should be from 9 to 12
|
155
|
+
|
156
|
+
Scenario: Should select multi-byte characters 2
|
157
|
+
When I replace the contents with "你好, 凯兰\nYou make my heart super happy."
|
158
|
+
And I move the cursor to 0
|
159
|
+
And I open the find speedbar
|
160
|
+
And I type "凯兰" into the "Find" field in the speedbar
|
161
|
+
And I press "Next" in the speedbar
|
162
|
+
Then the selected text should be "凯兰"
|
163
|
+
And the selection range should be from 4 to 6
|
117
164
|
|
118
|
-
Scenario: Doesn't search for a
|
165
|
+
Scenario: Doesn't search for a regex
|
119
166
|
When I replace the contents with "Foo\nBar\nBaz"
|
120
167
|
And I move the cursor to 0
|
121
|
-
And I
|
122
|
-
And I
|
123
|
-
And I
|
168
|
+
And I open the find speedbar
|
169
|
+
And I type "Ba." into the "Find" field in the speedbar
|
170
|
+
And I press "Next" in the speedbar
|
124
171
|
Then there should not be any text selected
|
125
172
|
|
126
|
-
Scenario: Search for a
|
127
|
-
When I replace the contents with "Foo\nBar
|
173
|
+
Scenario: Search for a regex
|
174
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
128
175
|
And I move the cursor to 0
|
129
|
-
And I
|
130
|
-
And I type "Ba
|
131
|
-
And I
|
132
|
-
Then
|
176
|
+
And I open the find speedbar
|
177
|
+
And I type "Ba." into the "Find" field in the speedbar
|
178
|
+
And I press "Next" in the speedbar
|
179
|
+
Then there should not be any text selected
|
180
|
+
When I check "Regex" in the speedbar
|
181
|
+
And I press "Next" in the speedbar
|
182
|
+
Then the selected text should be "Bar"
|
133
183
|
When I press "Next" in the speedbar
|
134
184
|
Then the selected text should be "Baz"
|
135
185
|
|
136
|
-
|
137
|
-
|
138
|
-
Scenario: Should not match case if unset
|
186
|
+
Scenario: Should not match case by default
|
139
187
|
When I replace the contents with "Foo\nBar\nBaz"
|
140
188
|
And I move the cursor to 0
|
141
|
-
And I
|
142
|
-
And I choose "Plain" in the "query_type" field in the speedbar
|
189
|
+
And I open the find speedbar
|
143
190
|
And I type "foo" into the "Find" field in the speedbar
|
191
|
+
And I press "Next" in the speedbar
|
144
192
|
Then the selected text should be "Foo"
|
145
193
|
|
146
|
-
|
147
|
-
|
148
|
-
Scenario: Should not match case if unset with regex
|
194
|
+
Scenario: Should not match case with regex by default
|
149
195
|
When I replace the contents with "Foo\nBar\nBaz"
|
150
196
|
And I move the cursor to 0
|
151
|
-
And I
|
152
|
-
And I choose "Regex" in the "query_type" field in the speedbar
|
197
|
+
And I open the find speedbar
|
153
198
|
And I type "fo." into the "Find" field in the speedbar
|
199
|
+
And I press "Next" in the speedbar
|
200
|
+
Then there should not be any text selected
|
201
|
+
When I check "Regex" in the speedbar
|
202
|
+
And I press "Next" in the speedbar
|
154
203
|
Then the selected text should be "Foo"
|
155
204
|
|
156
|
-
# Current Settings: Regex, No Match case, Wrap around
|
157
|
-
|
158
|
-
Scenario: Should not match case if unset with glob
|
159
|
-
When I replace the contents with "Foo\nBar\nBaz"
|
160
|
-
And I move the cursor to 0
|
161
|
-
And I run the command DocumentSearch::FindMenuCommand
|
162
|
-
And I choose "Glob" in the "query_type" field in the speedbar
|
163
|
-
And I type "fo*" into the "Find" field in the speedbar
|
164
|
-
Then the selected text should be "Foo"
|
165
|
-
|
166
|
-
# Current Settings: Glob, No Match case, Wrap around
|
167
|
-
|
168
205
|
Scenario: Should match case if requested
|
169
206
|
When I replace the contents with "Foo\nBar\nBaz"
|
170
207
|
And I move the cursor to 0
|
171
|
-
And I
|
172
|
-
And I choose "Plain" in the "query_type" field in the speedbar
|
173
|
-
And I uncheck "Match case" in the speedbar
|
208
|
+
And I open the find speedbar
|
174
209
|
And I type "foo" into the "Find" field in the speedbar
|
210
|
+
And I press "Next" in the speedbar
|
175
211
|
Then the selected text should be "Foo"
|
176
212
|
When I check "Match case" in the speedbar
|
213
|
+
And I move the cursor to 0
|
214
|
+
And I press "Next" in the speedbar
|
177
215
|
Then there should not be any text selected
|
178
|
-
|
179
|
-
|
216
|
+
When I type "Foo" into the "Find" field in the speedbar
|
217
|
+
And I move the cursor to 0
|
218
|
+
And I press "Next" in the speedbar
|
219
|
+
Then the selected text should be "Foo"
|
180
220
|
|
181
221
|
Scenario: Should match case if requested with regex
|
182
222
|
When I replace the contents with "Foo\nBar\nBaz"
|
183
223
|
And I move the cursor to 0
|
184
|
-
And I
|
185
|
-
And I
|
186
|
-
And I uncheck "Match case" in the speedbar
|
224
|
+
And I open the find speedbar
|
225
|
+
And I check "Regex" in the speedbar
|
187
226
|
And I type "fo." into the "Find" field in the speedbar
|
227
|
+
And I press "Next" in the speedbar
|
188
228
|
Then the selected text should be "Foo"
|
189
229
|
When I check "Match case" in the speedbar
|
190
|
-
Then there should not be any text selected
|
191
|
-
|
192
|
-
# Current Settings: Regex, Match case, Wrap around
|
193
|
-
|
194
|
-
Scenario: Should match case if requested with glob
|
195
|
-
When I replace the contents with "Foo\nBar\nBaz"
|
196
230
|
And I move the cursor to 0
|
197
|
-
And I
|
198
|
-
And I choose "Glob" in the "query_type" field in the speedbar
|
199
|
-
And I uncheck "Match case" in the speedbar
|
200
|
-
And I type "fo*" into the "Find" field in the speedbar
|
201
|
-
Then the selected text should be "Foo"
|
202
|
-
When I check "Match case" in the speedbar
|
231
|
+
And I press "Next" in the speedbar
|
203
232
|
Then there should not be any text selected
|
204
233
|
|
205
|
-
# Current Settings: Glob, Match case, Wrap around
|
206
|
-
|
207
|
-
Scenario: Reset settings
|
208
|
-
When I run the command DocumentSearch::FindMenuCommand
|
209
|
-
And I choose "Plain" in the "query_type" field in the speedbar
|
210
|
-
And I uncheck "Match case" in the speedbar
|
211
|
-
And I check "Wrap around" in the speedbar
|
212
|
-
Then "Plain" should be chosen in the "query_type" field in the speedbar
|
213
|
-
And "Match case" should not be checked in the speedbar
|
214
|
-
And "Wrap around" should be checked in the speedbar
|
215
|
-
|
216
|
-
# Current Settings: Plain, No Match case, Wrap around
|
217
|
-
|
218
234
|
Scenario: Find next with wrap around
|
219
235
|
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
220
236
|
And I move the cursor to 0
|
221
|
-
And I
|
237
|
+
And I open the find speedbar
|
222
238
|
And I type "Foo" into the "Find" field in the speedbar
|
239
|
+
And I press "Next" in the speedbar
|
223
240
|
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
224
241
|
And the selected text should be "Foo"
|
225
242
|
And the selection range should be from 0 to 3
|
@@ -235,9 +252,10 @@ Feature: Find
|
|
235
252
|
Scenario: Find next without wrap around
|
236
253
|
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
237
254
|
And I move the cursor to 0
|
238
|
-
And I
|
255
|
+
And I open the find speedbar
|
239
256
|
And I uncheck "Wrap around" in the speedbar
|
240
|
-
And I type "
|
257
|
+
And I type "foo" into the "Find" field in the speedbar
|
258
|
+
And I press "Next" in the speedbar
|
241
259
|
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
242
260
|
And the selected text should be "Foo"
|
243
261
|
And the selection range should be from 0 to 3
|
@@ -249,35 +267,28 @@ Feature: Find
|
|
249
267
|
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
250
268
|
And there should not be any text selected
|
251
269
|
|
252
|
-
|
253
|
-
|
254
|
-
Scenario: Find previous with wrap around
|
270
|
+
Scenario: Find previous with wrap around by default
|
255
271
|
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
256
272
|
And I move the cursor to 18
|
257
|
-
And I
|
258
|
-
And I type "
|
259
|
-
|
260
|
-
|
273
|
+
And I open the find speedbar
|
274
|
+
And I type "foo" into the "Find" field in the speedbar
|
275
|
+
And I press "Next" in the speedbar
|
276
|
+
Then the selected text should be "Foo"
|
277
|
+
And the selection range should be from 0 to 3
|
261
278
|
When I press "Previous" in the speedbar
|
262
|
-
Then the
|
263
|
-
And the selected text should be "Foo"
|
279
|
+
Then the selected text should be "Foo"
|
264
280
|
And the selection range should be from 8 to 11
|
265
281
|
When I press "Previous" in the speedbar
|
266
|
-
Then the
|
267
|
-
And the selected text should be "Foo"
|
282
|
+
Then the selected text should be "Foo"
|
268
283
|
And the selection range should be from 0 to 3
|
269
|
-
When I
|
270
|
-
|
271
|
-
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
272
|
-
And the selected text should be "Foo"
|
284
|
+
When I press "Previous" in the speedbar
|
285
|
+
Then the selected text should be "Foo"
|
273
286
|
And the selection range should be from 8 to 11
|
274
287
|
|
275
|
-
# Current Settings: Plain, No Match case, Wrap around
|
276
|
-
|
277
288
|
Scenario: Find previous without wrap around
|
278
289
|
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
279
290
|
And I move the cursor to 18
|
280
|
-
And I
|
291
|
+
And I open the find speedbar
|
281
292
|
And I uncheck "Wrap around" in the speedbar
|
282
293
|
And I type "Foo" into the "Find" field in the speedbar
|
283
294
|
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
@@ -294,96 +305,237 @@ Feature: Find
|
|
294
305
|
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
295
306
|
And there should not be any text selected
|
296
307
|
|
297
|
-
# Current Settings: Plain, No Match case, No Wrap around
|
298
|
-
|
299
308
|
Scenario: Should scroll vertically to the match
|
300
309
|
When I replace the contents with 100 lines of "xxx" then "Foo"
|
301
310
|
And I scroll to the top of the document
|
302
311
|
And I move the cursor to 0
|
303
|
-
And I
|
304
|
-
And I type "
|
312
|
+
And I open the find speedbar
|
313
|
+
And I type "foo" into the "Find" field in the speedbar
|
314
|
+
And I press "Next" in the speedbar
|
305
315
|
Then the selected text should be "Foo"
|
306
316
|
And line number 100 should be visible
|
307
317
|
|
308
318
|
Scenario: "Should scroll horizontally to the match"
|
309
319
|
When I replace the contents with 300 "x" then "Foo"
|
310
320
|
And I move the cursor to 0
|
311
|
-
And I
|
312
|
-
And I type "
|
321
|
+
And I open the find speedbar
|
322
|
+
And I type "foo" into the "Find" field in the speedbar
|
323
|
+
And I press "Next" in the speedbar
|
313
324
|
Then the selected text should be "Foo"
|
314
325
|
And horizontal offset 302 should be visible
|
315
326
|
|
316
327
|
Scenario: Should reopen with the same text as the previous search
|
317
|
-
When I
|
328
|
+
When I open the find speedbar
|
318
329
|
And I type "foo" into the "Find" field in the speedbar
|
319
330
|
And I close the speedbar
|
320
|
-
And I
|
331
|
+
And I open the find speedbar
|
321
332
|
Then the "Find" field in the speedbar should have text "foo"
|
322
333
|
|
323
|
-
Scenario: Should reopen with the same value of query type as the previous search
|
324
|
-
When I run the command DocumentSearch::FindMenuCommand
|
325
|
-
And I choose "Plain" in the "query_type" field in the speedbar
|
326
|
-
And I close the speedbar
|
327
|
-
And I run the command DocumentSearch::FindMenuCommand
|
328
|
-
Then "Plain" should be chosen in the "query_type" field in the speedbar
|
329
|
-
When I choose "Regex" in the "query_type" field in the speedbar
|
330
|
-
And I close the speedbar
|
331
|
-
And I run the command DocumentSearch::FindMenuCommand
|
332
|
-
Then "Regex" should be chosen in the "query_type" field in the speedbar
|
333
|
-
When I run the command DocumentSearch::FindMenuCommand
|
334
|
-
And I choose "Glob" in the "query_type" field in the speedbar
|
335
|
-
And I close the speedbar
|
336
|
-
And I run the command DocumentSearch::FindMenuCommand
|
337
|
-
Then "Glob" should be chosen in the "query_type" field in the speedbar
|
338
|
-
|
339
|
-
# Current Settings: Glob, Match case, Wrap around
|
340
|
-
|
341
|
-
Scenario: Should reopen with the same value of Match case as the previous search
|
342
|
-
When I run the command DocumentSearch::FindMenuCommand
|
343
|
-
And I check "Match case" in the speedbar
|
344
|
-
And I close the speedbar
|
345
|
-
And I run the command DocumentSearch::FindMenuCommand
|
346
|
-
Then "Match case" should be checked in the speedbar
|
347
|
-
When I uncheck "Match case" in the speedbar
|
348
|
-
And I close the speedbar
|
349
|
-
And I run the command DocumentSearch::FindMenuCommand
|
350
|
-
Then "Match case" should not be checked in the speedbar
|
351
|
-
|
352
|
-
# Current Settings: Glob, No Match case, Wrap around
|
353
|
-
|
354
|
-
Scenario: Should reopen with the same value of Wrap around as the previous search
|
355
|
-
And I run the command DocumentSearch::FindMenuCommand
|
356
|
-
And I check "Wrap around" in the speedbar
|
357
|
-
And I close the speedbar
|
358
|
-
And I run the command DocumentSearch::FindMenuCommand
|
359
|
-
Then "Wrap around" should be checked in the speedbar
|
360
|
-
When I uncheck "Wrap around" in the speedbar
|
361
|
-
And I close the speedbar
|
362
|
-
And I run the command DocumentSearch::FindMenuCommand
|
363
|
-
Then "Wrap around" should not be checked in the speedbar
|
364
|
-
|
365
|
-
# Current Settings: Glob, No Match case, Wrap around
|
366
|
-
|
367
334
|
Scenario: Should initialize query with the currently selected text
|
368
335
|
When I replace the contents with "Flux\nBar\nFoo"
|
369
336
|
And I move the cursor to 0
|
370
337
|
And I select from 0 to 4
|
371
|
-
And I
|
338
|
+
And I open the find speedbar
|
372
339
|
Then the "Find" field in the speedbar should have text "Flux"
|
373
340
|
|
374
|
-
|
341
|
+
# End: Scenarios adapted from incremental_search.feature
|
342
|
+
|
343
|
+
# Begin: Replacement scenarios specific to Find speedbar
|
344
|
+
|
345
|
+
Scenario: Replace and find with no initial selection
|
346
|
+
When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
347
|
+
And I move the cursor to 0
|
348
|
+
And I open the find speedbar
|
349
|
+
And I type "Rab" into the "Find" field in the speedbar
|
350
|
+
And I type "RABBIT" into the "Replace" field in the speedbar
|
351
|
+
And I press "Replace && Find" in the speedbar
|
352
|
+
Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
353
|
+
And the selected text should be "Rab"
|
354
|
+
And the selection range should be from 12 to 15
|
355
|
+
When I press "Replace && Find" in the speedbar
|
356
|
+
Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
|
357
|
+
And the selected text should be "Rab"
|
358
|
+
And the selection range should be from 19 to 22
|
359
|
+
When I press "Replace && Find" in the speedbar
|
360
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
|
361
|
+
And the selected text should be "Rab"
|
362
|
+
And the selection range should be from 30 to 33
|
363
|
+
When I press "Replace && Find" in the speedbar
|
364
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
365
|
+
And the selected text should be "RAB"
|
366
|
+
And the selection range should be from 12 to 15
|
367
|
+
When I press "Replace && Find" in the speedbar
|
368
|
+
Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
369
|
+
And the selected text should be "RAB"
|
370
|
+
And the selection range should be from 22 to 25
|
371
|
+
|
372
|
+
Scenario: Replace and find with matching initial selection
|
373
|
+
When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
374
|
+
And I select from 12 to 15
|
375
|
+
And I open the find speedbar
|
376
|
+
And I type "Rab" into the "Find" field in the speedbar
|
377
|
+
And I type "RABBIT" into the "Replace" field in the speedbar
|
378
|
+
And I press "Replace && Find" in the speedbar
|
379
|
+
Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
|
380
|
+
And the selected text should be "Rab"
|
381
|
+
And the selection range should be from 19 to 22
|
382
|
+
When I press "Replace && Find" in the speedbar
|
383
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
|
384
|
+
And the selected text should be "Rab"
|
385
|
+
And the selection range should be from 30 to 33
|
386
|
+
When I press "Replace && Find" in the speedbar
|
387
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
388
|
+
And the selected text should be "RAB"
|
389
|
+
And the selection range should be from 12 to 15
|
390
|
+
When I press "Replace && Find" in the speedbar
|
391
|
+
Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
392
|
+
And the selected text should be "RAB"
|
393
|
+
And the selection range should be from 22 to 25
|
394
|
+
|
395
|
+
Scenario: Replace and find with initial selection that doesn't match
|
396
|
+
When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
397
|
+
And I select from 4 to 7
|
398
|
+
And I open the find speedbar
|
399
|
+
And I type "Rab" into the "Find" field in the speedbar
|
400
|
+
And I type "RABBIT" into the "Replace" field in the speedbar
|
401
|
+
And I press "Replace && Find" in the speedbar
|
402
|
+
Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
403
|
+
And the selected text should be "Rab"
|
404
|
+
And the selection range should be from 12 to 15
|
405
|
+
When I press "Replace && Find" in the speedbar
|
406
|
+
Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
|
407
|
+
And the selected text should be "Rab"
|
408
|
+
And the selection range should be from 19 to 22
|
409
|
+
When I press "Replace && Find" in the speedbar
|
410
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
|
411
|
+
And the selected text should be "Rab"
|
412
|
+
And the selection range should be from 30 to 33
|
413
|
+
When I press "Replace && Find" in the speedbar
|
414
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
415
|
+
And the selected text should be "RAB"
|
416
|
+
And the selection range should be from 12 to 15
|
417
|
+
When I press "Replace && Find" in the speedbar
|
418
|
+
Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
419
|
+
And the selected text should be "RAB"
|
420
|
+
And the selection range should be from 22 to 25
|
421
|
+
|
422
|
+
Scenario: Replace and find with initial selection that is after last match
|
423
|
+
When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
424
|
+
And I select from 28 to 31
|
425
|
+
And I open the find speedbar
|
426
|
+
And I type "Rab" into the "Find" field in the speedbar
|
427
|
+
And I type "RABBIT" into the "Replace" field in the speedbar
|
428
|
+
And I press "Replace && Find" in the speedbar
|
429
|
+
Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
430
|
+
And the selected text should be "Rab"
|
431
|
+
And the selection range should be from 12 to 15
|
432
|
+
When I press "Replace && Find" in the speedbar
|
433
|
+
Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
|
434
|
+
And the selected text should be "Rab"
|
435
|
+
And the selection range should be from 19 to 22
|
436
|
+
When I press "Replace && Find" in the speedbar
|
437
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
|
438
|
+
And the selected text should be "Rab"
|
439
|
+
And the selection range should be from 30 to 33
|
440
|
+
When I press "Replace && Find" in the speedbar
|
441
|
+
Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
442
|
+
And the selected text should be "RAB"
|
443
|
+
And the selection range should be from 12 to 15
|
444
|
+
When I press "Replace && Find" in the speedbar
|
445
|
+
Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
|
446
|
+
And the selected text should be "RAB"
|
447
|
+
And the selection range should be from 22 to 25
|
448
|
+
|
449
|
+
Scenario: Replace and find with initial selection that is after last match and no wrap around
|
450
|
+
When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
451
|
+
And I select from 28 to 31
|
452
|
+
And I open the find speedbar
|
453
|
+
And I type "Rab" into the "Find" field in the speedbar
|
454
|
+
And I type "RABBIT" into the "Replace" field in the speedbar
|
455
|
+
And I uncheck "Wrap around" in the speedbar
|
456
|
+
And I press "Replace && Find" in the speedbar
|
457
|
+
Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
458
|
+
And the selected text should be ""
|
459
|
+
And the selection range should be from 31 to 31
|
460
|
+
When I press "Replace && Find" in the speedbar
|
461
|
+
Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
|
462
|
+
And the selected text should be ""
|
463
|
+
And the selection range should be from 31 to 31
|
464
|
+
|
465
|
+
Scenario: Replace all replaces one
|
375
466
|
When I replace the contents with "Foo\nBar\nBaz"
|
376
|
-
And I
|
377
|
-
And I
|
378
|
-
And I type "
|
379
|
-
|
380
|
-
And
|
467
|
+
And I move the cursor to 0
|
468
|
+
And I open the find speedbar
|
469
|
+
And I type "Bar" into the "Find" field in the speedbar
|
470
|
+
And I type "Rab" into the "Replace" field in the speedbar
|
471
|
+
And I uncheck "Wrap around" in the speedbar
|
472
|
+
And I press "Replace All" in the speedbar
|
473
|
+
Then the contents should be "Foo\nRab\nBaz"
|
474
|
+
And the selected text should be "Rab"
|
475
|
+
And the selection range should be from 4 to 7
|
381
476
|
|
382
|
-
Scenario:
|
383
|
-
When I replace the contents with "Foo\nBar\
|
477
|
+
Scenario: Replace all replaces two
|
478
|
+
When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
|
384
479
|
And I move the cursor to 0
|
385
|
-
And I
|
386
|
-
And I
|
387
|
-
And I
|
388
|
-
|
389
|
-
And
|
480
|
+
And I open the find speedbar
|
481
|
+
And I type "Bar" into the "Find" field in the speedbar
|
482
|
+
And I type "Rab" into the "Replace" field in the speedbar
|
483
|
+
And I uncheck "Wrap around" in the speedbar
|
484
|
+
And I press "Replace All" in the speedbar
|
485
|
+
Then the contents should be "Foo\nRab\nBaz\nRab\nQux"
|
486
|
+
And the selected text should be "Rab"
|
487
|
+
And the selection range should be from 12 to 15
|
488
|
+
|
489
|
+
Scenario: Replace all replaces two on the same line
|
490
|
+
When I replace the contents with "abcabc"
|
491
|
+
And I open the find speedbar
|
492
|
+
And I type "bc" into the "Find" field in the speedbar
|
493
|
+
And I type "xx" into the "Replace" field in the speedbar
|
494
|
+
And I uncheck "Wrap around" in the speedbar
|
495
|
+
And I press "Replace All" in the speedbar
|
496
|
+
Then the contents should be "axxaxx"
|
497
|
+
And the selected text should be "xx"
|
498
|
+
And the selection range should be from 4 to 6
|
499
|
+
When I press "Replace All" in the speedbar
|
500
|
+
Then the contents should be "axxaxx"
|
501
|
+
And the selected text should be "xx"
|
502
|
+
And the selection range should be from 4 to 6
|
503
|
+
|
504
|
+
Scenario: Replace all replaces overlapping occurences on the same line
|
505
|
+
When I replace the contents with "deedeedeed"
|
506
|
+
And I open the find speedbar
|
507
|
+
And I type "deed" into the "Find" field in the speedbar
|
508
|
+
And I type "misdeed" into the "Replace" field in the speedbar
|
509
|
+
And I uncheck "Wrap around" in the speedbar
|
510
|
+
And I press "Replace All" in the speedbar
|
511
|
+
Then the contents should be "misdeedeemisdeed"
|
512
|
+
And the selected text should be "misdeed"
|
513
|
+
And the selection range should be from 9 to 16
|
514
|
+
|
515
|
+
Scenario: Replace all is a single undo action
|
516
|
+
When I replace the contents with "Foo\n\nabcabc\n\nBar"
|
517
|
+
And I open the find speedbar
|
518
|
+
And I type "bc" into the "Find" field in the speedbar
|
519
|
+
And I type "xx" into the "Replace" field in the speedbar
|
520
|
+
And I uncheck "Wrap around" in the speedbar
|
521
|
+
And I press "Replace All" in the speedbar
|
522
|
+
Then the contents should be "Foo\n\naxxaxx\n\nBar"
|
523
|
+
And the selected text should be "xx"
|
524
|
+
And the selection range should be from 9 to 11
|
525
|
+
When I undo
|
526
|
+
Then the contents should be "Foo\n\nabcabc\n\nBar"
|
527
|
+
|
528
|
+
Scenario: Replace all regex with back-references
|
529
|
+
When I replace the contents with "One fish\ntwo fish\nred fish\nblue fish"
|
530
|
+
And I move the cursor to 0
|
531
|
+
And I open the find speedbar
|
532
|
+
And I type "(\w+) fish" into the "Find" field in the speedbar
|
533
|
+
And I type "\1 car" into the "Replace" field in the speedbar
|
534
|
+
And I check "Regex" in the speedbar
|
535
|
+
And I uncheck "Wrap around" in the speedbar
|
536
|
+
And I press "Replace All" in the speedbar
|
537
|
+
Then the contents should be "One car\ntwo car\nred car\nblue car"
|
538
|
+
And the selected text should be "blue car"
|
539
|
+
And the selection range should be from 24 to 32
|
540
|
+
|
541
|
+
# End: Replacement scenarios specific to Find speedbar
|