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
@@ -85,7 +85,7 @@ module Redcar
85
85
  JavaMateView::ThemeManager.load_themes(dir)
86
86
  end
87
87
 
88
- attr_reader :mate_text, :widget, :model
88
+ attr_reader :mate_text, :widget, :model, :key_listener, :verify_key_listener
89
89
 
90
90
  def initialize(model, parent, options={})
91
91
  @options = options
@@ -110,7 +110,7 @@ module Redcar
110
110
 
111
111
  create_model_listeners
112
112
  end
113
-
113
+
114
114
  def create_mate_text
115
115
  @mate_text = JavaMateView::MateText.new(@parent, !!@options[:single_line])
116
116
  @mate_text.set_font(EditView.font, EditView.font_size)
@@ -288,7 +288,7 @@ module Redcar
288
288
  @mate_text.get_text_widget.right_margin = 0
289
289
  end
290
290
  end
291
-
291
+
292
292
  def char_width
293
293
  return 0 if !!@options[:single_line]
294
294
  @char_width ||= begin
@@ -299,11 +299,11 @@ module Redcar
299
299
  width
300
300
  end
301
301
  end
302
-
302
+
303
303
  def clear_char_width
304
304
  @char_width = nil
305
305
  end
306
-
306
+
307
307
  def create_document
308
308
  @document = EditViewSWT::Document.new(@model.document, @mate_text.mate_document)
309
309
  @model.document.controller = @document
@@ -317,17 +317,17 @@ module Redcar
317
317
  h5 = @model.add_listener(:invisibles_changed) do |new_bool|
318
318
  @mate_text.showInvisibles(new_bool)
319
319
  end
320
-
320
+
321
321
  h6 = @model.add_listener(:word_wrap_changed) do |should_word_wrap|
322
322
  @mate_text.set_word_wrap(should_word_wrap)
323
323
  reset_right_margin
324
324
  end
325
-
325
+
326
326
  h11 = @model.add_listener(:margin_column_changed) do |new_column|
327
327
  @mate_text.set_margin_column(new_column)
328
328
  reset_right_margin
329
329
  end
330
-
330
+
331
331
  h12 = @model.add_listener(:show_margin_changed) do |new_bool|
332
332
  if new_bool
333
333
  @mate_text.set_margin_column(@model.margin_column)
@@ -335,13 +335,13 @@ module Redcar
335
335
  @mate_text.set_margin_column(-1)
336
336
  end
337
337
  end
338
-
338
+
339
339
  h7 = @model.add_listener(:font_changed) do
340
340
  @mate_text.set_font(EditView.font, EditView.font_size)
341
341
  clear_char_width
342
342
  reset_right_margin
343
343
  end
344
-
344
+
345
345
  h8 = @model.add_listener(:theme_changed) do
346
346
  @mate_text.set_theme_by_name(EditView.theme)
347
347
  end
@@ -355,8 +355,10 @@ module Redcar
355
355
  @mate_text.getTextWidget.addFocusListener(FocusListener.new(self))
356
356
  @mate_text.getTextWidget.addVerifyListener(VerifyListener.new(@model.document, self))
357
357
  @mate_text.getTextWidget.addModifyListener(ModifyListener.new(@model.document, self))
358
- @mate_text.get_control.add_verify_key_listener(VerifyKeyListener.new(self))
359
- @mate_text.get_control.add_key_listener(KeyListener.new(self))
358
+ @verify_key_listener = VerifyKeyListener.new(self)
359
+ @key_listener = KeyListener.new(self)
360
+ @mate_text.get_control.add_verify_key_listener(@verify_key_listener)
361
+ @mate_text.get_control.add_key_listener(@key_listener)
360
362
  @handlers << [@model.document, h1] << [@model, h2] << [@model, h3] << [@model, h4] <<
361
363
  [@model, h5] << [@model, h6] << [@model, h7] << [@model, h8] <<
362
364
  [@model, h9] << [@model, h11] << [@model.document, h13]
@@ -467,15 +469,15 @@ module Redcar
467
469
  @mate_text.get_text_widget.add_word_movement_listener(WordMoveListener.new(self))
468
470
  @mate_text.get_text_widget.add_control_listener(ControlListener.new(self))
469
471
  end
470
-
472
+
471
473
  class ControlListener
472
474
  def initialize(edit_view_swt)
473
475
  @edit_view_swt = edit_view_swt
474
476
  end
475
-
477
+
476
478
  def controlMoved(*_)
477
479
  end
