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.
Files changed (234) hide show
  1. data/CHANGES +34 -4
  2. data/Rakefile +2 -1
  3. data/lib/redcar.rb +3 -3
  4. data/lib/redcar/installer.rb +2 -3
  5. data/plugins/application/features/step_definitions/dialog_steps.rb +7 -0
  6. data/plugins/application/features/step_definitions/key_steps.rb +18 -0
  7. data/plugins/application/features/step_definitions/menu_steps.rb +5 -6
  8. data/plugins/application/features/step_definitions/speedbar_steps.rb +29 -9
  9. data/plugins/application/features/step_definitions/tree_steps.rb +13 -0
  10. data/plugins/application/features/support/env.rb +39 -5
  11. data/plugins/application/features/support/fake_event.rb +12 -0
  12. data/plugins/application/lib/application.rb +5 -6
  13. data/plugins/application/lib/application/dialog.rb +53 -10
  14. data/plugins/application/lib/application/dialogs/modeless_list_dialog.rb +85 -0
  15. data/plugins/application/lib/application/keymap.rb +10 -8
  16. data/plugins/application/lib/application/menu.rb +38 -16
  17. data/plugins/application/lib/application/treebook.rb +30 -0
  18. data/plugins/application/lib/application/window.rb +20 -2
  19. data/plugins/application/spec/application/command/executor_spec.rb +1 -0
  20. data/plugins/application/spec/application/menu_spec.rb +26 -26
  21. data/plugins/application/spec/application/treebook_spec.rb +6 -6
  22. data/plugins/application/spec/spec_helper.rb +10 -1
  23. data/plugins/application_swt/lib/application_swt.rb +25 -3
  24. data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +48 -27
  25. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +22 -11
  26. data/plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb +113 -0
  27. data/plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb +85 -0
  28. data/plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb +143 -0
  29. data/plugins/application_swt/lib/application_swt/gradient.rb +61 -0
  30. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +4 -4
  31. data/plugins/application_swt/lib/application_swt/notebook.rb +5 -8
  32. data/plugins/application_swt/lib/application_swt/speedbar.rb +1 -0
  33. data/plugins/application_swt/lib/application_swt/treebook.rb +6 -8
  34. data/plugins/application_swt/lib/application_swt/window.rb +85 -57
  35. data/plugins/application_swt/lib/swt/graphics_utils.rb +23 -0
  36. data/plugins/application_swt/lib/swt/vtab_folder.rb +7 -0
  37. data/plugins/application_swt/lib/swt/vtab_label.rb +1 -1
  38. data/plugins/application_swt/spec/application_swt/gradient_spec.rb +142 -0
  39. data/plugins/auto_completer/lib/auto_completer.rb +10 -42
  40. data/plugins/auto_completer/lib/auto_completer/list_dialog.rb +21 -0
  41. data/plugins/clojure/lib/clojure.rb +33 -0
  42. data/plugins/{repl/lib/repl/clojure_mirror.rb → clojure/lib/clojure/repl_mirror.rb} +16 -20
  43. data/plugins/clojure/plugin.rb +9 -0
  44. data/plugins/{repl/spec/repl/clojure_mirror_spec.rb → clojure/spec/clojure/repl_mirror_spec.rb} +12 -13
  45. data/plugins/clojure/spec/spec_helper.rb +5 -0
  46. data/plugins/{repl → clojure}/vendor/Wrapper.clj +0 -0
  47. data/plugins/{repl → clojure}/vendor/dummy +0 -0
  48. data/plugins/{repl → clojure}/vendor/enclojure-wrapper.jar +0 -0
  49. data/plugins/connection_manager/lib/connection_manager.rb +13 -13
  50. data/plugins/declarations/lib/declarations.rb +17 -6
  51. data/plugins/document_search/features/find.feature +389 -0
  52. data/plugins/document_search/features/find_and_replace.feature +723 -0
  53. data/plugins/document_search/features/replace.feature +69 -62
  54. data/plugins/document_search/lib/document_search.rb +81 -64
  55. data/plugins/document_search/lib/document_search/commands.rb +258 -0
  56. data/plugins/document_search/lib/document_search/find_and_replace_speedbar.rb +142 -0
  57. data/plugins/document_search/lib/document_search/find_speedbar.rb +102 -0
  58. data/plugins/document_search/lib/document_search/query_options.rb +45 -0
  59. data/plugins/edit_view/features/case_change.feature +9 -5
  60. data/plugins/edit_view/features/step_definitions/editing_steps.rb +19 -0
  61. data/plugins/edit_view/lib/edit_view.rb +15 -12
  62. data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +12 -2
  63. data/plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb +1 -1
  64. data/plugins/edit_view/lib/edit_view/document.rb +129 -99
  65. data/plugins/edit_view_swt/lib/edit_view_swt.rb +33 -15
  66. data/plugins/encryption/encryption.rb +2 -0
  67. data/plugins/find-in-project/lib/find_in_project.rb +3 -5
  68. data/plugins/find-in-project/lib/find_in_project/views/index.html.erb +2 -0
  69. data/plugins/groovy/features/step_definitions/groovy_steps.rb +2 -2
  70. data/plugins/groovy/features/syntax_check_groovy.feature +3 -3
  71. data/plugins/groovy/lib/groovy.rb +38 -0
  72. data/plugins/groovy/lib/groovy/commands.rb +10 -0
  73. data/plugins/{repl/lib/repl/groovy_mirror.rb → groovy/lib/groovy/repl_mirror.rb} +33 -13
  74. data/plugins/groovy/lib/{syntax_check/groovy.rb → groovy/syntax_checker.rb} +13 -8
  75. data/plugins/groovy/plugin.rb +5 -4
  76. data/plugins/{repl/spec/repl/groovy_mirror_spec.rb → groovy/spec/groovy/repl_mirror_spec.rb} +14 -13
  77. data/plugins/groovy/spec/spec_helper.rb +5 -0
  78. data/plugins/html_view/assets/json2.js +476 -0
  79. data/plugins/html_view/lib/html_view.rb +1 -0
  80. data/plugins/java/features/fixtures/test.java +0 -0
  81. data/plugins/java/features/support/env.rb +27 -0
  82. data/plugins/java/features/syntax_check_java.feature +86 -0
  83. data/plugins/java/lib/syntax_check/java.rb +86 -0
  84. data/plugins/java/plugin.rb +7 -0
  85. data/plugins/javascript/features/fixtures/test2.js +5 -0
  86. data/plugins/javascript/features/step_definitions/javascript_steps.rb +16 -0
  87. data/plugins/javascript/features/support/env.rb +14 -0
  88. data/plugins/javascript/features/syntax_check_javascript.feature +46 -3
  89. data/plugins/javascript/lib/syntax_check/javascript.rb +15 -9
  90. data/plugins/line_tools/features/trim_line.feature +49 -0
  91. data/plugins/line_tools/lib/line_tools.rb +5 -1
  92. data/plugins/mirah/README +7 -0
  93. data/plugins/mirah/features/fixtures/test.mirah +2 -0
  94. data/plugins/mirah/features/syntax_check_mirah.feature +46 -0
  95. data/plugins/mirah/lib/mirah.rb +43 -0
  96. data/plugins/mirah/lib/mirah/my_error_handler.rb +22 -0
  97. data/plugins/mirah/lib/mirah/repl_mirror.rb +50 -0
  98. data/plugins/mirah/lib/mirah/syntax_checker.rb +38 -0
  99. data/plugins/mirah/plugin.rb +8 -0
  100. data/plugins/mirah/spec/mirah/repl_mirror_spec.rb +188 -0
  101. data/plugins/mirah/spec/spec_helper.rb +5 -0
  102. data/plugins/mirah/vendor/mirah-parser.jar +0 -0
  103. data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +24 -23
  104. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +10 -1
  105. data/plugins/plugin_manager_ui/views/index.html.erb +2 -0
  106. data/plugins/project/features/find_file.feature +40 -16
  107. data/plugins/project/features/highlight_focussed_tab.feature +16 -10
  108. data/plugins/project/features/step_definitions/find_file_steps.rb +11 -0
  109. data/plugins/project/features/step_definitions/project_tree_steps.rb +5 -1
  110. data/plugins/project/features/support/env.rb +5 -0
  111. data/plugins/project/lib/project/commands.rb +8 -1
  112. data/plugins/project/lib/project/dir_controller.rb +4 -1
  113. data/plugins/project/lib/project/find_file_dialog.rb +16 -12
  114. data/plugins/project/lib/project/manager.rb +30 -1
  115. data/plugins/project_search/vendor/lucene/CHANGELOG +147 -0
  116. data/plugins/project_search/vendor/lucene/CONTRIBUTORS +17 -0
  117. data/plugins/project_search/vendor/lucene/Gemfile +9 -0
  118. data/plugins/project_search/vendor/lucene/Gemfile.lock +33 -0
  119. data/plugins/project_search/vendor/lucene/LICENSE +19 -0
  120. data/plugins/project_search/vendor/lucene/README.rdoc +283 -0
  121. data/plugins/project_search/vendor/lucene/Rakefile +35 -0
  122. data/plugins/project_search/vendor/lucene/examples/active_model/serializers.rb +25 -0
  123. data/plugins/project_search/vendor/lucene/examples/active_model/validation.rb +26 -0
  124. data/plugins/project_search/vendor/lucene/examples/admin/Rakefile +4 -0
  125. data/plugins/project_search/vendor/lucene/examples/admin/admin.rb +29 -0
  126. data/plugins/project_search/vendor/lucene/examples/admin/public/jquery.js +4376 -0
  127. data/plugins/project_search/vendor/lucene/examples/admin/public/neo4j.css +153 -0
  128. data/plugins/project_search/vendor/lucene/examples/admin/public/neo_admin.js +18 -0
  129. data/plugins/project_search/vendor/lucene/examples/admin/spec/admin_spec.rb +26 -0
  130. data/plugins/project_search/vendor/lucene/examples/admin/views/index.erb +21 -0
  131. data/plugins/project_search/vendor/lucene/examples/filetree/README.rdoc +9 -0
  132. data/plugins/project_search/vendor/lucene/examples/filetree/app.rb +7 -0
  133. data/plugins/project_search/vendor/lucene/examples/filetree/batch.props +5 -0
  134. data/plugins/project_search/vendor/lucene/examples/filetree/features/step_definitions/add_steps.rb +121 -0
  135. data/plugins/project_search/vendor/lucene/examples/filetree/features/support/env.rb +30 -0
  136. data/plugins/project_search/vendor/lucene/examples/filetree/features/support/rspec_helper.rb +50 -0
  137. data/plugins/project_search/vendor/lucene/examples/filetree/features/treesizes.feature +19 -0
  138. data/plugins/project_search/vendor/lucene/examples/imdb/1_create_neo_db.rb +66 -0
  139. data/plugins/project_search/vendor/lucene/examples/imdb/2_index_db.rb +23 -0
  140. data/plugins/project_search/vendor/lucene/examples/imdb/README +12 -0
  141. data/plugins/project_search/vendor/lucene/examples/imdb/find_actors.rb +56 -0
  142. data/plugins/project_search/vendor/lucene/examples/imdb/install.sh +12 -0
  143. data/plugins/project_search/vendor/lucene/examples/imdb/model.rb +37 -0
  144. data/plugins/project_search/vendor/lucene/examples/railway/README +111 -0
  145. data/plugins/project_search/vendor/lucene/examples/railway/railnet-app.rb +31 -0
  146. data/plugins/project_search/vendor/lucene/examples/railway/railnet-data.rb +42 -0
  147. data/plugins/project_search/vendor/lucene/examples/rest/example.rb +41 -0
  148. data/plugins/project_search/vendor/lucene/examples/you_might_know/YouMightKnow.java +60 -0
  149. data/plugins/project_search/vendor/lucene/examples/you_might_know/all_simple_paths.rb +34 -0
  150. data/plugins/project_search/vendor/lucene/examples/you_might_know/nodes.rb +34 -0
  151. data/plugins/project_search/vendor/lucene/examples/you_might_know/you_might_know.rb +50 -0
  152. data/plugins/project_search/vendor/lucene/lib/lucene.rb +15 -0
  153. data/plugins/project_search/vendor/lucene/lib/lucene/config.rb +145 -0
  154. data/plugins/project_search/vendor/lucene/lib/lucene/document.rb +96 -0
  155. data/plugins/project_search/vendor/lucene/lib/lucene/field_info.rb +144 -0
  156. data/plugins/project_search/vendor/lucene/lib/lucene/hits.rb +54 -0
  157. data/plugins/project_search/vendor/lucene/lib/lucene/index.rb +267 -0
  158. data/plugins/project_search/vendor/lucene/lib/lucene/index_info.rb +146 -0
  159. data/plugins/project_search/vendor/lucene/lib/lucene/index_searcher.rb +157 -0
  160. data/plugins/project_search/vendor/lucene/lib/lucene/jars.rb +5 -0
  161. data/plugins/project_search/vendor/lucene/lib/lucene/query_dsl.rb +135 -0
  162. data/plugins/project_search/vendor/lucene/lib/lucene/transaction.rb +117 -0
  163. data/plugins/project_search/vendor/lucene/lib/lucene/version.rb +3 -0
  164. data/plugins/project_search/vendor/lucene/lucene.gemspec +23 -0
  165. data/plugins/project_search/vendor/lucene/spec/lucene/document_spec.rb +32 -0
  166. data/plugins/project_search/vendor/lucene/spec/lucene/field_info_spec.rb +70 -0
  167. data/plugins/project_search/vendor/lucene/spec/lucene/index_info_spec.rb +76 -0
  168. data/plugins/project_search/vendor/lucene/spec/lucene/index_spec.rb +643 -0
  169. data/plugins/project_search/vendor/lucene/spec/lucene/query_dsl_spec.rb +142 -0
  170. data/plugins/project_search/vendor/lucene/spec/lucene/sort_spec.rb +101 -0
  171. data/plugins/project_search/vendor/lucene/spec/lucene/spec_helper.rb +10 -0
  172. data/plugins/project_search/vendor/lucene/spec/lucene/transaction_spec.rb +118 -0
  173. data/plugins/redcar/features/alter_font_size.feature +25 -0
  174. data/plugins/redcar/features/step_definitions/font_steps.rb +34 -0
  175. data/plugins/redcar/redcar.rb +256 -43
  176. data/plugins/repl/features/command_editing.feature +55 -0
  177. data/plugins/repl/features/command_history.feature +75 -0
  178. data/plugins/repl/features/step_definitions/repl_steps.rb +17 -1
  179. data/plugins/repl/features/support/env.rb +24 -0
  180. data/plugins/repl/features/support/fake_repl.rb +16 -0
  181. data/plugins/repl/lib/repl.rb +17 -74
  182. data/plugins/repl/lib/repl/repl_command.rb +20 -0
  183. data/plugins/repl/lib/repl/repl_mirror.rb +168 -22
  184. data/plugins/repl/lib/repl/repl_tab.rb +131 -6
  185. data/plugins/repl/plugin.rb +1 -1
  186. data/plugins/repl/spec/repl/repl_mirror_spec.rb +72 -0
  187. data/plugins/repl/spec/spec_helper.rb +1 -1
  188. data/plugins/repl_swt/lib/repl_swt.rb +7 -0
  189. data/plugins/repl_swt/lib/repl_swt/key_listener.rb +43 -0
  190. data/plugins/repl_swt/plugin.rb +8 -0
  191. data/plugins/ruby/lib/ruby.rb +35 -0
  192. data/plugins/{repl/lib/repl/ruby_mirror.rb → ruby/lib/ruby/repl_mirror.rb} +12 -12
  193. data/plugins/ruby/lib/{syntax_check/ruby.rb → ruby/syntax_checker.rb} +3 -3
  194. data/plugins/ruby/plugin.rb +5 -4
  195. data/plugins/{repl/spec/repl/ruby_mirror_spec.rb → ruby/spec/ruby/repl_mirror_spec.rb} +38 -29
  196. data/plugins/ruby/spec/spec_helper.rb +5 -0
  197. data/plugins/runnables/lib/runnables.rb +2 -0
  198. data/plugins/runnables/lib/runnables/command_output_controller.rb +5 -0
  199. data/plugins/runnables/lib/runnables/output_processor.rb +14 -3
  200. data/plugins/runnables/views/command_output.html.erb +3 -2
  201. data/plugins/scm/lib/scm.rb +4 -2
  202. data/plugins/scm/lib/scm/diff_mirror.rb +6 -6
  203. data/plugins/scm_git/lib/scm_git.rb +136 -107
  204. data/plugins/scm_git/lib/scm_git/change.rb +28 -19
  205. data/plugins/snippets/lib/snippets/explorer.rb +2 -2
  206. data/plugins/swt/lib/swt/full_swt.rb +1 -0
  207. data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +4 -0
  208. data/plugins/syntax_check/features/support/env.rb +3 -0
  209. data/plugins/syntax_check/lib/syntax_check.rb +71 -5
  210. data/plugins/syntax_check/lib/syntax_check/annotation.rb +61 -0
  211. data/plugins/test_runner/lib/test_runner.rb +39 -0
  212. data/plugins/test_runner/lib/test_runner/rspec_runner.rb +20 -0
  213. data/plugins/test_runner/lib/test_runner/run_test_command.rb +63 -0
  214. data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +26 -0
  215. data/plugins/test_runner/plugin.rb +8 -0
  216. data/plugins/test_runner/spec/run_test_command_spec.rb +51 -0
  217. data/plugins/test_runner/spec/spec_helper.rb +5 -0
  218. data/plugins/textmate/lib/textmate.rb +12 -2
  219. data/plugins/textmate/vendor/redcar-bundles/Bundles/HTML.tmbundle/Syntaxes/HTML.plist +0 -2
  220. data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/Syntaxes/Mirah.plist +22 -0
  221. data/plugins/textmate/vendor/redcar-bundles/Bundles/Mirah.tmbundle/info.plist +12 -0
  222. data/plugins/textmate/vendor/redcar-bundles/Bundles/Ruby.tmbundle/Syntaxes/Ruby.plist +2 -0
  223. data/plugins/todo_list/lib/todo_list.rb +7 -0
  224. data/plugins/todo_list/lib/todo_list/todo_controller.rb +3 -1
  225. data/plugins/tree/lib/tree.rb +4 -0
  226. data/plugins/tree_view_swt/lib/tree_view_swt.rb +5 -0
  227. data/plugins/web_bookmarks/lib/web_bookmarks.rb +10 -0
  228. metadata +137 -22
  229. data/plugins/document_search/features/search.feature +0 -163
  230. data/plugins/document_search/lib/document_search/replace_all_command.rb +0 -27
  231. data/plugins/document_search/lib/document_search/replace_command.rb +0 -38
  232. data/plugins/document_search/lib/document_search/replace_next_command.rb +0 -27
  233. data/plugins/document_search/lib/document_search/search_and_replace.rb +0 -81
  234. data/plugins/ruby/README +0 -6
