redcar 0.11.0dev → 0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (139) hide show
  1. data/CHANGES +14 -1
  2. data/README.md +28 -8
  3. data/Rakefile +23 -18
  4. data/bin/redcar +9 -4
  5. data/lib/redcar.rb +42 -4
  6. data/lib/redcar/installer.rb +7 -2
  7. data/lib/redcar/logger.rb +64 -0
  8. data/lib/redcar/runner.rb +17 -8
  9. data/lib/redcar/usage.rb +2 -0
  10. data/plugins/application/features/step_definitions/tree_steps.rb +4 -4
  11. data/plugins/application/features/support/env.rb +6 -6
  12. data/plugins/application/lib/application.rb +31 -3
  13. data/plugins/application/lib/application/command.rb +6 -0
  14. data/plugins/application/lib/application/command/executor.rb +0 -1
  15. data/plugins/application/lib/application/commands/application_commands.rb +21 -0
  16. data/plugins/application/lib/application/commands/notebook_commands.rb +73 -0
  17. data/plugins/application/lib/application/commands/tab_commands.rb +105 -0
  18. data/plugins/application/lib/application/commands/treebook_commands.rb +117 -0
  19. data/plugins/application/lib/application/commands/window_commands.rb +68 -0
  20. data/plugins/{tree/lib → application/lib/application}/tree.rb +0 -4
  21. data/plugins/{tree/lib → application/lib/application}/tree/command.rb +0 -0
  22. data/plugins/{tree/lib → application/lib/application}/tree/controller.rb +0 -0
  23. data/plugins/{tree/lib → application/lib/application}/tree/mirror.rb +0 -0
  24. data/plugins/application/spec/application/keymap/builder_spec.rb +1 -1
  25. data/plugins/application/spec/application/menu/builder_spec.rb +2 -2
  26. data/plugins/application_swt/lib/application_swt.rb +4 -2
  27. data/plugins/application_swt/lib/swt/vtab_label.rb +6 -3
  28. data/plugins/auto_indenter/lib/auto_indenter/document_controller.rb +6 -3
  29. data/plugins/clojure/lib/clojure.rb +2 -2
  30. data/plugins/core/lib/core.rb +0 -4
  31. data/plugins/core/lib/core/gui.rb +2 -4
  32. data/plugins/core/lib/core/plugin/storage.rb +68 -21
  33. data/plugins/core/spec/core/base_storage_spec.rb +81 -0
  34. data/plugins/core/spec/core/shared_storage_spec.rb +49 -0
  35. data/plugins/core/spec/core/storage_spec.rb +13 -63
  36. data/plugins/declarations/lib/declarations.rb +3 -1
  37. data/plugins/document_search/features/replace.feature +29 -20
  38. data/plugins/document_search/lib/document_search/find_speedbar.rb +4 -1
  39. data/plugins/edit_view/features/indentation_commands.feature +6 -5
  40. data/plugins/edit_view/features/step_definitions/notebook_steps.rb +4 -4
  41. data/plugins/edit_view/features/step_definitions/tab_steps.rb +7 -7
  42. data/plugins/edit_view/features/step_definitions/window_steps.rb +2 -2
  43. data/plugins/edit_view/lib/edit_view.rb +15 -1
  44. data/plugins/edit_view/lib/edit_view/modified_tabs_checker.rb +7 -7
  45. data/plugins/edit_view_swt/lib/edit_view_swt.rb +7 -6
  46. data/plugins/execute_current_tab/lib/execute_current_tab.rb +1 -1
  47. data/plugins/groovy/lib/groovy.rb +3 -3
  48. data/plugins/groovy/lib/groovy/commands.rb +1 -1
  49. data/plugins/help/lib/help/view_controller.rb +5 -0
  50. data/plugins/help/views/index.html.erb +10 -1
  51. data/plugins/html_view/features/step_definitions/html_view_steps.rb +1 -1
  52. data/plugins/html_view/features/support/env.rb +0 -15
  53. data/plugins/html_view/lib/html_view.rb +3 -4
  54. data/plugins/html_view/lib/html_view/commands.rb +1 -1
  55. data/plugins/key_bindings/lib/key_bindings.rb +34 -0
  56. data/plugins/key_bindings/plugin.rb +8 -0
  57. data/plugins/{tree → key_bindings}/spec/spec_helper.rb +0 -0
  58. data/plugins/line_tools/features/lower_text.feature +3 -4
  59. data/plugins/line_tools/lib/line_tools.rb +6 -5
  60. data/plugins/mirah/lib/mirah.rb +2 -2
  61. data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +5 -3
  62. data/plugins/project/features/open_directory_tree.feature +1 -1
  63. data/plugins/project/features/step_definitions/file_steps.rb +5 -5
  64. data/plugins/project/features/step_definitions/find_file_steps.rb +2 -3
  65. data/plugins/project/features/support/env.rb +4 -0
  66. data/plugins/project/lib/project.rb +15 -9
  67. data/plugins/project/lib/project/commands.rb +46 -16
  68. data/plugins/project/lib/project/dir_controller.rb +1 -1
  69. data/plugins/project/lib/project/dir_mirror.rb +3 -2
  70. data/plugins/project/lib/project/drb_service.rb +3 -1
  71. data/plugins/project/lib/project/file_list.rb +99 -21
  72. data/plugins/project/lib/project/find_file_dialog.rb +8 -24
  73. data/plugins/project/lib/project/manager.rb +68 -12
  74. data/plugins/project/lib/project/project_tree_controller.rb +1 -1
  75. data/plugins/project/plugin.rb +1 -2
  76. data/plugins/project_search/features/word_search.feature +1 -1
  77. data/plugins/project_search/lib/project_search.rb +16 -6
  78. data/plugins/project_search/lib/project_search/commands.rb +15 -28
  79. data/plugins/project_search/lib/project_search/hit.rb +4 -0
  80. data/plugins/project_search/lib/project_search/lucene_index.rb +14 -4
  81. data/plugins/project_search/lib/project_search/views/_file.html.erb +11 -11
  82. data/plugins/project_search/lib/project_search/word_search.rb +22 -4
  83. data/plugins/project_search/spec/project_search/word_search_spec.rb +2 -2
  84. data/plugins/redcar/redcar.rb +140 -588
  85. data/plugins/repl/features/step_definitions/repl_steps.rb +3 -3
  86. data/plugins/repl/features/support/fake_repl.rb +1 -1
  87. data/plugins/ruby/lib/ruby.rb +4 -4
  88. data/plugins/runnables/features/fixtures/alternate.ruby +1 -0
  89. data/plugins/runnables/features/fixtures/line_app.rb +1 -0
  90. data/plugins/runnables/features/fixtures/name_app.rb +1 -0
  91. data/plugins/runnables/features/fixtures/params_app.rb +1 -0
  92. data/plugins/runnables/features/fixtures/runnable_app.rb +1 -0
  93. data/plugins/runnables/lib/runnables.rb +21 -0
  94. data/plugins/runnables/lib/runnables/command_output_controller.rb +14 -9
  95. data/plugins/runnables/lib/runnables/output_processor.rb +4 -4
  96. data/plugins/runnables/lib/runnables/running_process_checker.rb +6 -6
  97. data/plugins/runnables/plugin.rb +1 -2
  98. data/plugins/scm/lib/scm.rb +18 -18
  99. data/plugins/scm/lib/scm/commit_mirror.rb +2 -2
  100. data/plugins/scm/lib/scm/scm_changes_controller.rb +1 -1
  101. data/plugins/scm_hg/lib/scm_hg.rb +1 -1
  102. data/plugins/snippets/lib/snippets/document_controller.rb +46 -40
  103. data/plugins/swt/lib/swt.rb +2 -0
  104. data/plugins/test_runner/lib/test_runner.rb +1 -0
  105. data/plugins/test_runner/lib/test_runner/jasmine_test_runner.rb +15 -0
  106. data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +21 -5
  107. data/plugins/textmate/lib/textmate.rb +5 -1
  108. data/plugins/textmate/lib/textmate/preference.rb +4 -0
  109. data/plugins/textmate/lib/textmate/snippet.rb +0 -2
  110. data/plugins/textmate/lib/textmate/tree_mirror.rb +6 -5
  111. data/plugins/textmate/plugin.rb +1 -1
  112. data/plugins/textmate/vendor/redcar-bundles/Bundles/C.tmbundle/Syntaxes/C.plist +2 -2
  113. data/plugins/textmate/vendor/redcar-bundles/Bundles/Clojure.tmbundle/info.plist +2 -0
  114. data/plugins/textmate/vendor/redcar-bundles/Bundles/Cucumber.tmbundle/Syntaxes/Cucumber_Plain_Text_Feature.tmLanguage +0 -4
  115. data/plugins/textmate/vendor/redcar-bundles/Bundles/Cucumber.tmbundle/info.plist +2 -0
  116. data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/info.plist +3 -1
  117. data/plugins/textmate/vendor/redcar-bundles/Bundles/Palm-WebOS-Development.tmbundle/info.plist +2 -0
  118. data/plugins/textmate/vendor/redcar-bundles/Bundles/RedcarRepl.tmbundle/info.plist +2 -0
  119. data/plugins/textmate/vendor/redcar-bundles/Bundles/SQL.tmbundle/info.plist +2 -0
  120. data/plugins/textmate/vendor/redcar-bundles/Bundles/Scala.tmbundle/info.plist +2 -0
  121. data/plugins/textmate/vendor/redcar-bundles/Bundles/Smalltalk.tmbundle/Preferences/GNU_Smalltalk.tmPreferences +1 -1
  122. data/plugins/textmate/vendor/redcar-bundles/Bundles/Smalltalk.tmbundle/Preferences/MIST_Smalltalk_Format.tmPreferences +1 -1
  123. data/plugins/textmate/vendor/redcar-bundles/Bundles/Smalltalk.tmbundle/info.plist +2 -0
  124. data/plugins/textmate/vendor/redcar-bundles/Bundles/Vala.tmbundle/info.plist +4 -2
  125. data/plugins/textmate/vendor/redcar-bundles/Bundles/Webrat.tmbundle/info.plist +2 -0
  126. data/plugins/textmate/vendor/redcar-bundles/Bundles/YAML.tmbundle/Syntaxes/YAML.plist +1 -0
  127. data/plugins/textmate/vendor/redcar-bundles/Bundles/groovy.tmbundle/info.plist +2 -0
  128. data/plugins/textmate/vendor/redcar-bundles/Themes/Twilight.tmTheme +0 -2
  129. data/plugins/todo_list/lib/todo_list.rb +3 -3
  130. data/plugins/todo_list/lib/todo_list/todo_controller.rb +1 -1
  131. data/plugins/web_bookmarks/features/step_definitions/web_steps.rb +1 -1
  132. data/plugins/web_bookmarks/lib/web_bookmarks.rb +11 -4
  133. data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +1 -1
  134. data/plugins/web_bookmarks/plugin.rb +1 -2
  135. metadata +29 -20
  136. data/plugins/core/lib/core/logger.rb +0 -28
  137. data/plugins/file_parser/lib/file_parser.rb +0 -125
  138. data/plugins/file_parser/plugin.rb +0 -7
  139. data/plugins/tree/plugin.rb +0 -9
