redcar-dev 0.12.17dev

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 (655) hide show
  1. data/CHANGES +664 -0
  2. data/LICENSE +32 -0
  3. data/README.md +119 -0
  4. data/Rakefile +283 -0
  5. data/bin/redcar +29 -0
  6. data/lib/redcar.rb +307 -0
  7. data/lib/redcar/installer.rb +178 -0
  8. data/lib/redcar/instance_exec.rb +25 -0
  9. data/lib/redcar/logger.rb +64 -0
  10. data/lib/redcar/plist.rb +83 -0
  11. data/lib/redcar/ruby_extensions.rb +201 -0
  12. data/lib/redcar/runner.rb +130 -0
  13. data/lib/redcar/usage.rb +42 -0
  14. data/lib/redcar_quick_start.rb +100 -0
  15. data/lib/regex_replace.rb +221 -0
  16. data/lib/tasks/app-bundle.rake +63 -0
  17. data/plugins/application/features/main_menu.feature +9 -0
  18. data/plugins/application/features/navigation_history.feature +66 -0
  19. data/plugins/application/features/step_definitions/command_steps.rb +10 -0
  20. data/plugins/application/features/step_definitions/dialog_steps.rb +25 -0
  21. data/plugins/application/features/step_definitions/filter_list_dialog_steps.rb +42 -0
  22. data/plugins/application/features/step_definitions/key_steps.rb +18 -0
  23. data/plugins/application/features/step_definitions/menu_steps.rb +42 -0
  24. data/plugins/application/features/step_definitions/navigation_history_steps.rb +4 -0
  25. data/plugins/application/features/step_definitions/speedbar_steps.rb +88 -0
  26. data/plugins/application/features/step_definitions/tree_steps.rb +107 -0
  27. data/plugins/application/features/step_definitions/window_steps.rb +17 -0
  28. data/plugins/application/features/support/env.rb +257 -0
  29. data/plugins/application/features/support/fake_event.rb +26 -0
  30. data/plugins/application/lib/application.rb +425 -0
  31. data/plugins/application/lib/application/assets/file.png +0 -0
  32. data/plugins/application/lib/application/clipboard.rb +95 -0
  33. data/plugins/application/lib/application/command.rb +108 -0
  34. data/plugins/application/lib/application/command/executor.rb +80 -0
  35. data/plugins/application/lib/application/command/history.rb +54 -0
  36. data/plugins/application/lib/application/commands/application_commands.rb +21 -0
  37. data/plugins/application/lib/application/commands/notebook_commands.rb +73 -0
  38. data/plugins/application/lib/application/commands/tab_commands.rb +105 -0
  39. data/plugins/application/lib/application/commands/treebook_commands.rb +117 -0
  40. data/plugins/application/lib/application/commands/window_commands.rb +68 -0
  41. data/plugins/application/lib/application/dialog.rb +170 -0
  42. data/plugins/application/lib/application/dialogs/filter_list_dialog.rb +123 -0
  43. data/plugins/application/lib/application/dialogs/modeless_list_dialog.rb +85 -0
  44. data/plugins/application/lib/application/event_spewer.rb +32 -0
  45. data/plugins/application/lib/application/keymap.rb +41 -0
  46. data/plugins/application/lib/application/keymap/builder.rb +23 -0
  47. data/plugins/application/lib/application/menu.rb +117 -0
  48. data/plugins/application/lib/application/menu/builder.rb +80 -0
  49. data/plugins/application/lib/application/menu/builder/group.rb +47 -0
  50. data/plugins/application/lib/application/menu/item.rb +79 -0
  51. data/plugins/application/lib/application/menu/lazy_menu.rb +25 -0
  52. data/plugins/application/lib/application/navigation_history.rb +71 -0
  53. data/plugins/application/lib/application/notebook.rb +163 -0
  54. data/plugins/application/lib/application/sensitive.rb +57 -0
  55. data/plugins/application/lib/application/sensitivity.rb +82 -0
  56. data/plugins/application/lib/application/speedbar.rb +100 -0
  57. data/plugins/application/lib/application/tab.rb +92 -0
  58. data/plugins/application/lib/application/tab/command.rb +5 -0
  59. data/plugins/application/lib/application/toolbar.rb +83 -0
  60. data/plugins/application/lib/application/toolbar/builder.rb +80 -0
  61. data/plugins/application/lib/application/toolbar/builder/group.rb +47 -0
  62. data/plugins/application/lib/application/toolbar/item.rb +71 -0
  63. data/plugins/application/lib/application/toolbar/lazy_toolbar.rb +25 -0
  64. data/plugins/application/lib/application/tree.rb +94 -0
  65. data/plugins/application/lib/application/tree/command.rb +5 -0
  66. data/plugins/application/lib/application/tree/controller.rb +64 -0
  67. data/plugins/application/lib/application/tree/mirror.rb +132 -0
  68. data/plugins/application/lib/application/treebook.rb +83 -0
  69. data/plugins/application/lib/application/window.rb +274 -0
  70. data/plugins/application/plugin.rb +8 -0
  71. data/plugins/application/spec/application/application_spec.rb +23 -0
  72. data/plugins/application/spec/application/clipboard_spec.rb +55 -0
  73. data/plugins/application/spec/application/command/executor_spec.rb +78 -0
  74. data/plugins/application/spec/application/command/history_spec.rb +49 -0
  75. data/plugins/application/spec/application/command_spec.rb +78 -0
  76. data/plugins/application/spec/application/controllers/application_controller.rb +4 -0
  77. data/plugins/application/spec/application/controllers/notebook_controller.rb +4 -0
  78. data/plugins/application/spec/application/controllers/window_controller.rb +5 -0
  79. data/plugins/application/spec/application/keymap/builder_spec.rb +17 -0
  80. data/plugins/application/spec/application/menu/builder_spec.rb +61 -0
  81. data/plugins/application/spec/application/menu/menu_item_spec.rb +17 -0
  82. data/plugins/application/spec/application/menu_spec.rb +171 -0
  83. data/plugins/application/spec/application/navigation_history_spec.rb +96 -0
  84. data/plugins/application/spec/application/notebook_spec.rb +31 -0
  85. data/plugins/application/spec/application/sensitive_spec.rb +156 -0
  86. data/plugins/application/spec/application/speedbar_spec.rb +77 -0
  87. data/plugins/application/spec/application/treebook_spec.rb +27 -0
  88. data/plugins/application/spec/application/window_spec.rb +24 -0
  89. data/plugins/application/spec/spec_helper.rb +18 -0
  90. data/plugins/application_swt/build.xml +74 -0
  91. data/plugins/application_swt/lib/application_swt.rb +218 -0
  92. data/plugins/application_swt/lib/application_swt/bring_to_front.rb +53 -0
  93. data/plugins/application_swt/lib/application_swt/clipboard.rb +42 -0
  94. data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +180 -0
  95. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +233 -0
  96. data/plugins/application_swt/lib/application_swt/dialogs/input_dialog.rb +46 -0
  97. data/plugins/application_swt/lib/application_swt/dialogs/modeless_dialog.rb +113 -0
  98. data/plugins/application_swt/lib/application_swt/dialogs/modeless_html_dialog.rb +85 -0
  99. data/plugins/application_swt/lib/application_swt/dialogs/modeless_list_dialog_controller.rb +143 -0
  100. data/plugins/application_swt/lib/application_swt/dialogs/no_buttons_dialog.rb +24 -0
  101. data/plugins/application_swt/lib/application_swt/dialogs/text_and_file_dialog.rb +118 -0
  102. data/plugins/application_swt/lib/application_swt/gradient.rb +61 -0
  103. data/plugins/application_swt/lib/application_swt/html_tab.rb +79 -0
  104. data/plugins/application_swt/lib/application_swt/icon.rb +35 -0
  105. data/plugins/application_swt/lib/application_swt/listener_helpers.rb +20 -0
  106. data/plugins/application_swt/lib/application_swt/menu.rb +167 -0
  107. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +94 -0
  108. data/plugins/application_swt/lib/application_swt/notebook.rb +148 -0
  109. data/plugins/application_swt/lib/application_swt/notebook/tab_drag_and_drop_listener.rb +124 -0
  110. data/plugins/application_swt/lib/application_swt/notebook/tab_transfer.rb +83 -0
  111. data/plugins/application_swt/lib/application_swt/speedbar.rb +185 -0
  112. data/plugins/application_swt/lib/application_swt/speedbar/button_item.rb +20 -0
  113. data/plugins/application_swt/lib/application_swt/speedbar/combo_item.rb +55 -0
  114. data/plugins/application_swt/lib/application_swt/speedbar/label_item.rb +15 -0
  115. data/plugins/application_swt/lib/application_swt/speedbar/slider_item.rb +32 -0
  116. data/plugins/application_swt/lib/application_swt/speedbar/text_box_item.rb +36 -0
  117. data/plugins/application_swt/lib/application_swt/speedbar/toggle_item.rb +29 -0
  118. data/plugins/application_swt/lib/application_swt/tab.rb +84 -0
  119. data/plugins/application_swt/lib/application_swt/toolbar.rb +138 -0
  120. data/plugins/application_swt/lib/application_swt/toolbar/binding_translator.rb +94 -0
  121. data/plugins/application_swt/lib/application_swt/treebook.rb +78 -0
  122. data/plugins/application_swt/lib/application_swt/window.rb +419 -0
  123. data/plugins/application_swt/lib/dist/application_swt.jar +0 -0
  124. data/plugins/application_swt/lib/swt/graphics_utils.rb +193 -0
  125. data/plugins/application_swt/lib/swt/vtab_folder.rb +177 -0
  126. data/plugins/application_swt/lib/swt/vtab_item.rb +78 -0
  127. data/plugins/application_swt/lib/swt/vtab_label.rb +127 -0
  128. data/plugins/application_swt/plugin.rb +8 -0
  129. data/plugins/application_swt/spec/application_swt/gradient_spec.rb +133 -0
  130. data/plugins/application_swt/spec/application_swt/menu/binding_translator_spec.rb +73 -0
  131. data/plugins/application_swt/spec/application_swt/menu_spec.rb +7 -0
  132. data/plugins/application_swt/spec/spec_helper.rb +20 -0
  133. data/plugins/application_swt/src/com/redcareditor/application_swt/CocoaUIEnhancer.java +313 -0
  134. data/plugins/auto_completer/features/auto_complete.feature +65 -0
  135. data/plugins/auto_completer/features/step_definitions/auto_complete_steps.rb +4 -0
  136. data/plugins/auto_completer/features/support/env.rb +2 -0
  137. data/plugins/auto_completer/lib/auto_completer.rb +129 -0
  138. data/plugins/auto_completer/lib/auto_completer/current_document_completion_source.rb +19 -0
  139. data/plugins/auto_completer/lib/auto_completer/document_controller.rb +52 -0
  140. data/plugins/auto_completer/lib/auto_completer/list_dialog.rb +21 -0
  141. data/plugins/auto_completer/lib/auto_completer/word_iterator.rb +48 -0
  142. data/plugins/auto_completer/lib/auto_completer/word_list.rb +47 -0
  143. data/plugins/auto_completer/plugin.rb +10 -0
  144. data/plugins/auto_indenter/features/java_style_indentation.feature +36 -0
  145. data/plugins/auto_indenter/features/ruby_style_indentation.feature +42 -0
  146. data/plugins/auto_indenter/features/step_definitions/indentation_steps.rb +15 -0
  147. data/plugins/auto_indenter/features/support/env.rb +1 -0
  148. data/plugins/auto_indenter/lib/auto_indenter.rb +108 -0
  149. data/plugins/auto_indenter/lib/auto_indenter/analyzer.rb +100 -0
  150. data/plugins/auto_indenter/lib/auto_indenter/commands.rb +66 -0
  151. data/plugins/auto_indenter/lib/auto_indenter/document_controller.rb +103 -0
  152. data/plugins/auto_indenter/lib/auto_indenter/rules.rb +41 -0
  153. data/plugins/auto_indenter/plugin.rb +9 -0
  154. data/plugins/auto_indenter/spec/auto_indenter/analyzer_spec.rb +151 -0
  155. data/plugins/auto_indenter/spec/spec_helper.rb +5 -0
  156. data/plugins/auto_pairer/features/auto_pairer.feature +92 -0
  157. data/plugins/auto_pairer/features/step_definitions/auto_pairer_steps.rb +0 -0
  158. data/plugins/auto_pairer/features/support/env.rb +1 -0
  159. data/plugins/auto_pairer/lib/auto_pairer.rb +12 -0
  160. data/plugins/auto_pairer/lib/auto_pairer/document_controller.rb +168 -0
  161. data/plugins/auto_pairer/lib/auto_pairer/pairs_for_scope.rb +57 -0
  162. data/plugins/auto_pairer/plugin.rb +9 -0
  163. data/plugins/clipboard-viewer/Screenshot.png +0 -0
  164. data/plugins/clipboard-viewer/lib/clipboard_viewer.rb +50 -0
  165. data/plugins/clipboard-viewer/lib/clipboard_viewer/browser_controller.rb +27 -0
  166. data/plugins/clipboard-viewer/lib/clipboard_viewer/clipboard_bar.rb +67 -0
  167. data/plugins/clipboard-viewer/plugin.rb +9 -0
  168. data/plugins/clipboard-viewer/views/clipboard.html.erb +19 -0
  169. data/plugins/clipboard-viewer/views/default.css +43 -0
  170. data/plugins/clipboard-viewer/views/redcar_small_icon.png +0 -0
  171. data/plugins/comment/features/line_comment.feature +249 -0
  172. data/plugins/comment/features/selection_comment.feature +21 -0
  173. data/plugins/comment/features/step_definitions/comment_steps.rb +7 -0
  174. data/plugins/comment/lib/comment.rb +268 -0
  175. data/plugins/comment/plugin.rb +7 -0
  176. data/plugins/comment/vendor/comment_lib.json +47 -0
  177. data/plugins/connection_manager/lib/connection_manager.rb +57 -0
  178. data/plugins/connection_manager/lib/connection_manager/commands.rb +14 -0
  179. data/plugins/connection_manager/lib/connection_manager/connection_store.rb +87 -0
  180. data/plugins/connection_manager/lib/connection_manager/controller.rb +100 -0
  181. data/plugins/connection_manager/lib/connection_manager/filter_dialog.rb +38 -0
  182. data/plugins/connection_manager/lib/connection_manager/private_key_store.rb +93 -0
  183. data/plugins/connection_manager/plugin.rb +12 -0
  184. data/plugins/connection_manager/views/index.html.erb +284 -0
  185. data/plugins/core/lib/core.rb +41 -0
  186. data/plugins/core/lib/core/controller.rb +23 -0
  187. data/plugins/core/lib/core/gui.rb +100 -0
  188. data/plugins/core/lib/core/has_spi.rb +10 -0
  189. data/plugins/core/lib/core/interface.rb +73 -0
  190. data/plugins/core/lib/core/model.rb +11 -0
  191. data/plugins/core/lib/core/observable.rb +115 -0
  192. data/plugins/core/lib/core/observable_struct.rb +34 -0
  193. data/plugins/core/lib/core/persistent_cache.rb +57 -0
  194. data/plugins/core/lib/core/plugin.rb +12 -0
  195. data/plugins/core/lib/core/plugin/storage.rb +133 -0
  196. data/plugins/core/lib/core/reentry_helpers.rb +13 -0
  197. data/plugins/core/lib/core/resource.rb +86 -0
  198. data/plugins/core/lib/core/task.rb +62 -0
  199. data/plugins/core/lib/core/task_queue.rb +72 -0
  200. data/plugins/core/plugin.rb +7 -0
  201. data/plugins/core/spec/core/base_storage_spec.rb +81 -0
  202. data/plugins/core/spec/core/gui_spec.rb +27 -0
  203. data/plugins/core/spec/core/observable_spec.rb +104 -0
  204. data/plugins/core/spec/core/persistent_cache_spec.rb +100 -0
  205. data/plugins/core/spec/core/resource_spec.rb +125 -0
  206. data/plugins/core/spec/core/shared_storage_spec.rb +49 -0
  207. data/plugins/core/spec/core/storage_spec.rb +27 -0
  208. data/plugins/core/spec/core/task_queue_spec.rb +199 -0
  209. data/plugins/core/spec/spec_helper.rb +27 -0
  210. data/plugins/declarations/lib/declarations.rb +159 -0
  211. data/plugins/declarations/lib/declarations/completion_source.rb +22 -0
  212. data/plugins/declarations/lib/declarations/file.rb +68 -0
  213. data/plugins/declarations/lib/declarations/parser.rb +186 -0
  214. data/plugins/declarations/lib/declarations/select_tag_dialog.rb +45 -0
  215. data/plugins/declarations/plugin.rb +7 -0
  216. data/plugins/declarations/spec/declarations/file_spec.rb +62 -0
  217. data/plugins/declarations/spec/fixtures/federalist.rb +15 -0
  218. data/plugins/declarations/spec/spec_helper.rb +5 -0
  219. data/plugins/document_search/Readme.md +14 -0
  220. data/plugins/document_search/features/find.feature +541 -0
  221. data/plugins/document_search/features/incremental_search.feature +351 -0
  222. data/plugins/document_search/features/replace.feature +178 -0
  223. data/plugins/document_search/features/step_definitions/find_steps.rb +16 -0
  224. data/plugins/document_search/features/support/env.rb +14 -0
  225. data/plugins/document_search/lib/document_search.rb +191 -0
  226. data/plugins/document_search/lib/document_search/commands.rb +307 -0
  227. data/plugins/document_search/lib/document_search/find_speedbar.rb +162 -0
  228. data/plugins/document_search/lib/document_search/incremental_search_speedbar.rb +70 -0
  229. data/plugins/document_search/lib/document_search/query_options.rb +21 -0
  230. data/plugins/document_search/plugin.rb +8 -0
  231. data/plugins/edit_view/features/align_assignment.feature +106 -0
  232. data/plugins/edit_view/features/case_change.feature +67 -0
  233. data/plugins/edit_view/features/cursor_navigation.feature +36 -0
  234. data/plugins/edit_view/features/cut_and_paste.feature +45 -0
  235. data/plugins/edit_view/features/grammar.feature +11 -0
  236. data/plugins/edit_view/features/indentation_commands.feature +49 -0
  237. data/plugins/edit_view/features/line_delimiter.feature +47 -0
  238. data/plugins/edit_view/features/multiple_notebooks.feature +52 -0
  239. data/plugins/edit_view/features/multiple_windows.feature +48 -0
  240. data/plugins/edit_view/features/new_tab.feature +11 -0
  241. data/plugins/edit_view/features/soft_tabs.feature +243 -0
  242. data/plugins/edit_view/features/sort_lines.feature +15 -0
  243. data/plugins/edit_view/features/step_definitions/editing_steps.rb +350 -0
  244. data/plugins/edit_view/features/step_definitions/grammar_steps.rb +4 -0
  245. data/plugins/edit_view/features/step_definitions/key_steps.rb +48 -0
  246. data/plugins/edit_view/features/step_definitions/notebook_steps.rb +59 -0
  247. data/plugins/edit_view/features/step_definitions/tab_steps.rb +113 -0
  248. data/plugins/edit_view/features/step_definitions/window_steps.rb +86 -0
  249. data/plugins/edit_view/features/support/env.rb +59 -0
  250. data/plugins/edit_view/features/switch_tabs.feature +106 -0
  251. data/plugins/edit_view/features/tabs.feature +146 -0
  252. data/plugins/edit_view/features/undo_and_redo.feature +73 -0
  253. data/plugins/edit_view/features/word_matching.feature +67 -0
  254. data/plugins/edit_view/lib/edit_view.rb +659 -0
  255. data/plugins/edit_view/lib/edit_view/actions/arrow_keys.rb +170 -0
  256. data/plugins/edit_view/lib/edit_view/actions/cmd_enter.rb +11 -0
  257. data/plugins/edit_view/lib/edit_view/actions/deletion.rb +40 -0
  258. data/plugins/edit_view/lib/edit_view/actions/esc.rb +15 -0
  259. data/plugins/edit_view/lib/edit_view/actions/tab.rb +70 -0
  260. data/plugins/edit_view/lib/edit_view/command.rb +14 -0
  261. data/plugins/edit_view/lib/edit_view/commands/align_assignment_command.rb +55 -0
  262. data/plugins/edit_view/lib/edit_view/commands/text_conversion_commands.rb +85 -0
  263. data/plugins/edit_view/lib/edit_view/document.rb +796 -0
  264. data/plugins/edit_view/lib/edit_view/document/command.rb +25 -0
  265. data/plugins/edit_view/lib/edit_view/document/controller.rb +43 -0
  266. data/plugins/edit_view/lib/edit_view/document/history.rb +41 -0
  267. data/plugins/edit_view/lib/edit_view/document/indentation.rb +40 -0
  268. data/plugins/edit_view/lib/edit_view/document/mirror.rb +42 -0
  269. data/plugins/edit_view/lib/edit_view/edit_tab.rb +59 -0
  270. data/plugins/edit_view/lib/edit_view/grammar.rb +58 -0
  271. data/plugins/edit_view/lib/edit_view/grammars/default.rb +10 -0
  272. data/plugins/edit_view/lib/edit_view/grammars/ruby.rb +10 -0
  273. data/plugins/edit_view/lib/edit_view/grammars/ruby_on_rails.rb +7 -0
  274. data/plugins/edit_view/lib/edit_view/info_speedbar.rb +98 -0
  275. data/plugins/edit_view/lib/edit_view/modified_tabs_checker.rb +35 -0
  276. data/plugins/edit_view/lib/edit_view/select_font_dialog.rb +45 -0
  277. data/plugins/edit_view/lib/edit_view/select_theme_dialog.rb +42 -0
  278. data/plugins/edit_view/lib/edit_view/tab_settings.rb +135 -0
  279. data/plugins/edit_view/plugin.rb +9 -0
  280. data/plugins/edit_view/spec/edit_view/document/indentation_spec.rb +112 -0
  281. data/plugins/edit_view/spec/edit_view/document_spec.rb +130 -0
  282. data/plugins/edit_view/spec/spec_helper.rb +5 -0
  283. data/plugins/edit_view_swt/lib/edit_view_swt.rb +621 -0
  284. data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +224 -0
  285. data/plugins/edit_view_swt/lib/edit_view_swt/edit_tab.rb +50 -0
  286. data/plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb +68 -0
  287. data/plugins/edit_view_swt/plugin.rb +9 -0
  288. data/plugins/edit_view_swt/spec/edit_view_swt/word_movement_spec.rb +29 -0
  289. data/plugins/edit_view_swt/spec/spec_helper.rb +5 -0
  290. data/plugins/encryption/encryption.rb +52 -0
  291. data/plugins/encryption/ezcrypto.rb +652 -0
  292. data/plugins/encryption/jarmor-1.1.jar +0 -0
  293. data/plugins/encryption/plugin.rb +9 -0
  294. data/plugins/execute_current_tab/lib/execute_current_tab.rb +68 -0
  295. data/plugins/execute_current_tab/plugin.rb +8 -0
  296. data/plugins/help/lib/help.rb +64 -0
  297. data/plugins/help/lib/help/help_tab.rb +11 -0
  298. data/plugins/help/lib/help/view_controller.rb +30 -0
  299. data/plugins/help/plugin.rb +9 -0
  300. data/plugins/help/views/default.css +31 -0
  301. data/plugins/help/views/index.html.erb +41 -0
  302. data/plugins/help/views/redcar_small_icon.png +0 -0
  303. data/plugins/html_view/assets/blueprint/ie.css +35 -0
  304. data/plugins/html_view/assets/blueprint/print.css +29 -0
  305. data/plugins/html_view/assets/blueprint/screen.css +257 -0
  306. data/plugins/html_view/assets/blueprint/src/forms.css +65 -0
  307. data/plugins/html_view/assets/blueprint/src/grid.css +281 -0
  308. data/plugins/html_view/assets/blueprint/src/grid.png +0 -0
  309. data/plugins/html_view/assets/blueprint/src/ie.css +76 -0
  310. data/plugins/html_view/assets/blueprint/src/print.css +85 -0
  311. data/plugins/html_view/assets/blueprint/src/reset.css +38 -0
  312. data/plugins/html_view/assets/blueprint/src/typography.css +106 -0
  313. data/plugins/html_view/assets/jquery-1.4.min.js +151 -0
  314. data/plugins/html_view/assets/json2.js +476 -0
  315. data/plugins/html_view/assets/redcar.css +44 -0
  316. data/plugins/html_view/features/browser_bar.feature +47 -0
  317. data/plugins/html_view/features/fixtures/other.html +1 -0
  318. data/plugins/html_view/features/fixtures/sample.html +1 -0
  319. data/plugins/html_view/features/step_definitions/html_view_steps.rb +64 -0
  320. data/plugins/html_view/features/step_definitions/web_view_steps.rb +12 -0
  321. data/plugins/html_view/features/support/env.rb +27 -0
  322. data/plugins/html_view/features/web_preview.feature +21 -0
  323. data/plugins/html_view/lib/html_controller.rb +50 -0
  324. data/plugins/html_view/lib/html_view.rb +170 -0
  325. data/plugins/html_view/lib/html_view/browser_bar.rb +82 -0
  326. data/plugins/html_view/lib/html_view/commands.rb +64 -0
  327. data/plugins/html_view/lib/html_view/default_controller.rb +23 -0
  328. data/plugins/html_view/lib/html_view/html_tab.rb +40 -0
  329. data/plugins/html_view/plugin.rb +13 -0
  330. data/plugins/html_view/views/default.css +117 -0
  331. data/plugins/html_view/views/index.html.erb +5 -0
  332. data/plugins/html_view/views/watermark-48.png +0 -0
  333. data/plugins/java/features/fixtures/lib/classes.jar +0 -0
  334. data/plugins/java/features/fixtures/test.java +0 -0
  335. data/plugins/java/features/support/env.rb +27 -0
  336. data/plugins/java/features/syntax_check_java.feature +86 -0
  337. data/plugins/java/lib/syntax_check/java.rb +86 -0
  338. data/plugins/java/plugin.rb +7 -0
  339. data/plugins/key_bindings/lib/key_bindings.rb +34 -0
  340. data/plugins/key_bindings/plugin.rb +8 -0
  341. data/plugins/key_bindings/spec/spec_helper.rb +5 -0
  342. data/plugins/line_tools/features/clear_line.feature +25 -0
  343. data/plugins/line_tools/features/kill_line.feature +25 -0
  344. data/plugins/line_tools/features/lower_text.feature +54 -0
  345. data/plugins/line_tools/features/raise_text.feature +50 -0
  346. data/plugins/line_tools/features/replace_line.feature +33 -0
  347. data/plugins/line_tools/features/step_definitions/line_tools_steps.rb +23 -0
  348. data/plugins/line_tools/features/support/env.rb +0 -0
  349. data/plugins/line_tools/features/trim_line.feature +73 -0
  350. data/plugins/line_tools/lib/line_tools.rb +217 -0
  351. data/plugins/line_tools/plugin.rb +9 -0
  352. data/plugins/macros/features/block_selection_in_macros.feature +48 -0
  353. data/plugins/macros/features/predictive_macros.feature +79 -0
  354. data/plugins/macros/features/record_and_run_macro.feature +87 -0
  355. data/plugins/macros/features/step_definitions/macro_steps.rb +11 -0
  356. data/plugins/macros/features/step_definitions/prediction_steps.rb +8 -0
  357. data/plugins/macros/features/support/env.rb +0 -0
  358. data/plugins/macros/lib/macros.rb +167 -0
  359. data/plugins/macros/lib/macros/action_sequence.rb +30 -0
  360. data/plugins/macros/lib/macros/commands.rb +108 -0
  361. data/plugins/macros/lib/macros/macro.rb +37 -0
  362. data/plugins/macros/lib/macros/manager_controller.rb +67 -0
  363. data/plugins/macros/lib/macros/predictive/document_controller.rb +69 -0
  364. data/plugins/macros/lib/macros/predictive/sequence_finder.rb +112 -0
  365. data/plugins/macros/plugin.rb +9 -0
  366. data/plugins/macros/spec/macros/predictive/sequence_finder_spec.rb +142 -0
  367. data/plugins/macros/spec/spec_helper.rb +6 -0
  368. data/plugins/macros/views/macro_manager.html.erb +92 -0
  369. data/plugins/my_plugin/lib/my_plugin.rb +47 -0
  370. data/plugins/my_plugin/plugin.rb +8 -0
  371. data/plugins/open_default_app/lib/open_default_app.rb +61 -0
  372. data/plugins/open_default_app/plugin.rb +8 -0
  373. data/plugins/open_default_app/screenshot.png +0 -0
  374. data/plugins/outline_view/features/outline_view.feature +79 -0
  375. data/plugins/outline_view/features/step_definitions/outline_steps.rb +45 -0
  376. data/plugins/outline_view/lib/outline_view.rb +66 -0
  377. data/plugins/outline_view/lib/outline_view/commands.rb +13 -0
  378. data/plugins/outline_view/plugin.rb +10 -0
  379. data/plugins/outline_view/spec/fixtures/some_project/javascript.js +10 -0
  380. data/plugins/outline_view/spec/fixtures/some_project/nothing_to_see.rb +0 -0
  381. data/plugins/outline_view/spec/fixtures/some_project/one_lonely_class.rb +2 -0
  382. data/plugins/outline_view/spec/fixtures/some_project/similar_names.rb +18 -0
  383. data/plugins/outline_view/spec/fixtures/some_project/something_fancy.rb +736 -0
  384. data/plugins/outline_view/spec/fixtures/some_project/trailing_space.rb +5 -0
  385. data/plugins/outline_view_swt/lib/outline_view_swt.rb +79 -0
  386. data/plugins/outline_view_swt/plugin.rb +7 -0
  387. data/plugins/pair_highlighter/lib/pair_highlighter.rb +34 -0
  388. data/plugins/pair_highlighter/lib/pair_highlighter/document_controller.rb +185 -0
  389. data/plugins/pair_highlighter/plugin.rb +9 -0
  390. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +122 -0
  391. data/plugins/plugin_manager_ui/plugin.rb +13 -0
  392. data/plugins/plugin_manager_ui/views/index.html.erb +62 -0
  393. data/plugins/project/features/close_directory_tree.feature +28 -0
  394. data/plugins/project/features/find_file.feature +119 -0
  395. data/plugins/project/features/highlight_focussed_tab.feature +53 -0
  396. data/plugins/project/features/move_and_rename_files.feature +25 -0
  397. data/plugins/project/features/open_and_save_files.feature +85 -0
  398. data/plugins/project/features/open_directory_tree.feature +93 -0
  399. data/plugins/project/features/refresh_directory_tree.feature +44 -0
  400. data/plugins/project/features/step_definitions/directory_steps.rb +35 -0
  401. data/plugins/project/features/step_definitions/drb_steps.rb +40 -0
  402. data/plugins/project/features/step_definitions/file_steps.rb +66 -0
  403. data/plugins/project/features/step_definitions/find_file_steps.rb +7 -0
  404. data/plugins/project/features/step_definitions/project_tree_steps.rb +7 -0
  405. data/plugins/project/features/sub_project.feature +15 -0
  406. data/plugins/project/features/support/env.rb +35 -0
  407. data/plugins/project/features/watch_for_modified_files.feature +109 -0
  408. data/plugins/project/lib/project.rb +266 -0
  409. data/plugins/project/lib/project/adapters/local.rb +82 -0
  410. data/plugins/project/lib/project/adapters/remote.rb +96 -0
  411. data/plugins/project/lib/project/adapters/remote_protocols/ftp.rb +93 -0
  412. data/plugins/project/lib/project/adapters/remote_protocols/protocol.rb +94 -0
  413. data/plugins/project/lib/project/adapters/remote_protocols/sftp.rb +181 -0
  414. data/plugins/project/lib/project/commands.rb +449 -0
  415. data/plugins/project/lib/project/dir_controller.rb +275 -0
  416. data/plugins/project/lib/project/dir_mirror.rb +176 -0
  417. data/plugins/project/lib/project/drb_service.rb +86 -0
  418. data/plugins/project/lib/project/file_list.rb +164 -0
  419. data/plugins/project/lib/project/file_mirror.rb +85 -0
  420. data/plugins/project/lib/project/find_file_dialog.rb +118 -0
  421. data/plugins/project/lib/project/find_recent_dialog.rb +30 -0
  422. data/plugins/project/lib/project/manager.rb +545 -0
  423. data/plugins/project/lib/project/project_tree_controller.rb +24 -0
  424. data/plugins/project/lib/project/recent.rb +64 -0
  425. data/plugins/project/lib/project/sub_project.rb +17 -0
  426. data/plugins/project/lib/project/support/recycle.js +2 -0
  427. data/plugins/project/lib/project/support/trash.rb +73 -0
  428. data/plugins/project/plugin.rb +11 -0
  429. data/plugins/project/spec/fixture_helper.rb +30 -0
  430. data/plugins/project/spec/project/adapters/remote_protocols/ftp_spec.rb +75 -0
  431. data/plugins/project/spec/project/adapters/remote_protocols/sftp_spec.rb +121 -0
  432. data/plugins/project/spec/project/adapters/remote_spec.rb +136 -0
  433. data/plugins/project/spec/project/dir_mirror_spec.rb +65 -0
  434. data/plugins/project/spec/project/file_list_spec.rb +151 -0
  435. data/plugins/project/spec/project/file_mirror_spec.rb +97 -0
  436. data/plugins/project/spec/spec_helper.rb +26 -0
  437. data/plugins/project/views/bulk_rename.html.erb +162 -0
  438. data/plugins/project_search/features/support/env.rb +6 -0
  439. data/plugins/project_search/features/word_search.feature +34 -0
  440. data/plugins/project_search/lib/project_search.rb +82 -0
  441. data/plugins/project_search/lib/project_search/binary_data_detector.rb +46 -0
  442. data/plugins/project_search/lib/project_search/commands.rb +50 -0
  443. data/plugins/project_search/lib/project_search/hit.rb +21 -0
  444. data/plugins/project_search/lib/project_search/images/spinner.gif +0 -0
  445. data/plugins/project_search/lib/project_search/lucene_index.rb +81 -0
  446. data/plugins/project_search/lib/project_search/lucene_refresh.rb +22 -0
  447. data/plugins/project_search/lib/project_search/project.rb +14 -0
  448. data/plugins/project_search/lib/project_search/query.rb +29 -0
  449. data/plugins/project_search/lib/project_search/stylesheets/style.css +279 -0
  450. data/plugins/project_search/lib/project_search/views/_file.html.erb +58 -0
  451. data/plugins/project_search/lib/project_search/views/index.html.erb +156 -0
  452. data/plugins/project_search/lib/project_search/word_search.rb +143 -0
  453. data/plugins/project_search/lib/project_search/word_search_controller.rb +219 -0
  454. data/plugins/project_search/plugin.rb +8 -0
  455. data/plugins/project_search/spec/fixtures/project/binary_file.bin +0 -0
  456. data/plugins/project_search/spec/fixtures/project/foo.txt +43 -0
  457. data/plugins/project_search/spec/fixtures/project/qux.rb +3 -0
  458. data/plugins/project_search/spec/project_search/binary_data_detector_spec.rb +24 -0
  459. data/plugins/project_search/spec/project_search/word_search_spec.rb +157 -0
  460. data/plugins/project_search/spec/spec_helper.rb +27 -0
  461. data/plugins/redcar/features/alter_font_size.feature +26 -0
  462. data/plugins/redcar/features/goto_line_command.feature +20 -0
  463. data/plugins/redcar/features/step_definitions/env.rb +5 -0
  464. data/plugins/redcar/features/step_definitions/font_steps.rb +34 -0
  465. data/plugins/redcar/features/text_editing.feature +34 -0
  466. data/plugins/redcar/features/text_navigation.feature +30 -0
  467. data/plugins/redcar/plugin.rb +17 -0
  468. data/plugins/redcar/redcar.rb +1097 -0
  469. data/plugins/redcar_debug/lib/redcar_debug.rb +91 -0
  470. data/plugins/redcar_debug/plugin.rb +8 -0
  471. data/plugins/redcar_debug/views/history.html.erb +34 -0
  472. data/plugins/redcar_debug/views/index.html.erb +36 -0
  473. data/plugins/repl/features/command_editing.feature +55 -0
  474. data/plugins/repl/features/command_history.feature +75 -0
  475. data/plugins/repl/features/step_definitions/repl_steps.rb +19 -0
  476. data/plugins/repl/features/support/env.rb +24 -0
  477. data/plugins/repl/features/support/fake_repl.rb +16 -0
  478. data/plugins/repl/lib/repl.rb +40 -0
  479. data/plugins/repl/lib/repl/repl_command.rb +20 -0
  480. data/plugins/repl/lib/repl/repl_mirror.rb +255 -0
  481. data/plugins/repl/lib/repl/repl_tab.rb +154 -0
  482. data/plugins/repl/plugin.rb +8 -0
  483. data/plugins/repl/spec/repl/repl_mirror_spec.rb +72 -0
  484. data/plugins/repl/spec/spec_helper.rb +5 -0
  485. data/plugins/repl_swt/lib/repl_swt.rb +7 -0
  486. data/plugins/repl_swt/lib/repl_swt/key_listener.rb +43 -0
  487. data/plugins/repl_swt/plugin.rb +8 -0
  488. data/plugins/ruby/features/fixtures/test.rb +0 -0
  489. data/plugins/ruby/features/support/env.rb +4 -0
  490. data/plugins/ruby/features/syntax_check_ruby.feature +26 -0
  491. data/plugins/ruby/lib/ruby.rb +35 -0
  492. data/plugins/ruby/lib/ruby/repl_mirror.rb +46 -0
  493. data/plugins/ruby/lib/ruby/syntax_checker.rb +30 -0
  494. data/plugins/ruby/plugin.rb +8 -0
  495. data/plugins/ruby/spec/ruby/repl_mirror_spec.rb +202 -0
  496. data/plugins/ruby/spec/spec_helper.rb +5 -0
  497. data/plugins/runnables/features/command_tree.feature +63 -0
  498. data/plugins/runnables/features/file_runner_input.feature +21 -0
  499. data/plugins/runnables/features/parameter_input.feature +43 -0
  500. data/plugins/runnables/features/run_alternate_command.feature +15 -0
  501. data/plugins/runnables/features/run_command_tab.feature +47 -0
  502. data/plugins/runnables/features/step_definitions/runnable_steps.rb +28 -0
  503. data/plugins/runnables/features/support/env.rb +124 -0
  504. data/plugins/runnables/lib/runnables.rb +180 -0
  505. data/plugins/runnables/lib/runnables/command_output_controller.rb +183 -0
  506. data/plugins/runnables/lib/runnables/commands.rb +82 -0
  507. data/plugins/runnables/lib/runnables/output_processor.rb +74 -0
  508. data/plugins/runnables/lib/runnables/running_process_checker.rb +34 -0
  509. data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable.rb +62 -0
  510. data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_group.rb +45 -0
  511. data/plugins/runnables/lib/runnables/tree_mirror/nodes/runnable_type_group.rb +30 -0
  512. data/plugins/runnables/lib/runnables/tree_mirror/tree_controller.rb +36 -0
  513. data/plugins/runnables/lib/runnables/tree_mirror/tree_mirror.rb +66 -0
  514. data/plugins/runnables/plugin.rb +9 -0
  515. data/plugins/runnables/spec/runnables/output_processor_spec.rb +57 -0
  516. data/plugins/runnables/spec/spec_helper.rb +5 -0
  517. data/plugins/runnables/views/basic_ansi.css +34 -0
  518. data/plugins/runnables/views/color_tester.html +50 -0
  519. data/plugins/runnables/views/command_output.html.erb +32 -0
  520. data/plugins/runnables/views/default.css +79 -0
  521. data/plugins/runnables/views/indicator.gif +0 -0
  522. data/plugins/runnables/views/redcar_small_icon.png +0 -0
  523. data/plugins/runnables/views/reset.css +53 -0
  524. data/plugins/runnables/views/running_test.html +41 -0
  525. data/plugins/runnables/views/wedgeDown.png +0 -0
  526. data/plugins/runnables/views/wedgeRight.png +0 -0
  527. data/plugins/scm/lib/scm.rb +296 -0
  528. data/plugins/scm/lib/scm/commands.rb +48 -0
  529. data/plugins/scm/lib/scm/commit_mirror.rb +72 -0
  530. data/plugins/scm/lib/scm/diff_mirror.rb +31 -0
  531. data/plugins/scm/lib/scm/errors.rb +8 -0
  532. data/plugins/scm/lib/scm/model.rb +275 -0
  533. data/plugins/scm/lib/scm/scm_changes_controller.rb +107 -0
  534. data/plugins/scm/lib/scm/scm_changes_mirror.rb +51 -0
  535. data/plugins/scm/lib/scm/scm_changes_mirror/change.rb +63 -0
  536. data/plugins/scm/lib/scm/scm_changes_mirror/changes_node.rb +47 -0
  537. data/plugins/scm/lib/scm/scm_changes_mirror/drag_controller.rb +78 -0
  538. data/plugins/scm/lib/scm/scm_commits_controller.rb +49 -0
  539. data/plugins/scm/lib/scm/scm_commits_mirror.rb +36 -0
  540. data/plugins/scm/lib/scm/scm_commits_mirror/commit.rb +26 -0
  541. data/plugins/scm/lib/scm/scm_commits_mirror/commits_node.rb +38 -0
  542. data/plugins/scm/plugin.rb +8 -0
  543. data/plugins/scm/spec/spec_helper.rb +5 -0
  544. data/plugins/scm_git/lib/scm_git.rb +543 -0
  545. data/plugins/scm_git/lib/scm_git/change.rb +137 -0
  546. data/plugins/scm_git/lib/scm_git/commit.rb +18 -0
  547. data/plugins/scm_git/lib/scm_git/config_file.rb +31 -0
  548. data/plugins/scm_git/plugin.rb +7 -0
  549. data/plugins/scm_hg/lib/scm_hg.rb +30 -0
  550. data/plugins/scm_hg/plugin.rb +7 -0
  551. data/plugins/scm_svn/LICENSE +48 -0
  552. data/plugins/scm_svn/features/add_and_commit.feature +18 -0
  553. data/plugins/scm_svn/features/checkout.feature +5 -0
  554. data/plugins/scm_svn/features/edit_and_index.feature +12 -0
  555. data/plugins/scm_svn/features/ignore_files.feature +14 -0
  556. data/plugins/scm_svn/features/merge.feature +34 -0
  557. data/plugins/scm_svn/features/resolve_conflict.feature +23 -0
  558. data/plugins/scm_svn/features/revert_and_delete.feature +21 -0
  559. data/plugins/scm_svn/features/step_definitions/branch_and_merge_steps.rb +27 -0
  560. data/plugins/scm_svn/features/step_definitions/checkout_steps.rb +25 -0
  561. data/plugins/scm_svn/features/step_definitions/edit_and_index_steps.rb +50 -0
  562. data/plugins/scm_svn/features/step_definitions/scm_svn_steps.rb +57 -0
  563. data/plugins/scm_svn/features/support/env.rb +71 -0
  564. data/plugins/scm_svn/features/switch_branches.feature +53 -0
  565. data/plugins/scm_svn/features/update.feature +16 -0
  566. data/plugins/scm_svn/lib/scm_svn.rb +445 -0
  567. data/plugins/scm_svn/lib/scm_svn/change.rb +116 -0
  568. data/plugins/scm_svn/plugin.rb +7 -0
  569. data/plugins/snippets/features/snippet_indenting.feature +87 -0
  570. data/plugins/snippets/features/snippets.feature +398 -0
  571. data/plugins/snippets/features/step_definitions/snippet_steps.rb +16 -0
  572. data/plugins/snippets/features/support/env.rb +1 -0
  573. data/plugins/snippets/lib/snippets.rb +111 -0
  574. data/plugins/snippets/lib/snippets/document_controller.rb +591 -0
  575. data/plugins/snippets/lib/snippets/explorer.rb +48 -0
  576. data/plugins/snippets/lib/snippets/tab_handler.rb +117 -0
  577. data/plugins/snippets/plugin.rb +9 -0
  578. data/plugins/splash_screen/plugin.rb +8 -0
  579. data/plugins/splash_screen/splash_screen.rb +62 -0
  580. data/plugins/strip_trailing_spaces/features/fixtures/test.txt +3 -0
  581. data/plugins/strip_trailing_spaces/features/strip_trailing_spaces.feature +34 -0
  582. data/plugins/strip_trailing_spaces/lib/strip_trailing_spaces.rb +60 -0
  583. data/plugins/strip_trailing_spaces/plugin.rb +8 -0
  584. data/plugins/syntax_check/README +6 -0
  585. data/plugins/syntax_check/features/step_definitions/syntax_check_steps.rb +11 -0
  586. data/plugins/syntax_check/features/support/env.rb +3 -0
  587. data/plugins/syntax_check/lib/syntax_check.rb +100 -0
  588. data/plugins/syntax_check/lib/syntax_check/annotation.rb +61 -0
  589. data/plugins/syntax_check/lib/syntax_check/checker.rb +47 -0
  590. data/plugins/syntax_check/lib/syntax_check/error.rb +24 -0
  591. data/plugins/syntax_check/plugin.rb +7 -0
  592. data/plugins/task_manager/lib/task_manager.rb +30 -0
  593. data/plugins/task_manager/plugin.rb +11 -0
  594. data/plugins/task_manager/views/index.html.erb +70 -0
  595. data/plugins/test_runner/lib/test_runner.rb +40 -0
  596. data/plugins/test_runner/lib/test_runner/jasmine_test_runner.rb +15 -0
  597. data/plugins/test_runner/lib/test_runner/rspec_runner.rb +20 -0
  598. data/plugins/test_runner/lib/test_runner/run_test_command.rb +63 -0
  599. data/plugins/test_runner/lib/test_runner/runnable_test_runner.rb +42 -0
  600. data/plugins/test_runner/plugin.rb +8 -0
  601. data/plugins/test_runner/spec/run_test_command_spec.rb +51 -0
  602. data/plugins/test_runner/spec/spec_helper.rb +5 -0
  603. data/plugins/textmate/features/bundle_tree.feature +23 -0
  604. data/plugins/textmate/features/step_definitions/tree_steps.rb +57 -0
  605. data/plugins/textmate/features/support/env.rb +19 -0
  606. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/If.tmSnippet +18 -0
  607. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/If__Else.tmSnippet +20 -0
  608. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Include.tmSnippet +16 -0
  609. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Loop.tmSnippet +18 -0
  610. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Unless.tmSnippet +18 -0
  611. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/Var.tmSnippet +16 -0
  612. data/plugins/textmate/features/support/test_bundle.tmbundle/Snippets/next_If__Else.tmSnippet +20 -0
  613. data/plugins/textmate/features/support/test_bundle.tmbundle/info.plist +26 -0
  614. data/plugins/textmate/lib/textmate.rb +202 -0
  615. data/plugins/textmate/lib/textmate/bundle.rb +100 -0
  616. data/plugins/textmate/lib/textmate/commands.rb +79 -0
  617. data/plugins/textmate/lib/textmate/environment.rb +76 -0
  618. data/plugins/textmate/lib/textmate/plist.rb +80 -0
  619. data/plugins/textmate/lib/textmate/preference.rb +125 -0
  620. data/plugins/textmate/lib/textmate/snippet.rb +47 -0
  621. data/plugins/textmate/lib/textmate/tree_mirror.rb +206 -0
  622. data/plugins/textmate/plugin.rb +8 -0
  623. data/plugins/textmate/views/installed_bundles.html.erb +24 -0
  624. data/plugins/todo_list/README.md +22 -0
  625. data/plugins/todo_list/features/support/env.rb +8 -0
  626. data/plugins/todo_list/features/todo_list.feature +26 -0
  627. data/plugins/todo_list/lib/todo_list.rb +49 -0
  628. data/plugins/todo_list/lib/todo_list/file_parser.rb +58 -0
  629. data/plugins/todo_list/lib/todo_list/todo_controller.rb +99 -0
  630. data/plugins/todo_list/plugin.rb +11 -0
  631. data/plugins/todo_list/spec/fixtures/project/FIXME.file +3 -0
  632. data/plugins/todo_list/spec/fixtures/project/NOTE.ignored.file +1 -0
  633. data/plugins/todo_list/spec/fixtures/project/OPTIMIZE_colon.file +1 -0
  634. data/plugins/todo_list/spec/fixtures/project/XXX.ignored +1 -0
  635. data/plugins/todo_list/spec/fixtures/project/ignored_directory/TODO.file +2 -0
  636. data/plugins/todo_list/spec/fixtures/settings.rb +11 -0
  637. data/plugins/todo_list/spec/spec_helper.rb +6 -0
  638. data/plugins/todo_list/spec/todo_list/file_parser_spec.rb +35 -0
  639. data/plugins/todo_list/views/default.css +15 -0
  640. data/plugins/todo_list/views/index.html.erb +19 -0
  641. data/plugins/todo_list/views/redcar_small_icon.png +0 -0
  642. data/plugins/tree_view_swt/lib/tree_view_swt.rb +496 -0
  643. data/plugins/tree_view_swt/plugin.rb +9 -0
  644. data/plugins/web_bookmarks/Screenshot.png +0 -0
  645. data/plugins/web_bookmarks/features/bookmark.feature +37 -0
  646. data/plugins/web_bookmarks/features/fixtures/other.html +1 -0
  647. data/plugins/web_bookmarks/features/fixtures/sample.html +1 -0
  648. data/plugins/web_bookmarks/features/step_definitions/web_steps.rb +4 -0
  649. data/plugins/web_bookmarks/features/support/env.rb +26 -0
  650. data/plugins/web_bookmarks/lib/web_bookmarks.rb +49 -0
  651. data/plugins/web_bookmarks/lib/web_bookmarks/bookmark.rb +52 -0
  652. data/plugins/web_bookmarks/lib/web_bookmarks/commands.rb +65 -0
  653. data/plugins/web_bookmarks/lib/web_bookmarks/tree.rb +74 -0
  654. data/plugins/web_bookmarks/plugin.rb +10 -0
  655. metadata +937 -0