@@ -166,5 +166,28 @@ module Swt
166
166
 
167
167
  return Image.new(display, dd)
168
168
  end
169
+
170
+ def self.pixel_location_at_offset(offset)
171
+ edit_view = Redcar::EditView.focussed_tab_edit_view
172
+ if edit_view
173
+ text_widget = edit_view.controller.mate_text.viewer.get_text_widget
174
+ location = text_widget.get_location_at_offset(offset)
175
+ x, y = location.x, location.y
176
+ widget_offset = text_widget.to_display(0,0)
177
+ x += widget_offset.x
178
+ y += widget_offset.y
179
+ [x,y]
180
+ end
181
+ end
182
+
183
+ def self.below_pixel_location_at_offset(offset)
184
+ x, y = GraphicsUtils.pixel_location_at_offset(offset)
185
+ if x and y
186
+ edit_view = Redcar::EditView.focussed_tab_edit_view
187
+ text_widget = edit_view.controller.mate_text.viewer.get_text_widget
188
+ y += text_widget.get_line_height
189
+ [x, y]
190
+ end
191
+ end
169
192
  end
170
193
  end
@@ -40,6 +40,13 @@ module Swt
40
40
  :percents => percents.collect { |i| i / 100.0 },
41
41
  :vertical => vertical }