@@ -0,0 +1,49 @@
1
+
2
+ require File.join(File.dirname(__FILE__), "..", "spec_helper")
3
+
4
+ describe Redcar::Plugin::SharedStorage do
5
+
6
+ before do
7
+ remove_test_files
8
+ end
9
+
10
+ after do
11
+ remove_test_files
12
+ end
13
+
14
+ def remove_test_files
15
+ FileUtils.rm_rf(Redcar::Plugin::Storage.new('test_shared_storage').send(:path))
16
+ end
17
+
18
+ it "should set the default when it is not already set and the value is an Array" do
19
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
20
+ storage.set_or_update_default('a', ['b', 'c'])
21
+ storage['a'].should == ['b', 'c']
22
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
23
+ storage['a'].should == ['b', 'c']
24
+ end
25
+
26
+ it "should set the default when it is not already and the value is not an Array" do
27
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
28
+ storage.set_or_update_default('a', 'b')
29
+ storage['a'].should == ['b']
30
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
31
+ storage['a'].should == ['b']
32
+ end
33
+
34
+ it "should update the default when it is already set and the value is an Array" do
35
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
36
+ storage.set_or_update_default('a', 'b')
37
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
38
+ storage.set_or_update_default('a', 'c')
39
+ storage['a'].should == ['b', 'c']
40
+ end
41
+
42
+ it "should update the default when it is already set and the value is not an Array" do
43
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
44
+ storage.set_or_update_default('a', 'b')
45
+ storage = Redcar::Plugin::SharedStorage.new("test_shared_storage")
46
+ storage.set_or_update_default('a', ['c', 'd'])
47
+ storage['a'].should == ['b', 'c', 'd']
48
+ end
49
+ end
@@ -3,75 +3,25 @@ require File.join(File.dirname(__FILE__), "..", "spec_helper")
3
3
 
