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,116 @@
1
+ module Redcar
2
+ module Scm
3
+ module Subversion
4
+ class Change
5
+ include Redcar::Scm::ScmChangesMirror::Change
6
+ include_package 'org.tmatesoft.svn.core.wc'
7
+ include_package 'org.tmatesoft.svn.core'
8
+
9
+ def initialize(path,status,children,diff_client)
10
+ case Redcar.platform
11
+ when :osx, :linux
12
+ @path = path.gsub("//","/")
13
+ when :windows
14
+ @path = path.gsub("//","\\")
15
+ end
16
+ @status = status
17
+ @children = children
18
+ @diff_client = diff_client
19
+ end
20
+
21
+ def text
22
+ File.basename(@path)
23
+ end
24
+
25
+ def tooltip_text
26
+ @path
27
+ end
28
+
29
+ def icon
30
+ case @status
31
+ when :unmerged
32
+ if File.file?(@path)
33
+ File.join(Redcar.icons_directory, "blue-document--exclamation.png")
34
+ else
35
+ File.join(Redcar.icons_directory, "blue-folder--exclamation.png")
36
+ end
37
+ when :indexed
38
+ if File.file?(@path)
39
+ File.join(Redcar.icons_directory, "blue-document--plus.png")
40
+ else
41
+ File.join(Redcar.icons_directory, "blue-folder--plus.png")
42
+ end
43
+ when :deleted
44
+ if File.file?(@path)
45
+ File.join(Redcar.icons_directory, "blue-document-shred.png")
46
+ else
47
+ File.join(Redcar.icons_directory, "blue-folder-shred.png")
48
+ end
49
+ when :changed
50
+ if File.file?(@path)
51
+ File.join(Redcar.icons_directory, "blue-document--pencil.png")
52
+ else
53
+ File.join(Redcar.icons_directory, "blue-folder--pencil.png")
54
+ end
55
+ when :missing
56
+ File.join(Redcar.icons_directory, "question-white.png")
57
+ when :new
58
+ if File.directory?(@path.to_s)
59
+ :directory
60
+ else
61
+ :file
62
+ end
63
+ else
64
+ :file
65
+ end
66
+ end
67
+
68
+ def leaf?
69
+ File.file?(@path)
70
+ end
71
+
72
+ def status
73
+ [@status]
74
+ end
75
+
76
+ def log_status
77
+ "#{log_codes[status] || ''} #{path}"
78
+ end
79
+
80
+ def path
81
+ @path
82
+ end
83
+
84
+ def children
85
+ @children
86
+ end
87
+
88
+ def diff
89
+ unless @status == :new
90
+ stream = Java::JavaIo::ByteArrayOutputStream.new
91
+ file = Java::JavaIo::File.new(path)
92
+ @diff_client.doDiff(
93
+ file, SVNRevision::BASE,
94
+ file, SVNRevision::WORKING,
95
+ SVNDepth::IMMEDIATES,
96
+ false,
97
+ stream,
98
+ Java::JavaUtil::ArrayList.new
99
+ )
100
+ stream.toString()
101
+ end
102
+ end
103
+
104
+ def log_codes
105
+ {
106
+ [:indexed] => "A",
107
+ [:changed] => "M",
108
+ [:deleted] => "D",
109
+ [:missing] => "!",
110
+ [:unmerged] => "C"
111
+ }
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,7 @@
1
+ Plugin.define do
2
+ name "scm_svn"
3
+ version "0.1"
4
+ file "lib", "scm_svn"
5
+ object "Redcar::Scm::Subversion::Manager"
6
+ dependencies "scm", ">0"
7
+ end
@@ -0,0 +1,87 @@
1
+ Feature: Snippets should indent correctly
2
+
3
+ Scenario: Indent level 0, hard
4
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
5
+ """
6
+ if $1\n\t\nend
7
+ """
8
+ When I open a new edit tab
9
+ And tabs are hard
10
+ And I replace the contents with "if<c>"
11
+ And I press the Tab key in the edit tab
12
+ Then the contents should be "if <c>\n\t\nend"
13
+
14
+ Scenario: Indent level 1, hard
15
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
16
+ """
17
+ if $1\n\t\nend
18
+ """
19
+ When I open a new edit tab
20
+ And tabs are hard
21
+ And I replace the contents with "\tif<c>"
22
+ And I press the Tab key in the edit tab
23
+ Then the contents should be "\tif <c>\n\t\t\n\tend"
24
+
25
+ Scenario: Indent level 2, hard
26
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
27
+ """
28
+ if $1\n\t\nend
29
+ """
30
+ When I open a new edit tab
31
+ And tabs are hard
32
+ And I replace the contents with "\t\tif<c>"
33
+ And I press the Tab key in the edit tab
34
+ Then the contents should be "\t\tif <c>\n\t\t\t\n\t\tend"
35
+
36
+ Scenario: Indent level 0, soft
37
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
38
+ """
39
+ if $1\n\t$2\nend
40
+ """
41
+ When I open a new edit tab
42
+ And tabs are soft, 4 spaces
43
+ And I replace the contents with "if<c>"
44
+ And I press the Tab key in the edit tab
45
+ And I press the Tab key in the edit tab
46
+ Then the contents should be "if \n <c>\nend"
47
+
48
+ Scenario: Indent level 1, soft
49
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
50
+ """
51
+ if $1\n\t\nend
52
+ """
53
+ When I open a new edit tab
54
+ And tabs are soft, 4 spaces
55
+ And I replace the contents with " if<c>"
56
+ And I press the Tab key in the edit tab
57
+ Then the contents should be " if <c>\n \n end"
58
+
59
+ Scenario: Indent level 2, soft
60
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
61
+ """
62
+ if $1\n\t\nend
63
+ """
64
+ When I open a new edit tab
65
+ And tabs are soft, 4 spaces
66
+ And I replace the contents with " if<c>"
67
+ And I press the Tab key in the edit tab
68
+ Then the contents should be " if <c>\n \n end"
69
+
70
+ Scenario: Indent level 1, mixed
71
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
72
+ """
73
+ if $1\n\t\nend
74
+ """
75
+ When I open a new edit tab
76
+ And tabs are soft, 4 spaces
77
+ And I replace the contents with " \tif<c>"
78
+ And I press the Tab key in the edit tab
79
+ Then the contents should be " \tif <c>\n \n end"
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
@@ -0,0 +1,398 @@
1
+ Feature: Snippets
2
+
3
+ Background:
4
+ When I open a new edit tab
5
+ And tabs are hard
6
+
7
+ Scenario: Simple content snippet in global scope
8
+ Given there is a snippet with tab trigger "DBL" and scope "" and content
9
+ """
10
+ Daniel Benjamin Lucraft
11
+ """
12
+ When I replace the contents with "DBL<c>"
13
+ And I press the Tab key in the edit tab
14
+ Then the contents should be "Daniel Benjamin Lucraft<c>"
15
+
16
+ Scenario: Snippet text preceded by other characters and separated by non-word characters
17
+ Given there is a snippet with tab trigger "ewf" and scope "" and content
18
+ """
19
+ Earth, Wind, and Fire
20
+ """
21
+ When I replace the contents with "}}ewf<c>"
22
+ And I press the Tab key in the edit tab
23
+ Then the contents should be "}}Earth, Wind, and Fire<c>"
24
+ When I replace the contents with "(1,2,4)}}ewf<c>"
25
+ And I press the Tab key in the edit tab
26
+ Then the contents should be "(1,2,4)}}Earth, Wind, and Fire<c>"
27
+ When I replace the contents with "blank.test1.ewf<c>"
28
+ And I press the Tab key in the edit tab
29
+ Then the contents should be "blank.test1.Earth, Wind, and Fire<c>"
30
+
31
+ Scenario: Simple content snippet in plain text scope
32
+ Given there is a snippet with tab trigger "DBL" and scope "text.plain" and content
33
+ """
34
+ Daniel Benjamin Lucraft
35
+ """
36
+ When I replace the contents with "DBL<c>"
37
+ And I press the Tab key in the edit tab
38
+ Then the contents should be "Daniel Benjamin Lucraft<c>"
39
+
40
+ Scenario: Inserts Textmate environment variable TM_LINE_INDEX
41
+ Given there is a snippet with tab trigger "fg" and scope "text.plain" and content
42
+ """
43
+ Felix ${TM_LINE_INDEX} Gaeta
44
+ """
45
+ When I replace the contents with "0123 fg<c>"
46
+ And I press the Tab key in the edit tab
47
+ Then the contents should be "0123 Felix 5 Gaeta<c>"
48
+
49
+ Scenario: Inserts Textmate environment variable TM_LINE_INDEX without curlies
50
+ Given there is a snippet with tab trigger "fg" and scope "text.plain" and content
51
+ """
52
+ Felix $TM_LINE_INDEX Gaeta
53
+ """
54
+ When I replace the contents with "0123 fg<c>"
55
+ And I press the Tab key in the edit tab
56
+ Then the contents should be "0123 Felix 5 Gaeta<c>"
57
+
58
+ Scenario: Transforms Textmate environment variables
59
+ Given there is a snippet with tab trigger "fg" and scope "text.plain" and content
60
+ """
61
+ Felix ${TM_CURRENT_LINE/Co/ChiefOfStaff/} Gaeta
62
+ """
63
+ When I replace the contents with "CoABC fg<c>"
64
+ And I press the Tab key in the edit tab
65
+ Then the contents should be "CoABC Felix ChiefOfStaffABC Gaeta<c>"
66
+
67
+ Scenario: Transforms Textmate environment variables global find and replace
68
+ Given there is a snippet with tab trigger "fg" and scope "text.plain" and content
69
+ """
70
+ Felix ${TM_CURRENT_LINE/\w/CS /g} Gaeta
71
+ """
72
+ When I replace the contents with "ABC fg<c>"
73
+ And I press the Tab key in the edit tab
74
+ Then the contents should be "ABC Felix CS CS CS Gaeta<c>"
75
+
76
+ Scenario: Transforms Textmate environment variables escapes characters
77
+ Given there is a snippet with tab trigger "fg" and scope "text.plain" and content
78
+ """
79
+ Felix ${TM_CURRENT_LINE/\w/C\/S /g} Gaeta
80
+ """
81
+ When I replace the contents with "ABC fg<c>"
82
+ And I press the Tab key in the edit tab
83
+ Then the contents should be "ABC Felix C/S C/S C/S Gaeta<c>"
84
+
85
+ Scenario: Inserts one tab stop
86
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
87
+ """
88
+ if $1\n\t\nend
89
+ """
90
+ When I replace the contents with "if<c>"
91
+ And I press the Tab key in the edit tab
92
+ Then the contents should be "if <c>\n\t\nend"
93
+
94
+ Scenario: Escapes dollars
95
+ Given there is a snippet with tab trigger "DBL" and scope "text.plain" and content
96
+ """
97
+ Daniel \$1 Benjamin Lucraft
98
+ """
99
+ When I replace the contents with "DBL<c>"
100
+ And I press the Tab key in the edit tab
101
+ Then the contents should be "Daniel $1 Benjamin Lucraft<c>"
102
+
103
+ Scenario: Selects tab stop zero
104
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
105
+ """
106
+ if ${0:instance}
107
+ """
108
+ When I replace the contents with "if<c>"
109
+ And I press the Tab key in the edit tab
110
+ Then the contents should be "if <s>instance<c>"
111
+
112
+ Scenario: Allows tabbing past snippet
113
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
114
+ """
115
+ if $1\n\t\nend
116
+ """
117
+ When I replace the contents with "if<c>"
118
+ And I press the Tab key in the edit tab
119
+ And I press the Tab key in the edit tab
120
+ Then the contents should be "if \n\t\nend<c>"
121
+
122
+ Scenario: Allows tabbing between tab stops
123
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
124
+ """
125
+ if $1\n\t$2\nend
126
+ """
127
+ When I replace the contents with "if<c>"
128
+ And I press the Tab key in the edit tab
129
+ And I press the Tab key in the edit tab
130
+ Then the contents should be "if \n\t<c>\nend"
131
+ When I press the Tab key in the edit tab
132
+ Then the contents should be "if \n\t\nend<c>"
133
+
134
+ Scenario: Allows tabbing between nonconsecutive tab stops
135
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
136
+ """
137
+ if $1\n\t$3\nend
138
+ """
139
+ When I replace the contents with "if<c>"
140
+ And I press the Tab key in the edit tab
141
+ And I press the Tab key in the edit tab
142
+ Then the contents should be "if \n\t<c>\nend"
143
+ When I press the Tab key in the edit tab
144
+ Then the contents should be "if \n\t\nend<c>"
145
+
146
+ Scenario: Allows typing and tabbing
147
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
148
+ """
149
+ if $1\n\t$2\nend
150
+ """
151
+ When I replace the contents with "if<c>"
152
+ And I press the Tab key in the edit tab
153
+ And I insert "Pegasus" at the cursor
154
+ And I press the Tab key in the edit tab
155
+ Then the contents should be "if Pegasus\n\t<c>\nend"
156
+ When I insert "Cain" at the cursor
157
+ And I press the Tab key in the edit tab
158
+ Then the contents should be "if Pegasus\n\tCain\nend<c>"
159
+
160
+ Scenario: Allows shift tabbing
161
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
162
+ """
163
+ if $1\n\t$2\nend
164
+ """
165
+ When I replace the contents with "if<c>"
166
+ And I press the Tab key in the edit tab
167
+ And I insert "Pegasus" at the cursor
168
+ And I press the Tab key in the edit tab
169
+ Then the contents should be "if Pegasus\n\t<c>\nend"
170
+ When I insert "Cain" at the cursor
171
+ And I press Shift+Tab in the edit tab
172
+ Then the contents should be "if <s>Pegasus<c>\n\tCain\nend"
173
+
174
+ Scenario: Inserts tab stop content
175
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
176
+ """
177
+ if ${1:condition}\n\t$0\nend
178
+ """
179
+ When I replace the contents with "if<c>"
180
+ And I press the Tab key in the edit tab
181
+ Then the contents should be "if <s>condition<c>\n\t\nend"
182
+
183
+ Scenario: Inserts environment variable as placeholder
184
+ Given there is a snippet with tab trigger "fg" and scope "text.plain" and content
185
+ """
186
+ Felix ${1:$TM_LINE_INDEX} Gaeta
187
+ """
188
+ When I replace the contents with "ABC fg<c>"
189
+ And I press the Tab key in the edit tab
190
+ Then the contents should be "ABC Felix 4 Gaeta"
191
+
192
+ Scenario: Does not trigger snippet on tab trigger with trailing space
193
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
194
+ """
195
+ if ${1:condition}\n\t$0\nend
196
+ """
197
+ When I replace the contents with "ABC if <c>"
198
+ And I press the Tab key in the edit tab
199
+ And I move the cursor to 0
200
+ And I press the Tab key in the edit tab
201
+ Then the contents should not be "\t<c>ABC if condition\n\t\nend"
202
+ And the contents should be "\t<c>ABC if \t"
203
+
204
+ Scenario: Leaves snippet on cursor move
205
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
206
+ """
207
+ if ${1:condition}\n\t$0\nend
208
+ """
209
+ When I replace the contents with "ABC if<c>"
210
+ And I press the Tab key in the edit tab
211
+ And I move the cursor to 0
212
+ And I press the Tab key in the edit tab
213
+ Then the contents should be "\t<c>ABC if condition\n\t\nend"
214
+
215
+ Scenario: Multiple tab stops with content
216
+ Given there is a snippet with tab trigger "if" and scope "text.plain" and content
217
+ """
218
+ if ${1:condition}\n\t${2:code}\nend
219
+ """
220
+ When I replace the contents with "if<c>"
221
+ And I press the Tab key in the edit tab
222
+ Then the contents should be "if <s>condition<c>\n\tcode\nend"
223
+ And I press the Tab key in the edit tab
224
+ Then the contents should be "if condition\n\t<s>code<c>\nend"
225
+ And I press the Tab key in the edit tab
226
+ Then the contents should be "if condition\n\tcode\nend<c>"
227
+
228
+ Scenario: Mirrors mirror text
229
+ Given there is a snippet with tab trigger "name2" and scope "text.plain" and content
230
+ """
231
+ name: $1\nname: $1
232
+ """
233
+ When I replace the contents with "name2<c>"
234
+ And I press the Tab key in the edit tab
235
+ Then the contents should be "name: <c>\nname: "
236
+ And I insert "raider" at the cursor
237
+ Then the contents should be "name: <c>raider\nname: raider"
238
+
239
+ Scenario: Mirrors mirror tab stop with content
240
+ Given there is a snippet with tab trigger "name2" and scope "text.plain" and content
241
+ """
242
+ name: ${1:leoban}\nname: $1
243
+ """
244
+ When I replace the contents with "name2<c>"
245
+ And I press the Tab key in the edit tab
246
+ Then the contents should be "name: <s>leoban<c>\nname: leoban"
247
+ And I insert "s" at the cursor
248
+ Then the contents should be "name: <s>leoban<c>s\nname: leobans"
249
+
250
+ Scenario: Mirrors mirror tab stop with content at both ends
251
+ Given there is a snippet with tab trigger "name2" and scope "text.plain" and content
252
+ """
253
+ name: ${1:leoban}\nname: ${1:leoban}
254
+ """
255
+ When I replace the contents with "name2<c>"
256
+ And I press the Tab key in the edit tab
257
+ Then the contents should be "name: <s>leoban<c>\nname: leoban"
258
+ And I move the cursor to 10
259
+ And I insert "s" at the cursor
260
+ Then the contents should be "name: leob<c>san\nname: leobsan"
261
+ And I move the cursor to 10
262
+ And I press the Backspace key in the edit tab
263
+ And I press the Backspace key in the edit tab
264
+ Then the contents should be "name: le<c>san\nname: lesan"
265
+
266
+ Scenario: Transforms tab stops
267
+ Given there is a snippet with tab trigger "name" and scope "text.plain" and content
268
+ """
269
+ name: $1\nupper: ${1/(\w+)/\U$1\E/}
270
+ """
271
+ When I replace the contents with "name<c>"
272
+ And I press the Tab key in the edit tab
273
+ And I insert "raptor" at the cursor
274
+ Then the contents should be "name: <c>raptor\nupper: RAPTOR"
275
+ And I move the cursor to 10
276
+ And I press the Backspace key in the edit tab
277
+ And I press the Backspace key in the edit tab
278
+ Then the contents should be "name: ra<c>or\nupper: RAOR"
279
+
280
+ Scenario: Globally transforms tab stops
281
+ Given there is a snippet with tab trigger "name" and scope "text.plain" and content
282
+ """
283
+ name: $1\nupper: ${1/(\w+)/\U$1\E/g}
284
+ """
285
+ When I replace the contents with "name<c>"
286
+ And I press the Tab key in the edit tab
287
+ And I insert "raptor blackbird" at the cursor
288
+ Then the contents should be "name: <c>raptor blackbird\nupper: RAPTOR BLACKBIRD"
289
+
290
+ Scenario: Nested tab stops
291
+ Given there is a snippet with tab trigger "hash" and scope "text.plain" and content
292
+ """
293
+ :${1:key} => ${2:"${3:value}"}${4:, }
294
+ """
295
+ When I replace the contents with "hash<c>"
296
+ And I press the Tab key in the edit tab
297
+ Then the contents should be ":<s>key<c> => \"value\", "
298
+ And I press the Tab key in the edit tab
299
+ Then the contents should be ":key => <s>\"value\"<c>, "
300
+ And I press the Tab key in the edit tab
301
+ Then the contents should be ":key => \"<s>value<c>\", "
302
+ And I insert "s" at the cursor
303
+ Then the contents should be ":key => \"<s>value<c>s\", "
304
+ And I press Shift+Tab in the edit tab
305
+ Then the contents should be ":key => <s>\"values\"<c>, "
306
+
307
+ Scenario: Very nested tab stops
308
+ Given there is a snippet with tab trigger "hash" and scope "text.plain" and content
309
+ """
310
+ :${1:key} => ${2:"${3:value ${4:is} 3}"}${5:, }
311
+ """
312
+ When I replace the contents with "hash<c>"
313
+ And I press the Tab key in the edit tab
314
+ Then the contents should be ":<s>key<c> => \"value is 3\", "
315
+ When I press the Tab key in the edit tab
316
+ Then the contents should be ":key => <s>\"value is 3\"<c>, "
317
+ When I press the Tab key in the edit tab
318
+ Then the contents should be ":key => \"<s>value is 3<c>\", "
319
+ When I press the Tab key in the edit tab
320
+ Then the contents should be ":key => \"value <s>is<c> 3\", "
321
+ When I press the Tab key in the edit tab
322
+ Then the contents should be ":key => \"value is 3\"<s>, <c>"
323
+ When I press Shift+Tab in the edit tab
324
+ Then the contents should be ":key => \"value <s>is<c> 3\", "
325
+ When I press Shift+Tab in the edit tab
326
+ Then the contents should be ":key => \"<s>value is 3<c>\", "
327
+ When I press Shift+Tab in the edit tab
328
+ Then the contents should be ":key => <s>\"value is 3\"<c>, "
329
+ When I press Shift+Tab in the edit tab
330
+ Then the contents should be ":<s>key<c> => \"value is 3\", "
331
+
332
+ Scenario: Latex snippet
333
+ Given there is a snippet with tab trigger "list" and scope "text.plain" and content
334
+ """
335
+ \begin{${1:env}}\n\t${1/(enumerate|itemize|list)|(description)|.*/(?1:\item )(?2:\item)/}$0\n\end{${1:env}}
336
+ """
337
+ When I replace the contents with "list<c>"
338
+ And I press the Tab key in the edit tab
339
+ Then the contents should be "\begin{<s>env<c>}\n\t\n\end{env}"
340
+ When I replace 7 to 10 with "list"
341
+ Then the contents should be "\begin{list<c>}\n\t\item \n\end{list}"
342
+ And I press the Tab key in the edit tab
343
+ Then the contents should be "\begin{list}\n\t\item <c>\n\end{list}"
344
+
345
+ Scenario: Transformations do not move cursor
346
+ Given there is a snippet with tab trigger "def" and scope "text.plain" and content
347
+ """
348
+ def $1${1/.+/\"\"\"/}
349
+ """
350
+ When I replace the contents with "def<c>"
351
+ And I press the Tab key in the edit tab
352
+ Then the contents should be "def <c>"
353
+ And I insert "a" at the cursor
354
+ Then the contents should be "def <c>a\"\"\""
355
+
356
+ Scenario: Abutting dollars
357
+ Given there is a snippet with tab trigger "def" and scope "text.plain" and content
358
+ """
359
+ def ${1:fname} ${3:docstring for $1}${3/.+/\"\"\"\n/}
360
+ """
361
+ When I replace the contents with "def<c>"
362
+ And I press the Tab key in the edit tab
363
+ Then the contents should be "def <s>fname<c> docstring for fname\"\"\"\n"
364
+ When I replace 4 to 9 with ""
365
+ Then the contents should be "def <c> docstring for \"\"\"\n"
366
+
367
+ Scenario: Abutting dollars 2
368
+ Given there is a snippet with tab trigger "def" and scope "text.plain" and content
369
+ """
370
+ def ${1:fname} ${3:docstring for $1}${3/.+/\"\"\"\n/}${3/.+/\t/}${0:pass}
371
+ """
372
+ When I replace the contents with "def<c>"
373
+ And I press the Tab key in the edit tab
374
+ Then the contents should be "def <s>fname<c> docstring for fname\"\"\"\n\tpass"
375
+ When I replace 4 to 9 with ""
376
+ Then the contents should be "def <c> docstring for \"\"\"\n\tpass"
377
+ When I insert "m" at the cursor
378
+ Then the contents should be "def <c>m docstring for m\"\"\"\n\tpass"
379
+ And I press the Tab key in the edit tab
380
+ Then the contents should be "def m <s>docstring for m<c>\"\"\"\n\tpass"
381
+ When I insert "a" at the cursor
382
+ When I replace 6 to 21 with ""
383
+ Then the contents should be "def m <c>a\"\"\"\n\tpass"
384
+ When I insert "b" at the cursor
385
+ Then the contents should be "def m <c>ba\"\"\"\n\tpass"
386
+
387
+ Scenario: Enclosing transformations
388
+ Given there is a snippet with tab trigger "def" and scope "text.plain" and content
389
+ """
390
+ def i${3/(^.*?\S.*)|.*/(?1:\()/}${3:args}${3/(^.*?\S.*)|.*/(?1:\))/}
391
+ """
392
+ When I replace the contents with "def<c>"
393
+ And I press the Tab key in the edit tab
394
+ Then the contents should be "def i(<s>args<c>)"
395
+ When I replace 6 to 10 with "foo"
396
+ Then the contents should be "def i(foo)"
397
+
398
+