42
42
  end
43
+
44
+ def set_background(colors, percents, vertical = true)
45
+ @background_color_options = { :colors => colors,
46
+ :percents => percents.collect { |i| i / 100.0 },
47
+ :vertical => vertical }
48
+ @tab_area.background = colors[colors.size - 1]
49
+ end
43
50
 
44
51
  def add_item(tab)
45
52
  @items << tab
@@ -41,7 +41,7 @@ module Swt
41
41
  h = idx > 0 ? extent.height * options[:percents][idx - 1] : 0
42
42
  gc.fill_gradient_rectangle(0, h, extent.width, extent.height * p, true)
43
43
  else
44
- h = idx > 0 ? extent.width * options[:percents][idx - 1] : 0
44
+ w = idx > 0 ? extent.width * options[:percents][idx - 1] : 0
45
45
  gc.fill_gradient_rectangle(w, 0, extent.width * p, extent.height, false)
46
46
  end
47
47
  end
@@ -0,0 +1,142 @@
1
+ require File.join(File.dirname(__FILE__), "..", "spec_helper")
2
+
3
+ describe Redcar::ApplicationSWT::Gradient do
4
+
5
+ color_position_hash = {100 => "#000000", 0 => "#FFFFFF", 50 => "#999999"}
6
+ subject { Redcar::ApplicationSWT::Gradient.new(color_position_hash) }
7
+
8
+ it "should output its contents as a hash" do
9
+ subject.to_hash.should == color_position_hash
10
+ end
11
+
12
+ describe "swt_stops" do
13
+
14
+ it "not include the implied zero stop" do
15
+ subject.swt_stops.should_not include(0)
16
+ end
17
+
18
+ it "should include nonzero stops from the input" do
19
+ subject.swt_stops.to_a.should == [50, 100]
20
+ end
21
+
22
+ it "should be in increasing order" do
23
+ subject.swt_stops.sort.should == subject.swt_stops.to_a
24
+ end
25
+
26
+ end
27
+
28
+ describe "swt_colors" do
29
+
30
+ it "should be Swt::Color versions of the gradient colors in increasing order by stop position" do
31
+ subject.swt_colors[0].should == Swt::Graphics::Color.new(Redcar::ApplicationSWT.display, 255, 255, 255)
32
+ subject.swt_colors[1].should == Swt::Graphics::Color.new(Redcar::ApplicationSWT.display, 153, 153, 153)
33
+ subject.swt_colors[2].should == Swt::Graphics::Color.new(Redcar::ApplicationSWT.display, 0, 0, 0)
34
+ end
35
+
36
+ end
37
+
38
+ context "when constructed with an implied 0-position stop" do
39
+
40
+ subject { Redcar::ApplicationSWT::Gradient.new( 50 => "#000000", 100 => "#FFFFFF" ) }
41
+
42
+ describe "swt_stops" do
43
+
44
+ it "should have the first color position as its first element" do
45
+ subject.swt_stops.first.should == 50
46
+ end
47
+
48
+ end
49
+
50
+ describe "swt_colors" do
51
+
52
+ it "should have the gradient's first color as its first two elements" do
53
+ first_color = Swt::Graphics::Color.new(Redcar::ApplicationSWT.display, 0, 0, 0)
54
+ subject.swt_colors[0].should == first_color
55
+ subject.swt_colors[1].should == first_color
56
+ end
57
+
58
+ end
59
+
60
+ end
61
+
62
+ context "when constructed with an implied 100-position stop" do
63
+
64
+ subject { Redcar::ApplicationSWT::Gradient.new( 0 => "#000000", 50 => "#FFFFFF" ) }
65
+
66
+ describe "swt_stops" do
67
+
68
+ it "should include a stop at position 100" do
69
+ subject.swt_stops.should include(100)
70
+ end
71
+
72
+ end
73
+
74
+ describe "swt_colors" do
75
+
76
+ it "should have the gradient's last color as its last two elements" do
77
+ last_color = Swt::Graphics::Color.new(Redcar::ApplicationSWT.display, 255, 255, 255)
78
+ subject.swt_colors[1].should == last_color
79
+ subject.swt_colors[2].should == last_color
80
+ end
81
+
82
+ end
83
+
84
+ end
85
+
86
+ context "when constructed with stop position below 0" do
87
+
88
+ it "should raise an ArgumentError" do
89
+ expect{ Redcar::ApplicationSWT::Gradient.new( -999 => "#FFFFFF") }.should raise_error(ArgumentError)
90
+ end
91
+
92
+ end
93
+
94
+ context "when constructed with stop position above 100" do
95
+
96
+ it "should raise an ArgumentError" do
97
+ expect{ Redcar::ApplicationSWT::Gradient.new( 999 => "#FFFFFF") }.should raise_error(ArgumentError)
98
+ end
99
+
100
+ end
101
+
102
+ context "when constructed with three-character hex strings for colors" do
103
+
104
+ subject { Redcar::ApplicationSWT::Gradient.new( 50 => "#F0F" ) }
105
+
106
+ it "should process the colors correctly" do
107
+ subject.swt_colors[0].should == Swt::Graphics::Color.new(Redcar::ApplicationSWT.display, 255, 0, 255)
108
+ end
109
+
110
+ end
111
+
112
+ context "when constructed with a single color instead of a gradient" do
113
+
114
+ subject { Redcar::ApplicationSWT::Gradient.new( "#FFFFFF" ) }
115
+
116
+ it "it should construct a gradient with that color" do
117
+ subject.swt_colors[0].should == Swt::Graphics::Color.new(Redcar::ApplicationSWT.display, 255, 255, 255)
118
+ end
119
+
120
+ end
121
+
122
+ context "when constructed with a color name" do
123
+
124
+ subject { Redcar::ApplicationSWT::Gradient.new( "black" ) }
125
+
126
+ it "should return the SWT system color corresponding to that name" do
127
+ subject.swt_colors[0].should == Redcar::ApplicationSWT.display.get_system_color(Swt::SWT::COLOR_BLACK)
128
+ end
129
+
130
+ end
131
+
132
+ context "when constructed with the color 'none'" do
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
@@ -3,6 +3,7 @@ require 'auto_completer/current_document_completion_source'
3
3
  require 'auto_completer/document_controller'