4
4
  describe Redcar::Plugin::Storage do
5
5
 
6
- before do
7
- remove_test_files
6
+ it "should be based on Redcar::Plugin::BaseStorage" do
7
+ Redcar::Plugin::Storage.ancestors.should include(Redcar::Plugin::BaseStorage)
8
8
  end
9
9
 
10
- after do
11
- remove_test_files
10
+ it "should have a default storage path" do
11
+ Redcar::Plugin::Storage.storage_dir.should == File.join(Redcar.user_dir, "storage")
12
12
  end
13
13
 
14
- def remove_test_files
15
- FileUtils.rm_rf(Redcar::Plugin::Storage.new('test_storage_saved').send(:path))
16
- FileUtils.rm_rf(Redcar::Plugin::Storage.new('test_storage_saved2').send(:path))
14
+ it "should have a configurable storage path" do
15
+ old_storage_dir = Redcar::Plugin::Storage.storage_dir
16
+ Redcar::Plugin::Storage.storage_dir = File.dirname(__FILE__)
17
+ Redcar::Plugin::Storage.storage_dir.should == File.dirname(__FILE__)
18
+ Redcar::Plugin::Storage.storage_dir = old_storage_dir
17
19
  end
18
20
 
19
- it "acts like a hash" do
20
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
21
- storage[:some_key] = "some value"
22
- storage[:some_key].should == "some value"
23
- storage[:some_key] = "some other value"
24
- storage[:some_key].should == "some other value"
21
+ it "should store files inside the directory specified by storage path" do
22
+ Redcar::Plugin::Storage.storage_dir = File.dirname(__FILE__)
23
+ storage = Redcar::Plugin::Storage.new('test_storage')
24
+ storage.send(:path).should == File.join(File.dirname(__FILE__), 'test_storage.yaml')
25
25
  end
