redcar 0.9.2 → 0.10
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 +34 -4
- data/Rakefile +2 -1
- data/lib/redcar.rb +3 -3
- data/lib/redcar/installer.rb +2 -3
- data/plugins/application/features/step_definitions/dialog_steps.rb +7 -0
- data/plugins/application/features/step_definitions/key_steps.rb +18 -0
- data/plugins/application/features/step_definitions/menu_steps.rb +5 -6
- data/plugins/application/features/step_definitions/speedbar_steps.rb +29 -9
- data/plugins/application/features/step_definitions/tree_steps.rb +13 -0
- data/plugins/application/features/support/env.rb +39 -5
- data/plugins/application/features/support/fake_event.rb +12 -0
- data/plugins/application/lib/application.rb +5 -6
- data/plugins/application/lib/application/dialog.rb +53 -10
- data/plugins/application/lib/application/dialogs/modeless_list_dialog.rb +85 -0
- data/plugins/application/lib/application/keymap.rb +10 -8
- data/plugins/application/lib/application/menu.rb +38 -16
- data/plugins/application/lib/application/treebook.rb +30 -0
- data/plugins/application/lib/application/window.rb +20 -2
- data/plugins/application/spec/application/command/executor_spec.rb +1 -0
- data/plugins/application/spec/application/menu_spec.rb +26 -26
- data/plugins/application/spec/application/treebook_spec.rb +6 -6
- data/plugins/application/spec/spec_helper.rb +10 -1
- data/plugins/application_swt/lib/application_swt.rb +25 -3
- data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +48 -27
- data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +22 -11
- data/plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb +113 -0
- data/plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb +85 -0
- data/plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb +143 -0
- data/plugins/application_swt/lib/application_swt/gradient.rb +61 -0
- data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +4 -4
- data/plugins/application_swt/lib/application_swt/notebook.rb +5 -8
- data/plugins/application_swt/lib/application_swt/speedbar.rb +1 -0
- data/plugins/application_swt/lib/application_swt/treebook.rb +6 -8
- data/plugins/application_swt/lib/application_swt/window.rb +85 -57
- data/plugins/application_swt/lib/swt/graphics_utils.rb +23 -0
- data/plugins/application_swt/lib/swt/vtab_folder.rb +7 -0
- data/plugins/application_swt/lib/swt/vtab_label.rb +1 -1
- data/plugins/application_swt/spec/application_swt/gradient_spec.rb +142 -0
- data/plugins/auto_completer/lib/auto_completer.rb +10 -42
- data/plugins/auto_completer/lib/auto_completer/list_dialog.rb +21 -0
- data/plugins/clojure/lib/clojure.rb +33 -0
- data/plugins/{repl/lib/repl/clojure_mirror.rb → clojure/lib/clojure/repl_mirror.rb} +16 -20
- data/plugins/clojure/plugin.rb +9 -0
- data/plugins/{repl/spec/repl/clojure_mirror_spec.rb → clojure/spec/clojure/repl_mirror_spec.rb} +12 -13
- data/plugins/clojure/spec/spec_helper.rb +5 -0
- data/plugins/{repl → clojure}/vendor/Wrapper.clj +0 -0
- data/plugins/{repl → clojure}/vendor/dummy +0 -0
- data/plugins/{repl → clojure}/vendor/enclojure-wrapper.jar +0 -0
- data/plugins/connection_manager/lib/connection_manager.rb +13 -13
- data/plugins/declarations/lib/declarations.rb +17 -6
- data/plugins/document_search/features/find.feature +389 -0
- data/plugins/document_search/features/find_and_replace.feature +723 -0
- data/plugins/document_search/features/replace.feature +69 -62
- data/plugins/document_search/lib/document_search.rb +81 -64
- data/plugins/document_search/lib/document_search/commands.rb +258 -0
- data/plugins/document_search/lib/document_search/find_and_replace_speedbar.rb +142 -0
- data/plugins/document_search/lib/document_search/find_speedbar.rb +102 -0
- data/plugins/document_search/lib/document_search/query_options.rb +45 -0
- data/plugins/edit_view/features/case_change.feature +9 -5
- data/plugins/edit_view/features/step_definitions/editing_steps.rb +19 -0
- data/plugins/edit_view/lib/edit_view.rb +15 -12
- data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +12 -2
- data/plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb +1 -1
- data/plugins/edit_view/lib/edit_view/document.rb +129 -99
- data/plugins/edit_view_swt/lib/edit_view_swt.rb +33 -15
- data/plugins/encryption/encryption.rb +2 -0
- data/plugins/find-in-project/lib/find_in_project.rb +3 -5
- data/plugins/find-in-project/lib/find_in_project/views/index.html.erb +2 -0
- data/plugins/groovy/features/step_definitions/groovy_steps.rb +2 -2
- data/plugins/groovy/features/syntax_check_groovy.feature +3 -3
- data/plugins/groovy/lib/groovy.rb +38 -0
- data/plugins/groovy/lib/groovy/commands.rb +10 -0
- data/plugins/{repl/lib/repl/groovy_mirror.rb → groovy/lib/groovy/repl_mirror.rb} +33 -13
- data/plugins/groovy/lib/{syntax_check/groovy.rb → groovy/syntax_checker.rb} +13 -8
- data/plugins/groovy/plugin.rb +5 -4
- data/plugins/{repl/spec/repl/groovy_mirror_spec.rb → groovy/spec/groovy/repl_mirror_spec.rb} +14 -13
- data/plugins/groovy/spec/spec_helper.rb +5 -0
- data/plugins/html_view/assets/json2.js +476 -0
- data/plugins/html_view/lib/html_view.rb +1 -0
- data/plugins/java/features/fixtures/test.java +0 -0
- data/plugins/java/features/support/env.rb +27 -0
- data/plugins/java/features/syntax_check_java.feature +86 -0
- data/plugins/java/lib/syntax_check/java.rb +86 -0
- data/plugins/java/plugin.rb +7 -0
- data/plugins/javascript/features/fixtures/test2.js +5 -0
- data/plugins/javascript/features/step_definitions/javascript_steps.rb +16 -0
- data/plugins/javascript/features/support/env.rb +14 -0
- data/plugins/javascript/features/syntax_check_javascript.feature +46 -3
- data/plugins/javascript/lib/syntax_check/javascript.rb +15 -9
- data/plugins/line_tools/features/trim_line.feature +49 -0
- data/plugins/line_tools/lib/line_tools.rb +5 -1
- data/plugins/mirah/README +7 -0
- data/plugins/mirah/features/fixtures/test.mirah +2 -0
- data/plugins/mirah/features/syntax_check_mirah.feature +46 -0
- data/plugins/mirah/lib/mirah.rb +43 -0
- data/plugins/mirah/lib/mirah/my_error_handler.rb +22 -0
- data/plugins/mirah/lib/mirah/repl_mirror.rb +50 -0
- data/plugins/mirah/lib/mirah/syntax_checker.rb +38 -0
- data/plugins/mirah/plugin.rb +8 -0
- data/plugins/mirah/spec/mirah/repl_mirror_spec.rb +188 -0
- data/plugins/mirah/spec/spec_helper.rb +5 -0
- data/plugins/mirah/vendor/mirah-parser.jar +0 -0
- data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +24 -23
- data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +10 -1
- data/plugins/plugin_manager_ui/views/index.html.erb +2 -0
- data/plugins/project/features/find_file.feature +40 -16
- data/plugins/project/features/highlight_focussed_tab.feature +16 -10
- data/plugins/project/features/step_definitions/find_file_steps.rb +11 -0
- data/plugins/project/features/step_definitions/project_tree_steps.rb +5 -1
- data/plugins/project/features/support/env.rb +5 -0
- data/plugins/project/lib/project/commands.rb +8 -1
- data/plugins/project/lib/project/dir_controller.rb +4 -1
- data/plugins/project/lib/project/find_file_dialog.rb +16 -12
- data/plugins/project/lib/project/manager.rb +30 -1
- data/plugins/project_search/vendor/lucene/CHANGELOG +147 -0
- data/plugins/project_search/vendor/lucene/CONTRIBUTORS +17 -0
- data/plugins/project_search/vendor/lucene/Gemfile +9 -0
- data/plugins/project_search/vendor/lucene/Gemfile.lock +33 -0
- data/plugins/project_search/vendor/lucene/LICENSE +19 -0
- data/plugins/project_search/vendor/lucene/README.rdoc +283 -0
- data/plugins/project_search/vendor/lucene/Rakefile +35 -0
- data/plugins/project_search/vendor/lucene/examples/active_model/serializers.rb +25 -0
- data/plugins/project_search/vendor/lucene/examples/active_model/validation.rb +26 -0
- data/plugins/project_search/vendor/lucene/examples/admin/Rakefile +4 -0
- data/plugins/project_search/vendor/lucene/examples/admin/admin.rb +29 -0
- data/plugins/project_search/vendor/lucene/examples/admin/public/jquery.js +4376 -0
- data/plugins/project_search/vendor/lucene/examples/admin/public/neo4j.css +153 -0
- data/plugins/project_search/vendor/lucene/examples/admin/public/neo_admin.js +18 -0
- data/plugins/project_search/vendor/lucene/examples/admin/spec/admin_spec.rb +26 -0
- data/plugins/project_search/vendor/lucene/examples/admin/views/index.erb +21 -0
- data/plugins/project_search/vendor/lucene/examples/filetree/README.rdoc +9 -0
- data/plugins/project_search/vendor/lucene/examples/filetree/app.rb +7 -0
- data/plugins/project_search/vendor/lucene/examples/filetree/batch.props +5 -0
- data/plugins/project_search/vendor/lucene/examples/filetree/features/step_definitions/add_steps.rb +121 -0
- data/plugins/project_search/vendor/lucene/examples/filetree/features/support/env.rb +30 -0
- data/plugins/project_search/vendor/lucene/examples/filetree/features/support/rspec_helper.rb +50 -0
- data/plugins/project_search/vendor/lucene/examples/filetree/features/treesizes.feature +19 -0
- data/plugins/project_search/vendor/lucene/examples/imdb/1_create_neo_db.rb +66 -0
- data/plugins/project_search/vendor/lucene/examples/imdb/2_index_db.rb +23 -0
- data/plugins/project_search/vendor/lucene/examples/imdb/README +12 -0
- data/plugins/project_search/vendor/lucene/examples/imdb/find_actors.rb +56 -0
- data/plugins/project_search/vendor/lucene/examples/imdb/install.sh +12 -0
- data/plugins/project_search/vendor/lucene/examples/imdb/model.rb +37 -0
- data/plugins/project_search/vendor/lucene/examples/railway/README +111 -0
- data/plugins/project_search/vendor/lucene/examples/railway/railnet-app.rb +31 -0
- data/plugins/project_search/vendor/lucene/examples/railway/railnet-data.rb +42 -0
- data/plugins/project_search/vendor/lucene/examples/rest/example.rb +41 -0
- data/plugins/project_search/vendor/lucene/examples/you_might_know/YouMightKnow.java +60 -0
- data/plugins/project_search/vendor/lucene/examples/you_might_know/all_simple_paths.rb +34 -0
- data/plugins/project_search/vendor/lucene/examples/you_might_know/nodes.rb +34 -0
- data/plugins/project_search/vendor/lucene/examples/you_might_know/you_might_know.rb +50 -0
- data/plugins/project_search/vendor/lucene/lib/lucene.rb +15 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/config.rb +145 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/document.rb +96 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/field_info.rb +144 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/hits.rb +54 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/index.rb +267 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/index_info.rb +146 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/index_searcher.rb +157 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/jars.rb +5 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/query_dsl.rb +135 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/transaction.rb +117 -0
- data/plugins/project_search/vendor/lucene/lib/lucene/version.rb +3 -0
- data/plugins/project_search/vendor/lucene/lucene.gemspec +23 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/document_spec.rb +32 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/field_info_spec.rb +70 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/index_info_spec.rb +76 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/index_spec.rb +643 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/query_dsl_spec.rb +142 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/sort_spec.rb +101 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/spec_helper.rb +10 -0
- data/plugins/project_search/vendor/lucene/spec/lucene/transaction_spec.rb +118 -0
- data/plugins/redcar/features/alter_font_size.feature +25 -0
- data/plugins/redcar/features/step_definitions/font_steps.rb +34 -0
- data/plugins/redcar/redcar.rb +256 -43
- data/plugins/repl/features/command_editing.feature +55 -0
- data/plugins/repl/features/command_history.feature +75 -0
- data/plugins/repl/features/step_definitions/repl_steps.rb +17 -1
- data/plugins/repl/features/support/env.rb +24 -0
- data/plugins/repl/features/support/fake_repl.rb +16 -0
- data/plugins/repl/lib/repl.rb +17 -74
- data/plugins/repl/lib/repl/repl_command.rb +20 -0
- data/plugins/repl/lib/repl/repl_mirror.rb +168 -22
- data/plugins/repl/lib/repl/repl_tab.rb +131 -6
- data/plugins/repl/plugin.rb +1 -1
- data/plugins/repl/spec/repl/repl_mirror_spec.rb +72 -0
- data/plugins/repl/spec/spec_helper.rb +1 -1
- data/plugins/repl_swt/lib/repl_swt.rb +7 -0
- data/plugins/repl_swt/lib/repl_swt/key_listener.rb +43 -0
- data/plugins/repl_swt/plugin.rb +8 -0
- data/plugins/ruby/lib/ruby.rb +35 -0
- data/plugins/{repl/lib/repl/ruby_mirror.rb → ruby/lib/ruby/repl_mirror.rb} +12 -12
- data/plugins/ruby/lib/{syntax_check/ruby.rb → ruby/syntax_checker.rb} +3 -3
- data/plugins/ruby/plugin.rb +5 -4
- data/plugins/{repl/spec/repl/ruby_mirror_spec.rb → ruby/spec/ruby/repl_mirror_spec.rb} +38 -29
- data/plugins/ruby/spec/spec_helper.rb +5 -0
- data/plugins/runnables/lib/runnables.rb +2 -0
- data/plugins/runnables/lib/runnables/command_output_controller.rb +5 -0
- data/plugins/runnables/lib/runnables/output_processor.rb +14 -3
- data/plugins/runnables/views/command_output.html.erb +3 -2
- data/plugins/scm/lib/scm.rb +4 -2
- data/plugins/scm/lib/scm/diff_mirror.rb +6 -6
- data/plugins/scm_git/lib/scm_git.rb +136 -107
- data/plugins/scm_git/lib/scm_git/change.rb +28 -19
- data/plugins/snippets/lib/snippets/explorer.rb +2 -2
- data/plugins/swt/lib/swt/full_swt.rb +1 -0
- data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +4 -0
- data/plugins/syntax_check/features/support/env.rb +3 -0
- data/plugins/syntax_check/lib/syntax_check.rb +71 -5
- data/plugins/syntax_check/lib/syntax_check/annotation.rb +61 -0
- data/plugins/test_runner/lib/test_runner.rb +39 -0
- data/plugins/test_runner/lib/test_runner/rspec_runner.rb +20 -0
- data/plugins/test_runner/lib/test_runner/run_test_command.rb +63 -0
- data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +26 -0
- data/plugins/test_runner/plugin.rb +8 -0
- data/plugins/test_runner/spec/run_test_command_spec.rb +51 -0
- data/plugins/test_runner/spec/spec_helper.rb +5 -0
- data/plugins/textmate/lib/textmate.rb +12 -2
- data/plugins/textmate/vendor/redcar-bundles/Bundles/HTML.tmbundle/Syntaxes/HTML.plist +0 -2
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/Syntaxes/Mirah.plist +22 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/info.plist +12 -0
- data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby.tmbundle/Syntaxes/Ruby.plist +2 -0
- data/plugins/todo_list/lib/todo_list.rb +7 -0
- data/plugins/todo_list/lib/todo_list/todo_controller.rb +3 -1
- data/plugins/tree/lib/tree.rb +4 -0
- data/plugins/tree_view_swt/lib/tree_view_swt.rb +5 -0
- data/plugins/web_bookmarks/lib/web_bookmarks.rb +10 -0
- metadata +137 -22
- data/plugins/document_search/features/search.feature +0 -163
- data/plugins/document_search/lib/document_search/replace_all_command.rb +0 -27
- data/plugins/document_search/lib/document_search/replace_command.rb +0 -38
- data/plugins/document_search/lib/document_search/replace_next_command.rb +0 -27
- data/plugins/document_search/lib/document_search/search_and_replace.rb +0 -81
- data/plugins/ruby/README +0 -6
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -13,10 +13,10 @@ module Redcar
|
|
|
13
13
|
def self.open_connection(c)
|
|
14
14
|
Project::Manager.connect_to_remote(c.protocol, c.host, c.user, c.path, PrivateKeyStore.paths)
|
|
15
15
|
end
|
|
16
|
-
|
|
16
|
+
|
|
17
17
|
class Connection < CONNECTION_SUPER_CLASS
|
|
18
18
|
def to_hash
|
|
19
|
-
{
|
|
19
|
+
{
|
|
20
20
|
"name" => name,
|
|
21
21
|
"host" => host,
|
|
22
22
|
"port" => port,
|
|
@@ -26,22 +26,22 @@ module Redcar
|
|
|
26
26
|
}
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
|
-
|
|
29
|
+
|
|
30
30
|
class OpenRemoteFilter < Command
|
|
31
31
|
def execute
|
|
32
32
|
FilterDialog.new.open
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
|
-
|
|
36
|
-
def self.keymaps
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
end
|
|
35
|
+
|
|
36
|
+
# def self.keymaps
|
|
37
|
+
# osx = Redcar::Keymap.build("main", :osx) do
|
|
38
|
+
# link "Cmd+P", OpenRemoteFilter
|
|
39
|
+
# end
|
|
40
|
+
# linwin = Redcar::Keymap.build("main", [:linux, :windows]) do
|
|
41
|
+
# link "Ctrl+P", OpenRemoteFilter
|
|
42
|
+
# end
|
|
43
|
+
# [osx, linwin]
|
|
44
|
+
# end
|
|
45
45
|
|
|
46
46
|
def self.menus
|
|
47
47
|
Menu::Builder.build do
|
|
@@ -11,6 +11,7 @@ module Redcar
|
|
|
11
11
|
Menu::Builder.build do
|
|
12
12
|
sub_menu "Project" do
|
|
13
13
|
item "Go to declaration", :command => Declarations::GoToTagCommand, :priority => 30
|
|
14
|
+
item "Rebuild tags file", :command => Declarations::RebuildTagsCommand, :priority => 31
|
|
14
15
|
end
|
|
15
16
|
end
|
|
16
17
|
end
|
|
@@ -21,7 +22,7 @@ module Redcar
|
|
|
21
22
|
end
|
|
22
23
|
|
|
23
24
|
osx = Keymap.build("main", :osx) do
|
|
24
|
-
link "
|
|
25
|
+
link "Ctrl+Alt+G", Declarations::GoToTagCommand
|
|
25
26
|
end
|
|
26
27
|
|
|
27
28
|
[linwin, osx]
|
|
@@ -34,17 +35,17 @@ module Redcar
|
|
|
34
35
|
def self.file_path(project)
|
|
35
36
|
::File.join(project.config_dir, 'tags')
|
|
36
37
|
end
|
|
37
|
-
|
|
38
|
+
|
|
38
39
|
class ProjectRefresh < Task
|
|
39
40
|
def initialize(project)
|
|
40
41
|
@file_list = project.file_list
|
|
41
42
|
@project = project
|
|
42
43
|
end
|
|
43
|
-
|
|
44
|
+
|
|
44
45
|
def description
|
|
45
46
|
"#{@project.path}: reparse files for declarations"
|
|
46
47
|
end
|
|
47
|
-
|
|
48
|
+
|
|
48
49
|
def execute
|
|
49
50
|
return if @project.remote?
|
|
50
51
|
file = Declarations::File.new(Declarations.file_path(@project))
|
|
@@ -53,7 +54,7 @@ module Redcar
|
|
|
53
54
|
Declarations.clear_tags_for_path(file.path)
|
|
54
55
|
end
|
|
55
56
|
end
|
|
56
|
-
|
|
57
|
+
|
|
57
58
|
def self.project_refresh_task_type
|
|
58
59
|
ProjectRefresh
|
|
59
60
|
end
|
|
@@ -91,14 +92,24 @@ module Redcar
|
|
|
91
92
|
DocumentSearch::FindNextRegex.new(regexp, true).run_in_focussed_tab_edit_view
|
|
92
93
|
end
|
|
93
94
|
|
|
95
|
+
class RebuildTagsCommand < Command
|
|
96
|
+
def execute
|
|
97
|
+
project = Project::Manager.focussed_project
|
|
98
|
+
tags_path = Declarations.file_path(project)
|
|
99
|
+
FileUtils.rm tags_path
|
|
100
|
+
ProjectRefresh.new(project).execute
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
94
104
|
class GoToTagCommand < EditTabCommand
|
|
105
|
+
sensitize :open_project
|
|
95
106
|
|
|
96
107
|
def execute
|
|
97
108
|
if Project::Manager.focussed_project.remote?
|
|
98
109
|
Application::Dialog.message_box("Go to declaration doesn't work in remote projects yet :(")
|
|
99
110
|
return
|
|
100
111
|
end
|
|
101
|
-
|
|
112
|
+
|
|
102
113
|
if doc.selection?
|
|
103
114
|
handle_tag(doc.selected_text)
|
|
104
115
|
else
|
|
@@ -0,0 +1,389 @@
|
|
|
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
|
+
@speedbar
|
|
10
|
+
Feature: Find
|
|
11
|
+
|
|
12
|
+
Background:
|
|
13
|
+
Given I open a new edit tab
|
|
14
|
+
|
|
15
|
+
Scenario: Open Find speedbar
|
|
16
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
17
|
+
And I move the cursor to 0
|
|
18
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
19
|
+
Then the DocumentSearch::FindSpeedbar speedbar should be open
|
|
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
|
|
31
|
+
|
|
32
|
+
Scenario: Search for a word should select next occurrence
|
|
33
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
34
|
+
And I move the cursor to 0
|
|
35
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
36
|
+
And I type "Bar" into the "Find" field in the speedbar
|
|
37
|
+
Then the selected text should be "Bar"
|
|
38
|
+
|
|
39
|
+
Scenario: Search twice should move to the next occurrence
|
|
40
|
+
When I replace the contents with "Foo\nBar\nFoo"
|
|
41
|
+
And I move the cursor to 0
|
|
42
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
43
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
44
|
+
Then the selection should be on line 0
|
|
45
|
+
When I press "Next" in the speedbar
|
|
46
|
+
Then the selected text should be "Foo"
|
|
47
|
+
And the selection should be on line 2
|
|
48
|
+
|
|
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
|
+
Scenario: Search for a word adjacent to cursor should select word
|
|
65
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
66
|
+
And I move the cursor to 0
|
|
67
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
68
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
69
|
+
Then the selected text should be "Foo"
|
|
70
|
+
|
|
71
|
+
Scenario: Search for a word should find occurrence after the cursor
|
|
72
|
+
When I replace the contents with "Foo\nBar\nBaz\nFoo"
|
|
73
|
+
And I move the cursor to 1
|
|
74
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
75
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
76
|
+
Then the selection should be on line 3
|
|
77
|
+
And the selected text should be "Foo"
|
|
78
|
+
When I press "Next" in the speedbar
|
|
79
|
+
Then the selected text should be "Foo"
|
|
80
|
+
And the selection should be on line 0
|
|
81
|
+
|
|
82
|
+
Scenario: Search for a word should wrap to earlier occurrence if none left
|
|
83
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
84
|
+
And I move the cursor to 1
|
|
85
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
86
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
87
|
+
Then the selected text should be "Foo"
|
|
88
|
+
And the selection should be on line 0
|
|
89
|
+
|
|
90
|
+
Scenario: Doesn't search for a regex
|
|
91
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
92
|
+
And I move the cursor to 0
|
|
93
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
94
|
+
And I type "Ba." into the "Find" field in the speedbar
|
|
95
|
+
Then there should not be any text selected
|
|
96
|
+
|
|
97
|
+
Scenario: Search for a regex
|
|
98
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
99
|
+
And I move the cursor to 0
|
|
100
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
101
|
+
And I type "Ba." into the "Find" field in the speedbar
|
|
102
|
+
And I choose "Regex" in the "query_type" field in the speedbar
|
|
103
|
+
Then the selected text should be "Bar"
|
|
104
|
+
When I press "Next" in the speedbar
|
|
105
|
+
Then the selected text should be "Baz"
|
|
106
|
+
|
|
107
|
+
# Current Settings: Regex, No Match case, Wrap around
|
|
108
|
+
|
|
109
|
+
Scenario: Search for a regex matches a second time
|
|
110
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
111
|
+
And I move the cursor to 0
|
|
112
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
113
|
+
And I type "Ba." into the "Find" field in the speedbar
|
|
114
|
+
Then the selected text should be "Bar"
|
|
115
|
+
When I press "Next" in the speedbar
|
|
116
|
+
Then the selected text should be "Baz"
|
|
117
|
+
|
|
118
|
+
Scenario: Doesn't search for a glob
|
|
119
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
120
|
+
And I move the cursor to 0
|
|
121
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
122
|
+
And I choose "Plain" in the "query_type" field in the speedbar
|
|
123
|
+
And I type "Ba*" into the "Find" field in the speedbar
|
|
124
|
+
Then there should not be any text selected
|
|
125
|
+
|
|
126
|
+
Scenario: Search for a glob
|
|
127
|
+
When I replace the contents with "Foo\nBar none I said\nBaz"
|
|
128
|
+
And I move the cursor to 0
|
|
129
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
130
|
+
And I type "Ba*" into the "Find" field in the speedbar
|
|
131
|
+
And I choose "Glob" in the "query_type" field in the speedbar
|
|
132
|
+
Then the selected text should be "Bar none I said"
|
|
133
|
+
When I press "Next" in the speedbar
|
|
134
|
+
Then the selected text should be "Baz"
|
|
135
|
+
|
|
136
|
+
# Current Settings: Glob, No Match case, Wrap around
|
|
137
|
+
|
|
138
|
+
Scenario: Should not match case if unset
|
|
139
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
140
|
+
And I move the cursor to 0
|
|
141
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
142
|
+
And I choose "Plain" in the "query_type" field in the speedbar
|
|
143
|
+
And I type "foo" into the "Find" field in the speedbar
|
|
144
|
+
Then the selected text should be "Foo"
|
|
145
|
+
|
|
146
|
+
# Current Settings: Plain, No Match case, Wrap around
|
|
147
|
+
|
|
148
|
+
Scenario: Should not match case if unset with regex
|
|
149
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
150
|
+
And I move the cursor to 0
|
|
151
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
152
|
+
And I choose "Regex" in the "query_type" field in the speedbar
|
|
153
|
+
And I type "fo." into the "Find" field in the speedbar
|
|
154
|
+
Then the selected text should be "Foo"
|
|
155
|
+
|
|
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
|
+
Scenario: Should match case if requested
|
|
169
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
170
|
+
And I move the cursor to 0
|
|
171
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
172
|
+
And I choose "Plain" in the "query_type" field in the speedbar
|
|
173
|
+
And I uncheck "Match case" in the speedbar
|
|
174
|
+
And I type "foo" into the "Find" field in the speedbar
|
|
175
|
+
Then the selected text should be "Foo"
|
|
176
|
+
When I check "Match case" in the speedbar
|
|
177
|
+
Then there should not be any text selected
|
|
178
|
+
|
|
179
|
+
# Current Settings: Plain, Match case, Wrap around
|
|
180
|
+
|
|
181
|
+
Scenario: Should match case if requested with regex
|
|
182
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
183
|
+
And I move the cursor to 0
|
|
184
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
185
|
+
And I choose "Regex" in the "query_type" field in the speedbar
|
|
186
|
+
And I uncheck "Match case" in the speedbar
|
|
187
|
+
And I type "fo." into the "Find" field in the speedbar
|
|
188
|
+
Then the selected text should be "Foo"
|
|
189
|
+
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
|
+
And I move the cursor to 0
|
|
197
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
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
|
|
203
|
+
Then there should not be any text selected
|
|
204
|
+
|
|
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
|
+
Scenario: Find next with wrap around
|
|
219
|
+
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
|
220
|
+
And I move the cursor to 0
|
|
221
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
222
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
223
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
224
|
+
And the selected text should be "Foo"
|
|
225
|
+
And the selection range should be from 0 to 3
|
|
226
|
+
When I press "Next" in the speedbar
|
|
227
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
228
|
+
And the selected text should be "Foo"
|
|
229
|
+
And the selection range should be from 8 to 11
|
|
230
|
+
When I press "Next" in the speedbar
|
|
231
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
232
|
+
And the selected text should be "Foo"
|
|
233
|
+
And the selection range should be from 0 to 3
|
|
234
|
+
|
|
235
|
+
Scenario: Find next without wrap around
|
|
236
|
+
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
|
237
|
+
And I move the cursor to 0
|
|
238
|
+
And I run the command DocumentSearch::FindAndReplaceSpeedbarCommand
|
|
239
|
+
And I uncheck "Wrap around" in the speedbar
|
|
240
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
241
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
242
|
+
And the selected text should be "Foo"
|
|
243
|
+
And the selection range should be from 0 to 3
|
|
244
|
+
When I press "Next" in the speedbar
|
|
245
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
246
|
+
And the selected text should be "Foo"
|
|
247
|
+
And the selection range should be from 8 to 11
|
|
248
|
+
When I press "Next" in the speedbar
|
|
249
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
250
|
+
And there should not be any text selected
|
|
251
|
+
|
|
252
|
+
# Current Settings: Plain, No Match case, No Wrap around
|
|
253
|
+
|
|
254
|
+
Scenario: Find previous with wrap around
|
|
255
|
+
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
|
256
|
+
And I move the cursor to 18
|
|
257
|
+
And I run the command DocumentSearch::FindAndReplaceSpeedbarCommand
|
|
258
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
259
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
260
|
+
And there should not be any text selected
|
|
261
|
+
When I press "Previous" in the speedbar
|
|
262
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
263
|
+
And the selected text should be "Foo"
|
|
264
|
+
And the selection range should be from 8 to 11
|
|
265
|
+
When I press "Previous" in the speedbar
|
|
266
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
267
|
+
And the selected text should be "Foo"
|
|
268
|
+
And the selection range should be from 0 to 3
|
|
269
|
+
When I check "Wrap around" in the speedbar
|
|
270
|
+
And I press "Previous" in the speedbar
|
|
271
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
272
|
+
And the selected text should be "Foo"
|
|
273
|
+
And the selection range should be from 8 to 11
|
|
274
|
+
|
|
275
|
+
# Current Settings: Plain, No Match case, Wrap around
|
|
276
|
+
|
|
277
|
+
Scenario: Find previous without wrap around
|
|
278
|
+
When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
|
|
279
|
+
And I move the cursor to 18
|
|
280
|
+
And I run the command DocumentSearch::FindAndReplaceSpeedbarCommand
|
|
281
|
+
And I uncheck "Wrap around" in the speedbar
|
|
282
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
283
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
284
|
+
And there should not be any text selected
|
|
285
|
+
When I press "Previous" in the speedbar
|
|
286
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
287
|
+
And the selected text should be "Foo"
|
|
288
|
+
And the selection range should be from 8 to 11
|
|
289
|
+
When I press "Previous" in the speedbar
|
|
290
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
291
|
+
And the selected text should be "Foo"
|
|
292
|
+
And the selection range should be from 0 to 3
|
|
293
|
+
When I press "Previous" in the speedbar
|
|
294
|
+
Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
|
|
295
|
+
And there should not be any text selected
|
|
296
|
+
|
|
297
|
+
# Current Settings: Plain, No Match case, No Wrap around
|
|
298
|
+
|
|
299
|
+
Scenario: Should scroll vertically to the match
|
|
300
|
+
When I replace the contents with 100 lines of "xxx" then "Foo"
|
|
301
|
+
And I scroll to the top of the document
|
|
302
|
+
And I move the cursor to 0
|
|
303
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
304
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
305
|
+
Then the selected text should be "Foo"
|
|
306
|
+
And line number 100 should be visible
|
|
307
|
+
|
|
308
|
+
Scenario: "Should scroll horizontally to the match"
|
|
309
|
+
When I replace the contents with 300 "x" then "Foo"
|
|
310
|
+
And I move the cursor to 0
|
|
311
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
312
|
+
And I type "Foo" into the "Find" field in the speedbar
|
|
313
|
+
Then the selected text should be "Foo"
|
|
314
|
+
And horizontal offset 302 should be visible
|
|
315
|
+
|
|
316
|
+
Scenario: Should reopen with the same text as the previous search
|
|
317
|
+
When I run the command DocumentSearch::FindMenuCommand
|
|
318
|
+
And I type "foo" into the "Find" field in the speedbar
|
|
319
|
+
And I close the speedbar
|
|
320
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
321
|
+
Then the "Find" field in the speedbar should have text "foo"
|
|
322
|
+
|
|
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
|
+
Scenario: Should initialize query with the currently selected text
|
|
368
|
+
When I replace the contents with "Flux\nBar\nFoo"
|
|
369
|
+
And I move the cursor to 0
|
|
370
|
+
And I select from 0 to 4
|
|
371
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
372
|
+
Then the "Find" field in the speedbar should have text "Flux"
|
|
373
|
+
|
|
374
|
+
Scenario: Search for a word should start from the start of a selection
|
|
375
|
+
When I replace the contents with "Foo\nBar\nBaz"
|
|
376
|
+
And I select from 5 to 8
|
|
377
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
378
|
+
And I type "Ba" into the "Find" field in the speedbar
|
|
379
|
+
Then the selected text should be "Ba"
|
|
380
|
+
And the selection should be on line 2
|
|
381
|
+
|
|
382
|
+
Scenario: Should match the next occurence of the currently selected text
|
|
383
|
+
When I replace the contents with "Foo\nBar\nFoo"
|
|
384
|
+
And I move the cursor to 0
|
|
385
|
+
And I select from 0 to 3
|
|
386
|
+
And I run the command DocumentSearch::FindMenuCommand
|
|
387
|
+
And I press "Next" in the speedbar
|
|
388
|
+
Then the selected text should be "Foo"
|
|
389
|
+
And line number 2 should be visible
|