4
4
  require 'auto_completer/word_iterator'
5
5
  require 'auto_completer/word_list'
6
+ require 'auto_completer/list_dialog'
6
7
 
7
8
  module Redcar
8
9
  class AutoCompleter
@@ -24,22 +25,6 @@ module Redcar
24
25
  result
25
26
  end
26
27
 
27
- #def self.edit_view_context_menus(offset)
28
- # cmd = AutoCompleter::MenuAutoCompleterCommand.new
29
- # cmd.merge_menu(offset)
30
- # completions = cmd.run
31
- # Menu::Builder.build do
32
- # sub_menu "Auto Completion" do
33
- # if completions
34
- # completions.entries.each {|item| append item }
35
- # else
36
- # item "(No Suggestions)" do
37
- # end
38
- # end
39
- # end
40
- # end
41
- #end
42
-
43
28
  def self.menus
44
29
  Menu::Builder.build do
45
30
  sub_menu "Edit" do
@@ -122,38 +107,21 @@ module Redcar
122
107
 
123
108
  class MenuAutoCompleterCommand < AutoCompleteCommand
124
109
 
125
- def merge_menu(offset)
126
- @merge_menu = offset
127
- end
128
-
129
110
  def execute
130
- #TODO: something with offset?
131
111
  controller = doc.controllers(AutoCompleter::DocumentController).first