26
-
27
- it "saves to disk" do
28
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
29
- storage[:some_key] = "some value"
30
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
31
- storage[:some_key].should == "some value"
32
26
 
33
- FileUtils.rm_rf(storage.send(:path))
34
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
35
- storage[:some_key].should be_nil
36
- end
37
-
38
- it "has a set default method" do
39
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
40
- storage.set_default('a', 'b')
41
- storage['a'].should == 'b'
42
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
43
- storage['a'].should == 'b'
44
- storage['a'] = 'c'
45
- storage['a'].should == 'c'
46
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
47
- storage['a'].should == 'c'
48
- storage['b'] = false
49
- storage.set_default('b', true)
50
- storage['b'].should == false
51
- end
52
-
53
- it "should have the default work when that's the first method called" do
54
- storage = Redcar::Plugin::Storage.new('test_storage_saved2')
55
- FileUtils.touch(storage.send(:path))
56
- lambda { storage.rollback }.should raise_error(RuntimeError)
57
- FileUtils.rm(storage.send(:path))
58
- end
59
-
60
- it "should reload when the storage file itself has been elsewise modified" do
61
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
62
- storage['a'] = 'b'
63
- storage['a'].should == 'b'
64
- storage['a'].should == 'b'
65
- sleep 1 # windows doesn't have finer granularity than this
66
- File.open(storage.send(:path), 'w') do |f|
67
- f.write "---
68
- a: new"
69
- end
70
- storage['a'].should == 'new'
71
- storage['a'].should == 'new'
72
- storage = Redcar::Plugin::Storage.new('test_storage_saved')
73
- storage['a'].should == 'new'
74
- end
75
-
76
-
77
27
  end
