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,45 @@
1
+ module Redcar
2
+ class Declarations
3
+ class SelectTagDialog < FilterListDialog
4
+
5
+ def initialize(matches)
6
+ super()
7
+ @matches = matches
8
+ end
9
+
10
+ def close
11
+ super
12
+ end
13
+
14
+ def update_list(filter)
15
+ @last_list = @matches
16
+ filtered_list = @matches
17
+ if filter.length >= 1
18
+ filtered_list = filter_and_rank_by(filtered_list, filter, filtered_list.length) do |match|
19
+ match[:file].split(::File::SEPARATOR).last
20
+ end
21
+ @last_list = filtered_list
22
+ end
23
+ align_matches_for_display(filtered_list)
24
+ end
25
+
26
+ def selected(text, ix, closing=false)
27
+ if @last_list
28
+ close
29
+ Redcar::Declarations.go_to_definition(@last_list[ix])
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ def align_matches_for_display(filtered_list)
36
+ filtered_list.collect do |match|
37
+ file_path = match[:file]
38
+ file = file_path.split(::File::SEPARATOR).last
39
+ relative_path = file_path.gsub(Regexp.compile(Project::Manager.focussed_project.path + '/'), '')
40
+ "%s (%s)" % [file, relative_path]
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,7 @@
1
+ Plugin.define do
2
+ name "declarations"
3
+ version "0.1.0"
4
+ file "lib", "declarations"
5
+ object "Redcar::Declarations"
6
+ dependencies "project", ">0"
7
+ end
@@ -0,0 +1,62 @@
1
+
2
+ require File.join(File.dirname(__FILE__), "..", "spec_helper")
3
+
4
+ module Redcar
5
+ describe Declarations::File do
6
+ before do
7
+ @tags_file = File.join(File.dirname(__FILE__), "..", "tags")
8
+ end
9
+
10
+ after do
11
+ FileUtils.rm_f(@tags_file)
12
+ end
13
+
14
+ describe "dump and load from file" do
15
+ describe "with no existing tags file" do
16
+ before do
17
+ @file = Declarations::File.new(@tags_file)
18
+ end
19
+
20
+ it "should have no tags" do
21
+ @file.tags.should be_empty
22
+ end
23
+
24
+ it "should add new tags" do
25
+ @file.add_tags([%w"Abc /foo class:Abc"])
26
+ @file.tags.length.should == 1
27
+ end
28
+
29
+ describe "with tags added" do
30
+ before do
31
+ @file.add_tags([%w"Abc /foo class:Abc"])
32
+ end
33
+
34
+ it "should dump a tags file" do
35
+ @file.dump
36
+ File.exist?(@tags_file).should be_true
37
+ end
38
+ end
39
+ end
40
+
41
+ describe "with existing tags file" do
42
+ before do
43
+ file = Declarations::File.new(@tags_file)
44
+ file.add_tags([%w"Abc /foo class:Abc"])
45
+ file.last_updated = Time.now
46
+ @last_updated = Time.now
47
+ file.dump
48
+ @file = Declarations::File.new(@tags_file)
49
+ end
50
+
51
+ it "should load up the tags" do
52
+ @file.tags.should == [%w"Abc /foo class:Abc"]
53
+ end
54
+
55
+ it "should know the timestamp of when it was last updated" do
56
+ @file.last_updated.to_s.should == @last_updated.to_s
57
+ end
58
+ end
59
+ end
60
+
61
+ end
62
+ end
@@ -0,0 +1,15 @@
1
+
2
+ class James
3
+ def madison
4
+ end
5
+
6
+ def self.alexander
7
+ end
8
+
9
+ module Hamilton
10
+ end
11
+ end
12
+
13
+ module James::Hamilton
14
+ attr_accessor :john, :jay
15
+ end
@@ -0,0 +1,5 @@
1
+ $:.push File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
+
3
+ require 'redcar'
4
+ Redcar.environment = :test
5
+ Redcar.load_unthreaded
@@ -0,0 +1,14 @@
1
+
2
+ Todo List
3
+ ---
4
+ 1. Store last n search and replace results in memory
5
+ 1. Optionally store the search and replace results in configuration file.
6
+ 1. Pre-populate seach box with selected text
7
+ 1. Adding a shortcut keystroke.
8
+ 1. Better error handling
9
+ 1. Advanced Search and Replace - Across all open files or across all files in a project
10
+ 1. RSpec Tests
11
+ 1. Regex handling for replace (groups, etc..)
12
+ 1. Fix same line bug - doesn't go back and seach to left of cursor.
13
+
14
+ Comments or suggestions wcherry69@gmail.com
@@ -0,0 +1,541 @@
1
+ @speedbar
2
+ Feature: Find
3
+
4
+ Background:
5
+ Given I open a new edit tab
6
+
7
+ # Begin: Scenarios adapted from incremental_search.feature
8
+
9
+ Scenario: Open Find speedbar
10
+ When I replace the contents with "Foo\nBar\nBaz"
11
+ And I move the cursor to 0
12
+ And I open the find speedbar
13
+ Then I should see the find speedbar
14
+
15
+ Scenario: Search for a word should select next occurrence
16
+ When I replace the contents with "Foo\nBar\nBaz"
17
+ And I move the cursor to 0
18
+ And I open the find speedbar
19
+ And I type "Bar" into the "Find" field in the speedbar
20
+ And I press "Next" in the speedbar
21
+ Then the selected text should be "Bar"
22
+
23
+ Scenario: Search twice should move to the next occurrence
24
+ When I replace the contents with "Foo\nBar\nFoo"
25
+ And I move the cursor to 0
26
+ And I open the find speedbar
27
+ And I type "Foo" into the "Find" field in the speedbar
28
+ And I press "Next" in the speedbar
29
+ Then the selection should be on line 0
30
+ When I press "Next" in the speedbar
31
+ Then the selected text should be "Foo"
32
+ And the selection should be on line 2
33
+
34
+ Scenario: Search for a word adjacent to cursor should select word
35
+ When I replace the contents with "Foo\nBar\nBaz"
36
+ And I move the cursor to 0
37
+ And I open the find speedbar
38
+ And I type "Foo" into the "Find" field in the speedbar
39
+ And I press "Next" in the speedbar
40
+ Then the selected text should be "Foo"
41
+
42
+ Scenario: Search for a word should find occurrence after the cursor
43
+ When I replace the contents with "Foo\nBar\nBaz\nFoo"
44
+ And I move the cursor to 1
45
+ And I open the find speedbar
46
+ And I type "Foo" into the "Find" field in the speedbar
47
+ And I press "Next" in the speedbar
48
+ Then the selection should be on line 3
49
+ And the selected text should be "Foo"
50
+ When I press "Next" in the speedbar
51
+ Then the selected text should be "Foo"
52
+ And the selection should be on line 0
53
+
54
+ Scenario: Search for a word should wrap to earlier occurrence if none left
55
+ When I replace the contents with "Foo\nBar\nBaz"
56
+ And I move the cursor to 3
57
+ And I open the find speedbar
58
+ And I type "Foo" into the "Find" field in the speedbar
59
+ And I press "Next" in the speedbar
60
+ Then the selected text should be "Foo"
61
+ And the selection should be on line 0
62
+
63
+ Scenario: Should start searching after the selection if the query matches exactly
64
+ When I replace the contents with "Foobar\nBarfoo\nBazhmm\nFoobar"
65
+ And I select from 0 to 6
66
+ And I open the find speedbar
67
+ And I type "Foobar" into the "Find" field in the speedbar
68
+ And I press "Next" in the speedbar
69
+ Then the selected text should be "Foobar"
70
+ And the selection should be on line 3
71
+
72
+ Scenario: Should start search within the selection if it matches the beginning of the query
73
+ When I replace the contents with "Foobar\nBarfoo\nBazhmm\nFoobar"
74
+ And I select from 0 to 3
75
+ And I open the find speedbar
76
+ And I type "Foobar" into the "Find" field in the speedbar
77
+ And I press "Next" in the speedbar
78
+ Then the selected text should be "Foobar"
79
+ And the selection range should be from 0 to 6
80
+
81
+ Scenario: Should start search within the selection if the query matches partially
82
+ When I replace the contents with "Foobar\nBarfoo\nBazhmm\nFoobar"
83
+ And I select from 0 to 6
84
+ And I open the find speedbar
85
+ And I type "Foo" into the "Find" field in the speedbar
86
+ And I press "Next" in the speedbar
87
+ Then the selected text should be "Foo"
88
+ And the selection range should be from 0 to 3
89
+
90
+ Scenario: Not thrown off by multi-byte characters
91
+ When I replace the contents with "Benedikt Müller"
92
+ And I move the cursor to 0
93
+ And I open the find speedbar
94
+ And I type "ler" into the "Find" field in the speedbar
95
+ And I press "Next" in the speedbar
96
+ Then the selected text should be "ler"
97
+ And the selection range should be from 12 to 15
98
+
99
+ Scenario: Not thrown off by multi-byte characters 2
100
+ When I replace the contents with "Benedikt Müller\n foo "
101
+ And I move the cursor to 0
102
+ And I open the find speedbar
103
+ And I type "foo" into the "Find" field in the speedbar
104
+ And I press "Next" in the speedbar
105
+ Then the selected text should be "foo"
106
+ And the selection range should be from 17 to 20
107
+
108
+ Scenario: Not thrown off by multi-byte characters 3
109
+ When I replace the contents with "你好, 凯兰\nYou make my heart super happy."
110
+ And I move the cursor to 0
111
+ And I open the find speedbar
112
+ And I type "you" into the "Find" field in the speedbar
113
+ And I press "Next" in the speedbar
114
+ Then the selected text should be "You"
115
+ And the selection range should be from 7 to 10
116
+
117
+ Scenario: Handles repeated search across by multi-byte characters
118
+ When I replace the contents with "Foo\n你好, 凯兰\nFoo\nBar\nFoo\nBaz"
119
+ And I move the cursor to 0
120
+ And I open the find speedbar
121
+ And I type "foo" into the "Find" field in the speedbar
122
+ And I press "Next" in the speedbar
123
+ Then the selected text should be "Foo"
124
+ And the selection should be on line 0
125
+ When I press "Next" in the speedbar
126
+ Then the selected text should be "Foo"
127
+ And the selection should be on line 2
128
+ When I press "Next" in the speedbar
129
+ Then the selected text should be "Foo"
130
+ And the selection should be on line 4
131
+ When I press "Next" in the speedbar
132
+ Then the selected text should be "Foo"
133
+ And the selection should be on line 0
134
+ When I press "Next" in the speedbar
135
+ Then the selected text should be "Foo"
136
+ And the selection should be on line 2
137
+
138
+ Scenario: Should select multi-byte characters
139
+ When I replace the contents with "Benedikt Müller"
140
+ And I move the cursor to 0
141
+ And I open the find speedbar
142
+ And I type "mül" into the "Find" field in the speedbar
143
+ And I press "Next" in the speedbar
144
+ Then the selected text should be "Mül"
145
+ And the selection range should be from 9 to 12
146
+
147
+ Scenario: Should select multi-byte characters
148
+ When I replace the contents with "Benedikt Müller"
149
+ And I move the cursor to 0
150
+ And I open the find speedbar
151
+ And I type "mül" into the "Find" field in the speedbar
152
+ And I press "Next" in the speedbar
153
+ Then the selected text should be "Mül"
154
+ And the selection range should be from 9 to 12
155
+
156
+ Scenario: Should select multi-byte characters 2
157
+ When I replace the contents with "你好, 凯兰\nYou make my heart super happy."
158
+ And I move the cursor to 0
159
+ And I open the find speedbar
160
+ And I type "凯兰" into the "Find" field in the speedbar
161
+ And I press "Next" in the speedbar
162
+ Then the selected text should be "凯兰"
163
+ And the selection range should be from 4 to 6
164
+
165
+ Scenario: Doesn't search for a regex
166
+ When I replace the contents with "Foo\nBar\nBaz"
167
+ And I move the cursor to 0
168
+ And I open the find speedbar
169
+ And I type "Ba." into the "Find" field in the speedbar
170
+ And I press "Next" in the speedbar
171
+ Then there should not be any text selected
172
+
173
+ Scenario: Search for a regex
174
+ When I replace the contents with "Foo\nBar\nBaz"
175
+ And I move the cursor to 0
176
+ And I open the find speedbar
177
+ And I type "Ba." into the "Find" field in the speedbar
178
+ And I press "Next" in the speedbar
179
+ Then there should not be any text selected
180
+ When I check "Regex" in the speedbar
181
+ And I press "Next" in the speedbar
182
+ Then the selected text should be "Bar"
183
+ When I press "Next" in the speedbar
184
+ Then the selected text should be "Baz"
185
+
186
+ Scenario: Should not match case by default
187
+ When I replace the contents with "Foo\nBar\nBaz"
188
+ And I move the cursor to 0
189
+ And I open the find speedbar
190
+ And I type "foo" into the "Find" field in the speedbar
191
+ And I press "Next" in the speedbar
192
+ Then the selected text should be "Foo"
193
+
194
+ Scenario: Should not match case with regex by default
195
+ When I replace the contents with "Foo\nBar\nBaz"
196
+ And I move the cursor to 0
197
+ And I open the find speedbar
198
+ And I type "fo." into the "Find" field in the speedbar
199
+ And I press "Next" in the speedbar
200
+ Then there should not be any text selected
201
+ When I check "Regex" in the speedbar
202
+ And I press "Next" in the speedbar
203
+ Then the selected text should be "Foo"
204
+
205
+ Scenario: Should match case if requested
206
+ When I replace the contents with "Foo\nBar\nBaz"
207
+ And I move the cursor to 0
208
+ And I open the find speedbar
209
+ And I type "foo" into the "Find" field in the speedbar
210
+ And I press "Next" in the speedbar
211
+ Then the selected text should be "Foo"
212
+ When I check "Match case" in the speedbar
213
+ And I move the cursor to 0
214
+ And I press "Next" in the speedbar
215
+ Then there should not be any text selected
216
+ When I type "Foo" into the "Find" field in the speedbar
217
+ And I move the cursor to 0
218
+ And I press "Next" in the speedbar
219
+ Then the selected text should be "Foo"
220
+
221
+ Scenario: Should match case if requested with regex
222
+ When I replace the contents with "Foo\nBar\nBaz"
223
+ And I move the cursor to 0
224
+ And I open the find speedbar
225
+ And I check "Regex" in the speedbar
226
+ And I type "fo." into the "Find" field in the speedbar
227
+ And I press "Next" in the speedbar
228
+ Then the selected text should be "Foo"
229
+ When I check "Match case" in the speedbar
230
+ And I move the cursor to 0
231
+ And I press "Next" in the speedbar
232
+ Then there should not be any text selected
233
+
234
+ Scenario: Find next with wrap around
235
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
236
+ And I move the cursor to 0
237
+ And I open the find speedbar
238
+ And I type "Foo" into the "Find" field in the speedbar
239
+ And I press "Next" in the speedbar
240
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
241
+ And the selected text should be "Foo"
242
+ And the selection range should be from 0 to 3
243
+ When I press "Next" in the speedbar
244
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
245
+ And the selected text should be "Foo"
246
+ And the selection range should be from 8 to 11
247
+ When I press "Next" 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
+
252
+ Scenario: Find next without wrap around
253
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
254
+ And I move the cursor to 0
255
+ And I open the find speedbar
256
+ And I uncheck "Wrap around" in the speedbar
257
+ And I type "foo" into the "Find" field in the speedbar
258
+ And I press "Next" in the speedbar
259
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
260
+ And the selected text should be "Foo"
261
+ And the selection range should be from 0 to 3
262
+ When I press "Next" in the speedbar
263
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
264
+ And the selected text should be "Foo"
265
+ And the selection range should be from 8 to 11
266
+ When I press "Next" in the speedbar
267
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
268
+ And there should not be any text selected
269
+
270
+ Scenario: Find previous with wrap around by default
271
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
272
+ And I move the cursor to 18
273
+ And I open the find speedbar
274
+ And I type "foo" into the "Find" field in the speedbar
275
+ And I press "Next" in the speedbar
276
+ Then the selected text should be "Foo"
277
+ And the selection range should be from 0 to 3
278
+ When I press "Previous" in the speedbar
279
+ Then the selected text should be "Foo"
280
+ And the selection range should be from 8 to 11
281
+ When I press "Previous" 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 press "Previous" in the speedbar
285
+ Then the selected text should be "Foo"
286
+ And the selection range should be from 8 to 11
287
+
288
+ Scenario: Find previous without wrap around
289
+ When I replace the contents with "Foo\nBar Foo\nHmm\nBaz"
290
+ And I move the cursor to 18
291
+ And I open the find speedbar
292
+ And I uncheck "Wrap around" in the speedbar
293
+ And I type "Foo" into the "Find" field in the speedbar
294
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
295
+ And there should not be any text selected
296
+ When I press "Previous" in the speedbar
297
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
298
+ And the selected text should be "Foo"
299
+ And the selection range should be from 8 to 11
300
+ When I press "Previous" in the speedbar
301
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
302
+ And the selected text should be "Foo"
303
+ And the selection range should be from 0 to 3
304
+ When I press "Previous" in the speedbar
305
+ Then the contents should be "Foo\nBar Foo\nHmm\nBaz"
306
+ And there should not be any text selected
307
+
308
+ Scenario: Should scroll vertically to the match
309
+ When I replace the contents with 100 lines of "xxx" then "Foo"
310
+ And I scroll to the top of the document
311
+ And I move the cursor to 0
312
+ And I open the find speedbar
313
+ And I type "foo" into the "Find" field in the speedbar
314
+ And I press "Next" in the speedbar
315
+ Then the selected text should be "Foo"
316
+ And line number 100 should be visible
317
+
318
+ Scenario: "Should scroll horizontally to the match"
319
+ When I replace the contents with 300 "x" then "Foo"
320
+ And I move the cursor to 0
321
+ And I open the find speedbar
322
+ And I type "foo" into the "Find" field in the speedbar
323
+ And I press "Next" in the speedbar
324
+ Then the selected text should be "Foo"
325
+ And horizontal offset 302 should be visible
326
+
327
+ Scenario: Should reopen with the same text as the previous search
328
+ When I open the find speedbar
329
+ And I type "foo" into the "Find" field in the speedbar
330
+ And I close the speedbar
331
+ And I open the find speedbar
332
+ Then the "Find" field in the speedbar should have text "foo"
333
+
334
+ Scenario: Should initialize query with the currently selected text
335
+ When I replace the contents with "Flux\nBar\nFoo"
336
+ And I move the cursor to 0
337
+ And I select from 0 to 4
338
+ And I open the find speedbar
339
+ Then the "Find" field in the speedbar should have text "Flux"
340
+
341
+ # End: Scenarios adapted from incremental_search.feature
342
+
343
+ # Begin: Replacement scenarios specific to Find speedbar
344
+
345
+ Scenario: Replace and find with no initial selection
346
+ When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
347
+ And I move the cursor to 0
348
+ And I open the find speedbar
349
+ And I type "Rab" into the "Find" field in the speedbar
350
+ And I type "RABBIT" into the "Replace" field in the speedbar
351
+ And I press "Replace && Find" in the speedbar
352
+ Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
353
+ And the selected text should be "Rab"
354
+ And the selection range should be from 12 to 15
355
+ When I press "Replace && Find" in the speedbar
356
+ Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
357
+ And the selected text should be "Rab"
358
+ And the selection range should be from 19 to 22
359
+ When I press "Replace && Find" in the speedbar
360
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
361
+ And the selected text should be "Rab"
362
+ And the selection range should be from 30 to 33
363
+ When I press "Replace && Find" in the speedbar
364
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
365
+ And the selected text should be "RAB"
366
+ And the selection range should be from 12 to 15
367
+ When I press "Replace && Find" in the speedbar
368
+ Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
369
+ And the selected text should be "RAB"
370
+ And the selection range should be from 22 to 25
371
+
372
+ Scenario: Replace and find with matching initial selection
373
+ When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
374
+ And I select from 12 to 15
375
+ And I open the find speedbar
376
+ And I type "Rab" into the "Find" field in the speedbar
377
+ And I type "RABBIT" into the "Replace" field in the speedbar
378
+ And I press "Replace && Find" in the speedbar
379
+ Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
380
+ And the selected text should be "Rab"
381
+ And the selection range should be from 19 to 22
382
+ When I press "Replace && Find" in the speedbar
383
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
384
+ And the selected text should be "Rab"
385
+ And the selection range should be from 30 to 33
386
+ When I press "Replace && Find" in the speedbar
387
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
388
+ And the selected text should be "RAB"
389
+ And the selection range should be from 12 to 15
390
+ When I press "Replace && Find" in the speedbar
391
+ Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
392
+ And the selected text should be "RAB"
393
+ And the selection range should be from 22 to 25
394
+
395
+ Scenario: Replace and find with initial selection that doesn't match
396
+ When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
397
+ And I select from 4 to 7
398
+ And I open the find speedbar
399
+ And I type "Rab" into the "Find" field in the speedbar
400
+ And I type "RABBIT" into the "Replace" field in the speedbar
401
+ And I press "Replace && Find" in the speedbar
402
+ Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
403
+ And the selected text should be "Rab"
404
+ And the selection range should be from 12 to 15
405
+ When I press "Replace && Find" in the speedbar
406
+ Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
407
+ And the selected text should be "Rab"
408
+ And the selection range should be from 19 to 22
409
+ When I press "Replace && Find" in the speedbar
410
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
411
+ And the selected text should be "Rab"
412
+ And the selection range should be from 30 to 33
413
+ When I press "Replace && Find" in the speedbar
414
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
415
+ And the selected text should be "RAB"
416
+ And the selection range should be from 12 to 15
417
+ When I press "Replace && Find" in the speedbar
418
+ Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
419
+ And the selected text should be "RAB"
420
+ And the selection range should be from 22 to 25
421
+
422
+ Scenario: Replace and find with initial selection that is after last match
423
+ When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
424
+ And I select from 28 to 31
425
+ And I open the find speedbar
426
+ And I type "Rab" into the "Find" field in the speedbar
427
+ And I type "RABBIT" into the "Replace" field in the speedbar
428
+ And I press "Replace && Find" in the speedbar
429
+ Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
430
+ And the selected text should be "Rab"
431
+ And the selection range should be from 12 to 15
432
+ When I press "Replace && Find" in the speedbar
433
+ Then the contents should be "Foo\nBar Foo RABBIT Rab\nHmm\nRab\nFoo\nBaz"
434
+ And the selected text should be "Rab"
435
+ And the selection range should be from 19 to 22
436
+ When I press "Replace && Find" in the speedbar
437
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRab\nFoo\nBaz"
438
+ And the selected text should be "Rab"
439
+ And the selection range should be from 30 to 33
440
+ When I press "Replace && Find" in the speedbar
441
+ Then the contents should be "Foo\nBar Foo RABBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
442
+ And the selected text should be "RAB"
443
+ And the selection range should be from 12 to 15
444
+ When I press "Replace && Find" in the speedbar
445
+ Then the contents should be "Foo\nBar Foo RABBITBIT RABBIT\nHmm\nRABBIT\nFoo\nBaz"
446
+ And the selected text should be "RAB"
447
+ And the selection range should be from 22 to 25
448
+
449
+ Scenario: Replace and find with initial selection that is after last match and no wrap around
450
+ When I replace the contents with "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
451
+ And I select from 28 to 31
452
+ And I open the find speedbar
453
+ And I type "Rab" into the "Find" field in the speedbar
454
+ And I type "RABBIT" into the "Replace" field in the speedbar
455
+ And I uncheck "Wrap around" in the speedbar
456
+ And I press "Replace && Find" in the speedbar
457
+ Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
458
+ And the selected text should be ""
459
+ And the selection range should be from 31 to 31
460
+ When I press "Replace && Find" in the speedbar
461
+ Then the contents should be "Foo\nBar Foo Rab Rab\nHmm\nRab\nFoo\nBaz"
462
+ And the selected text should be ""
463
+ And the selection range should be from 31 to 31
464
+
465
+ Scenario: Replace all replaces one
466
+ When I replace the contents with "Foo\nBar\nBaz"
467
+ And I move the cursor to 0
468
+ And I open the find speedbar
469
+ And I type "Bar" into the "Find" field in the speedbar
470
+ And I type "Rab" into the "Replace" field in the speedbar
471
+ And I uncheck "Wrap around" in the speedbar
472
+ And I press "Replace All" in the speedbar
473
+ Then the contents should be "Foo\nRab\nBaz"
474
+ And the selected text should be "Rab"
475
+ And the selection range should be from 4 to 7
476
+
477
+ Scenario: Replace all replaces two
478
+ When I replace the contents with "Foo\nBar\nBaz\nBar\nQux"
479
+ And I move the cursor to 0
480
+ And I open the find speedbar
481
+ And I type "Bar" into the "Find" field in the speedbar
482
+ And I type "Rab" into the "Replace" field in the speedbar
483
+ And I uncheck "Wrap around" in the speedbar
484
+ And I press "Replace All" in the speedbar
485
+ Then the contents should be "Foo\nRab\nBaz\nRab\nQux"
486
+ And the selected text should be "Rab"
487
+ And the selection range should be from 12 to 15
488
+
489
+ Scenario: Replace all replaces two on the same line
490
+ When I replace the contents with "abcabc"
491
+ And I open the find speedbar
492
+ And I type "bc" into the "Find" field in the speedbar
493
+ And I type "xx" into the "Replace" field in the speedbar
494
+ And I uncheck "Wrap around" in the speedbar
495
+ And I press "Replace All" in the speedbar
496
+ Then the contents should be "axxaxx"
497
+ And the selected text should be "xx"
498
+ And the selection range should be from 4 to 6
499
+ When I press "Replace All" in the speedbar
500
+ Then the contents should be "axxaxx"
501
+ And the selected text should be "xx"
502
+ And the selection range should be from 4 to 6
503
+
504
+ Scenario: Replace all replaces overlapping occurences on the same line
505
+ When I replace the contents with "deedeedeed"
506
+ And I open the find speedbar
507
+ And I type "deed" into the "Find" field in the speedbar
508
+ And I type "misdeed" into the "Replace" field in the speedbar
509
+ And I uncheck "Wrap around" in the speedbar
510
+ And I press "Replace All" in the speedbar
511
+ Then the contents should be "misdeedeemisdeed"
512
+ And the selected text should be "misdeed"
513
+ And the selection range should be from 9 to 16
514
+
515
+ Scenario: Replace all is a single undo action
516
+ When I replace the contents with "Foo\n\nabcabc\n\nBar"
517
+ And I open the find speedbar
518
+ And I type "bc" into the "Find" field in the speedbar
519
+ And I type "xx" into the "Replace" field in the speedbar
520
+ And I uncheck "Wrap around" in the speedbar
521
+ And I press "Replace All" in the speedbar
522
+ Then the contents should be "Foo\n\naxxaxx\n\nBar"
523
+ And the selected text should be "xx"
524
+ And the selection range should be from 9 to 11
525
+ When I undo
526
+ Then the contents should be "Foo\n\nabcabc\n\nBar"
527
+
528
+ Scenario: Replace all regex with back-references
529
+ When I replace the contents with "One fish\ntwo fish\nred fish\nblue fish"
530
+ And I move the cursor to 0
531
+ And I open the find speedbar
532
+ And I type "(\w+) fish" into the "Find" field in the speedbar
533
+ And I type "\1 car" into the "Replace" field in the speedbar
534
+ And I check "Regex" in the speedbar
535
+ And I uncheck "Wrap around" in the speedbar
536
+ And I press "Replace All" in the speedbar
537
+ Then the contents should be "One car\ntwo car\nred car\nblue car"
538
+ And the selected text should be "blue car"
539
+ And the selection range should be from 24 to 32
540
+
541
+ # End: Replacement scenarios specific to Find speedbar