132
112
  input_word = ""
133
- word_list = controller.word_list
113
+ word_list = controller.word_list
134
114
  prefix, left, right = touched_prefix
135
115
  if prefix
136
116
  word_list = alternatives(prefix)
137
- controller.word_list = word_list
138
- controller.prefix = prefix
139
- controller.left = left
140
- controller.right = right
141
-
142
- cur_doc = doc
143
- builder = Menu::Builder.new do
144
- word_list.words.each do |current_word, word_distance|
145
- item(current_word) do
146
- offset = cur_doc.cursor_offset - prefix.length
147
- text = current_word[input_word.length..current_word.length]
148
- cur_doc.replace(offset, prefix.length, text)
149
- end
150
- end
151
- end
152
- if @merge_menu
153
- builder.menu
154
- else
155
- Application::Dialog.popup_menu(builder.menu, :cursor)
156
- end
117
+ cur_doc = doc
118
+ key_list = word_list.words.keys
119
+ height = [key_list.size,8].min
120
+ dialog = ListDialog.new(prefix,cur_doc)
121
+ dialog.update_list(key_list)
122
+ dialog.set_location(cur_doc.cursor_offset - prefix.length)
123
+ dialog.set_size 300, height
124
+ dialog.open
157
125
  end
158
126
  end
