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,73 @@
1
+ Feature: Undo and Redo
2
+
3
+ Scenario: Commands are inactive for a new tab
4
+ When I open a new edit tab
5
+ Then the menu item "Edit|Undo" should be inactive
6
+ And the menu item "Edit|Redo" should be inactive
7
+
8
+ Scenario: Undo becomes active when I type something
9
+ When I open a new edit tab
10
+ And I replace the contents with "Bolzano"
11
+ Then the menu item "Edit|Undo" should be active
12
+ And the menu item "Edit|Redo" should be inactive
13
+
14
+ Scenario: Undo undoes typing
15
+ When I open a new edit tab
16
+ And I replace the contents with "Bolzano"
17
+ And I undo
18
+ Then I should not see "Bolzano" in the edit tab
19
+
20
+ Scenario: Undo undoes typing twice
21
+ When I open a new edit tab
22
+ And I replace the contents with "Bolzano"
23
+ And I replace the contents with "Weierstrass"
24
+ And I undo
25
+ Then I should not see "Weierstrass" in the edit tab
26
+ And I should see "Bolzano" in the edit tab
27
+ And I undo
28
+ Then I should not see "Weierstrass" in the edit tab
29
+ And I should not see "Bolzano" in the edit tab
30
+
31
+ Scenario: Undo becomes inactive and redo active when I undo everything
32
+ When I open a new edit tab
33
+ And I replace the contents with "Bolzano"
34
+ And I undo
35
+ Then the menu item "Edit|Undo" should be inactive
36
+ And the menu item "Edit|Redo" should be active
37
+
38
+ Scenario: Redo redoes typing
39
+ When I open a new edit tab
40
+ And I replace the contents with "Bolzano"
41
+ And I undo
42
+ And I redo
43
+ And I should see "Bolzano" in the edit tab
44
+
45
+ Scenario: Redo becomes inactive when I redo everything
46
+ When I open a new edit tab
47
+ And I replace the contents with "Bolzano"
48
+ And I undo
49
+ And I redo
50
+ Then the menu item "Edit|Undo" should be active
51
+ And the menu item "Edit|Redo" should be inactive
52
+
53
+ Scenario: Compound undo steps work
54
+ When I open a new edit tab
55
+ And tabs are hard
56
+ And I replace the contents with "Bolzano\nWeierstrass"
57
+ And I select from 0 to 19
58
+ And tabs are hard
59
+ And I run the command Redcar::Top::IncreaseIndentCommand
60
+ Then the contents should be "\tBolzano\n\tWeierstrass"
61
+ And I undo
62
+ Then the contents should be "Bolzano\nWeierstrass"
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
@@ -0,0 +1,67 @@
1
+ Feature: Word Matching
2
+
3
+ Scenario: Matching a word at the file start
4
+ When I open a new edit tab
5
+ And I replace the contents with "Don Caballero"
6
+ And I select the word at 0
7
+ Then the selected text should be "Don"
8
+
9
+ Scenario: Matching a word at the file start by explicitly calling the matching method
10
+ When I open a new edit tab
11
+ And I replace the contents with "Don Caballero"
12
+ And I select the word right of 0
13
+ Then the selected text should be "Don"
14
+
15
+ Scenario: Matching a word at the file end
16
+ When I open a new edit tab
17
+ And I replace the contents with "Don Caballero"
18
+ And I select the word at 13
19
+ Then the selected text should be "Caballero"
20
+
21
+ Scenario: Matching a word at the file end by explicitly calling the matching method
22
+ When I open a new edit tab
23
+ And I replace the contents with "Don Caballero"
24
+ And I select the word left of 13
25
+ Then the selected text should be "Caballero"
26
+
27
+ Scenario: Matching a word from the start of a word
28
+ When I open a new edit tab
29
+ And I replace the contents with "Don Caballero"
30
+ And I select the word at 4
31
+ Then the selected text should be "Caballero"
32
+
33
+ Scenario: Matching a word from the start of a word by explicitly calling the matching method
34
+ When I open a new edit tab
35
+ And I replace the contents with "Don Caballero"
36
+ And I select the word right of 4
37
+ Then the selected text should be "Caballero"
38
+
39
+ Scenario: Matching a word from the end of a word
40
+ When I open a new edit tab
41
+ And I replace the contents with "Don Caballero"
42
+ And I select the word at 3
43
+ Then the selected text should be "Don"
44
+
45
+ Scenario: Matching a word from the end of a word
46
+ When I open a new edit tab
47
+ And I replace the contents with "Don Caballero"
48
+ And I select the word left of 3
49
+ Then the selected text should be "Don"
50
+
51
+ Scenario: Matching a word from somewhere inside a word
52
+ When I open a new edit tab
53
+ And I replace the contents with "Don Caballero"
54
+ And I select the word at 7
55
+ Then the selected text should be "Caballero"
56
+
57
+ Scenario: Matching a word from somewhere inside a word by explicitly calling the matching method
58
+ When I open a new edit tab
59
+ And I replace the contents with "Don Caballero"
60
+ And I select the word around 7
61
+ Then the selected text should be "Caballero"
62
+
63
+ Scenario: Matching a word towards the file start
64
+ When I open a new edit tab
65
+ And I replace the contents with "Don Caballero"
66
+ And I select the word at 1
67
+ Then the selected text should be "Don"
@@ -0,0 +1,659 @@
1
+
2
+ require "edit_view/actions/arrow_keys"
3
+ require "edit_view/actions/deletion"
4
+ require "edit_view/actions/esc"
5
+ require "edit_view/actions/tab"
6
+ require "edit_view/actions/cmd_enter"
7
+ require "edit_view/command"
8
+ require "edit_view/document"
9
+ require "edit_view/document/command"
10
+ require "edit_view/document/controller"
11
+ require "edit_view/document/history"
12
+ require "edit_view/document/indentation"
13
+ require "edit_view/document/mirror"
14
+ require "edit_view/grammar"
15
+ require "edit_view/edit_tab"
16
+ require "edit_view/modified_tabs_checker"
17
+ require "edit_view/tab_settings"
18
+ require "edit_view/info_speedbar"
19
+ require "edit_view/select_font_dialog"
20
+ require "edit_view/select_theme_dialog"
21
+
22
+ require "edit_view/commands/text_conversion_commands"
23
+ require "edit_view/commands/align_assignment_command"
24
+
25
+
26
+ module Redcar
27
+ class EditView
28
+ ACTIONS = [
29
+ :LINE_UP,
30
+ :LINE_DOWN,
31
+ :LINE_START,
32
+ :LINE_END,
33
+ :COLUMN_PREVIOUS,
34
+ :COLUMN_NEXT,
35
+ :PAGE_UP,
36
+ :PAGE_DOWN,
37
+ :WORD_PREVIOUS,
38
+ :WORD_NEXT,
39
+ :TEXT_START,
40
+ :TEXT_END,
41
+ :WINDOW_START,
42
+ :WINDOW_END,
43
+ :SELECT_ALL,
44
+ :SELECT_LINE_UP,
45
+ :SELECT_LINE_DOWN,
46
+ :SELECT_LINE_START,
47
+ :SELECT_LINE_END,
48
+ :SELECT_COLUMN_PREVIOUS,
49
+ :SELECT_COLUMN_NEXT,
50
+ :SELECT_PAGE_UP,
51
+ :SELECT_PAGE_DOWN,
52
+ :SELECT_WORD_PREVIOUS,
53
+ :SELECT_WORD_NEXT,
54
+ :SELECT_TEXT_START,
55
+ :SELECT_TEXT_END,
56
+ :SELECT_WINDOW_START,
57
+ :SELECT_WINDOW_END,
58
+ :CUT,
59
+ :COPY,
60
+ :PASTE,
61
+ :DELETE_PREVIOUS,
62
+ :DELETE_NEXT,
63
+ :DELETE_WORD_PREVIOUS,
64
+ :DELETE_WORD_NEXT
65
+ ]
66
+
67
+ MAX_FONT_SIZE = 25
68
+ MIN_FONT_SIZE = 6
69
+
70
+ include Redcar::Model
71
+ extend Redcar::Observable
72
+ include Redcar::Observable
73
+
74
+ extend Forwardable
75
+
76
+ module Handler
77
+ include Interface::Abstract
78
+
79
+ def handle(edit_view, modifiers)
80
+ end
81
+ end
82
+
83
+ class << self
84
+ attr_reader :undo_sensitivity, :redo_sensitivity
85
+ attr_reader :focussed_edit_view
86
+ end
87
+
88
+ def self.tab_settings
89
+ @tab_settings ||= TabSettings.new
90
+ end
91
+
92
+ # unused?
93
+ def self.storage
94
+ @storage ||= Plugin::Storage.new('edit_view_plugin')
95
+ end
96
+
97
+ def self.menus
98
+ Menu::Builder.build do
99
+ sub_menu "Edit" do
100
+ sub_menu "Formatting" do
101
+ item "Align Assignments", EditView::AlignAssignmentCommand
102
+ sub_menu "Convert Text", :priority => 40 do
103
+ item "to Uppercase", EditView::UpcaseTextCommand
104
+ item "to Lowercase", EditView::DowncaseTextCommand
105
+ item "to Titlecase", EditView::TitlizeTextCommand
106
+ item "to Opposite Case", EditView::OppositeCaseTextCommand
107
+ separator
108
+ item "to CamelCase", EditView::CamelCaseTextCommand
109
+ item "to snake_case", EditView::UnderscoreTextCommand
110
+ item "Toggle PascalCase-underscore-camelCase", EditView::CamelSnakePascalRotateTextCommand
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ def self.toolbars
118
+ ToolBar::Builder.build do
119
+ item "Cut", :command => Redcar::Top::CutCommand, :icon => File.join(Redcar.icons_directory, "scissors-blue.png"), :barname => :edit
120
+ item "Copy", :command => Redcar::Top::CopyCommand, :icon => File.join(Redcar.icons_directory, "blue-document-copy.png"), :barname => :edit
121
+ item "Paste", :command => Redcar::Top::PasteCommand, :icon => File.join(Redcar.icons_directory, "clipboard.png"), :barname => :edit
122
+ end
123
+ end
124
+
125
+ def self.edit_view_context_menus
126
+ Menu::Builder.build do
127
+ group(:priority => :first) do
128
+ item ("Cut" ) { Redcar::Top::CutCommand.new.run }
129
+ item ("Copy" ) { Redcar::Top::CopyCommand.new.run }
130
+ item ("Paste") { Redcar::Top::PasteCommand.new.run}
131
+ end
132
+ group(:priority => 20) do
133
+ separator
134
+ sub_menu "Convert Text" do
135
+ item ("to Uppercase") {EditView::UpcaseTextCommand.new.run}
136
+ item ("to Lowercase") {EditView::DowncaseTextCommand.new.run}
137
+ item ("to Titlecase") {EditView::TitlizeTextCommand.new.run}
138
+ item ("to Opposite Case") {EditView::OppositeCaseTextCommand.new.run}
139
+ separator
140
+ item ("to CamelCase") {EditView::CamelCaseTextCommand.new.run}
141
+ item ("to snake_case") {EditView::UnderscoreTextCommand.new.run}
142
+ item ("Toggle PascalCase-underscore-camelCase") {EditView::CamelSnakePascalRotateTextCommand.new.run}
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ def self.quit_guard
149
+ EditView::ModifiedTabsChecker.new(
150
+ Redcar.app.all_tabs.select {|t| t.is_a?(EditTab)},
151
+ "Save all before quitting?"
152
+ ).check
153
+ end
154
+
155
+ def self.close_window_guard(win)
156
+ EditView::ModifiedTabsChecker.new(
157
+ win.notebooks.map(&:tabs).flatten.select {|t| t.is_a?(EditTab)},
158
+ "Save all before closing the window?"
159
+ ).check
160
+ end
161
+
162
+ def self.all_handlers(type)
163
+ result = []
164
+ method_name = :"#{type}_handlers"
165
+ Redcar.plugin_manager.objects_implementing(method_name).each do |object|
166
+ result += object.send(method_name)
167
+ end
168
+ result.each {|h| Handler.verify_interface!(h) }
169
+ end
170
+
171
+ def self.arrow_left_handlers
172
+ [Actions::ArrowLeftHandler]
173
+ end
174
+
175
+ def self.arrow_right_handlers
176
+ [Actions::ArrowRightHandler]
177
+ end
178
+
179
+ def self.tab_handlers
180
+ [Actions::IndentTabHandler]
181
+ end
182
+
183
+ def self.backspace_handlers
184
+ [Actions::BackspaceHandler]
185
+ end
186
+
187
+ def self.delete_handlers
188
+ [Actions::DeleteHandler]
189
+ end
190
+
191
+ def self.esc_handlers
192
+ [Actions::EscapeHandler]
193
+ end
194
+
195
+ def self.cmd_enter_handlers
196
+ [Actions::CmdEnterHandler]
197
+ end
198
+
199
+ def self.all_tab_handlers
200
+ all_handlers(:tab)
201
+ end
202
+
203
+ def self.all_esc_handlers
204
+ all_handlers(:esc)
205
+ end
206
+
207
+ def self.all_arrow_left_handlers
208
+ all_handlers(:arrow_left)
209
+ end
210
+
211
+ def self.all_arrow_right_handlers
212
+ all_handlers(:arrow_right)
213
+ end
214
+
215
+ def self.all_delete_handlers
216
+ all_handlers(:delete)
217
+ end
218
+
219
+ def self.all_backspace_handlers
220
+ all_handlers(:backspace)
221
+ end
222
+
223
+ def self.all_cmd_enter_handlers
224
+ all_handlers(:cmd_enter)
225
+ end
226
+
227
+ def handle_key(handlers, modifiers)
228
+ sorted_handlers = handlers.sort_by {|h| (h.respond_to?(:priority) and h.priority) || 0 }.reverse
229
+ sorted_handlers.detect do |h|
230
+ begin
231
+ h.handle(self, modifiers)
232
+ rescue => e
233
+ puts "*** Error in key handler: #{e.class} #{e.message}"
234
+ puts e.backtrace.map {|l| " - " + l }
235
+ end
236
+ end
237
+ end
238
+
239
+ def tab_pressed(modifiers)
240
+ handle_key(EditView.all_tab_handlers, modifiers)
241
+ end
242
+
243
+ def esc_pressed(modifiers)
244
+ handle_key(EditView.all_esc_handlers, modifiers)
245
+ end
246
+
247
+ def left_pressed(modifiers)
248
+ handle_key(EditView.all_arrow_left_handlers, modifiers)
249
+ end
250
+
251
+ def right_pressed(modifiers)
252
+ handle_key(EditView.all_arrow_right_handlers, modifiers)
253
+ end
254
+
255
+ def delete_pressed(modifiers)
256
+ handle_key(EditView.all_delete_handlers, modifiers)
257
+ end
258
+
259
+ def backspace_pressed(modifiers)
260
+ handle_key(EditView.all_backspace_handlers, modifiers)
261
+ end
262
+
263
+ def cmd_enter_pressed(modifiers)
264
+ handle_key(EditView.all_cmd_enter_handlers, modifiers)
265
+ end
266
+
267
+ # Called by the GUI whenever an EditView is focussed or
268
+ # loses focus. Sends :focussed_edit_view event.
269
+ #
270
+ # Will return nil if the application is not focussed or if
271
+ # no edit view is focussed.
272
+ def self.focussed_edit_view=(edit_view)
273
+ return if @protect_edit_view_focus
274
+ if edit_view
275
+ @last_focussed_edit_view = edit_view
276
+ end
277
+ @focussed_edit_view = edit_view
278
+ edit_view.check_for_updated_document if edit_view
279
+ notify_listeners(:focussed_edit_view, edit_view)
280
+ end
281
+
282
+ def self.protect_edit_view_focus
283
+ @protect_edit_view_focus = true
284
+ yield
285
+ @protect_edit_view_focus = false
286
+ end
287
+
288
+ def self.current
289
+ tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
290
+ if tab.is_a?(Redcar::EditTab)
291
+ tab.edit_view
292
+ end
293
+ end
294
+
295
+ def self.sensitivities
296
+ [
297
+ Sensitivity.new(:edit_tab_focussed, Redcar.app, false, [:tab_focussed]) do |tab|
298
+ tab and tab.is_a?(EditTab)
299
+ end,
300
+ Sensitivity.new(:edit_view_focussed, EditView, false, [:focussed_edit_view]) do |edit_view|
301
+ edit_view
302
+ end,
303
+ Sensitivity.new(:selected_text, Redcar.app, false, [:focussed_tab_selection_changed, :tab_focussed]) do
304
+ if win = Redcar.app.focussed_window
305
+ tab = win.focussed_notebook.focussed_tab
306
+ tab and tab.is_a?(EditTab) and tab.edit_view.document.selection?
307
+ end
308
+ end,
309
+ @undo_sensitivity =
310
+ Sensitivity.new(:undoable, Redcar.app, false, [:focussed_tab_changed, :tab_focussed]) do
311
+ tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
312
+ tab and tab.is_a?(EditTab) and tab.edit_view.undoable?
313
+ end,
314
+ @redo_sensitivity =
315
+ Sensitivity.new(:redoable, Redcar.app, false, [:focussed_tab_changed, :tab_focussed]) do
316
+ tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
317
+ tab and tab.is_a?(EditTab) and tab.edit_view.redoable?
318
+ end,
319
+ Sensitivity.new(:clipboard_not_empty, Redcar.app, false, [:clipboard_added, :focussed_window]) do
320
+ Redcar.app.clipboard.length > 0
321
+ end
322
+ ]
323
+ end
324
+
325
+ def self.default_font_size
326
+ if Redcar.platform == :osx
327
+ 15
328
+ elsif Redcar.platform == :linux
329
+ 11
330
+ elsif Redcar.platform == :windows
331
+ 9
332
+ end
333
+ end
334
+
335
+ def self.default_font
336
+ if Redcar.platform == :osx
337
+ "Monaco"
338
+ elsif Redcar.platform == :linux
339
+ "Monospace"
340
+ elsif Redcar.platform == :windows
341
+ "Courier New"
342
+ end
343
+ end
344
+
345
+ def self.font_info
346
+ [ EditView.storage["font"] || default_font,
347
+ EditView.storage["font-size"] || default_font_size ]
348
+ end
349
+
350
+ def self.font
351
+ font_info[0]
352
+ end
353
+
354
+ def self.font_size
355
+ font_info[1]
356
+ end
357
+
358
+ def self.font=(font)
359
+ EditView.storage["font"] = font
360
+ all_edit_views.each {|ev| ev.refresh_font }
361
+ end
362
+
363
+ def refresh_font
364
+ notify_listeners(:font_changed)
365
+ end
366
+
367
+ def self.font_size=(size)
368
+ EditView.storage["font-size"] = size
369
+ all_edit_views.each {|ev| ev.refresh_font }
370
+ end
371
+
372
+ def self.theme
373
+ EditView.storage["theme"] || "Twilight"
374
+ end
375
+
376
+ def self.theme=(theme)
377
+ theme.gsub!(/ \(Current\)$/, '')
378
+ EditView.storage["theme"] = theme
379
+ all_edit_views.each {|ev| ev.refresh_theme }
380
+ Redcar.plugin_manager.objects_implementing(:theme_changed_update).each do |object|
381
+ @cursor = object.theme_changed_update
382
+ end
383
+ end
384
+
385
+ def self.themes
386
+ @themes ||= []
387
+ end
388
+
389
+ def refresh_theme
390
+ notify_listeners(:theme_changed)
391
+ end
392
+
393
+ def self.focussed_tab_edit_view
394
+ Redcar.app.focussed_notebook_tab.edit_view if Redcar.app.focussed_notebook_tab and Redcar.app.focussed_notebook_tab.edit_tab?
395
+ end
396
+
397
+ def self.focussed_edit_view_document
398
+ focussed_tab_edit_view.document if focussed_tab_edit_view
399
+ end
400
+
401
+ def self.focussed_document_mirror
402
+ focussed_edit_view_document.mirror if focussed_edit_view_document
403
+ end
404
+
405
+ def self.all_edit_views
406
+ Redcar.app.windows.map {|w| w.notebooks.map {|n| n.tabs}.flatten }.flatten.select {|t| t.is_a?(EditTab)}.map {|t| t.edit_view}
407
+ end
408
+
409
+ attr_reader :document, :history
410
+
411
+ def initialize
412
+ create_document
413
+ @grammar = nil
414
+ @focussed = nil
415
+ create_history
416
+ end
417
+
418
+ def create_history
419
+ @history = Document::History.new(500)
420
+ @history.subscribe do |action|
421
+ document.controllers.each {|c| c.after_action(action) }
422
+ end
423
+ end
424
+
425
+ def create_document
426
+ @document = Redcar::Document.new(self)
427
+ end
428
+
429
+ def_delegators :controller, :undo, :redo,
430
+ :undoable?, :redoable?,
431
+ :reset_undo,
432
+ :cursor_offset, :cursor_offset=,
433
+ :scroll_to_line, :compound,
434
+ :begin_compound, :end_compound,
435
+ :annotations, :remove_annotation,
436
+ :remove_all_annotations
437
+
438
+ def grammar
439
+ @grammar
440
+ end
441
+
442
+ def grammar=(name)
443
+ set_grammar(name)
444
+ notify_listeners(:grammar_changed, name)
445
+ end
446
+
447
+ def set_grammar(name)
448
+ @grammar = name
449
+ self.tab_width = EditView.tab_settings.width_for(name)
450
+ self.soft_tabs = EditView.tab_settings.softness_for(name)
451
+ self.word_wrap = EditView.tab_settings.word_wrap_for(name)
452
+ self.margin_column = EditView.tab_settings.margin_column_for(name)
453
+ self.show_margin = EditView.tab_settings.show_margin_for(name)
454
+ refresh_show_invisibles
455
+ refresh_show_line_numbers
456
+ end
457
+
458
+ def focus
459
+ notify_listeners(:focussed)
460
+ end
461
+
462
+ def exists?
463
+ controller.exists?
464
+ end
465
+
466
+ def tab_width
467
+ @tab_width
468
+ end
469
+
470
+ def tab_width=(val)
471
+ @tab_width = val
472
+ EditView.tab_settings.set_width_for(grammar, val)
473
+ notify_listeners(:tab_width_changed, val)
474
+ end
475
+
476
+ def set_tab_width(val)
477
+ @tab_width = val
478
+ end
479
+
480
+ def soft_tabs?
481
+ @soft_tabs
482
+ end
483
+
484
+ def soft_tabs=(bool)
485
+ @soft_tabs = bool
486
+ EditView.tab_settings.set_softness_for(grammar, bool)
487
+ notify_listeners(:softness_changed, bool)
488
+ end
489
+
490
+ def show_margin?
491
+ @show_margin
492
+ end
493
+
494
+ def show_margin=(bool)
495
+ @show_margin = bool
496
+ EditView.tab_settings.set_show_margin_for(grammar, bool)
497
+ notify_listeners(:show_margin_changed, bool)
498
+ end
499
+
500
+ def word_wrap?
501
+ @word_wrap
502
+ end
503
+
504
+ def word_wrap=(bool)
505
+ @word_wrap = bool
506
+ EditView.tab_settings.set_word_wrap_for(grammar, bool)
507
+ notify_listeners(:word_wrap_changed, bool)
508
+ end
509
+
510
+ def margin_column
511
+ @margin_column
512
+ end
513
+
514
+ def margin_column=(val)
515
+ @margin_column = val
516
+ EditView.tab_settings.set_margin_column_for(grammar, val)
517
+ notify_listeners(:margin_column_changed, val)
518
+ end
519
+
520
+ def show_invisibles?
521
+ @show_invisibles
522
+ end
523
+
524
+ def self.show_invisibles?
525
+ EditView.tab_settings.show_invisibles?
526
+ end
527
+
528
+ def self.show_invisibles=(bool)
529
+ EditView.tab_settings.set_show_invisibles(bool)
530
+ all_edit_views.each {|ev| ev.refresh_show_invisibles }
531
+ end
532
+
533
+ def refresh_show_invisibles
534
+ @show_invisibles = EditView.tab_settings.show_invisibles?
535
+ notify_listeners(:invisibles_changed, @show_invisibles)
536
+ end
537
+
538
+ def show_line_numbers?
539
+ @show_line_numbers
540
+ end
541
+
542
+ def self.show_line_numbers?
543
+ EditView.tab_settings.show_line_numbers?
544
+ end
545
+
546
+ def self.show_line_numbers=(bool)
547
+ EditView.tab_settings.set_show_line_numbers(bool)
548
+ all_edit_views.each {|ev| ev.refresh_show_line_numbers }
549
+ end
550
+
551
+ def refresh_show_line_numbers
552
+ @show_line_numbers = EditView.tab_settings.show_line_numbers?
553
+ notify_listeners(:line_number_visibility_changed, @show_line_numbers)
554
+ end
555
+
556
+ def add_annotation(annotation_name, line, text, start, length)
557
+ start += document.offset_at_line(line)
558
+ controller.add_annotation(annotation_name, line, text, start, length)
559
+ end
560
+
561
+ def add_annotation_type(name, image, rgb)
562
+ controller.add_annotation_type(name, File.expand_path("#{image}.png", Redcar.icons_directory), rgb)
563
+ end
564
+
565
+ def title=(title)
566
+ notify_listeners(:title_changed, title)
567
+ end
568
+
569
+ def serialize
570
+ { :contents => document.to_s,
571
+ :cursor_offset => cursor_offset,
572
+ :grammar => grammar }
573
+ end
574
+
575
+ def deserialize(data)
576
+ self.grammar = data[:grammar]
577
+ document.text = data[:contents]
578
+ self.cursor_offset = data[:cursor_offset]
579
+ end
580
+
581
+ def delay_parsing
582
+ controller.delay_parsing { yield }
583
+ end
584
+
585
+ def reset_last_checked
586
+ @last_checked = Time.now
587
+ end
588
+
589
+ def check_for_updated_document
590
+ # awful forward dependency on the Project plugin here....
591
+ if document and
592
+ document.mirror and
593
+ document.mirror.is_a?(Project::FileMirror) and
594
+ document.mirror.changed_since?(@last_checked)
595
+ if document.modified?
596
+ result = Application::Dialog.message_box(
597
+ "This file has been changed on disc, and you have unsaved changes in Redcar.\n\n" +
598
+ "Revert to version on disc (and lose your changes)?",
599
+ :buttons => :yes_no
600
+ )
601
+ case result
602
+ when :yes
603
+ document.update_from_mirror
604
+ end
605
+ else
606
+ document.update_from_mirror
607
+ end
608
+ end
609
+ @last_checked = Time.now
610
+ end
611
+
612
+ # This characters have custom Redcar behaviour.
613
+ OVERRIDDEN_CHARACTERS = {
614
+ 9 => [:tab_pressed, []]
615
+ }
616
+
617
+ def type_character(character)
618
+ unless custom_character_handle(character)
619
+ notify_listeners(:type_character, character)
620
+ end
621
+ history.record(character)
622
+ end
623
+
624
+ def custom_character_handle(character)
625
+ if method_call = OVERRIDDEN_CHARACTERS[character]
626
+ send(*method_call)
627
+ end
628
+ end
629
+
630
+ # These actions have custom Redcar implementations that
631
+ # override the default StyledText implementation. (Mainly for
632
+ # soft tabs purposes.)
633
+ OVERRIDDEN_ACTIONS = {
634
+ :COLUMN_PREVIOUS => Actions::ArrowLeftHandler,
635
+ :COLUMN_NEXT => Actions::ArrowRightHandler,
636
+ :SELECT_COLUMN_PREVIOUS => Actions::ArrowLeftHandler,
637
+ :SELECT_COLUMN_NEXT => Actions::ArrowRightHandler,
638
+ :DELETE_PREVIOUS => Actions::BackspaceHandler,
639
+ :DELETE_NEXT => Actions::DeleteHandler
640
+ }
641
+
642
+ def invoke_overridden_action(action_symbol)
643
+ if handler = OVERRIDDEN_ACTIONS[action_symbol]
644
+ handler.send(action_symbol.to_s.downcase, self)
645
+ end
646
+ end
647
+
648
+ def invoke_action(action_symbol)
649
+ unless invoke_overridden_action(action_symbol)
650
+ notify_listeners(:invoke_action, action_symbol)
651
+ end
652
+ history.record(action_symbol)
653
+ end
654
+
655
+ def inspect
656
+ "#<Redcar::EditView document:#{document.inspect}>"
657
+ end
658
+ end
659
+ end