478
-
480
+
479
481
  def controlResized(e)
480
482
  @edit_view_swt.reset_right_margin
481
483
  end
@@ -498,6 +500,22 @@ module Redcar
498
500
  @mate_text.viewer.set_top_index(line_index)
499
501
  end
500
502
 
503
+ def scroll_to_horizontal_offset(offset)
504
+ @mate_text.get_text_widget.set_horizontal_index(offset)
505
+ end
506
+
507
+ def smallest_visible_horizontal_index
508
+ @mate_text.get_text_widget.get_horizontal_index
509
+ end
510
+
511
+ def largest_visible_horizontal_index
512
+ wpix = @mate_text.get_text_widget.get_client_area.width
513
+ gc = org.eclipse.swt.graphics.GC.new(@mate_text.get_text_widget)
514
+ inc = gc.getFontMetrics().getAverageCharWidth()
515
+ gc.dispose
516
+ @mate_text.get_text_widget.get_horizontal_index + (wpix/inc)
517
+ end
518
+
501
519
  def model_grammar_changed(name)
502
520
  @mate_text.set_grammar_by_name(name)
503
521
  end
@@ -29,6 +29,7 @@ module Encryption
29
29
  def execute
30
30
  Encryption.lazy_load
31
31
  result = Redcar::Application::Dialog.input("Password", "Enter password")
32
+ return if result[:button] == :cancel
32
33
  pw = result[:value]
33
34
  begin
34
35
  doc.text = Encryption.decrypt(doc.to_s, pw)
@@ -42,6 +43,7 @@ module Encryption
42
43
  def execute
43
44
  Encryption.lazy_load
44
45
  result = Redcar::Application::Dialog.input("Password", "Enter password")
46
+ return if result[:button] == :cancel
45
47
  pw = result[:value]
46
48
  doc.text = Encryption.encrypt(doc.to_s, pw)
47
49
  end
@@ -5,14 +5,12 @@ module Redcar
5
5
  class FindInProject
6
6
  def self.menus
7
7
  Redcar::Menu::Builder.build do
8
- sub_menu "Edit" do
9
- sub_menu "Search" do
10
- item "Find In Project!", Redcar::FindInProject::OpenSearch
11
- end
8
+ sub_menu "Project" do
9
+ item "Find in Project!", :command => Redcar::FindInProject::OpenSearch, :priority => 3
12
10
  end
13
11
  end
14
12
  end
15
-
13
+
16
14
  def self.toolbars
17
15
  ToolBar::Builder.build do
18
16
  item "Find in Project", :command => OpenSearch, :icon => File.join(Redcar::ICONS_DIRECTORY, "application-search-result.png"), :barname => :project
@@ -1,5 +1,7 @@
1
1
  <% jquery_path = File.expand_path(File.join(Redcar.root, %w(plugins html_view assets jquery-1.4.min.js))) %>
2
2
  <script type="text/javascript" src="file://<%= jquery_path %>"></script>
3
+ <% json_path = File.expand_path(File.join(Redcar.root, %w(plugins html_view assets json2.js))) %>
4
+ <script type="text/javascript" src="file://<%= json_path %>"></script>
3
5
 
4
6
  <% plugin_css = File.expand_path(File.join(@plugin_root, %w(lib find_in_project stylesheets style.css))) %>
5
7
  <link rel="stylesheet" href="file://<%= plugin_css %>" type="text/css" media="screen">