159
127
  end
@@ -0,0 +1,21 @@
1
+
2
+ module Redcar
3
+ class AutoCompleter
4
+ class ListDialog < Redcar::ModelessListDialog
5
+
6
+ def initialize(prefix,document)
7
+ super()
8
+ @prefix = prefix
9
+ @doc = document
10
+ end
11
+
12
+ def selected(index)
13
+ if text = select(index)
14
+ offset = @doc.cursor_offset - @prefix.length
15
+ @doc.replace(offset, @prefix.length, text)
16
+ close
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,33 @@
1
+
2
+ require 'clojure/repl_mirror'
3
+
4
+ module Redcar
5
+ class Clojure
6
+
7
+ def self.menus
8
+ Menu::Builder.build do
9
+ sub_menu "Plugins" do
10
+ sub_menu "REPL" do
11
+ item "Open Clojure REPL", ClojureOpenREPL
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ def self.load_dependencies
18
+ unless @loaded
19
+ require File.join(Redcar.asset_dir, "clojure.jar")
20
+ require File.join(Redcar.asset_dir, "clojure-contrib.jar")
21
+ require File.join(Redcar.asset_dir, "org-enclojure-repl-server.jar")
22
+ require File.dirname(__FILE__) + "/../vendor/enclojure-wrapper.jar"
23
+ @loaded = true
24
+ end
25
+ end
26
+
27
+ class ClojureOpenREPL < Redcar::REPL::OpenREPL
28
+ def execute
29
+ open_repl(ReplMirror.new)
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,49 +1,45 @@
1
1
 