@@ -11,7 +11,9 @@ 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
+ sub_menu "Refresh", :priority => 31 do
15
+ item "Declarations file", :command => Declarations::RebuildTagsCommand
16
+ end
15
17
  end
16
18
  end
17
19
  end
@@ -8,16 +8,18 @@ Feature: Replace in file
8
8
  Scenario: Open replace speedbar
9
9
  When I replace the contents with "Foo\nBar\nBaz"
10
10
  And I move the cursor to 0
11
- And I open the find and replace speedbar
12
- Then I should see the find and replace speedbar
11
+ And I open the find speedbar
12
+ Then I should see the find speedbar
13
13
 
14
14
  Scenario: Replace next occurrence on the same line
15
15
  When I replace the contents with "Foo\nBar Rab Rab\nBaz"
16
16
  And I move the cursor to 4
17
- And I open the find and replace speedbar
17
+ And I open the find speedbar
18
18
  And I type "Rab" into the "Find" field in the speedbar
19
19
  And I type "RABBIT" into the "Replace" field in the speedbar
20
20
  And I press "Replace && Find" in the speedbar
21
+ Then the selected text should be "Rab"
22
+ When I press "Replace && Find" in the speedbar
21
23
  Then the contents should be "Foo\nBar RABBIT Rab\nBaz"
22
24
  And the selected text should be "Rab"
23
25
  And the selection range should be from 15 to 18
@@ -25,11 +27,12 @@ Feature: Replace in file
25
27
  Scenario: Replace next occurrence on the same line twice
26
28
  When I replace the contents with "Foo\nBar Rab Rab\nBaz"
27
29
  And I move the cursor to 4
28
- And I open the find and replace speedbar
30
+ And I open the find speedbar
29
31
  And I type "Rab" into the "Find" field in the speedbar
30
32
  And I type "RAB" into the "Replace" field in the speedbar
31
33
  And I press "Replace && Find" in the speedbar
32
34
  And I press "Replace && Find" in the speedbar
35
+ And I press "Replace && Find" in the speedbar
33
36
  Then the contents should be "Foo\nBar RAB RAB\nBaz"
34
37
  And the selected text should be "RAB"
35
38
  And the selection range should be from 8 to 11
@@ -37,10 +40,11 @@ Feature: Replace in file
37
40
  Scenario: Replace next occurrence
38
41
  When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
39
42
  And I move the cursor to 0
40
- And I open the find and replace speedbar
43
+ And I open the find speedbar
41
44
  And I type "Bar" into the "Find" field in the speedbar
42
45
  And I type "Rab" into the "Replace" field in the speedbar
43
46
  And I press "Replace && Find" in the speedbar
47
+ And I press "Replace && Find" in the speedbar
44
48
  Then the contents should be "Foo\nRab\nBaz\nBar\nQux"
45
49
  And the selected text should be "Bar"
46
50
  And the selection should be on line 3
@@ -48,29 +52,32 @@ Feature: Replace in file
48
52
  Scenario: Replace next occurrence twice
49
53
  When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
50
54
  And I move the cursor to 0
51
- And I open the find and replace speedbar
55
+ And I open the find speedbar
52
56
  And I type "Bar" into the "Find" field in the speedbar
53
57
  And I type "Rab" into the "Replace" field in the speedbar
54
58
  And I press "Replace && Find" in the speedbar
59
+ And I press "Replace && Find" in the speedbar
55
60
  Then the contents should be "Foo\nRab\nBaz\nBar\nQux"
56
61
  When I press "Replace && Find" in the speedbar
62
+ And I press "Replace && Find" in the speedbar
57
63
  Then the contents should be "Foo\nRab\nBaz\nRab\nQux"
58
64
  And there should not be any text selected
59
65
 
60
66
  Scenario: Replace next occurrence wraps
61
67
  When I replace the contents with "Foo\nBar\nBaz"
62
68
  And I move the cursor to 8