@@ -0,0 +1,351 @@
1
+ # Note: Most scenarios in this file can and should be adapted for the Find speedbar and added to
2
+ # find.feature. Aside from different names, the tests will need to be adjusted to not rely on
3
+ # incremental updating of query matches.
4
+
5
+ @speedbar
6
+ Feature: Incremental Search
7
+
8
+ Background:
9
+ Given I open a new edit tab
10
+
11
+ Scenario: Open Incremental Search speedbar
12
+ When I replace the contents with "Foo\nBar\nBaz"
13
+ And I move the cursor to 0
14
+ And I open the incremental search speedbar
15
+ Then I should see the incremental search speedbar
16
+
17
+ Scenario: Search for a word should select next occurrence
18
+ When I replace the contents with "Foo\nBar\nBaz"
19
+ And I move the cursor to 0
20
+ And I open the incremental search speedbar
21
+ And I type "Bar" into the "Find" field in the speedbar
22
+ Then the selected text should be "Bar"
23
+
24
+ Scenario: Search twice should move to the next occurrence
25
+ When I replace the contents with "Foo\nBar\nFoo"
26
+ And I move the cursor to 0
27
+ And I open the incremental search speedbar
28
+ And I type "Foo" into the "Find" field in the speedbar
29
+ Then the selection should be on line 0
30
+ When I open the incremental search speedbar
31
+ Then the selected text should be "Foo"
32
+ And the selection should be on line 2
33
+
34
+ Scenario: Search should incrementally update
35
+ When I replace the contents with "Foo\nBaar\nBaaz"
36
+ And I move the cursor to 0
37
+ And I open the incremental search speedbar
38
+ And I type "Ba" into the "Find" field in the speedbar
39
+ Then the selected text should be "Ba"
40
+ And the selection should be on line 1
41
+ When I type "Baa" into the "Find" field in the speedbar
42
+ And the selection should be on line 1
43
+ When I type "Baaz" into the "Find" field in the speedbar
44
+ Then the selected text should be "Baaz"
45
+ And the selection should be on line 2
46
+ When I type "Baa" into the "Find" field in the speedbar
47
+ Then the selection should be on line 2
48
+
49
+ Scenario: Search for a word adjacent to cursor should select word
50
+ When I replace the contents with "Foo\nBar\nBaz"
51
+ And I move the cursor to 0
52
+ And I open the incremental search speedbar
53
+ And I type "Foo" into the "Find" field in the speedbar
54
+ Then the selected text should be "Foo"
55
+
56
+ Scenario: Search for a word should find occurrence after the cursor
57
+ When I replace the contents with "Foo\nBar\nBaz\nFoo"
58
+ And I move the cursor to 1
59
+ And I open the incremental search speedbar
60
+ And I type "Foo" into the "Find" field in the speedbar
61
+ Then the selection should be on line 3
62
+ And the selected text should be "Foo"
63
+ When I open the incremental search speedbar
64
+ Then the selected text should be "Foo"
65
+ And the selection should be on line 0
66
+
67
+ Scenario: Search for a word should wrap to earlier occurrence if none left
68
+ When I replace the contents with "Foo\nBar\nBaz"
69
+ And I move the cursor to 1
70
+ And I open the incremental search speedbar
71
+ And I type "Foo" into the "Find" field in the speedbar
72
+ Then the selected text should be "Foo"
73
+ And the selection should be on line 0
74
+
75
+ Scenario: Not thrown off by multi-byte characters
76
+ When I replace the contents with "Benedikt Müller"
77
+ And I move the cursor to 0
78
+ And I open the incremental search speedbar
79
+ And I type "ler" into the "Find" field in the speedbar
80
+ Then the selected text should be "ler"
81
+ And the selection range should be from 12 to 15
82
+
83
+ Scenario: Not thrown off by multi-byte characters 2
84
+ When I replace the contents with "Benedikt Müller\n foo "
85
+ And I move the cursor to 0
86
+ And I open the incremental search speedbar
87
+ And I type "foo" into the "Find" field in the speedbar
88
+ Then the selected text should be "foo"
89
+ And the selection range should be from 17 to 20
90
+
91
+ Scenario: Not thrown off by multi-byte characters 3
92
+ When I replace the contents with "你好, 凯兰\nYou make my heart super happy."
93
+ And I move the cursor to 0
94
+ And I open the incremental search speedbar
95
+ And I type "you" into the "Find" field in the speedbar
96
+ Then the selected text should be "You"
97
+ And the selection range should be from 7 to 10
98
+
99
+ Scenario: Handles repeated search across by multi-byte characters
100
+ When I replace the contents with "Foo\n你好, 凯兰\nFoo\nBar\nFoo\nBaz"
101
+ And I move the cursor to 0
102
+ And I open the incremental search speedbar
103
+ And I type "foo" into the "Find" field in the speedbar
104
+ Then the selected text should be "Foo"
105
+ And the selection should be on line 0
106
+ When I open the incremental search speedbar
107
+ Then the selected text should be "Foo"
108
+ And the selection should be on line 2
109
+ When I open the incremental search speedbar
110
+ Then the selected text should be "Foo"
111
+ And the selection should be on line 4
112
+ When I open the incremental search speedbar
113
+ Then the selected text should be "Foo"
114
+ And the selection should be on line 0
115
+ When I open the incremental search speedbar
116
+ Then the selected text should be "Foo"
117
+ And the selection should be on line 2
118
+
119
+ Scenario: Should select multi-byte characters
120
+ When I replace the contents with "Benedikt Müller"
121
+ And I move the cursor to 0
122
+ And I open the incremental search speedbar
123
+ And I type "mül" into the "Find" field in the speedbar
124
+ Then the selected text should be "Mül"
125
+ And the selection range should be from 9 to 12
126
+
127
+ Scenario: Should select multi-byte characters
128
+ When I replace the contents with "Benedikt Müller"
129
+ And I move the cursor to 0
130
+ And I open the incremental search speedbar
131
+ And I type "mül" into the "Find" field in the speedbar
132
+ Then the selected text should be "Mül"
133
+ And the selection range should be from 9 to 12
134
+
135
+ Scenario: Should select multi-byte characters 2
136
+ When I replace the contents with "你好, 凯兰\nYou make my heart super happy."
137
+ And I move the cursor to 0
138
+ And I open the incremental search speedbar
139
+ And I type "凯兰" into the "Find" field in the speedbar
140
+ Then the selected text should be "凯兰"
141
+ And the selection range should be from 4 to 6
142
+
143
+ Scenario: Doesn't search for a regex
144
+ When I replace the contents with "Foo\nBar\nBaz"
145
+ And I move the cursor to 0
146
+ And I open the incremental search speedbar
147
+ And I type "Ba." into the "Find" field in the speedbar
148
+ Then there should not be any text selected
149
+
150
+ Scenario: Search for a regex
151
+ When I replace the contents with "Foo\nBar\nBaz"
152
+ And I move the cursor to 0
153
+ And I open the incremental search speedbar
154
+ And I type "Ba." into the "Find" field in the speedbar
155
+ Then there should not be any text selected
156
+ When I check "Regex" in the speedbar
157
+ Then the selected text should be "Bar"
158
+ When I open the incremental search speedbar
159
+ Then the selected text should be "Baz"
160
+
161
+ Scenario: Search for a regex matches a second time
162
+ When I replace the contents with "Foo\nBar\nBaz"
163
+ And I move the cursor to 0
164
+ And I open the incremental search speedbar
165
+ And I type "Ba." into the "Find" field in the speedbar
166
+ Then there should not be any text selected
167
+ When I check "Regex" in the speedbar
168
+ Then the selected text should be "Bar"
169
+ When I open the incremental search speedbar
170
+ Then the selected text should be "Baz"
171
+
172
+ Scenario: Should not match case by default
173
+ When I replace the contents with "Foo\nBar\nBaz"
174
+ And I move the cursor to 0
175
+ And I open the incremental search speedbar
176
+ And I type "foo" into the "Find" field in the speedbar
177
+ Then the selected text should be "Foo"
178
+
179
+ Scenario: Should not match case with regex by default
180
+ When I replace the contents with "Foo\nBar\nBaz"
181
+ And I move the cursor to 0
182
+ And I open the incremental search speedbar
183
+ And I type "fo." into the "Find" field in the speedbar
184
+ Then there should not be any text selected
185
+ When I check "Regex" in the speedbar
186
+ Then the selected text should be "Foo"
187
+
188
+ Scenario: Should match case if requested
189
+ When I replace the contents with "Foo\nBar\nBaz"
190
+ And I move the cursor to 0
191
+ And I open the incremental search speedbar
192
+ And I type "foo" into the "Find" field in the speedbar
193
+ Then the selected text should be "Foo"
194
+ When I check "Match case" in the speedbar
195
+ Then there should not be any text selected
196
+ When I type "Foo" into the "Find" field in the speedbar
197
+ Then the selected text should be "Foo"
198
+
199
+ Scenario: Should match case if requested with regex
200
+ When I replace the contents with "Foo\nBar\nBaz"
201
+ And I move the cursor to 0
202
+ And I open the incremental search speedbar
203
+ And I check "Regex" in the speedbar
204
+ And I type "fo." into the "Find" field in the speedbar
205
+ Then the selected text should be "Foo"
206
+ When I check "Match case" in the speedbar
207
+ Then there should not be any text selected
208
+
209
+ Scenario: Repeat incremental search with wrap around
210
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
211
+ And I move the cursor to 0
212
+ And I open the incremental search speedbar
213
+ And I type "Foo" into the "Find" field in the speedbar
214
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
215
+ And the selected text should be "Foo"
216
+ And the selection range should be from 0 to 3
217
+ When I open the incremental search speedbar
218
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
219
+ And the selected text should be "Foo"
220
+ And the selection range should be from 8 to 11
221
+ When I open the incremental search speedbar
222
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
223
+ And the selected text should be "Foo"
224
+ And the selection range should be from 0 to 3
225
+
226
+ Scenario: Repeat incremental search without wrap around
227
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
228
+ And I move the cursor to 0
229
+ And I open the incremental search speedbar
230
+ And I uncheck "Wrap around" in the speedbar
231
+ And I type "Foo" into the "Find" field in the speedbar
232
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
233
+ And the selected text should be "Foo"
234
+ And the selection range should be from 0 to 3
235
+ When I open the incremental search speedbar
236
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
237
+ And the selected text should be "Foo"
238
+ And the selection range should be from 8 to 11
239
+ When I open the incremental search speedbar
240
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
241
+ And there should not be any text selected
242
+
243
+ Scenario: Find next with wrap around
244
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
245
+ And I move the cursor to 0
246
+ And I open the incremental search speedbar
247
+ And I type "Foo" into the "Find" field in the speedbar
248
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
249
+ And the selected text should be "Foo"
250
+ And the selection range should be from 0 to 3
251
+ When I run the command Redcar::DocumentSearch::DoFindNextCommand
252
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
253
+ And the selected text should be "Foo"
254
+ And the selection range should be from 8 to 11
255
+ When I run the command Redcar::DocumentSearch::DoFindNextCommand
256
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
257
+ And the selected text should be "Foo"
258
+ And the selection range should be from 0 to 3
259
+
260
+ Scenario: Find next without wrap around
261
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
262
+ And I move the cursor to 0
263
+ And I open the incremental search speedbar
264
+ And I uncheck "Wrap around" in the speedbar
265
+ And I type "foo" into the "Find" field 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 run the command Redcar::DocumentSearch::DoFindNextCommand
270
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
271
+ And the selected text should be "Foo"
272
+ And the selection range should be from 8 to 11
273
+ When I run the command Redcar::DocumentSearch::DoFindNextCommand
274
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
275
+ And there should not be any text selected
276
+
277
+ Scenario: Find previous with wrap around by default
278
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
279
+ And I move the cursor to 18
280
+ And I open the incremental search speedbar
281
+ And I type "foo" into the "Find" field in the speedbar
282
+ Then the selected text should be "Foo"
283
+ And the selection range should be from 0 to 3
284
+ When I run the command Redcar::DocumentSearch::DoFindPreviousCommand
285
+ Then the selected text should be "Foo"
286
+ And the selection range should be from 8 to 11
287
+ When I run the command Redcar::DocumentSearch::DoFindPreviousCommand
288
+ Then the selected text should be "Foo"
289
+ And the selection range should be from 0 to 3
290
+ When I run the command Redcar::DocumentSearch::DoFindPreviousCommand
291
+ Then the selected text should be "Foo"
292
+ And the selection range should be from 8 to 11
293
+
294
+ Scenario: Find previous without wrap around
295
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
296
+ And I move the cursor to 18
297
+ And I open the incremental search speedbar
298
+ And I uncheck "Wrap around" in the speedbar
299
+ And I type "Foo" into the "Find" field in the speedbar
300
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
301
+ And there should not be any text selected
302
+ When I run the command Redcar::DocumentSearch::DoFindPreviousCommand
303
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
304
+ And the selected text should be "Foo"
305
+ And the selection range should be from 8 to 11
306
+ When I run the command Redcar::DocumentSearch::DoFindPreviousCommand
307
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
308
+ And the selected text should be "Foo"
309
+ And the selection range should be from 0 to 3
310
+ When I run the command Redcar::DocumentSearch::DoFindPreviousCommand
311
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
312
+ And there should not be any text selected
313
+
314
+ Scenario: Should scroll vertically to the match
315
+ When I replace the contents with 100 lines of "xxx" then "Foo"
316
+ And I scroll to the top of the document
317
+ And I move the cursor to 0
318
+ And I open the incremental search speedbar
319
+ And I type "foo" into the "Find" field in the speedbar
320
+ Then the selected text should be "Foo"
321
+ And line number 100 should be visible
322
+
323
+ Scenario: "Should scroll horizontally to the match"
324
+ When I replace the contents with 300 "x" then "Foo"
325
+ And I move the cursor to 0
326
+ And I open the incremental search speedbar
327
+ And I type "foo" into the "Find" field in the speedbar
328
+ Then the selected text should be "Foo"
329
+ And horizontal offset 302 should be visible
330
+
331
+ Scenario: Should not reopen with the same text as the previous search
332
+ When I open the incremental search speedbar
333
+ And I type "foo" into the "Find" field in the speedbar
334
+ And I close the speedbar
335
+ And I open the incremental search speedbar
336
+ Then the "Find" field in the speedbar should have text ""
337
+
338
+ Scenario: Should not initialize query with the currently selected text
339
+ When I replace the contents with "Flux\nBar\nFoo"
340
+ And I move the cursor to 0
341
+ And I select from 0 to 4
342
+ And I open the incremental search speedbar
343
+ Then the "Find" field in the speedbar should have text ""
344
+
345
+ Scenario: Search for a word should start from the start of a selection
346
+ When I replace the contents with "Foo\nBar\nBaz"
347
+ And I select from 5 to 8
348
+ And I open the incremental search speedbar
349
+ And I type "Ba" into the "Find" field in the speedbar
350
+ Then the selected text should be "Ba"
351
+ And the selection should be on line 2
@@ -0,0 +1,178 @@
1
+
2
+ @speedbar
3
+ Feature: Replace in file
4
+
5
+ Background:
6
+ Given I open a new edit tab
7
+
8
+ Scenario: Open replace speedbar
9
+ When I replace the contents with "Foo\nBar\nBaz"
10
+ And I move the cursor to 0
11
+ And I open the find speedbar
12
+ Then I should see the find speedbar
13
+
14
+ Scenario: Replace next occurrence on the same line
15
+ When I replace the contents with "Foo\nBar Rab Rab\nBaz"
16
+ And I move the cursor to 4
17
+ And I open the find speedbar
18
+ And I type "Rab" into the "Find" field in the speedbar
19
+ And I type "RABBIT" into the "Replace" field in the speedbar
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
23
+ Then the contents should be "Foo\nBar RABBIT Rab\nBaz"
24
+ And the selected text should be "Rab"
25
+ And the selection range should be from 15 to 18
26
+
27
+ Scenario: Replace next occurrence on the same line twice
28
+ When I replace the contents with "Foo\nBar Rab Rab\nBaz"
29
+ And I move the cursor to 4
30
+ And I open the find speedbar
31
+ And I type "Rab" into the "Find" field in the speedbar
32
+ And I type "RAB" into the "Replace" field in the speedbar
33
+ And I press "Replace && Find" in the speedbar
34
+ And I press "Replace && Find" in the speedbar
35
+ And I press "Replace && Find" in the speedbar
36
+ Then the contents should be "Foo\nBar RAB RAB\nBaz"
37
+ And the selected text should be "RAB"
38
+ And the selection range should be from 8 to 11
39
+
40
+ Scenario: Replace next occurrence
41
+ When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
42
+ And I move the cursor to 0
43
+ And I open the find speedbar
44
+ And I type "Bar" into the "Find" field in the speedbar
45
+ And I type "Rab" into the "Replace" field in the speedbar
46
+ And I press "Replace && Find" in the speedbar
47
+ And I press "Replace && Find" in the speedbar
48
+ Then the contents should be "Foo\nRab\nBaz\nBar\nQux"
49
+ And the selected text should be "Bar"
50
+ And the selection should be on line 3
51
+
52
+ Scenario: Replace next occurrence twice
53
+ When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
54
+ And I move the cursor to 0
55
+ And I open the find speedbar
56
+ And I type "Bar" into the "Find" field in the speedbar
57
+ And I type "Rab" into the "Replace" field in the speedbar
58
+ And I press "Replace && Find" in the speedbar
59
+ And I press "Replace && Find" in the speedbar
60
+ Then the contents should be "Foo\nRab\nBaz\nBar\nQux"
61
+ When I press "Replace && Find" in the speedbar
62
+ And I press "Replace && Find" in the speedbar
63
+ Then the contents should be "Foo\nRab\nBaz\nRab\nQux"
64
+ And there should not be any text selected
65
+
66
+ Scenario: Replace next occurrence wraps
67
+ When I replace the contents with "Foo\nBar\nBaz"
68
+ And I move the cursor to 8
69
+ And I open the find speedbar
70
+ And I type "Bar" into the "Find" field in the speedbar
71
+ And I type "Rab" into the "Replace" field in the speedbar
72
+ When I press "Replace && Find" in the speedbar
73
+ When I press "Replace && Find" in the speedbar
74
+ Then the contents should be "Foo\nRab\nBaz"
75
+ And there should not be any text selected
76
+
77
+ Scenario: Replace all replaces one
78
+ When I replace the contents with "Foo\nBar\nBaz"
79
+ And I move the cursor to 0
80
+ And I open the find speedbar
81
+ And I type "Bar" into the "Find" field in the speedbar
82
+ And I type "Rab" into the "Replace" field in the speedbar
83
+ When I press "Replace All" in the speedbar
84
+ Then the contents should be "Foo\nRab\nBaz"
85
+ And the selected text should be "Rab"
86
+ And the selection should be on line 1
87
+
88
+ Scenario: Replace all replaces two
89
+ When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
90
+ And I move the cursor to 0
91
+ And I open the find speedbar
92
+ And I type "Bar" into the "Find" field in the speedbar
93
+ And I type "Rab" into the "Replace" field in the speedbar
94
+ When I press "Replace All" in the speedbar
95
+ Then the contents should be "Foo\nRab\nBaz\nRab\nQux"
96
+ And the selected text should be "Rab"
97
+ And the selection should be on line 3
98
+
99
+ Scenario: Replace all replaces two on the same line
100
+ When I replace the contents with "abcabc"
101
+ And I open the find speedbar
102
+ And I type "bc" into the "Find" field in the speedbar
103
+ And I type "xx" into the "Replace" field in the speedbar
104
+ When I press "Replace All" in the speedbar
105
+ Then the contents should be "axxaxx"
106
+
107
+ Scenario: Replace all replaces overlapping occurences on the same line
108
+ When I replace the contents with "deedeedeed"
109
+ And I open the find speedbar
110
+ And I type "deed" into the "Find" field in the speedbar
111
+ And I type "misdeed" into the "Replace" field in the speedbar
112
+ When I press "Replace All" in the speedbar
113
+ Then the contents should be "misdeedeemisdeed"
114
+
115
+ Scenario: Replace all is a single undo action
116
+ When I replace the contents with "abcabc"
117
+ And I open the find speedbar
118
+ And I type "bc" into the "Find" field in the speedbar
119
+ And I type "xx" into the "Replace" field in the speedbar
120
+ When I press "Replace All" in the speedbar
121
+ Then the contents should be "axxaxx"
122
+ When I undo
123
+ Then the contents should be "abcabc"
124
+
125
+ Scenario: Replace next occurrence test bug
126
+ When I replace the contents with "the\n* Speedbars have access to the properties of the widgets in them."
127
+ And I move the cursor to 0
128
+ And I open the find speedbar
129
+ And I type "the" into the "Find" field in the speedbar
130
+ And I type "THE" into the "Replace" field in the speedbar
131
+ And I press "Replace && Find" in the speedbar
132
+ And I press "Replace && Find" in the speedbar
133
+ Then the contents should be "THE\n* Speedbars have access to the properties of the widgets in them."
134
+ And the selection range should be from 31 to 34
135
+ When I press "Replace && Find" in the speedbar
136
+ Then the contents should be "THE\n* Speedbars have access to THE properties of the widgets in them."
137
+ And the selection range should be from 49 to 52
138
+ And I press "Replace && Find" in the speedbar
139
+ Then the contents should be "THE\n* Speedbars have access to THE properties of THE widgets in them."
140
+ And the selection range should be from 64 to 67
141
+ And I press "Replace && Find" in the speedbar
142
+ Then the contents should be "THE\n* Speedbars have access to THE properties of THE widgets in THEm."
143
+ And the selected text should be "THE"
144
+ And the selection should be on line 0
145
+
146
+ Scenario: Replace regex with back-references
147
+ When I replace the contents with "Curry chicken"
148
+ And I move the cursor to 0
149
+ And I open the find speedbar
150
+ And I check "Regex" in the speedbar
151
+ And I type "(\w+) chicken" into the "Find" field in the speedbar
152
+ And I type "\1 beef" into the "Replace" field in the speedbar
153
+ And I press "Replace && Find" in the speedbar
154
+ And I press "Replace && Find" in the speedbar
155
+ Then the contents should be "Curry beef"
156
+
157
+ Scenario: Replace should move past the current replacement if the query is a substring of the replacement
158
+ When I replace the contents with "foo\nfoo\nfoo"
159
+ And I move the cursor to 0
160
+ And I open the find speedbar
161
+ And I type "foo" into the "Find" field in the speedbar
162
+ And I type "foobar" into the "Replace" field in the speedbar
163
+ And I press "Replace && Find" in the speedbar
164
+ And I press "Replace && Find" in the speedbar
165
+ And I press "Replace && Find" in the speedbar
166
+ And I press "Replace && Find" in the speedbar
167
+ Then the contents should be "foobar\nfoobar\nfoobar"
168
+ And the selected text should be "foo"
169
+ And the selection should be on line 0
170
+
171
+ Scenario: The Search-and-Replace Speedbar should get initialized with the currently selected text
172
+ When I replace the contents with "Foo\nBar\nFoo"
173
+ And I select from 4 to 7
174
+ When I open the find speedbar
175
+ Then the "Find" field in the speedbar should have text "Bar"
176
+ When I type "Foo" into the "Replace" field in the speedbar
177
+ And I press "Replace && Find" in the speedbar
178
+ Then the contents should be "Foo\nFoo\nFoo"