2
2
  module Redcar
3
- class REPL
4
- class ClojureMirror < ReplMirror
5
-
3
+ class Clojure
4
+ class ReplMirror < Redcar::REPL::ReplMirror
5
+
6
6
  def title
7
7
  "Clojure REPL"
8
8
  end
9
-
9
+
10
10
  def grammar_name
11
11
  "Clojure REPL"
12
12
  end
13
-
13
+
14
14
  def prompt
15
15
  "user=>"
16
16
  end
17
-
17
+
18
18
  def evaluator
19
- @evaluator ||= ClojureMirror::Evaluator.new(self)
19
+ @evaluator ||= Evaluator.new(self)
20
20
  end
21
-
21
+
22
22
  def format_error(e)
23
23
  "ERROR: #{e.message}\n\n#{e.backtrace.join("\n")}"
24
24
  end
25
25
 
26
26
  class Evaluator
27
27
  attr_reader :wrapper
28
-
29
- def self.load_clojure_dependencies
28
+
29
+ def self.load_dependencies
30
30
  unless @loaded
31
- require File.join(Redcar.asset_dir, "clojure.jar")
32
- require File.join(Redcar.asset_dir, "clojure-contrib.jar")
33
- require File.join(Redcar.asset_dir, "org-enclojure-repl-server.jar")
34
- require File.dirname(__FILE__) + "/../../vendor/enclojure-wrapper.jar"
35
-
31
+ Clojure.load_dependencies
36
32
  import 'redcar.repl.Wrapper'
