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,118 @@
1
+ require 'set'
2
+
3
+ module Redcar
4
+ class Project
5
+
6
+ class FindFileDialog < FilterListDialog
7
+ attr_reader :project
8
+
9
+ def initialize(project)
10
+ super()
11
+ @project = project
12
+ end
13
+
14
+ def close
15
+ super
16
+ end
17
+
18
+ def paths_for(filter)
19
+ paths = recent_files if filter.length < 2
20
+ paths ||= find_files_from_list(filter, recent_files) + find_files(filter, project.path)
21
+ paths.uniq
22
+ end
23
+
24
+ # search out and expand duplicates in shortened paths to their full length
25
+ def expand_duplicates(display_paths, full_paths)
26
+ duplicates = duplicates(display_paths)
27
+ display_paths.each_with_index do |dp, i|
28
+ if duplicates.include? dp
29
+ display_paths[i] = display_path(full_paths[i], project.path.split('/')[0..-2].join('/'))
30
+ end
31
+ end
32
+ end
33
+
34
+ def update_list(filter)
35
+ paths = paths_for filter
36
+ @last_list = paths
37
+ full_paths = paths
38
+ display_paths = full_paths.map { |path| display_path(path) }
39
+ if display_paths.uniq.length < full_paths.length
40
+ display_paths = expand_duplicates(display_paths, full_paths)
41
+ end
42
+ display_paths
43
+ end
44
+
45
+ def selected(text, ix, closing=false)
46
+ if @last_list
47
+ close
48
+ if win = Redcar.app.focussed_window and tab = win.focussed_notebook_tab and doc = tab.document
49
+ Redcar.app.navigation_history.save(doc)
50
+ end
51
+ OpenFileCommand.new(@last_list[ix]).run
52
+ cur_doc = Redcar.app.focussed_window.focussed_notebook_tab.document
53
+ Redcar.app.navigation_history.save(cur_doc) if cur_doc
54
+ end
55
+ end
56
+
57
+ private
58
+
59
+ def recent_files
60
+ files = project.recent_files
61
+ ((files[0..-2]||[]).reverse + [files[-1]]).compact
62
+ end
63
+
64
+ # Find duplicates by checking if index from left and right equal
65
+ def duplicates(enum)
66
+ Set[*enum.select {|k| enum.index(k) != enum.rindex(k) }]
67
+ end
68
+
69
+ def display_path(path, first_remove_this_prefix = nil)
70
+ n = -3
71
+ if first_remove_this_prefix and path.index(first_remove_this_prefix) == 0
72
+ path = path[first_remove_this_prefix.length..-1]
73
+ # show the full subdirs in the case of collisions
74
+ n = -100
75
+ end
76
+
77
+ if path.count('/') > 0
78
+ count_back = [-path.count('/'), n].max
79
+ path.split("/").last +
80
+ " (" +
81
+ path.split("/")[count_back..-2].join("/") +
82
+ ")"
83
+ else
84
+ path
85
+ end
86
+ end
87
+
88
+ def find_files_from_list(text, file_list)
89
+ re = make_regex(text)
90
+ file_list.select do |fn|
91
+ match_substring(fn) =~ re
92
+ end
93
+ end
94
+
95
+ def find_files(text, directories)
96
+ begin
97
+ files = project.all_files.sort
98
+ rescue => e
99
+ p e
100
+ end
101
+ filter_and_rank_by(files, text) {|fn| match_substring(fn) }
102
+ end
103
+
104
+ def match_substring(filename)
105
+ @folder_search ? filename.sub(project.path, "") : filename.split("/").last
106
+ end
107
+
108
+ def make_regex(text)
109
+ path = text.gsub(/\s/, "").split("/")
110
+ @folder_search = path.size > 1
111
+ folders = path[0...-1].map {|f| "(#{Regexp.escape(f)}).*/" }
112
+ file = path.last.each_char.map {|c| "(#{Regexp.escape(c)})[^/]*?" }.join
113
+ re_src = "#{folders.join}#{file}$"
114
+ Regexp.new(re_src, :options => Regexp::IGNORECASE)
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,30 @@
1
+ module Redcar
2
+ class Project
3
+
4
+ class FindRecentDialog < FilterListDialog
5
+ def update_list(filter)
6
+ recent = Project::Recent.storage['list']
7
+ recent = recent.map {|path| path.gsub(/^#{Regexp.escape(Redcar.home_dir)}\/?/, "")}
8
+ filter_and_rank_by(recent, filter)
9
+ end
10
+
11
+ def selected(path, ix)
12
+ unless path[0..0] == "/"
13
+ path = Redcar.home_dir + "/" + path
14
+ end
15
+ if File.exist?(File.expand_path(path))
16
+ if File.directory?(path)
17
+ Project::Manager.open_project_for_path(path)
18
+ close
19
+ elsif File.file?(File.expand_path(path))
20
+ Project::Manager.open_file(path)
21
+ close
22
+ else
23
+ Project::Recent.remove_path(path)
24
+ end
25
+ end
26
+ end
27
+ end
28
+
29
+ end
30
+ end
@@ -0,0 +1,545 @@
1
+
2
+ module Redcar
3
+ class Project
4
+ class Manager
5
+
6
+ def self.connect_to_remote(protocol, host, user, path, private_key_files = [])
7
+ if protocol == "SFTP" and private_key_files.any?
8
+ begin
9
+ adapter = open_adapter(protocol, host, user, nil, private_key_files)
10
+ open_remote_project(adapter, path)
11
+ rescue Net::SSH::AuthenticationFailed
12
+ if pw = get_password
13
+ adapter = open_adapter(protocol, host, user, pw, [])
14
+ open_remote_project(adapter, path)
15
+ end
16
+ end
17
+ else
18
+ if pw = get_password
19
+ adapter = open_adapter(protocol, host, user, pw, [])
20
+ open_remote_project(adapter, path)
21
+ end
22
+ end
23
+ rescue => e
24
+ puts "Error connecting: #{e.class}: #{e.message}"
25
+ puts e.backtrace
26
+ Application::Dialog.message_box("Error connecting: #{e.message}", :type => :error)
27
+ end
28
+
29
+ def self.get_password
30
+ result = Redcar::Application::Dialog.password_input("Remote Connection", "Enter password")
31
+ result[:value] if result
32
+ end
33
+
34
+ # Opens a new Tree with a DirMirror and DirController for the given
35
+ # path, in a new window.
36
+ #
37
+ # @param [String] path the path of the directory to view
38
+ def self.open_remote_project(adapter, path)
39
+ win = Redcar.app.focussed_window
40
+ win = Redcar.app.new_window if !win or Manager.in_window(win)
41
+ project = Project.new(path, adapter)
42
+ project.open(win) if project.ready?
43
+ end
44
+
45
+ def self.open_adapter(protocol, host, user, password, private_key_files)
46
+ Adapters::Remote.new(protocol.downcase.to_sym, host, user, password, private_key_files)
47
+ rescue Errno::ECONNREFUSED
48
+ raise "connection refused connecting to #{host}"
49
+ rescue SocketError
50
+ raise "Cannot connect to #{host}. Error: #{$!.message}."
51
+ end
52
+
53
+ def self.open_projects
54
+ Project.window_projects.values
55
+ end
56
+
57
+ # Returns the project in the given window
58
+ # @param [Window] window
59
+ # @return Project or nil
60
+ def self.in_window(window)
61
+ Project.window_projects[window]
62
+ end
63
+
64
+ def self.windows_without_projects
65
+ Redcar.app.windows.reject {|w| in_window(w) }
66
+ end
67
+
68
+ # this will restore open files unless other files or dirs were passed
69
+ # as command line parameters
70
+ def self.start(args)
71
+ unless handle_startup_arguments(args)
72
+ unless Redcar.environment == :test
73
+ #restore_last_session
74
+ end
75
+ end
76
+ init_current_files_hooks
77
+ init_window_closed_hooks
78
+ init_drb_listener
79
+ end
80
+
81
+ def self.init_window_closed_hooks
82
+ Redcar.app.add_listener(:window_about_to_close) do |win|
83
+ if project = in_window(win)
84
+ project.close
85
+ self.save_file_list(win)
86
+ end
87
+ end
88
+ end
89
+
90
+ def self.init_drb_listener
91
+ return if ARGV.include?("--multiple-instance")
92
+ @drb_service = DrbService.new
93
+ end
94
+
95
+ def self.storage
96
+ @storage ||= begin
97
+ storage = Plugin::Storage.new('project_plugin')
98
+ storage.set_default('reveal_files_in_project_tree',true)
99
+ storage.set_default('reveal_files_only_when_tree_is_focussed',true)
100
+ storage
101
+ end
102
+ end
103
+
104
+ def self.reveal_files?
105
+ storage['reveal_files_in_project_tree']
106
+ end
107
+
108
+ def self.reveal_files=(toggle)
109
+ storage['reveal_files_in_project_tree'] = toggle
110
+ end
111
+
112
+ def self.reveal_file_only_when_tree_focussed?
113
+ storage['reveal_files_only_when_tree_is_focussed']
114
+ end
115
+
116
+ def self.reveal_file?(project)
117
+ if project and project.window and tree = project.tree
118
+ if reveal_files? and project.window.trees_visible?
119
+ ftree = project.window.treebook.focussed_tree
120
+ unless tree != ftree and reveal_file_only_when_tree_focussed?
121
+ true
122
+ end
123
+ end
124
+ end
125
+ end
126
+
127
+ def self.filter_path
128
+ if Redcar.app.focussed_notebook_tab
129
+ if mirror = EditView.focussed_document_mirror and mirror.is_a?(FileMirror)
130
+ dir = File.dirname(mirror.path)
131
+ return dir
132
+ end
133
+ end
134
+ storage['last_dir'] || File.expand_path(Dir.pwd)
135
+ end
136
+
137
+ def self.sensitivities
138
+ [ @open_project_sensitivity =
139
+ Sensitivity.new(:open_project, Redcar.app, false, [:focussed_window]) do
140
+ if win = Redcar.app.focussed_window
141
+ win.treebook.trees.detect {|t| t.tree_mirror.is_a?(DirMirror) }
142
+ end
143
+ end
144
+ ]
145
+ end
146
+
147
+ # Finds an EditTab with a mirror for the given path.
148
+ #
149
+ # @param [String] path the path of the file being edited
150
+ # @return [EditTab, nil] the EditTab that is editing it, or nil
151
+ def self.find_open_file_tab(path)
152
+ path = File.expand_path(path)
153
+ all_tabs = Redcar.app.windows.map {|win| win.notebooks}.flatten.map {|nb| nb.tabs }.flatten
154
+ all_tabs.find do |t|
155
+ t.is_a?(Redcar::EditTab) and
156
+ t.edit_view.document.mirror and
157
+ t.edit_view.document.mirror.is_a?(FileMirror) and
158
+ File.expand_path(t.edit_view.document.mirror.path) == path
159
+ end
160
+ end
161
+
162
+ # Opens a new EditTab with a FileMirror for the given path.
163
+ #
164
+ # @path [String] path the path of the file to be edited
165
+ # @param [Window] win the Window to open the File in
166
+ def self.open_file_in_window(path, win, adapter)
167
+ return unless large_file_airbag(path)
168
+ tab = win.new_tab(Redcar::EditTab)
169
+ mirror = FileMirror.new(path, adapter)
170
+ tab.edit_view.document.mirror = mirror
171
+ tab.edit_view.reset_undo
172
+ tab.focus
173
+ end
174
+
175
+ def self.file_too_large?(path)
176
+ File.size(path) > file_size_limit
177
+ end
178
+
179
+ # Prompts the user before opening the given path if it's above self.file_size_limit.
180
+ def self.large_file_airbag(path)
181
+ if file_too_large?(path)
182
+ Application::Dialog.message_box(
183
+ "This file is larger than 10MB which may crash Redcar.\n\nAre you sure you want to open it?",
184
+ :type => :warning,
185
+ :buttons => :yes_no) == :yes
186
+ else
187
+ true
188
+ end
189
+ end
190
+
191
+ def self.find_projects_containing_path(path)
192
+ open_projects.select {|p|
193
+ p.contains_path?(path)
194
+ }.sort_by {|p| path.split(//).length-p.path.split(//).length}
195
+ end
196
+
197
+ def self.open_file(path, adapter=Adapters::Local.new)
198
+ if tab = find_open_file_tab(path)
199
+ tab.focus
200
+ return
201
+ end
202
+ if project = find_projects_containing_path(path).first
203
+ window = project.window
204
+ else
205
+ window = windows_without_projects.first || Redcar.app.new_window
206
+ Project::Recent.store_path(path)
207
+ end
208
+ open_file_in_window(path, window, adapter)
209
+ window.focus
210
+ end
211
+
212
+ def self.pop_first_line_option(args)
213
+ if args.include? '-l'
214
+ argix = args.index('-l')
215
+ raise ArgumentError, "The -l Option expects an Argument" unless args[argix + 1]
216
+ numbers = args[argix + 1].split(',')
217
+ first_num = numbers.delete_at(0)
218
+ if (args[argix + 1] = numbers.join(',')).empty?
219
+ args.delete_at(argix); args.delete_at(argix)
220
+ end
221
+ first_num
222
+ elsif match = args.select {|a| /^\-l\d+$/.match a }.first
223
+ args.delete(args.index(match))
224
+ match[2..-1]
225
+ end
226
+ end
227
+
228
+ def self.scroll_to_line(arg)
229
+ begin
230
+ doc = Redcar.app.focussed_notebook_tab.edit_view.document
231
+ lineix = arg.to_i - 1
232
+ doc.scroll_to_line(lineix)
233
+ doc.cursor_offset = doc.offset_at_line(lineix)
234
+ rescue Exception
235
+ raise ArgumentError, 'The "-l" Option expects a number as Argument'
236
+ end
237
+ end
238
+
239
+ def self.open_tab_with_content(text)
240
+ win = Redcar.app.focussed_window || Redcar.app.new_window
241
+ tab = win.new_tab(Redcar::EditTab)
242
+ tab.edit_view.document.text = text
243
+ tab.edit_view.reset_undo
244
+ tab.focus
245
+ end
246
+
247
+ PROJECT_LOCKED_MESSAGE = "Project appears to be locked by another Redcar process!\nOpen anway?"
248
+
249
+ # Opens a new Tree with a DirMirror and DirController for the given
250
+ # path, in a new window.
251
+ #
252
+ # @param [String] path the path of the directory to view
253
+ def self.open_project_for_path(path)
254
+ open_projects.each do |project|
255
+ if project.path == path
256
+ project.window.focus
257
+ return
258
+ end
259
+ end
260
+ project = Project.new(path)
261
+ should_open = :yes
262
+ if project.locked?
263
+ should_open = Application::Dialog.message_box(PROJECT_LOCKED_MESSAGE, :type => :warning, :buttons => :yes_no)
264
+ end
265
+ if should_open == :yes
266
+ win = Redcar.app.focussed_window
267
+ win = Redcar.app.new_window(false) if !win or Manager.in_window(win)
268
+ project.open(win) if project.ready?
269
+ Redcar.app.show_window(win)
270
+ project
271
+ end
272
+ end
273
+
274
+ # Opens a subproject in a new window
275
+ # @param [String] project_path the project path to fork
276
+ # @param [String] path the path of the directory to view
277
+ def self.open_subproject(project_path,path)
278
+ win = Redcar.app.focussed_window
279
+ win = Redcar.app.new_window if !win or Manager.in_window(win)
280
+ project = Redcar::Project::SubProject.new(project_path,path).tap do |p|
281
+ p.open(win) if p.ready?
282
+ win.title = "Subproject: #{File.basename(path)} in #{File.basename(project_path)}"
283
+ end
284
+ end
285
+
286
+ # The currently focussed Project, or nil if none.
287
+ #
288
+ # @return [Project]
289
+ def self.focussed_project
290
+ in_window(Redcar.app.focussed_window)
291
+ end
292
+
293
+ # saves away a list of the currently open files in
294
+ # @param [win]
295
+ def self.save_file_list(win)
296
+ # create a list of open files
297
+ file_list = []
298
+ win.notebooks[0].tabs.each do |tab|
299
+ if tab.document && tab.document.path
300
+ file_list << tab.document.path
301
+ end
302
+ end
303
+ storage['files_open_last_session'] = file_list
304
+ end
305
+
306
+ # handles files and/or dirs passed as command line arguments
307
+ def self.handle_startup_arguments(args)
308
+ found_path_args = false
309
+ args.each do |arg|
310
+ if File.directory?(arg)
311
+ found_path_args = true
312
+ DirectoryOpenCommand.new(arg).run
313
+ elsif File.file?(arg)
314
+ found_path_args = true
315
+ open_file(arg)
316
+ linearg = pop_first_line_option(args)
317
+ scroll_to_line(linearg) if linearg
318
+ end
319
+ end
320
+ args.each do |arg|
321
+ if arg =~ /--untitled-file=(.*)/
322
+ path = $1
323
+ found_path_args = true
324
+ open_untitled_path(path)
325
+ end
326
+ end
327
+ found_path_args
328
+ end
329
+
330
+ def self.update_tab_for_path(path,new_path=nil)
331
+ if tab = Manager.find_open_file_tab(path)
332
+ if new_path
333
+ mirror = Project::FileMirror.new(new_path)
334
+ tab.edit_view.document.mirror = mirror
335
+ else
336
+ tab.update_for_file_changes
337
+ end
338
+ end
339
+ end
340
+
341
+ def self.open_untitled_path(path)
342
+ begin
343
+ if File.file?(path) and contents = File.read(path)
344
+ open_tab_with_content(contents)
345
+ end
346
+ rescue => e
347
+ puts "Error opening untitled file #{path}"
348
+ puts e.class.to_s + ":" + e.message
349
+ puts e.backtrace
350
+ end
351
+ end
352
+
353
+ # Attaches a new listener to tab focus change events, so we can
354
+ # keep the current_files list.
355
+ def self.init_current_files_hooks
356
+ Redcar.app.add_listener(:tab_focussed) do |tab|
357
+ if tab and tab.document_mirror.respond_to?(:path)
358
+ if project = Manager.in_window(tab.notebook.window)
359
+ project.add_to_recent_files(tab.document_mirror.path)
360
+ end
361
+ end
362
+ end
363
+ attach_app_listeners
364
+ end
365
+
366
+ def self.attach_app_listeners
367
+ Redcar.app.add_listener(:lost_focus) do
368
+ Manager.open_projects.each {|project| project.lost_application_focus }
369
+ end
370
+
371
+ Redcar.app.add_listener(:window_focussed) do |win|
372
+ Manager.in_window(win).andand.gained_focus
373
+ end
374
+ end
375
+
376
+ # restores the directory/files in the last open window
377
+ def self.restore_last_session
378
+ if path = storage['last_open_dir']
379
+ s = Time.now
380
+ open_project_for_path(path)
381
+ end
382
+
383
+ if files = storage['files_open_last_session']
384
+ files.each do |path|
385
+ open_file(path)
386
+ end
387
+ end
388
+ end
389
+
390
+ def self.refresh_modified_file(path)
391
+ path = File.expand_path(path)
392
+ find_projects_containing_path(path).each do |project|
393
+ project.refresh_modified_file(path)
394
+ end
395
+ end
396
+
397
+ def self.menus
398
+ Menu::Builder.build do
399
+ sub_menu "File" do
400
+ group(:priority => 0) do
401
+ item "Open", Project::OpenFileCommand
402
+ item "Reload File", Project::FileReloadCommand
403
+ item "Open Directory", Project::DirectoryOpenCommand
404
+ item "Open Recent...", Project::FindRecentCommand
405
+
406
+ separator
407
+ item "Save", Project::SaveFileCommand
408
+ item "Save As", Project::SaveFileAsCommand
409
+ end
410
+ end
411
+
412
+ sub_menu "Project", :priority => 15 do
413
+ group(:priority => :first) do
414
+ item "Find File", Project::FindFileCommand
415
+ # item "Refresh Directory", Project::RefreshDirectoryCommand
416
+ end
417
+ item "Reveal Open File in Tree", :command => Project::ToggleRevealInProject, :type => :check, :active => Project::Manager.reveal_files?
418
+ end
419
+ end
420
+ end
421
+
422
+ def self.close_tab_guard(tab)
423
+ if tab.respond_to?(:edit_view) && tab.edit_view.document.modified? && !tab.is_a?(REPL::Tab)
424
+ tab.focus
425
+ result = Application::Dialog.message_box(
426
+ "This tab has unsaved changes. \n\nSave before closing?",
427
+ :buttons => :yes_no_cancel
428
+ )
429
+ case result
430
+ when :yes
431
+ # check if the tab was saved properly,
432
+ # it would return false for example if the permission is not granted
433
+ if Project::SaveFileCommand.new(tab).run
434
+ true
435
+ else
436
+ false
437
+ end
438
+ when :no
439
+ true
440
+ when :cancel
441
+ false
442
+ end
443
+ else
444
+ true
445
+ end
446
+ end
447
+
448
+ # Uses our own context menu hook to provide context menu entries
449
+ # @return [Menu]
450
+ def self.project_context_menus(tree, node, controller)
451
+ if node
452
+ if node.directory?
453
+ enclosing_dir = node.path
454
+ else
455
+ enclosing_dir = node.directory
456
+ end
457
+ else
458
+ enclosing_dir = tree.tree_mirror.path
459
+ end
460
+ Menu::Builder.build do
461
+ group(:priority => :first) do
462
+ item("New File") { controller.new_file(tree, node) }
463
+ item("New Directory") { controller.new_dir(tree, node) }
464
+ end
465
+ separator
466
+ sub_menu "Open Directory" do
467
+ group(:priority => 30) do
468
+ item("in File Browser") { Project::OpenDirectoryInExplorerCommand.new(enclosing_dir).run }
469
+ item("in Command Line") { Project::OpenDirectoryInCommandLineCommand.new(enclosing_dir).run }
470
+ unless enclosing_dir == tree.tree_mirror.path
471
+ item("as new Project") { Manager.open_project_for_path(enclosing_dir) }
472
+ item("as Subproject") { Manager.open_subproject(tree.tree_mirror.path,enclosing_dir) }
473
+ end
474
+ end
475
+ end
476
+ if not node.nil?
477
+ group(:priority => 15) do
478
+ separator
479
+ if tree.selection.length > 1
480
+ dirs = tree.selection.map {|node| node.parent_dir }
481
+ if dirs.uniq.length == 1 and node.adapter.is_a?(Adapters::Local)
482
+ item("Bulk Rename") { controller.rename(tree, node) }
483
+ end
484
+ else
485
+ item("Rename") { controller.rename(tree, node) }
486
+ end
487
+ item("Delete") { controller.delete(tree, node) }
488
+ end
489
+
490
+
491
+ end
492
+ group(:priority => 75) do
493
+ separator
494
+
495
+ if node and node.leaf?
496
+ item("Hide this file") do
497
+ input = Application::Dialog.input(
498
+ "Hide file",
499
+ "Please enter a pattern to hide this kind of files or press OK to hide this file only.",
500
+ '^' + Regexp.escape(node.text) + '$'
501
+ )
502
+ if input[:button] == :ok
503
+ Project::FileList.add_hide_file_pattern(input[:value])
504
+ Project::Manager.focussed_project.refresh
505
+ end
506
+ end
507
+ end
508
+
509
+ if node and node.directory?
510
+ item('Hide this directory') do
511
+ input = Application::Dialog.input(
512
+ 'Hide directory',
513
+ 'Please enter a pattern to hide this kind of directories or press OK to hide this directory only.',
514
+ '^' + Regexp.escape(node.text) + '$'
515
+ )
516
+ if input[:button] == :ok
517
+ Project::FileList.add_hide_directory_pattern(input[:value])
518
+ Project::Manager.focussed_project.refresh
519
+ end
520
+ end
521
+ end
522
+
523
+ if DirMirror.show_hidden_files?
524
+ item("Hide Hidden Files") do
525
+ DirMirror.show_hidden_files = false
526
+ tree.refresh
527
+ end
528
+ else
529
+ item("Show Hidden Files") do
530
+ DirMirror.show_hidden_files = true
531
+ tree.refresh
532
+ end
533
+ end
534
+ end
535
+ end
536
+ end
537
+
538
+ class << self
539
+ attr_accessor :file_size_limit
540
+ attr_reader :open_project_sensitivity
541
+ end
542
+ self.file_size_limit = 5242880
543
+ end
544
+ end
545
+ end