63
- And I open the find and replace speedbar
69
+ And I open the find speedbar
64
70
  And I type "Bar" into the "Find" field in the speedbar
65
71
  And I type "Rab" into the "Replace" field in the speedbar
66
72
  When I press "Replace && Find" in the speedbar
73
+ When I press "Replace && Find" in the speedbar
67
74
  Then the contents should be "Foo\nRab\nBaz"
68
75
  And there should not be any text selected
69
76
 
70
77
  Scenario: Replace all replaces one
71
78
  When I replace the contents with "Foo\nBar\nBaz"
72
79
  And I move the cursor to 0
73
- And I open the find and replace speedbar
80
+ And I open the find speedbar
74
81
  And I type "Bar" into the "Find" field in the speedbar
75
82
  And I type "Rab" into the "Replace" field in the speedbar
76
83
  When I press "Replace All" in the speedbar
@@ -81,7 +88,7 @@ Feature: Replace in file
81
88
  Scenario: Replace all replaces two
82
89
  When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
83
90
  And I move the cursor to 0
84
- And I open the find and replace speedbar
91
+ And I open the find speedbar
85
92
  And I type "Bar" into the "Find" field in the speedbar
86
93
  And I type "Rab" into the "Replace" field in the speedbar
87
94
  When I press "Replace All" in the speedbar
@@ -91,7 +98,7 @@ Feature: Replace in file
91
98
 
92
99
  Scenario: Replace all replaces two on the same line
93
100
  When I replace the contents with "abcabc"
94
- And I open the find and replace speedbar
101
+ And I open the find speedbar
95
102
  And I type "bc" into the "Find" field in the speedbar
96
103
  And I type "xx" into the "Replace" field in the speedbar
97
104
  When I press "Replace All" in the speedbar
@@ -99,7 +106,7 @@ Feature: Replace in file
99
106
 
100
107
  Scenario: Replace all replaces overlapping occurences on the same line
101
108
  When I replace the contents with "deedeedeed"
102
- And I open the find and replace speedbar
109
+ And I open the find speedbar
103
110
  And I type "deed" into the "Find" field in the speedbar
104
111
  And I type "misdeed" into the "Replace" field in the speedbar
105
112
  When I press "Replace All" in the speedbar
@@ -107,7 +114,7 @@ Feature: Replace in file
107
114
 
108
115
  Scenario: Replace all is a single undo action
109
116
  When I replace the contents with "abcabc"
110
- And I open the find and replace speedbar
117
+ And I open the find speedbar
111
118
  And I type "bc" into the "Find" field in the speedbar
112
119
  And I type "xx" into the "Replace" field in the speedbar
113
120
  When I press "Replace All" in the speedbar
@@ -118,13 +125,14 @@ Feature: Replace in file
118
125
  Scenario: Replace next occurrence test bug
119
126
  When I replace the contents with "the\n* Speedbars have access to the properties of the widgets in them."
120
127
  And I move the cursor to 0
121
- And I open the find and replace speedbar
128
+ And I open the find speedbar
122
129
  And I type "the" into the "Find" field in the speedbar
123
130
  And I type "THE" into the "Replace" field in the speedbar
124
131
  And I press "Replace && Find" in the speedbar
132
+ And I press "Replace && Find" in the speedbar
125
133
  Then the contents should be "THE\n* Speedbars have access to the properties of the widgets in them."
126
134
  And the selection range should be from 31 to 34
127
- And I press "Replace && Find" in the speedbar
135
+ When I press "Replace && Find" in the speedbar
128
136
  Then the contents should be "THE\n* Speedbars have access to THE properties of the widgets in them."
129
137
  And the selection range should be from 49 to 52
130
138
  And I press "Replace && Find" in the speedbar
@@ -138,22 +146,24 @@ Feature: Replace in file
138
146
  Scenario: Replace regex with back-references
139
147
  When I replace the contents with "Curry chicken"
140
148
  And I move the cursor to 0
141
- And I open the find and replace speedbar
142
- And I choose "Regex" in the "query_type" field in the speedbar
149
+ And I open the find speedbar
150
+ And I check "Regex" in the speedbar
143
151
  And I type "(\w+) chicken" into the "Find" field in the speedbar