37
33
  @loaded = true
38
34
  end
39
35
  end
40
36
 
41
37
  def initialize(mirror)
42
- ClojureMirror::Evaluator.load_clojure_dependencies
38
+ Evaluator.load_dependencies
43
39
  @mirror = mirror
44
40
  @wrapper ||= begin
45
- wrapper = Wrapper.new
46
-
41
+ wrapper = Wrapper.new
42
+
47
43
  @thread = Thread.new do
48
44
  loop do
49
45
  output = wrapper.getResult
@@ -51,11 +47,11 @@ module Redcar
51
47
  @result = $1
52
48
  end
53
49
  end
54
-
50
+
55
51
  wrapper
56
52
  end
57
53
  end
58
-
54
+
59
55
  def execute(expr)
60
56
  wrapper.sendToRepl(expr)
61
57
  true until @result
@@ -0,0 +1,9 @@
1
+
2
+ Plugin.define do
3
+ name "Clojure"
4
+ version "1.0"
5
+ file "lib", "clojure"
6
+ object "Redcar::Clojure"
7
+ dependencies "redcar", ">0",
8
+ "repl", ">0"
9
+ end
@@ -1,9 +1,9 @@
1
1
  require File.join(File.dirname(__FILE__), '..', 'spec_helper')
2
2
 
3
- class Redcar::REPL
4
- describe ClojureMirror do
3
+ class Redcar::Clojure
4
+ describe ReplMirror do
5
5
  before(:all) do
6
- @mirror = ClojureMirror.new
6
+ @mirror = ReplMirror.new
7
7
  @changed_event = false
8
8
  @mirror.add_listener(:change) { @changed_event = true }
9
9
  end
@@ -12,44 +12,43 @@ class Redcar::REPL
12
12
  while @mirror.read.nil? || @mirror.read[-3,3] != "=> "
13
13
  end
14
14
  end
15
-
15
+
16
16
  describe "before executing" do
17
17
  it "should exist" do
18
18
  @mirror.should be_exist
19
19
  end
20
-
20
+
21
21
  it "should have a title" do
22
22
  @mirror.title.should == "Clojure REPL"
23
23
  end
24
-
24
+
25
25
  it "should not be changed" do
26
26
  @mirror.should_not be_changed
27
27
  end
28
28
  end
29
-
29
+
30
30
  describe "after executing" do
31
31
  it "should exist" do
32
32
  @mirror.should be_exist
33
33
  end
34
-
34
+
35
35
  it "should have a title" do
36
36
  @mirror.title.should == "Clojure REPL"
37
37
  end
38
-
38
+
39
39
  it "should not be changed" do
40
40
  @mirror.should_not be_changed
41
41
  end
42
-
42
+
43
43
  it "should have a prompt" do
44
44
  wait_for_prompt
45
45
  @mirror.read.should == (<<-CLOJURE).chomp
46
46
  # Clojure REPL
47
+ # type 'help' for help
47
48
 
48
49
  user=>
49
50
  CLOJURE
50
51
  end
51
-
52
52
  end
53
-
54
53
  end
55
- end
54
+ end