@@ -1,5 +1,5 @@
1
- When /^I add "([^"]*)" to the groovy classpath$/ do |dir|
2
- File.open(File.expand_path("../../fixtures/.redcar/classpath.groovy", __FILE__), "a") do |f|
1
+ When /^I add "([^"]*)" to the "([^"]*)" classpath$/ do |dir,plugin|
2
+ File.open(File.expand_path("plugins/#{plugin}/features/fixtures/.redcar/classpath.groovy"), "a") do |f|
3
3
  f.puts <<-CONFIG
4
4
  def redcar_config = new File(getClass().protectionDomain.codeSource.location.path).parentFile
5
5
  def project = redcar_config.parentFile
@@ -51,7 +51,7 @@ Feature: Syntax Checking for Groovy
51
51
  Given I have not suppressed syntax checking message dialogs
52
52
  When I will choose "plugins/groovy/features/fixtures" from the "open_directory" dialog
53
53
  And I open a directory
54
- And I add "lib2" to the groovy classpath
54
+ And I add "lib2" to the "groovy" classpath
55
55
  And I replace the contents with "class Foo {\n def x = new Bar(10)\n def y = new FooBaz()\n}"
56
56
  And I save the tab
57
57
  Then I should see a message box containing "An error occurred while parsing"
@@ -66,7 +66,7 @@ Feature: Syntax Checking for Groovy
66
66
  And I save the tab
67
67
  Then the tab should not have annotations
68
68
  When I close the focussed tab
69
- And I add "lib2" to the groovy classpath
69
+ And I add "lib2" to the "groovy" classpath
70
70
  And I replace the contents with "class Foo {\n def x = new Bar(10)\n def y = new FooBaz()\n}"
71
71
  And I save the tab
72
- Then the tab should have an annotation on line 2
72
+ Then the tab should have an annotation on line 2
@@ -0,0 +1,38 @@
1
+
2
+ require 'groovy/commands'
3
+ require 'groovy/repl_mirror'
4
+ require 'groovy/syntax_checker'
5
+
6
+ module Redcar
7
+ class Groovy
8
+
9
+ def self.load_dependencies
10
+ unless @loaded
11
+ require File.join(Redcar.asset_dir,"groovy-all")
12
+ @loaded = true
13
+ end
14
+ end
15
+
16
+ def self.menus
17
+ Redcar::Menu::Builder.build do
18
+ sub_menu "Plugins" do
19
+ sub_menu "REPL" do
20
+ item "Open Groovy REPL", GroovyOpenREPL
21
+ end
22
+ end
23
+ end
24
+ end
25
+
26
+ def self.keymaps
27
+ osx = Keymap.build("main", :osx) do
28
+ link "Cmd+Alt+G", GroovyOpenREPL
29
+ end
30
+
31
+ linwin = Keymap.build("main", [:linux, :windows]) do
32
+ link "Ctrl+Alt+G", GroovyOpenREPL
33
+ end
34
+
35
+ [linwin, osx]
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,10 @@
1
+
2
+ module Redcar
3
+ class Groovy
4
+ class GroovyOpenREPL < Redcar::REPL::OpenREPL
5
+ def execute
6
+ open_repl(ReplMirror.new)
7
+ end
8
+ end
9
+ end
10
+ end
@@ -2,8 +2,8 @@
2
2
  require 'java'
3
3
 
4
4
  module Redcar
5
- class REPL
6
- class GroovyMirror < ReplMirror
5
+ class Groovy
6
+ class ReplMirror < Redcar::REPL::ReplMirror
7
7
  def title
8
8
  "Groovy REPL"
9
9
  end
@@ -11,13 +11,13 @@ module Redcar
11
11
  def grammar_name
12
12
  "Groovy REPL"
13
13
  end
14
-
14
+
15
15
  def prompt
16
16
  "groovy>"
17
- end
17
+ end
18
18
 
19
19
  def evaluator
20
- @instance ||= GroovyMirror::Evaluator.new
20
+ @instance ||= ReplMirror::Evaluator.new
21
21
  end
22
22
 
23
23
  def format_error(e)
@@ -25,19 +25,39 @@ module Redcar
25
25
  "ERROR #{e.class}:\n #{e.message}\n #{backtrace.join("\n ")}"
26
26
  end
27
27
 
28
+ def help
29
+ h = super
30
+ h << """
31
+ Note on Groovy Script Scoping:
32
+ Classes, undefined variables, and undefined closures are saved in the script
33
+ binding between statements.
34
+ Defined methods, closures, and variables are not added to the binding,
35
+ because they are considered local variables and thus are not available after
36
+ the defining statement.
37
+
38
+ Example:
39
+
40
+ def foo = 'hello! I am a local variable'
41
+ foo = 'hi! I am a binding variable'
42
+
43
+ See 'http://groovy.codehaus.org/Scoping+and+the+Semantics+of+%22def%22'
44
+ for more information.
45
+ """
46
+ end
47
+
28
48
  class Evaluator
29
- def self.load_groovy_dependencies
49
+ def self.load_dependencies
30
50
  unless @loaded
31
- require File.join(Redcar.asset_dir,"groovy-all")
51
+ Groovy.load_dependencies
32
52
  import 'groovy.lang.GroovyShell'
33
53
  import 'java.io.PrintWriter'
34
54
  import 'java.io.StringWriter'
35
55
  @loaded = true
36
56
  end
37
57
  end
38
-
58
+
39
59
  def initialize
40
- GroovyMirror::Evaluator.load_groovy_dependencies
60
+ Evaluator.load_dependencies
41
61
  @out = StringWriter.new
42
62
  @shell = GroovyShell.new
43
63
  @shell.setProperty('out',@out)
@@ -48,9 +68,9 @@ module Redcar
48
68
  end
49
69
 
50
70
  def execute(cmd)
51
- output = @shell.evaluate(cmd).to_s
52
- output = "null" unless output and not output.strip.empty?
53
- if @out and not @out.toString().strip.empty?
71
+ output = @shell.evaluate(cmd,"GroovyREPL").to_s
72
+ output = "null" unless output and not output.empty?
73
+ if @out and not @out.toString().empty?
54
74
  console = @out.toString() + "\n"
55
75
  else
56
76
  console = ""
@@ -62,4 +82,4 @@ module Redcar
62
82
  end
63
83
  end
64
84
  end
65
- end
85
+ end
@@ -1,14 +1,14 @@
1
+
1
2
  require 'java'
2
3
 
3
4
  module Redcar
4
- module SyntaxCheck
5
- class Groovy < Checker
5
+ class Groovy
6
+ class SyntaxChecker < Redcar::SyntaxCheck::Checker
6
7
  supported_grammars "Groovy", "Easyb"
7
8
 
8
- def initialize(document)
9
- super
9
+ def self.load_dependencies
10
10
  unless @loaded
11
- require File.join(Redcar.asset_dir,"groovy-all")
11
+ Groovy.load_dependencies
12
12
  import 'groovy.lang.GroovyShell'
13
13
  import 'org.codehaus.groovy.control.CompilationFailedException'
14
14
  import 'org.codehaus.groovy.control.CompilerConfiguration'
@@ -16,6 +16,11 @@ module Redcar
16
16
  end
17
17
  end
18
18
 
19
+ def initialize(document)
20
+ super
21
+ SyntaxChecker.load_dependencies
22
+ end
23
+
19
24
  def check(*args)
20
25
  path = manifest_path(doc)
21
26
  name = File.basename(path)
@@ -27,7 +32,7 @@ module Redcar
27
32
  rescue CompilationFailedException => e
28
33
  create_syntax_error(doc, e.message, name).annotate
29
34
  rescue Object => e
30
- SyntaxCheck.message(
35
+ Redcar::SyntaxCheck.message(
31
36
  "An error occurred while parsing #{name}: #{e.message}",:error)
32
37
  end
33
38
  end
@@ -36,7 +41,7 @@ module Redcar
36
41
  message =~ /#{Regexp.escape(name)}: (\d+):(.*)/
37
42
  line = $1.to_i - 1
38
43
  message = $2
39
- SyntaxCheck::Error.new(doc, line, message)
44
+ Redcar::SyntaxCheck::Error.new(doc, line, message)
40
45
  end
41
46
 
42
47
  def classpath_files(project)
@@ -54,7 +59,7 @@ module Redcar
54
59
  part = shell.run(file, [])
55
60
  parts += part if part
56
61
  rescue Object => e
57
- SyntaxCheck.message(
62
+ Redcar::SyntaxCheck.message(
58
63
  "An error occurred while loading groovy classpath file #{path}: #{e.message}",:error)
59
64
  end
60
65
  end
@@ -1,7 +1,8 @@
1
1
  Plugin.define do
2
2
  name "groovy"
3
- version "0.1"
4
- file "lib", "syntax_check", "groovy"
5
- object "Redcar::SyntaxCheck::Groovy"
6
- dependencies "syntax_check", ">0"
3
+ version "1.0"
4
+ file "lib", "groovy"
5
+ object "Redcar::Groovy"
6
+ dependencies "syntax_check", ">0",
7
+ "repl", ">0"
7
8
  end
@@ -1,9 +1,9 @@
1
- require File.join(File.dirname(__FILE__), '..', 'spec_helper')
1
+ require File.join(File.dirname(__FILE__),'..', 'spec_helper')
2
2
 
3
- class Redcar::REPL
4
- describe GroovyMirror do
3
+ class Redcar::Groovy
4
+ describe ReplMirror do
5
5
  before(:all) do
6
- @mirror = GroovyMirror.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,45 @@ class Redcar::REPL
12
12
  while @mirror.read.nil? || @mirror.read[-8,8] != "groovy> "
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 == "Groovy 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 == "Groovy 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 == (<<-Groovy).chomp
46
46
  # Groovy REPL
47
+ # type 'help' for help
47
48
 
48
49
  groovy>
49
50
  Groovy
50
51
  end
51
-
52
+
52
53
  end
53
-
54
+
54
55
  end
55
56
  end