144
152
  And I type "\1 beef" into the "Replace" field in the speedbar
145
153
  And I press "Replace && Find" in the speedbar
154
+ And I press "Replace && Find" in the speedbar
146
155
  Then the contents should be "Curry beef"
147
156
 
148
157
  Scenario: Replace should move past the current replacement if the query is a substring of the replacement
149
158
  When I replace the contents with "foo\nfoo\nfoo"
150
159
  And I move the cursor to 0
151
- And I open the find and replace speedbar
160
+ And I open the find speedbar
152
161
  And I type "foo" into the "Find" field in the speedbar
153
162
  And I type "foobar" into the "Replace" field in the speedbar
154
163
  And I press "Replace && Find" in the speedbar
155
164
  And I press "Replace && Find" in the speedbar
156
165
  And I press "Replace && Find" in the speedbar
166
+ And I press "Replace && Find" in the speedbar
157
167
  Then the contents should be "foobar\nfoobar\nfoobar"
158
168
  And the selected text should be "foo"
159
169
  And the selection should be on line 0
@@ -161,9 +171,8 @@ Feature: Replace in file
161
171
  Scenario: The Search-and-Replace Speedbar should get initialized with the currently selected text
162
172
  When I replace the contents with "Foo\nBar\nFoo"
163
173
  And I select from 4 to 7
164
- When I open the find and replace speedbar
174
+ When I open the find speedbar
165
175
  Then the "Find" field in the speedbar should have text "Bar"
166
176
  When I type "Foo" into the "Replace" field in the speedbar
167
177
  And I press "Replace && Find" in the speedbar
168
- Then the contents should be "Foo\nFoo\nFoo"
169
-
178
+ Then the contents should be "Foo\nFoo\nFoo"
@@ -90,7 +90,10 @@ module Redcar
90
90
  (@initial_query == FindSpeedbar.previous_replace))
91
91
  self.query.value = FindSpeedbar.previous_query
92
92
  else
93
- self.query.value = @initial_query || FindSpeedbar.previous_query
93
+ if (@initial_query)
94
+ FindSpeedbar.previous_query = @initial_query
95
+ end
96
+ self.query.value = FindSpeedbar.previous_query
94
97
  end
95
98
  self.replace.value = FindSpeedbar.previous_replace || ""
96
99
  self.is_regex.value = FindSpeedbar.previous_options.is_regex
@@ -5,7 +5,7 @@ Feature: Indentation commands
5
5
  And tabs are soft, 2 spaces
6
6
  And I run the command Redcar::Top::IncreaseIndentCommand
7
7
  Then the contents should be " "
8
-
8
+
9
9
  Scenario: Decrease indent, soft tabs, width 2
10
10
  When I open a new edit tab
11
11
  And tabs are soft, 2 spaces
@@ -18,7 +18,7 @@ Feature: Indentation commands
18
18
  And tabs are soft, 3 spaces
19
19
  And I run the command Redcar::Top::IncreaseIndentCommand
20
20
  Then the contents should be " "
21
-
21
+
22
22
  Scenario: Decrease indent, soft tabs, width 3
23
23
  When I open a new edit tab
24
24
  And tabs are soft, 3 spaces
@@ -31,18 +31,19 @@ Feature: Indentation commands
31
31
  And tabs are hard
32
32
  And I run the command Redcar::Top::IncreaseIndentCommand
33
33
  Then the contents should be "\t"
34
-
34
+
35
35
  Scenario: Decrease indent, hard tabs, width 2
36
36
  When I open a new edit tab
37
37
  And tabs are hard
38
38
  And I replace the contents with "<c>\t\t"
39
39
  And I run the command Redcar::Top::DecreaseIndentCommand
40
40
  Then the contents should be "\t"
41
-
41
+
42
42
  Scenario: auto-indent, soft tabs, width 2
43
+ Given the indentation rules are like Ruby's
43
44
  When I open a new edit tab
44
45
  And tabs are soft, 2 spaces
45
46
  And I replace the contents with "def f\n\t1\t\t\nend\t"
46
47
  And I select from 0 to 13
