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,1097 @@
1
+
2
+ module Redcar
3
+ def self.safely(text=nil)
4
+ begin
5
+ yield
6
+ rescue => e
7
+ message = "Error in: " + (text || e.message)
8
+ $stderr.puts message
9
+ $stderr.puts e.class.to_s + ": " + e.message
10
+ $stderr.puts e.backtrace
11
+ return if Redcar.no_gui_mode?
12
+ Application::Dialog.message_box(
13
+ message,
14
+ :type => :error, :buttons => :ok)
15
+ end
16
+ end
17
+
18
+ def self.update_gui
19
+ result = nil
20
+ Swt.sync_exec do
21
+ safely do
22
+ result = yield
23
+ end
24
+ end
25
+ result
26
+ end
27
+
28
+ class TimeoutError < StandardError; end
29
+
30
+ def self.timeout(limit)
31
+ x = Thread.current
32
+ result = nil
33
+ y = Thread.new do
34
+ begin
35
+ result = yield
36
+ rescue Object => e
37
+ x.raise e
38
+ end
39
+ end
40
+ s = Time.now
41
+ loop do
42
+ if not y.alive?
43
+ break
44
+ elsif Time.now - s > limit
45
+ y.kill
46
+ raise Redcar::TimeoutError, "timed out after #{Time.now - s}s"
47
+ break
48
+ end
49
+ sleep 0.1
50
+ end
51
+ result
52
+ end
53
+
54
+ module Top
55
+ class OpenNewEditTabCommand < Command
56
+
57
+ def execute
58
+ unless win.nil?
59
+ tab = win.new_tab(Redcar::EditTab)
60
+ else
61
+ window = Redcar.app.new_window
62
+ tab = window.new_tab(Redcar::EditTab)
63
+ end
64
+ tab.title = "untitled"
65
+ tab.focus
66
+ tab
67
+ end
68
+ end
69
+
70
+ class GenerateWindowsMenu < Command
71
+ def initialize(builder)
72
+ @builder = builder
73
+ end
74
+
75
+ def execute
76
+ window = Redcar.app.focussed_window
77
+ Redcar.app.windows.each do |win|
78
+ @builder.item(win.title, :type => :radio, :active => (win == window)) do
79
+ Application::FocusWindowCommand.new(win).run
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ class GenerateTabsMenu < Command
86
+ def initialize(builder)
87
+ @builder = builder
88
+ end
89
+
90
+ def trim(title)
91
+ title = title[0,13]+'...' if title.length > 13
92
+ title
93
+ end
94
+
95
+ def execute
96
+ if win = Redcar.app.focussed_window and
97
+ book = win.focussed_notebook and book.tabs.any?
98
+ focussed_tab = book.focussed_tab
99
+ @builder.separator
100
+ @builder.item "Focussed Notebook", ShowTitle
101
+ book.tabs.each_with_index do |tab,i|
102
+ num = i + 1
103
+ if num < 10
104
+ @builder.item("Tab #{num}: #{trim(tab.title)}",
105
+ :type => :radio,
106
+ :active => (tab == focussed_tab),
107
+ :command => Redcar::Application.const_get("SelectTab#{num}Command")
108
+ )
109
+ else
110
+ @builder.item("Tab #{num}: #{trim(tab.title)}",
111
+ :type => :radio,
112
+ :active => (tab == focussed_tab)) { tab.focus }
113
+ end
114
+ end
115
+ if book = win.nonfocussed_notebook and book.tabs.any?
116
+ @builder.separator
117
+ @builder.item "Nonfocussed Notebook", ShowTitle
118
+ book.tabs.each_with_index do |tab,i|
119
+ @builder.item("Tab #{i+1}: #{trim(tab.title)}") {tab.focus}
120
+ end
121
+ end
122
+ end
123
+ end
124
+ end
125
+
126
+ class AboutCommand < Command
127
+ def execute
128
+ new_tab = Top::OpenNewEditTabCommand.new.run
129
+ new_tab.document.text = <<-TXT
130
+ About: Redcar\nVersion: #{Redcar::VERSION}
131
+ Ruby Version: #{RUBY_VERSION}
132
+ Jruby version: #{JRUBY_VERSION}
133
+ Redcar.environment: #{Redcar.environment}
134
+ TXT
135
+ new_tab.edit_view.reset_undo
136
+ new_tab.document.set_modified(false)
137
+ new_tab.title= 'About'
138
+ end
139
+ end
140
+
141
+ class ChangelogCommand < Command
142
+ def execute
143
+ new_tab = Top::OpenNewEditTabCommand.new.run
144
+ new_tab.document.text = File.read(File.join(File.dirname(__FILE__), "..", "..", "CHANGES"))
145
+ new_tab.edit_view.reset_undo
146
+ new_tab.edit_view.document.set_modified(false)
147
+ new_tab.title = 'Changes'
148
+ end
149
+ end
150
+
151
+ class PrintScopeTreeCommand < Command
152
+ def execute
153
+ puts tab.edit_view.controller.mate_text.parser.root.pretty(0)
154
+ end
155
+ end
156
+
157
+ class PrintScopeCommand < DocumentCommand
158
+ def execute
159
+ Application::Dialog.tool_tip(tab.edit_view.document.cursor_scope.gsub(" ", "\n"), :cursor)
160
+ end
161
+ end
162
+
163
+
164
+ class UndoCommand < EditTabCommand
165
+ sensitize :undoable
166
+
167
+ def execute
168
+ tab.edit_view.undo
169
+ end
170
+ end
171
+
172
+ class RedoCommand < EditTabCommand
173
+ sensitize :redoable
174
+
175
+ def execute
176
+ tab.edit_view.redo
177
+ end
178
+ end
179
+
180
+ class MoveHomeCommand < DocumentCommand
181
+
182
+ def execute
183
+ if doc.mirror.is_a?(Redcar::REPL::ReplMirror)
184
+ # do not do the default home command on a line with a prompt
185
+ return unless tab.go_to_home?
186
+ end
187
+ line_ix = doc.line_at_offset(doc.cursor_offset)
188
+ line = doc.get_line(line_ix)
189
+ prefix = line[0...doc.cursor_line_offset]
190
+
191
+ if prefix =~ /^\s*$/
192
+ # move to start of line
193
+ new_offset = doc.offset_at_line(line_ix)
194
+ else
195
+ # move to start of text
196
+ new_offset = doc.offset_at_line(line_ix)
197
+ prefix =~ /^(\s*)[^\s].*$/
198
+ whitespace_prefix_length = $1 ? $1.length : 0
199
+ new_offset += whitespace_prefix_length
200
+ end
201
+ doc.cursor_offset = new_offset
202
+ doc.ensure_visible(doc.cursor_offset)
203
+ end
204
+ end
205
+
206
+ class MoveTopCommand < DocumentCommand
207
+
208
+ def execute
209
+ doc.cursor_offset = 0
210
+ doc.ensure_visible(0)
211
+ end
212
+ end
213
+
214
+ class MoveEndCommand < DocumentCommand
215
+
216
+ def execute
217
+ line_ix = doc.line_at_offset(doc.cursor_offset)
218
+ if line_ix == doc.line_count - 1
219
+ doc.cursor_offset = doc.length
220
+ else
221
+ doc.cursor_offset = doc.offset_at_line(line_ix + 1) - doc.delim.length
222
+ end
223
+ doc.ensure_visible(doc.cursor_offset)
224
+ end
225
+ end
226
+
227
+ class MoveNextLineCommand < DocumentCommand
228
+ def execute
229
+ doc = tab.edit_view.document
230
+ line_ix = doc.line_at_offset(doc.cursor_offset)
231
+ if line_ix == doc.line_count - 1
232
+ doc.cursor_offset = doc.length
233
+ else
234
+ doc.cursor_offset = doc.offset_at_line(line_ix + 1) - doc.delim.length
235
+ end
236
+ doc.ensure_visible(doc.cursor_offset)
237
+ doc.insert(doc.cursor_offset, "\n")
238
+
239
+ end
240
+ end
241
+
242
+ class MoveBottomCommand < DocumentCommand
243
+ def execute
244
+ doc.cursor_offset = doc.length
245
+ doc.ensure_visible(doc.length)
246
+ end
247
+ end
248
+
249
+ class MoveUpCommand < EditTabCommand
250
+ def execute
251
+ tab.edit_view.invoke_action(:LINE_UP)
252
+ end
253
+ end
254
+
255
+ class MoveDownCommand < EditTabCommand
256
+ def execute
257
+ tab.edit_view.invoke_action(:LINE_DOWN)
258
+ end
259
+ end
260
+
261
+ class ForwardCharCommand < DocumentCommand
262
+ def execute
263
+ doc.cursor_offset = [doc.cursor_offset + 1, doc.length].min
264
+ end
265
+ end
266
+
267
+ class BackwardCharCommand < DocumentCommand
268
+ def execute
269
+ doc.cursor_offset = [doc.cursor_offset - 1, 0].max
270
+ end
271
+ end
272
+
273
+ class OpenLineCommand < DocumentCommand
274
+ def execute
275
+ prev = doc.cursor_offset
276
+ doc.insert_at_cursor("\n")
277
+ doc.cursor_offset = prev
278
+ end
279
+ end
280
+
281
+ class DeleteCharCommand < DocumentCommand
282
+ def execute
283
+ if doc.cursor_offset < doc.length
284
+ doc.delete(doc.cursor_offset, 1)
285
+ end
286
+ end
287
+ end
288
+
289
+ class BackspaceCommand < DocumentCommand
290
+ def execute
291
+ if doc.cursor_offset > 0
292
+ doc.delete(doc.cursor_offset - 1, 1)
293
+ end
294
+ end
295
+ end
296
+
297
+ class BackwardNavigationCommand < Command
298
+ def execute
299
+ Redcar.app.navigation_history.backward
300
+ end
301
+ end
302
+
303
+ class ForwardNavigationCommand < Command
304
+ def execute
305
+ Redcar.app.navigation_history.forward
306
+ end
307
+ end
308
+
309
+ class ChangeIndentCommand < DocumentCommand
310
+ def execute
311
+ doc.compound do
312
+ doc.edit_view.delay_parsing do
313
+ indenters = edit_view.document.controllers(Redcar::AutoIndenter::DocumentController).first
314
+ indenters.disable do
315
+ if doc.selection?
316
+ first_line_ix = doc.line_at_offset(doc.selection_range.begin)
317
+ last_line_ix = doc.line_at_offset(doc.selection_range.end)
318
+ if doc.selection_range.end == doc.offset_at_line(last_line_ix)
319
+ last_line_ix -= 1
320
+ end
321
+ first_line_ix.upto(last_line_ix) do |line_ix|
322
+ indent_line(doc, line_ix)
323
+ end
324
+ start_selection = doc.offset_at_line(first_line_ix)
325
+ if last_line_ix == doc.line_count - 1
326
+ end_selection = doc.length
327
+ else
328
+ end_selection = doc.offset_at_line(last_line_ix + 1)
329
+ end
330
+ doc.set_selection_range(start_selection, end_selection)
331
+ else
332
+ indent_line(doc, doc.cursor_line)
333
+ end
334
+ end
335
+ end
336
+ end
337
+ end
338
+ end
339
+
340
+ class DecreaseIndentCommand < ChangeIndentCommand
341
+
342
+ def indent_line(doc, line_ix)
343
+ use_spaces = true
344
+ num_spaces = 2
345
+ line = doc.get_line(line_ix)
346
+ if doc.edit_view.soft_tabs?
347
+ line_start = doc.offset_at_line(line_ix)
348
+ re = /^ {0,#{doc.edit_view.tab_width}}/
349
+ if md = line.match(re)
350
+ to = line_start + md[0].length
351
+ else
352
+ to = line_start
353
+ end
354
+ else
355
+ line_start = doc.offset_at_line(line_ix)
356
+ if line =~ /^\t/
357
+ to = line_start + 1
358
+ else
359
+ to = line_start
360
+ end
361
+ end
362
+ doc.delete(line_start, to - line_start) unless line_start == to
363
+ end
364
+ end
365
+
366
+ class IncreaseIndentCommand < ChangeIndentCommand
367
+
368
+ def indent_line(doc, line_ix)
369
+ line = doc.get_line(line_ix)
370
+ if doc.edit_view.soft_tabs?
371
+ whitespace = " "*doc.edit_view.tab_width
372
+ else
373
+ whitespace = "\t"
374
+ end
375
+ doc.insert(doc.offset_at_line(line_ix), whitespace)
376
+ end
377
+ end
378
+
379
+ class SelectAllCommand < Redcar::DocumentCommand
380
+
381
+ def execute
382
+ doc.select_all
383
+ end
384
+ end
385
+
386
+ class SelectLineCommand < Redcar::DocumentCommand
387
+
388
+ def execute
389
+ doc.set_selection_range(
390
+ doc.cursor_line_start_offset, doc.cursor_line_end_offset)
391
+ end
392
+ end
393
+
394
+ class SelectWordCommand < Redcar::DocumentCommand
395
+
396
+ def execute
397
+ range = doc.current_word_range
398
+ doc.set_selection_range(range.first, range.last)
399
+ end
400
+ end
401
+
402
+ class CutCommand < Redcar::DocumentCommand
403
+
404
+ def execute
405
+ if doc.selection?
406
+ text = doc.selection_ranges.map do |range|
407
+ doc.get_range(range.begin, range.count)
408
+ end
409
+ Redcar.app.clipboard << text
410
+ diff = 0
411
+ doc.selection_ranges.each do |range|
412
+ doc.delete(range.begin - diff, range.count)
413
+ diff += range.count
414
+ end
415
+ else
416
+ Redcar.app.clipboard << doc.get_line(doc.cursor_line)
417
+ doc.delete(doc.cursor_line_start_offset,
418
+ doc.cursor_line_end_offset - doc.cursor_line_start_offset)
419
+ end
420
+ end
421
+ end
422
+
423
+ class CopyCommand < Redcar::DocumentCommand
424
+
425
+ def execute
426
+ if doc.selection?
427
+ text = doc.selection_ranges.map do |range|
428
+ doc.get_range(range.begin, range.count)
429
+ end
430
+ Redcar.app.clipboard << text
431
+ else
432
+ Redcar.app.clipboard << doc.get_line(doc.cursor_line)
433
+ end
434
+ end
435
+ end
436
+
437
+ class PasteCommand < Redcar::DocumentCommand
438
+ sensitize :clipboard_not_empty
439
+
440
+ def execute
441
+ start_offset = doc.selection_ranges.first.begin
442
+ start_line = doc.line_at_offset(start_offset)
443
+ line_offset = start_offset - doc.offset_at_line(start_line)
444
+ cursor_line = doc.cursor_line
445
+ cursor_line_offset = doc.cursor_line_offset
446
+ diff = 0
447
+ doc.controllers(AutoPairer::DocumentController).first.disable do
448
+ doc.controllers(AutoIndenter::DocumentController).first.disable do
449
+ doc.controllers(AutoCompleter::DocumentController).first.start_modification
450
+ doc.selection_ranges.each do |range|
451
+ doc.delete(range.begin - diff, range.count)
452
+ diff += range.count
453
+ end
454
+ texts = Redcar.app.clipboard.last.dup
455
+ texts.each_with_index do |text, i|
456
+ line_ix = start_line + i
457
+ if line_ix == doc.line_count
458
+ doc.insert(doc.length, "\n" + " "*line_offset)
459
+ else
460
+ line = doc.get_line(line_ix).chomp
461
+ if line.length < line_offset
462
+ doc.insert(
463
+ doc.offset_at_inner_end_of_line(line_ix),
464
+ " "*(line_offset - line.length)
465
+ )
466
+ end
467
+ end
468
+ doc.insert(
469
+ doc.offset_at_line(line_ix) + line_offset,
470
+ text
471
+ )
472
+ doc.cursor_offset = doc.offset_at_line(line_ix) + line_offset + text.length
473
+ end
474
+ doc.controllers(AutoCompleter::DocumentController).first.end_modification
475
+ end
476
+ end
477
+ end
478
+ end
479
+
480
+ class DuplicateCommand < Redcar::DocumentCommand
481
+
482
+ def execute
483
+ doc = tab.edit_view.document
484
+ if doc.selection?
485
+ first_line_ix = doc.line_at_offset(doc.selection_range.begin)
486
+ last_line_ix = doc.line_at_offset(doc.selection_range.end)
487
+ text = doc.get_slice(doc.offset_at_line(first_line_ix),
488
+ doc.offset_at_line_end(last_line_ix))
489
+ else
490
+ last_line_ix = doc.cursor_line
491
+ text = doc.get_line(doc.cursor_line)
492
+ end
493
+ if last_line_ix == (doc.line_count - 1)
494
+ text = "\n#{text}"
495
+ end
496
+ doc.insert(doc.offset_at_line_end(last_line_ix), text)
497
+ doc.scroll_to_line(last_line_ix + 1)
498
+ end
499
+ end
500
+
501
+ class TransposeCharactersCommand < Redcar::DocumentCommand
502
+ def execute
503
+ line = doc.get_line(doc.cursor_line)
504
+ line_offset = doc.cursor_line_offset
505
+
506
+ if line_offset > 0 and line.length >= 2
507
+ if line_offset < line.length - 1
508
+ first_char = line.chars[line_offset - 1].to_s
509
+ second_char = line.chars[line_offset].to_s
510
+ doc.replace(doc.cursor_offset - 1, 2, second_char + first_char)
511
+ elsif line_offset == line.length - 1
512
+ first_char = line.chars[line_offset - 2].to_s
513
+ second_char = line.chars[line_offset - 1].to_s
514
+ doc.replace(doc.cursor_offset - 2, 2, second_char + first_char)
515
+ end
516
+ end
517
+ end
518
+ end
519
+
520
+ class SortLinesCommand < Redcar::DocumentCommand
521
+
522
+ def execute
523
+ doc = tab.edit_view.document
524
+ cursor_ix = doc.cursor_offset
525
+ if doc.selection?
526
+ start_ix = doc.selection_range.begin
527
+ text = doc.selected_text
528
+
529
+ sorted_text = text.split("\n").sort().join("\n")
530
+ doc.replace_selection(sorted_text)
531
+ doc.cursor_offset = cursor_ix
532
+ end
533
+ end
534
+ end
535
+
536
+ class GotoLineCommand < Redcar::EditTabCommand
537
+
538
+ class Speedbar < Redcar::Speedbar
539
+ label :goto_label, "Goto line:"
540
+
541
+ textbox :line
542
+
543
+ button :go, "Go", "Return" do
544
+ new_line_ix = line.value.to_i - 1
545
+ if new_line_ix < @doc.line_count and new_line_ix >= 0
546
+ @doc.cursor_offset = @doc.offset_at_line(new_line_ix)
547
+ @doc.scroll_to_line(new_line_ix)
548
+ @win.close_speedbar
549
+ end
550
+ end
551
+
552
+ def initialize(command, win)
553
+ @command = command
554
+ @doc = command.doc
555
+ @win = win
556
+ end
557
+ end
558
+
559
+ def execute
560
+ @speedbar = GotoLineCommand::Speedbar.new(self, win)
561
+ win.open_speedbar(@speedbar)
562
+ end
563
+ end
564
+
565
+ class ToggleBlockSelectionCommand < Redcar::DocumentCommand
566
+
567
+ def execute
568
+ unless doc.single_line?
569
+ doc.block_selection_mode = !doc.block_selection_mode?
570
+ end
571
+ end
572
+ end
573
+
574
+ class ToggleInvisibles < Redcar::EditTabCommand
575
+ def execute
576
+ EditView.show_invisibles = !EditView.show_invisibles?
577
+ end
578
+ end
579
+
580
+ class ToggleLineNumbers < Redcar::EditTabCommand
581
+ def execute
582
+ EditView.show_line_numbers = !EditView.show_line_numbers?
583
+ end
584
+ end
585
+
586
+ class SelectNewFont < EditTabCommand
587
+ def execute
588
+ Redcar::EditView::SelectFontDialog.new.open
589
+ end
590
+ end
591
+
592
+ class SelectTheme < EditTabCommand
593
+ def execute
594
+ Redcar::EditView::SelectThemeDialog.new.open
595
+ end
596
+ end
597
+
598
+ class ShowTheme < Command
599
+ def execute
600
+
601
+ end
602
+ end
603
+
604
+ class ShowTitle < Command
605
+ sensitize :always_disabled
606
+ def execute; end
607
+ end
608
+
609
+ class SelectFontSize < EditTabCommand
610
+ def execute
611
+ max = Redcar::EditView::MAX_FONT_SIZE
612
+ min = Redcar::EditView::MIN_FONT_SIZE
613
+ result = Application::Dialog.input(
614
+ "Font Size",
615
+ "Please enter new font size",
616
+ Redcar::EditView.font_size.to_s)
617
+ if result[:button] == :ok
618
+ value = result[:value].to_i
619
+ if value >= min and value <= max
620
+ Redcar::EditView.font_size = value
621
+ else
622
+ Application::Dialog.message_box(
623
+ "The font size must be between #{min} and #{max}")
624
+ end
625
+ end
626
+ end
627
+ end
628
+
629
+ class IncreaseFontSize < EditTabCommand
630
+ def execute
631
+ unless (current = Redcar::EditView.font_size) >= Redcar::EditView::MAX_FONT_SIZE
632
+ Redcar::EditView.font_size = current+1
633
+ end
634
+ end
635
+ end
636
+
637
+ class DecreaseFontSize < EditTabCommand
638
+ def execute
639
+ unless (current = Redcar::EditView.font_size) <= Redcar::EditView::MIN_FONT_SIZE
640
+ Redcar::EditView.font_size = current-1
641
+ end
642
+ end
643
+ end
644
+
645
+ def self.keymaps
646
+ osx = Redcar::Keymap.build("main", :osx) do
647
+ link "Cmd+N", OpenNewEditTabCommand
648
+ link "Cmd+Shift+N", Application::OpenNewNotebookCommand
649
+ link "Cmd+Alt+N", Application::OpenNewWindowCommand
650
+ link "Cmd+O", Project::OpenFileCommand
651
+ link "Cmd+U", Project::FileReloadCommand
652
+ link "Cmd+Shift+O", Project::DirectoryOpenCommand
653
+ link "Cmd+Alt+Ctrl+P", Project::FindRecentCommand
654
+ #link "Cmd+Ctrl+O", Project::OpenRemoteCommand
655
+ link "Cmd+S", Project::SaveFileCommand
656
+ link "Cmd+Shift+S", Project::SaveFileAsCommand
657
+ link "Cmd+W", Application::CloseTabCommand
658
+ link "Cmd+Shift+W", Application::CloseWindowCommand
659
+ link "Alt+Shift+W", Application::CloseTreeCommand
660
+ link "Cmd+Q", Application::QuitCommand
661
+
662
+ #link "Cmd+Return", MoveNextLineCommand
663
+
664
+ link "Ctrl+Shift+E", EditView::InfoSpeedbarCommand
665
+ link "Cmd+Z", UndoCommand
666
+ link "Cmd+Shift+Z", RedoCommand
667
+ link "Cmd+X", CutCommand
668
+ link "Cmd+C", CopyCommand
669
+ link "Cmd+V", PasteCommand
670
+ link "Cmd+D", DuplicateCommand
671
+ link "Ctrl+T", TransposeCharactersCommand
672
+
673
+ link "Home", MoveTopCommand
674
+ link "Ctrl+A", MoveHomeCommand
675
+ link "Ctrl+E", MoveEndCommand
676
+ link "End", MoveBottomCommand
677
+ link "Ctrl+F", ForwardCharCommand
678
+ link "Ctrl+B", BackwardCharCommand
679
+ link "Ctrl+P", MoveUpCommand
680
+ link "Ctrl+N", MoveDownCommand
681
+ link "Ctrl+B", BackwardCharCommand
682
+ link "Ctrl+O", OpenLineCommand
683
+ link "Ctrl+D", DeleteCharCommand
684
+ link "Ctrl+H", BackspaceCommand
685
+
686
+ link "Ctrl+Alt+Left", BackwardNavigationCommand
687
+ link "Ctrl+Alt+Right", ForwardNavigationCommand
688
+
689
+ link "Cmd+[", DecreaseIndentCommand
690
+ link "Cmd+]", IncreaseIndentCommand
691
+ link "Cmd+Shift+I", AutoIndenter::IndentCommand
692
+ link "Cmd+L", GotoLineCommand
693
+ link "Cmd+A", SelectAllCommand
694
+ link "Ctrl+W", SelectWordCommand
695
+ link "Ctrl+L", SelectLineCommand
696
+ link "Cmd+B", ToggleBlockSelectionCommand
697
+ link "Escape", AutoCompleter::AutoCompleteCommand
698
+ link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
699
+ link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
700
+ link "Ctrl+Shift+Space", AutoCompleter::MenuAutoCompleterCommand
701
+
702
+ link "Ctrl+U", EditView::UpcaseTextCommand
703
+ link "Ctrl+Shift+U", EditView::DowncaseTextCommand
704
+ link "Ctrl+Alt+U", EditView::TitlizeTextCommand
705
+ link "Ctrl+G", EditView::OppositeCaseTextCommand
706
+ link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
707
+ link "Ctrl+=", EditView::AlignAssignmentCommand
708
+ link "Ctrl+Shift+^", SortLinesCommand
709
+
710
+ link "Cmd+T", Project::FindFileCommand
711
+ link "Cmd+Shift+Alt+O", Application::MoveTabToOtherNotebookCommand
712
+ link "Cmd+Alt+O", Application::SwitchNotebookCommand
713
+ link "Alt+Shift+[", Application::SwitchTreeUpCommand
714
+ link "Alt+Shift+]", Application::SwitchTreeDownCommand
715
+ link "Cmd+Shift+[", Application::SwitchTabDownCommand
716
+ link "Cmd+Shift+]", Application::SwitchTabUpCommand
717
+ link "Ctrl+Shift+[", Application::MoveTabDownCommand
718
+ link "Ctrl+Shift+]", Application::MoveTabUpCommand
719
+ link "Cmd+Shift++", Application::ToggleFullscreen
720
+ link "Cmd+Shift+T", Application::OpenTreeFinderCommand
721
+ link "Alt+Shift+J", Application::IncreaseTreebookWidthCommand
722
+ link "Alt+Shift+H", Application::DecreaseTreebookWidthCommand
723
+ link "Cmd+Shift+>", Application::EnlargeNotebookCommand
724
+ link "Cmd+Shift+L", Application::ResetNotebookWidthsCommand
725
+ link "Cmd+Shift+:", Application::RotateNotebooksCommand
726
+ link "Alt+Shift+N", Application::CloseNotebookCommand
727
+ link "Cmd+Alt+I", ToggleInvisibles
728
+ link "Cmd++", IncreaseFontSize
729
+ link "Cmd+-", DecreaseFontSize
730
+
731
+ link "Ctrl+Shift+P", PrintScopeCommand
732
+ link "Cmd+Shift+H", Application::ToggleTreesCommand
733
+
734
+ # link "Cmd+Shift+R", PluginManagerUi::ReloadLastReloadedCommand
735
+
736
+ link "Cmd+Alt+S", Snippets::OpenSnippetExplorer
737
+ #Textmate.attach_keybindings(self, :osx)
738
+
739
+ # map SelectTab<number>Command
740
+ (1..9).each do |tab_num|
741
+ link "Cmd+#{tab_num}", Application.const_get("SelectTab#{tab_num}Command")
742
+ end
743
+
744
+ end
745
+
746
+ linwin = Redcar::Keymap.build("main", [:linux, :windows]) do
747
+ link "Ctrl+N", OpenNewEditTabCommand
748
+ link "Ctrl+Shift+N", Application::OpenNewNotebookCommand
749
+ link "Ctrl+Alt+N", Application::OpenNewWindowCommand
750
+ link "Ctrl+O", Project::OpenFileCommand
751
+ link "Ctrl+Shift+O", Project::DirectoryOpenCommand
752
+ link "Ctrl+Alt+Shift+P", Project::FindRecentCommand
753
+ #link "Alt+Shift+O", Project::OpenRemoteCommand
754
+ link "Ctrl+S", Project::SaveFileCommand
755
+ link "Ctrl+Shift+S", Project::SaveFileAsCommand
756
+ link "Ctrl+W", Application::CloseTabCommand
757
+ link "Ctrl+Shift+W", Application::CloseWindowCommand
758
+ link "Alt+Shift+W", Application::CloseTreeCommand
759
+ link "Ctrl+Q", Application::QuitCommand
760
+
761
+ link "Ctrl+Enter", MoveNextLineCommand
762
+
763
+ link "Ctrl+Shift+E", EditView::InfoSpeedbarCommand
764
+ link "Ctrl+Z", UndoCommand
765
+ link "Ctrl+Y", RedoCommand
766
+ link "Ctrl+X", CutCommand
767
+ link "Ctrl+C", CopyCommand
768
+ link "Ctrl+V", PasteCommand
769
+ link "Ctrl+D", DuplicateCommand
770
+
771
+ link "Ctrl+Home", MoveTopCommand
772
+ link "Home", MoveHomeCommand
773
+ link "Ctrl+Alt+A", MoveHomeCommand
774
+ link "End", MoveEndCommand
775
+ link "Ctrl+Alt+E", MoveEndCommand
776
+ link "Ctrl+End", MoveBottomCommand
777
+
778
+ link "Alt+[", BackwardNavigationCommand
779
+ link "Alt+]", ForwardNavigationCommand
780
+
781
+ link "Ctrl+[", DecreaseIndentCommand
782
+ link "Ctrl+]", IncreaseIndentCommand
783
+ link "Ctrl+Shift+[", AutoIndenter::IndentCommand
784
+ link "Ctrl+L", GotoLineCommand
785
+ link "Ctrl+A", SelectAllCommand
786
+ link "Ctrl+Alt+W", SelectWordCommand
787
+ link "Ctrl+Alt+L", SelectLineCommand
788
+ link "Ctrl+B", ToggleBlockSelectionCommand
789
+ link "Escape", AutoCompleter::AutoCompleteCommand
790
+ link "Ctrl+Escape", AutoCompleter::MenuAutoCompleterCommand
791
+ link "Ctrl+Space", AutoCompleter::AutoCompleteCommand
792
+
793
+ link "Ctrl+Shift+Space", AutoCompleter::MenuAutoCompleterCommand
794
+
795
+ link "Ctrl+U", EditView::UpcaseTextCommand
796
+ link "Ctrl+Shift+U", EditView::DowncaseTextCommand
797
+ link "Ctrl+Alt+U", EditView::TitlizeTextCommand
798
+ link "Ctrl+Alt+Shift+U", EditView::OppositeCaseTextCommand
799
+ link "Ctrl+_", EditView::CamelSnakePascalRotateTextCommand
800
+ link "Ctrl+=", EditView::AlignAssignmentCommand
801
+ link "Ctrl+Shift+^", SortLinesCommand
802
+
803
+ link "Ctrl+T", Project::FindFileCommand
804
+ link "Ctrl+Shift+Alt+O", Application::MoveTabToOtherNotebookCommand
805
+
806
+ link "Ctrl+Shift+P", PrintScopeCommand
807
+
808
+ link "Ctrl+Alt+O", Application::SwitchNotebookCommand
809
+ link "Ctrl+Shift+H", Application::ToggleTreesCommand
810
+ link "Alt+Page Up", Application::SwitchTreeUpCommand
811
+ link "Alt+Page Down", Application::SwitchTreeDownCommand
812
+ link "Ctrl+Page Up", Application::SwitchTabDownCommand
813
+ link "Ctrl+Page Down", Application::SwitchTabUpCommand
814
+ link "Ctrl+Shift+Page Up", Application::MoveTabDownCommand
815
+ link "Ctrl+Shift+Page Down", Application::MoveTabUpCommand
816
+ link "Ctrl+Shift+T", Application::OpenTreeFinderCommand
817
+ link "Alt+Shift+J", Application::IncreaseTreebookWidthCommand
818
+ link "Alt+Shift+H", Application::DecreaseTreebookWidthCommand
819
+ link "Ctrl+Shift+>", Application::EnlargeNotebookCommand
820
+ link "Ctrl+Shift+L", Application::ResetNotebookWidthsCommand
821
+ link "Ctrl+Shift+:", Application::RotateNotebooksCommand
822
+ link "Alt+Shift+N", Application::CloseNotebookCommand
823
+ link "F11", Application::ToggleFullscreen
824
+ link "Ctrl+Alt+I", ToggleInvisibles
825
+ link "Ctrl++", IncreaseFontSize
826
+ link "Ctrl+-", DecreaseFontSize
827
+
828
+ link "Ctrl+Alt+S", Snippets::OpenSnippetExplorer
829
+
830
+ #Textmate.attach_keybindings(self, :linux)
831
+
832
+ # map SelectTab<number>Command
833
+ (1..9).each do |tab_num|
834
+ link "Alt+#{tab_num}", Application.const_get("SelectTab#{tab_num}Command")
835
+ end
836
+
837
+ end
838
+
839
+ [linwin, osx]
840
+ end
841
+
842
+ def self.toolbars
843
+ ToolBar::Builder.build do
844
+ item "New File", :command => OpenNewEditTabCommand, :icon => :new, :barname => :core
845
+ item "Open File", :command => Project::OpenFileCommand, :icon => :open, :barname => :core
846
+ item "Open Directory", :command => Project::DirectoryOpenCommand, :icon => :open_dir, :barname => :core
847
+ item "Save File", :command => Project::SaveFileCommand, :icon => :save, :barname => :core
848
+ item "Save File As", :command => Project::SaveFileAsCommand, :icon => :save_as, :barname => :core
849
+ item "Undo", :command => UndoCommand, :icon => :undo, :barname => :core
850
+ item "Redo", :command => RedoCommand, :icon => :redo, :barname => :core
851
+ item "New Notebook", :command => Application::OpenNewNotebookCommand, :icon => File.join(Redcar.icons_directory, "book--plus.png"), :barname => :edit
852
+ item "Close Notebook", :command => Application::CloseNotebookCommand, :icon => File.join(Redcar.icons_directory, "book--minus.png"), :barname => :edit
853
+ end
854
+ end
855
+
856
+
857
+ def self.menus(window)
858
+ Menu::Builder.build do
859
+ sub_menu "File", :priority => :first do
860
+ group(:priority => :first) do
861
+ item "New", OpenNewEditTabCommand
862
+ item "New Window", Application::OpenNewWindowCommand
863
+ end
864
+
865
+ group(:priority => 10) do
866
+ separator
867
+ item "Close Tab", Application::CloseTabCommand
868
+ item "Close Tree", Application::CloseTreeCommand
869
+ item "Close Window", Application::CloseWindowCommand
870
+ item "Close Others", Application::CloseOthers
871
+ item "Close All", Application::CloseAll
872
+ end
873
+
874
+ group(:priority => :last) do
875
+ separator
876
+ item "Quit", Application::QuitCommand
877
+ end
878
+ end
879
+
880
+ sub_menu "Edit", :priority => 5 do
881
+ group(:priority => :first) do
882
+ item "Tab Info", EditView::InfoSpeedbarCommand
883
+ end
884
+ group(:priority => 10) do
885
+ separator
886
+ item "Undo", UndoCommand
887
+ item "Redo", RedoCommand
888
+ end
889
+
890
+ group(:priority => 15) do
891
+ separator
892
+ item "Cut", CutCommand
893
+ item "Copy", CopyCommand
894
+ item "Paste", PasteCommand
895
+ sub_menu "Line Tools", :priority => 20 do
896
+ item "Duplicate Region", DuplicateCommand
897
+ item "Sort Lines in Region", SortLinesCommand
898
+ end
899
+ end
900
+
901
+ group(:priority => 30) do
902
+ separator
903
+ sub_menu "Selection" do
904
+ item "All", SelectAllCommand
905
+ item "Line", SelectLineCommand
906
+ item "Current Word", SelectWordCommand
907
+ item "Toggle Block Selection", ToggleBlockSelectionCommand
908
+ end
909
+ end
910
+
911
+ group(:priority => 40) do
912
+ sub_menu "Document Navigation" do
913
+ item "Goto Line", GotoLineCommand
914
+ item "Top", MoveTopCommand
915
+ item "Home", MoveHomeCommand
916
+ item "End", MoveEndCommand
917
+ item "Bottom", MoveBottomCommand
918
+
919
+ separator
920
+
921
+ item "Forward Character", ForwardCharCommand
922
+ item "Backward Character", BackwardCharCommand
923
+ item "Previous Line", MoveUpCommand
924
+ item "Next Line", MoveDownCommand
925
+ item "Open Line", OpenLineCommand
926
+
927
+ separator
928
+
929
+ item "Delete Character", DeleteCharCommand
930
+ item "Backspace", BackspaceCommand
931
+ item "Transpose", TransposeCharactersCommand
932
+
933
+ separator
934
+
935
+ item "Backward Navigation", BackwardNavigationCommand
936
+ item "Forward Navigation", ForwardNavigationCommand
937
+ end
938
+ end
939
+
940
+ group(:priority => 50) do
941
+ sub_menu "Formatting" do
942
+ item "Increase Indent", IncreaseIndentCommand
943
+ item "Decrease Indent", DecreaseIndentCommand
944
+ end
945
+ end
946
+
947
+ end
948
+ sub_menu "Debug", :priority => 20 do
949
+ group(:priority => 10) do
950
+ item "Task Manager", TaskManager::OpenCommand
951
+ separator
952
+ item "Print Scope Tree", PrintScopeTreeCommand
953
+ item "Print Scope at Cursor", PrintScopeCommand
954
+ end
955
+ end
956
+ sub_menu "View", :priority => 30 do
957
+ sub_menu "Appearance", :priority => 5 do
958
+ item "Select Theme", SelectTheme
959
+ separator
960
+ item "Select Font" , SelectNewFont
961
+ item "Select Font Size" , SelectFontSize
962
+ item "Increase Font Size", IncreaseFontSize
963
+ item "Decrease Font Size", DecreaseFontSize
964
+ end
965
+ group(:priority => 10) do
966
+ separator
967
+ item "Toggle Fullscreen", :command => Application::ToggleFullscreen, :type => :check, :active => window ? window.fullscreen : false
968
+ end
969
+ group(:priority => 15) do
970
+ separator
971
+ sub_menu "Trees" do
972
+ item "Open Tree Finder", Application::OpenTreeFinderCommand
973
+ item "Toggle Tree Visibility", Application::ToggleTreesCommand
974
+ item "Increase Tree Width", Application::IncreaseTreebookWidthCommand
975
+ item "Decrease Tree Width", Application::DecreaseTreebookWidthCommand
976
+ separator
977
+ item "Previous Tree", Application::SwitchTreeUpCommand
978
+ item "Next Tree", Application::SwitchTreeDownCommand
979
+ end
980
+ lazy_sub_menu "Windows" do
981
+ GenerateWindowsMenu.new(self).run
982
+ end
983
+ sub_menu "Notebooks" do
984
+ item "New Notebook", Application::OpenNewNotebookCommand
985
+ item "Close Notebook", Application::CloseNotebookCommand
986
+ item "Rotate Notebooks", Application::RotateNotebooksCommand
987
+ item "Move Tab To Other Notebook", Application::MoveTabToOtherNotebookCommand
988
+ item "Switch Notebooks", Application::SwitchNotebookCommand
989
+ separator
990
+ item "Enlarge First Notebook", Application::EnlargeNotebookCommand
991
+ item "Reset Notebook Widths", Application::ResetNotebookWidthsCommand
992
+ end
993
+ sub_menu "Tabs" do
994
+ item "Previous Tab", Application::SwitchTabDownCommand
995
+ item "Next Tab", Application::SwitchTabUpCommand
996
+ item "Move Tab Left", Application::MoveTabDownCommand
997
+ item "Move Tab Right", Application::MoveTabUpCommand
998
+ separator
999
+ # GenerateTabsMenu.new(self).run # TODO: find a way to maintain keybindings with lazy menus
1000
+ item "Focussed Notebook", ShowTitle
1001
+ (1..9).each do |num|
1002
+ item "Tab #{num}", Application.const_get("SelectTab#{num}Command")
1003
+ end
1004
+ end
1005
+ end
1006
+ group(:priority => :last) do
1007
+ separator
1008
+ item "Show Toolbar", :command => Application::ToggleToolbar, :type => :check, :active => Redcar.app.show_toolbar?
1009
+ item "Show Invisibles", :command => ToggleInvisibles, :type => :check, :active => EditView.show_invisibles?
1010
+ item "Show Line Numbers", :command => ToggleLineNumbers, :type => :check, :active => EditView.show_line_numbers?
1011
+ end
1012
+ end
1013
+ sub_menu "Bundles", :priority => 45 do
1014
+ group(:priority => :first) do
1015
+ item "Find Snippet", Snippets::OpenSnippetExplorer
1016
+ item "Installed Bundles", Textmate::InstalledBundles
1017
+ item "Browse Snippets", Textmate::ShowSnippetTree
1018
+ end
1019
+ group(:priority => 15) do
1020
+ separator
1021
+ Textmate.attach_menus(self)
1022
+ end
1023
+ end
1024
+ sub_menu "Help", :priority => :last do
1025
+ group(:priority => :last) do
1026
+ item "About", AboutCommand
1027
+ item "New In This Version", ChangelogCommand
1028
+ end
1029
+ end
1030
+ end
1031
+ end
1032
+
1033
+ class ApplicationEventHandler
1034
+ def tab_focus(tab)
1035
+ tab.focus
1036
+ end
1037
+
1038
+ def tab_close(tab)
1039
+ Application::CloseTabCommand.new(tab).run
1040
+ end
1041
+
1042
+ def window_close(win)
1043
+ Application::CloseWindowCommand.new(win).run
1044
+ end
1045
+
1046
+ def application_close(app)
1047
+ Application::QuitCommand.new.run
1048
+ end
1049
+
1050
+ def window_focus(win)
1051
+ Application::FocusWindowCommand.new(win).run
1052
+ end
1053
+ end
1054
+
1055
+ def self.application_event_handler
1056
+ ApplicationEventHandler.new
1057
+ end
1058
+
1059
+ def self.start(args=[])
1060
+ begin
1061
+ Redcar.log.info("startup milestone: loading plugins took #{Time.now - Redcar.process_start_time}")
1062
+ Redcar.update_gui do
1063
+ Application.start
1064
+ ApplicationSWT.start
1065
+ EditViewSWT.start
1066
+ SplashScreen.splash_screen.inc(1) if SplashScreen.splash_screen
1067
+ s = Time.now
1068
+ if Redcar.gui
1069
+ Redcar.app.controller = ApplicationSWT.new(Redcar.app)
1070
+ end
1071
+ Redcar.app.refresh_menu!
1072
+ Redcar.app.load_sensitivities
1073
+ Redcar.log.info("initializing gui took #{Time.now - s}s")
1074
+ end
1075
+ Redcar.update_gui do
1076
+ SplashScreen.splash_screen.close if SplashScreen.splash_screen
1077
+ win = Redcar.app.make_sure_at_least_one_window_there
1078
+ Redcar.log.info("startup milestone: window open #{Time.now - Redcar.process_start_time}")
1079
+ Redcar::Project::Manager.start(args)
1080
+ Redcar.log.info("startup milestone: project open #{Time.now - Redcar.process_start_time}")
1081
+ win.show if win and !args.include?("--no-window")
1082
+ end
1083
+ Redcar.load_useful_libraries
1084
+ Redcar.log.info("startup milestone: complete: #{Time.now - Redcar.process_start_time}")
1085
+ if args.include?("--compute-textmate-cache-and-quit")
1086
+ Redcar::Textmate.all_bundles
1087
+ exit
1088
+ end
1089
+ rescue => e
1090
+ Redcar.log.error("error in startup: #{e.inspect}")
1091
+ e.backtrace.each do |line|
1092
+ Redcar.log.error(line)
1093
+ end
1094
+ end
1095
+ end
1096
+ end
1097
+ end