47
48
  And I run the command Redcar::AutoIndenter::IndentCommand
48
- Then the contents should be "def f\n 1\nend"
49
+ Then the contents should be "def f\n 1\nend"
@@ -16,19 +16,19 @@ end
16
16
  World(NotebookSwtHelper)
17
17
 
18
18
  When /^I make a new notebook$/ do
19
- Redcar::Top::NewNotebookCommand.new.run
19
+ Redcar::Application::OpenNewNotebookCommand.new.run
20
20
  end
21
21
 
22
22
  When /^I move the tab to the other notebook$/ do
23
- Redcar::Top::MoveTabToOtherNotebookCommand.new.run
23
+ Redcar::Application::MoveTabToOtherNotebookCommand.new.run
24
24
  end
25
25
 
26
26
  When /^I close the current notebook$/ do
27
- Redcar::Top::CloseNotebookCommand.new.run
27
+ Redcar::Application::CloseNotebookCommand.new.run
28
28
  end
29
29
 
30
30
  When /^I switch notebooks$/ do
31
- Redcar::Top::SwitchNotebookCommand.new.run
31
+ Redcar::Application::SwitchNotebookCommand.new.run
32
32
  end
33
33
 
34
34
  When /^I focus on the edit_view in the tab in notebook (\d)$/ do |index|
@@ -1,6 +1,6 @@
1
1
 
2
2
  Given /^there is an edit tab containing "([^\"]*)"$/ do |contents|
3
- tab = Redcar::Top::NewCommand.new.run
3
+ tab = Redcar::Top::OpenNewEditTabCommand.new.run
4
4
  contents = eval(contents.inspect.gsub("\\\\", "\\"))
5
5
  cursor_offset = (contents =~ /<c>/)
6
6
  contents = contents.gsub("<c>", "")
@@ -11,28 +11,28 @@ Given /^there is an edit tab containing "([^\"]*)"$/ do |contents|
11
11
  end
12
12
 
13
13
  When /^I open a new edit tab$/ do
14
- Redcar::Top::NewCommand.new.run
14
+ Redcar::Top::OpenNewEditTabCommand.new.run
15
15
  end
16
16
 
17
17
  When /^I close the focussed tab$/ do
18
- Redcar::Top::CloseTabCommand.new.run
18
+ Redcar::Application::CloseTabCommand.new.run
19
19
  end
20
20
 
21
21
  When /I switch (up|down) a tab/ do |type|
22
22
  case type
23
23
  when "down"
24
- Redcar::Top::SwitchTabDownCommand.new.run
24
+ Redcar::Application::SwitchTabDownCommand.new.run
25
25
  when "up"
26
- Redcar::Top::SwitchTabUpCommand.new.run
26
+ Redcar::Application::SwitchTabUpCommand.new.run
27
27
  end
28
28
  end
29
29
 
30
30
  When /I move (up|down) a tab/ do |type|
31
31
  case type
32
32
  when "down"
33
- Redcar::Top::MoveTabDownCommand.new.run
33
+ Redcar::Application::MoveTabDownCommand.new.run
34
34
  when "up"
35
- Redcar::Top::MoveTabUpCommand.new.run
35
+ Redcar::Application::MoveTabUpCommand.new.run
36
36
  end
37
37
  end
38
38
 
@@ -22,7 +22,7 @@ Then /^there should be (no|one|\d+) windows?$/ do |num|
22
22
  end
23
23
 
24
24
  When /I open a new window(?: with title "(.*)")?/ do |title|
25
- Redcar::Top::NewWindowCommand.new(title).run
25
+ Redcar::Application::OpenNewWindowCommand.new(title).run
26
26
  end
27
27
 
28
28
  When /^I maximize the window size$/ do
@@ -40,7 +40,7 @@ When /I close the window(?: "(.*)")?( with a command| through the gui)?/ do |tit
40
40
  win = nil
41
41
  end
42
42
  if how =~ /command/
43
- Redcar::Top::CloseWindowCommand.new(win).run
43
+ Redcar::Application::CloseWindowCommand.new(win).run
44
44
  else
45
45
  unless win
46
46
  display = Swt::Widgets::Display.get_current