redcar 0.3.1dev → 0.3.2dev

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 (316) hide show
  1. data/CHANGES +34 -1
  2. data/README.md +2 -1
  3. data/ROADMAP.md +13 -45
  4. data/Rakefile +15 -14
  5. data/bin/redcar +4 -1
  6. data/lib/plugin_manager/README.md +61 -0
  7. data/lib/plugin_manager/Rakefile +55 -0
  8. data/lib/plugin_manager/bin/plugin_manager +4 -0
  9. data/lib/plugin_manager/lib/plugin_manager.rb +107 -0
  10. data/lib/plugin_manager/lib/plugin_manager/definition_builder.rb +37 -0
  11. data/lib/plugin_manager/lib/plugin_manager/plugin.rb +9 -0
  12. data/lib/plugin_manager/lib/plugin_manager/plugin_definition.rb +50 -0
  13. data/lib/plugin_manager/plugin_manager.gemspec +33 -0
  14. data/lib/plugin_manager/spec/fixtures/error_in_definition/core/plugin.rb +2 -0
  15. data/lib/plugin_manager/spec/fixtures/error_in_plugin/core/core.rb +4 -0
  16. data/lib/plugin_manager/spec/fixtures/error_in_plugin/core/plugin.rb +7 -0
  17. data/lib/plugin_manager/spec/fixtures/example/core/core.rb +20 -0
  18. data/lib/plugin_manager/spec/fixtures/example/core/plugin.rb +7 -0
  19. data/lib/plugin_manager/spec/fixtures/example/debug/debug.rb +6 -0
  20. data/lib/plugin_manager/spec/fixtures/example/debug/plugin.rb +8 -0
  21. data/lib/plugin_manager/spec/fixtures/example/extras/extras.rb +6 -0
  22. data/lib/plugin_manager/spec/fixtures/example/extras/plugin.rb +8 -0
  23. data/lib/plugin_manager/spec/fixtures/two_versions1/core/core.rb +20 -0
  24. data/lib/plugin_manager/spec/fixtures/two_versions1/core/plugin.rb +7 -0
  25. data/lib/plugin_manager/spec/fixtures/two_versions1/core2/core.rb +20 -0
  26. data/lib/plugin_manager/spec/fixtures/two_versions1/core2/plugin.rb +7 -0
  27. data/lib/plugin_manager/spec/fixtures/two_versions2/core/core.rb +20 -0
  28. data/lib/plugin_manager/spec/fixtures/two_versions2/core/plugin.rb +7 -0
  29. data/lib/plugin_manager/spec/fixtures/two_versions2/core2/core.rb +20 -0
  30. data/lib/plugin_manager/spec/fixtures/two_versions2/core2/plugin.rb +8 -0
  31. data/lib/plugin_manager/spec/fixtures/unmet_dependencies1/core/core.rb +10 -0
  32. data/lib/plugin_manager/spec/fixtures/unmet_dependencies1/core/plugin.rb +7 -0
  33. data/lib/plugin_manager/spec/fixtures/unmet_dependencies1/debug/debug.rb +6 -0
  34. data/lib/plugin_manager/spec/fixtures/unmet_dependencies1/debug/plugin.rb +8 -0
  35. data/lib/plugin_manager/spec/fixtures/unmet_dependencies2/core/core.rb +10 -0
  36. data/lib/plugin_manager/spec/fixtures/unmet_dependencies2/core/plugin.rb +7 -0
  37. data/lib/plugin_manager/spec/fixtures/unmet_dependencies2/debug/debug.rb +6 -0
  38. data/lib/plugin_manager/spec/fixtures/unmet_dependencies2/debug/plugin.rb +8 -0
  39. data/lib/plugin_manager/spec/plugin_manager_spec.rb +208 -0
  40. data/lib/plugin_manager/spec/spec_helper.rb +3 -0
  41. data/lib/redcar.rb +8 -3
  42. data/lib/redcar/boot.rb +59 -56
  43. data/lib/redcar/installer.rb +1 -1
  44. data/lib/redcar/instance_exec.rb +25 -0
  45. data/lib/redcar/runner.rb +5 -1
  46. data/lib/redcar/usage.rb +5 -1
  47. data/plugins/application/icons/close.png +0 -0
  48. data/plugins/application/lib/application.rb +61 -28
  49. data/plugins/application/lib/application/clipboard.rb +71 -0
  50. data/plugins/application/lib/application/dialog.rb +63 -0
  51. data/plugins/application/lib/application/menu.rb +32 -1
  52. data/plugins/application/lib/application/menu/builder.rb +10 -4
  53. data/plugins/application/lib/application/menu/item.rb +16 -3
  54. data/plugins/application/lib/application/notebook.rb +5 -0
  55. data/plugins/application/lib/application/speedbar.rb +73 -0
  56. data/plugins/application/lib/application/window.rb +25 -0
  57. data/plugins/application/plugin.rb +8 -0
  58. data/plugins/application/spec/application/clipboard_spec.rb +36 -0
  59. data/plugins/application/spec/application/menu_spec.rb +73 -1
  60. data/plugins/application/spec/application/speedbar_spec.rb +46 -0
  61. data/plugins/application/spec/spec_helper.rb +1 -1
  62. data/plugins/application_swt/lib/application_swt.rb +18 -11
  63. data/plugins/application_swt/lib/application_swt/clipboard.rb +42 -0
  64. data/plugins/application_swt/lib/application_swt/dialog_adapter.rb +68 -0
  65. data/plugins/application_swt/lib/application_swt/dialogs/filter_list_dialog_controller.rb +1 -1
  66. data/plugins/application_swt/lib/application_swt/html_tab.rb +32 -0
  67. data/plugins/application_swt/lib/application_swt/menu.rb +57 -21
  68. data/plugins/application_swt/lib/application_swt/menu/binding_translator.rb +39 -2
  69. data/plugins/application_swt/lib/application_swt/notebook.rb +5 -0
  70. data/plugins/application_swt/lib/application_swt/speedbar.rb +187 -0
  71. data/plugins/application_swt/lib/application_swt/swt_wrapper.rb +24 -1
  72. data/plugins/application_swt/lib/application_swt/window.rb +33 -3
  73. data/plugins/application_swt/plugin.rb +8 -0
  74. data/plugins/application_swt/spec/spec_helper.rb +1 -1
  75. data/plugins/auto_completer/features/auto_complete.feature +65 -0
  76. data/plugins/auto_completer/features/step_definitions/auto_complete_steps.rb +4 -0
  77. data/plugins/auto_completer/features/support/env.rb +4 -0
  78. data/plugins/auto_completer/lib/auto_completer.rb +99 -0
  79. data/plugins/auto_completer/lib/auto_completer/document_controller.rb +52 -0
  80. data/plugins/auto_completer/lib/auto_completer/word_iterator.rb +48 -0
  81. data/plugins/auto_completer/lib/auto_completer/word_list.rb +40 -0
  82. data/plugins/auto_completer/plugin.rb +10 -0
  83. data/plugins/auto_indenter/lib/auto_indenter.rb +1 -1
  84. data/plugins/auto_indenter/lib/auto_indenter/document_controller.rb +1 -1
  85. data/plugins/auto_indenter/plugin.rb +8 -0
  86. data/plugins/core/lib/core.rb +6 -30
  87. data/plugins/core/lib/core/gui.rb +7 -2
  88. data/plugins/core/lib/core/logger.rb +7 -4
  89. data/plugins/core/lib/core/plugin/storage.rb +15 -5
  90. data/plugins/core/plugin.rb +7 -0
  91. data/plugins/core/spec/core/storage_spec.rb +0 -9
  92. data/plugins/edit_view/features/cut_and_paste.feature +45 -0
  93. data/plugins/edit_view/features/step_definitions/editing_steps.rb +22 -0
  94. data/plugins/edit_view/features/step_definitions/key_steps.rb +1 -1
  95. data/plugins/edit_view/features/step_definitions/notebook_steps.rb +1 -1
  96. data/plugins/edit_view/features/step_definitions/tab_steps.rb +2 -0
  97. data/plugins/edit_view/features/step_definitions/window_steps.rb +1 -1
  98. data/plugins/edit_view/features/support/env.rb +2 -2
  99. data/plugins/edit_view/lib/edit_view.rb +24 -13
  100. data/plugins/edit_view/lib/edit_view/document.rb +233 -15
  101. data/plugins/edit_view/lib/edit_view/edit_tab.rb +2 -2
  102. data/plugins/edit_view/plugin.rb +9 -0
  103. data/plugins/edit_view/spec/spec_helper.rb +1 -1
  104. data/plugins/edit_view_swt/lib/edit_view_swt.rb +37 -8
  105. data/plugins/edit_view_swt/lib/edit_view_swt/document.rb +59 -24
  106. data/plugins/edit_view_swt/lib/edit_view_swt/word_movement.rb +66 -0
  107. data/plugins/edit_view_swt/plugin.rb +9 -0
  108. data/plugins/edit_view_swt/spec/edit_view_swt/word_movement_spec.rb +29 -0
  109. data/plugins/edit_view_swt/spec/spec_helper.rb +6 -0
  110. data/plugins/html_view/assets/blueprint/ie.css +35 -0
  111. data/plugins/html_view/assets/blueprint/print.css +29 -0
  112. data/plugins/html_view/assets/blueprint/screen.css +257 -0
  113. data/plugins/html_view/assets/blueprint/src/forms.css +65 -0
  114. data/plugins/html_view/assets/blueprint/src/grid.css +281 -0
  115. data/plugins/html_view/assets/blueprint/src/grid.png +0 -0
  116. data/plugins/html_view/assets/blueprint/src/ie.css +76 -0
  117. data/plugins/html_view/assets/blueprint/src/print.css +85 -0
  118. data/plugins/html_view/assets/blueprint/src/reset.css +38 -0
  119. data/plugins/html_view/assets/blueprint/src/typography.css +106 -0
  120. data/plugins/html_view/assets/jquery-1.4.min.js +151 -0
  121. data/plugins/html_view/assets/redcar.css +12 -0
  122. data/plugins/html_view/lib/html_controller.rb +5 -0
  123. data/plugins/html_view/lib/html_view.rb +47 -0
  124. data/plugins/html_view/lib/html_view/html_tab.rb +16 -0
  125. data/plugins/html_view/plugin.rb +12 -0
  126. data/plugins/my_plugin/lib/my_plugin.rb +55 -0
  127. data/plugins/my_plugin/plugin.rb +8 -0
  128. data/plugins/plugin_manager_ui/lib/plugin_manager_ui.rb +62 -0
  129. data/plugins/plugin_manager_ui/plugin.rb +12 -0
  130. data/plugins/plugin_manager_ui/views/index.html.erb +31 -0
  131. data/plugins/project/lib/project.rb +27 -13
  132. data/plugins/project/lib/project/find_file_dialog.rb +25 -19
  133. data/plugins/project/plugin.rb +8 -0
  134. data/plugins/project/spec/spec_helper.rb +1 -1
  135. data/plugins/redcar/plugin.rb +13 -0
  136. data/plugins/redcar/redcar.rb +249 -8
  137. data/plugins/repl/lib/repl.rb +22 -14
  138. data/plugins/repl/plugin.rb +8 -0
  139. data/plugins/repl/spec/spec_helper.rb +1 -1
  140. data/plugins/tree/plugin.rb +9 -0
  141. data/plugins/tree/spec/spec_helper.rb +1 -1
  142. data/plugins/tree_view_swt/plugin.rb +9 -0
  143. data/textmate/Bundles/Apache.tmbundle/Syntaxes/Apache.plist +544 -0
  144. data/textmate/Bundles/Apache.tmbundle/Syntaxes/mod_perl.tmLanguage +120 -0
  145. data/textmate/Bundles/Blogging.tmbundle/Syntaxes/Blog___HTML__.plist +88 -0
  146. data/textmate/Bundles/Blogging.tmbundle/Syntaxes/Blog___Markdown__.plist +89 -0
  147. data/textmate/Bundles/Blogging.tmbundle/Syntaxes/Blog___Text__.plist +74 -0
  148. data/textmate/Bundles/Blogging.tmbundle/Syntaxes/Blog___Textile__.plist +74 -0
  149. data/textmate/Bundles/Bundle Development.tmbundle/Syntaxes/LanguageGrammar.tmLanguage +1829 -0
  150. data/textmate/Bundles/C Sharp.tmbundle/Syntaxes/Build.tmLanguage +142 -0
  151. data/textmate/Bundles/C Sharp.tmbundle/Syntaxes/C__.tmLanguage +524 -0
  152. data/textmate/Bundles/C++ Qt.tmbundle/Syntaxes/Qt_C____.tmLanguage +62 -0
  153. data/textmate/Bundles/C++ Qt.tmbundle/Syntaxes/qmake_Project.tmLanguage +308 -0
  154. data/textmate/Bundles/C.tmbundle/Syntaxes/C.plist +90 -48
  155. data/textmate/Bundles/Clojure.tmbundle/Syntaxes/Clojure.tmLanguage +427 -0
  156. data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/Cucumber_Plain_Text_Feature.tmLanguage +106 -13
  157. data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/Cucumber_Steps.tmLanguage +177 -2
  158. data/textmate/Bundles/Cucumber.tmbundle/Syntaxes/plaintext_template.erb +109 -17
  159. data/textmate/Bundles/D.tmbundle/Syntaxes/D.tmLanguage +908 -0
  160. data/textmate/Bundles/Diff.tmbundle/Syntaxes/Diff.plist +229 -0
  161. data/textmate/Bundles/DokuWiki.tmbundle/Syntaxes/DokuWiki.tmLanguage +649 -0
  162. data/textmate/Bundles/F-Script.tmbundle/Syntaxes/F__Script.plist +219 -0
  163. data/textmate/Bundles/Haskell.tmbundle/Syntaxes/Haskell.plist +646 -0
  164. data/textmate/Bundles/Haskell.tmbundle/Syntaxes/Literate_Haskell.plist +90 -0
  165. data/textmate/Bundles/Io.tmbundle/Syntaxes/Io.plist +225 -0
  166. data/textmate/Bundles/JSON.tmbundle/Syntaxes/JSON.tmLanguage +285 -0
  167. data/textmate/Bundles/JavaScript Prototype & Script_aculo_us.tmbundle/Syntaxes/JavaScript____Prototype.tmLanguage +193 -0
  168. data/textmate/Bundles/JavaScript Prototype & Script_aculo_us.tmbundle/Syntaxes/JavaScript____Prototype_Bracketed.tmLanguage +394 -0
  169. data/textmate/Bundles/JavaScript jQuery.tmbundle/Syntaxes/jQuery___JavaScript__.tmLanguage +440 -0
  170. data/textmate/Bundles/JavaScript.tmbundle/Syntaxes/JavaScript.plist +712 -0
  171. data/textmate/Bundles/Latex.tmbundle/Syntaxes/Bibtex.plist +406 -0
  172. data/textmate/Bundles/Latex.tmbundle/Syntaxes/LaTeX.plist +1601 -0
  173. data/textmate/Bundles/Latex.tmbundle/Syntaxes/LaTeX_Beamer.plist +106 -0
  174. data/textmate/Bundles/Latex.tmbundle/Syntaxes/LaTeX_Log.plist +141 -0
  175. data/textmate/Bundles/Latex.tmbundle/Syntaxes/LaTeX_Memoir.tmLanguage +165 -0
  176. data/textmate/Bundles/Latex.tmbundle/Syntaxes/TeX.plist +246 -0
  177. data/textmate/Bundles/Latex.tmbundle/Syntaxes/TeX_Math.plist +132 -0
  178. data/textmate/Bundles/Lisp.tmbundle/Syntaxes/Lisp.plist +160 -0
  179. data/textmate/Bundles/Makefile.tmbundle/Syntaxes/Makefile.plist +103 -0
  180. data/textmate/Bundles/Markdown.tmbundle/Syntaxes/Markdown.plist +1192 -0
  181. data/textmate/Bundles/Markdown.tmbundle/Syntaxes/MultiMarkdown.tmLanguage +80 -0
  182. data/textmate/Bundles/PHP.tmbundle/Syntaxes/PHP.plist +3481 -0
  183. data/textmate/Bundles/Perl HTML-Template.tmbundle/Syntaxes/Perl_HTML__Template.tmLanguage +217 -0
  184. data/textmate/Bundles/Perl Template Toolkit.tmbundle/Syntaxes/HTML___Template_Toolkit__.tmLanguage +339 -0
  185. data/textmate/Bundles/Postscript.tmbundle/Syntaxes/Postscript.tmLanguage +321 -0
  186. data/textmate/Bundles/Processing.tmbundle/Syntaxes/Processing.plist +296 -0
  187. data/textmate/Bundles/Property List.tmbundle/Syntaxes/Property_List.tmLanguage +1650 -0
  188. data/textmate/Bundles/Python Django Templates.tmbundle/Syntaxes/HTML___Django__.tmLanguage +104 -0
  189. data/textmate/Bundles/Python Django.tmbundle/Syntaxes/Python_Django.tmLanguage +57 -0
  190. data/textmate/Bundles/Python.tmbundle/Syntaxes/Python.tmLanguage +3016 -0
  191. data/textmate/Bundles/Python.tmbundle/Syntaxes/Regular_Expressions___Python__.tmLanguage +299 -0
  192. data/textmate/Bundles/Rez.tmbundle/Syntaxes/Rez.plist +219 -0
  193. data/textmate/Bundles/Ruby Haml.tmbundle/Syntaxes/Ruby_Haml.tmLanguage +403 -0
  194. data/textmate/Bundles/Ruby RSpec.tmbundle/Syntaxes/RSpec.tmLanguage +142 -0
  195. data/textmate/Bundles/Ruby.tmbundle/Syntaxes/Ruby.plist +139 -49
  196. data/textmate/Bundles/SQL.tmbundle/Syntaxes/SQL.plist +705 -0
  197. data/textmate/Bundles/SSH-Config.tmbundle/Syntaxes/SSH__Config.tmLanguage +88 -0
  198. data/textmate/Bundles/Scala.tmbundle/Syntaxes/Scala.tmLanguage +609 -0
  199. data/textmate/Bundles/Scala.tmbundle/Syntaxes/Scala_Properties.tmLanguage +54 -0
  200. data/textmate/Bundles/ShellScript.tmbundle/Syntaxes/Shell__Unix__Generic.plist +1855 -0
  201. data/textmate/Bundles/Tabular.tmbundle/Syntaxes/CSV.tmLanguage +178 -0
  202. data/textmate/Bundles/Tabular.tmbundle/Syntaxes/TSV.tmLanguage +135 -0
  203. data/textmate/Bundles/TextMate.tmbundle/Syntaxes/Regular_Expressions___Oniguruma__.tmLanguage +295 -0
  204. data/textmate/Bundles/TextMate.tmbundle/Syntaxes/Release_Notes.tmLanguage +126 -0
  205. data/textmate/Bundles/Textile.tmbundle/Syntaxes/Textile.plist +490 -0
  206. data/textmate/Bundles/Thrift.tmbundle/Syntaxes/Thrift.tmLanguage +1024 -0
  207. data/textmate/Bundles/XML.tmbundle/Syntaxes/XML.plist +576 -0
  208. data/textmate/Bundles/XML.tmbundle/Syntaxes/XSL.plist +157 -0
  209. data/textmate/Bundles/YAML.tmbundle/Syntaxes/YAML.plist +466 -0
  210. data/textmate/Themes/Django.tmTheme +436 -0
  211. metadata +371 -325
  212. data/config/default.yaml +0 -15
  213. data/lib/freebase2/README.txt +0 -47
  214. data/lib/freebase2/bin/default.yaml +0 -15
  215. data/lib/freebase2/bin/install.rb +0 -42
  216. data/lib/freebase2/bin/run.rb +0 -48
  217. data/lib/freebase2/lib/freebase/configuration.rb +0 -535
  218. data/lib/freebase2/lib/freebase/core.rb +0 -197
  219. data/lib/freebase2/lib/freebase/databus.rb +0 -1128
  220. data/lib/freebase2/lib/freebase/freebase.rb +0 -60
  221. data/lib/freebase2/lib/freebase/logger.rb +0 -117
  222. data/lib/freebase2/lib/freebase/plugin.rb +0 -384
  223. data/lib/freebase2/lib/freebase/properties.rb +0 -130
  224. data/lib/freebase2/lib/freebase/readers.rb +0 -328
  225. data/lib/freebase2/notes +0 -61
  226. data/lib/freebase2/plugins/raa_webrick/httpd.rb +0 -125
  227. data/lib/freebase2/plugins/raa_webrick/plugin.yaml +0 -7
  228. data/lib/freebase2/plugins/raa_webrick/web_root/test.html +0 -5
  229. data/lib/freebase2/plugins/raa_webrick/webserver.yaml +0 -6
  230. data/lib/freebase2/plugins/raa_xmlrpc4r/plugin.xml +0 -8
  231. data/lib/freebase2/plugins/raa_xmlrpc4r/rpcd.rb +0 -54
  232. data/lib/freebase2/regress/README +0 -1
  233. data/lib/little_plugger/History.txt +0 -20
  234. data/lib/little_plugger/Rakefile +0 -34
  235. data/lib/little_plugger/lib/little-plugger.rb +0 -323
  236. data/lib/little_plugger/spec/little-plugger_spec.rb +0 -26
  237. data/lib/little_plugger/spec/spec_helper.rb +0 -16
  238. data/lib/logging/History.txt +0 -240
  239. data/lib/logging/Rakefile +0 -37
  240. data/lib/logging/data/bad_logging_1.rb +0 -13
  241. data/lib/logging/data/bad_logging_2.rb +0 -21
  242. data/lib/logging/data/logging.rb +0 -42
  243. data/lib/logging/data/logging.yaml +0 -63
  244. data/lib/logging/data/simple_logging.rb +0 -13
  245. data/lib/logging/examples/appenders.rb +0 -47
  246. data/lib/logging/examples/classes.rb +0 -41
  247. data/lib/logging/examples/consolidation.rb +0 -83
  248. data/lib/logging/examples/formatting.rb +0 -51
  249. data/lib/logging/examples/hierarchies.rb +0 -73
  250. data/lib/logging/examples/layouts.rb +0 -48
  251. data/lib/logging/examples/loggers.rb +0 -29
  252. data/lib/logging/examples/names.rb +0 -43
  253. data/lib/logging/examples/simple.rb +0 -17
  254. data/lib/logging/lib/logging.rb +0 -501
  255. data/lib/logging/lib/logging/appender.rb +0 -251
  256. data/lib/logging/lib/logging/appenders.rb +0 -131
  257. data/lib/logging/lib/logging/appenders/buffering.rb +0 -168
  258. data/lib/logging/lib/logging/appenders/console.rb +0 -60
  259. data/lib/logging/lib/logging/appenders/email.rb +0 -75
  260. data/lib/logging/lib/logging/appenders/file.rb +0 -58
  261. data/lib/logging/lib/logging/appenders/growl.rb +0 -197
  262. data/lib/logging/lib/logging/appenders/io.rb +0 -69
  263. data/lib/logging/lib/logging/appenders/rolling_file.rb +0 -293
  264. data/lib/logging/lib/logging/appenders/string_io.rb +0 -68
  265. data/lib/logging/lib/logging/appenders/syslog.rb +0 -194
  266. data/lib/logging/lib/logging/config/configurator.rb +0 -188
  267. data/lib/logging/lib/logging/config/yaml_configurator.rb +0 -191
  268. data/lib/logging/lib/logging/layout.rb +0 -117
  269. data/lib/logging/lib/logging/layouts.rb +0 -47
  270. data/lib/logging/lib/logging/layouts/basic.rb +0 -32
  271. data/lib/logging/lib/logging/layouts/parseable.rb +0 -211
  272. data/lib/logging/lib/logging/layouts/pattern.rb +0 -311
  273. data/lib/logging/lib/logging/log_event.rb +0 -45
  274. data/lib/logging/lib/logging/logger.rb +0 -503
  275. data/lib/logging/lib/logging/repository.rb +0 -232
  276. data/lib/logging/lib/logging/root_logger.rb +0 -61
  277. data/lib/logging/lib/logging/stats.rb +0 -278
  278. data/lib/logging/lib/logging/utils.rb +0 -153
  279. data/lib/logging/lib/spec/logging_helper.rb +0 -34
  280. data/lib/logging/test/appenders/test_buffered_io.rb +0 -176
  281. data/lib/logging/test/appenders/test_console.rb +0 -66
  282. data/lib/logging/test/appenders/test_email.rb +0 -170
  283. data/lib/logging/test/appenders/test_file.rb +0 -95
  284. data/lib/logging/test/appenders/test_growl.rb +0 -127
  285. data/lib/logging/test/appenders/test_io.rb +0 -129
  286. data/lib/logging/test/appenders/test_rolling_file.rb +0 -200
  287. data/lib/logging/test/appenders/test_syslog.rb +0 -194
  288. data/lib/logging/test/benchmark.rb +0 -86
  289. data/lib/logging/test/config/test_configurator.rb +0 -70
  290. data/lib/logging/test/config/test_yaml_configurator.rb +0 -40
  291. data/lib/logging/test/layouts/test_basic.rb +0 -42
  292. data/lib/logging/test/layouts/test_json.rb +0 -112
  293. data/lib/logging/test/layouts/test_pattern.rb +0 -198
  294. data/lib/logging/test/layouts/test_yaml.rb +0 -121
  295. data/lib/logging/test/setup.rb +0 -44
  296. data/lib/logging/test/test_appender.rb +0 -152
  297. data/lib/logging/test/test_consolidate.rb +0 -46
  298. data/lib/logging/test/test_layout.rb +0 -110
  299. data/lib/logging/test/test_log_event.rb +0 -80
  300. data/lib/logging/test/test_logger.rb +0 -699
  301. data/lib/logging/test/test_logging.rb +0 -267
  302. data/lib/logging/test/test_repository.rb +0 -158
  303. data/lib/logging/test/test_root_logger.rb +0 -81
  304. data/lib/logging/test/test_stats.rb +0 -274
  305. data/lib/logging/test/test_utils.rb +0 -116
  306. data/plugins/application/plugin.yaml +0 -11
  307. data/plugins/application_swt/plugin.yaml +0 -11
  308. data/plugins/auto_indenter/plugin.yaml +0 -12
  309. data/plugins/core/plugin.yaml +0 -7
  310. data/plugins/edit_view/plugin.yaml +0 -14
  311. data/plugins/edit_view_swt/plugin.yaml +0 -14
  312. data/plugins/project/plugin.yaml +0 -12
  313. data/plugins/redcar/plugin.yaml +0 -18
  314. data/plugins/repl/plugin.yaml +0 -12
  315. data/plugins/tree/plugin.yaml +0 -14
  316. data/plugins/tree_view_swt/plugin.yaml +0 -14
@@ -74,7 +74,7 @@ Then /the window "(.*)" should have (\d+) tabs?/ do |win_title, tab_num|
74
74
  shells = display.get_shells.to_a
75
75
  shell = shells.detect {|s| s.text == win_title}
76
76
  sash_form = shell.children.to_a.first
77
- tab_folders = sash_form.children.to_a[1].children.select{|c| c.is_a? Swt::Custom::CTabFolder}
77
+ tab_folders = sash_form.children.to_a[1].children.to_a[0].children.to_a.select{|c| c.is_a? Swt::Custom::CTabFolder}
78
78
  items = tab_folders.map{|f| f.getItems.to_a}.flatten
79
79
  items.map {|i| model_tab_for_item(i)}.length.should == tab_num
80
80
  end
@@ -5,7 +5,7 @@ module SwtTabHelpers
5
5
  display = Redcar::ApplicationSWT.display
6
6
  shell = display.get_shells.to_a.first
7
7
  sash_form = shell.children.to_a.first
8
- tab_folders = sash_form.children.to_a[1].children.to_a
8
+ tab_folders = sash_form.children.to_a[1].children.to_a[0].children.to_a
9
9
  tab_folders.length.should == 1
10
10
  tab_folders.first
11
11
  end
@@ -23,7 +23,7 @@ module SwtTabHelpers
23
23
  display = Redcar::ApplicationSWT.display
24
24
  shell = display.get_shells.to_a.first
25
25
  sash_form = shell.children.to_a.first
26
- tab_folders = sash_form.children.to_a[1].children.to_a.select{|c| c.is_a? Swt::Custom::CTabFolder}
26
+ tab_folders = sash_form.children.to_a[1].children.to_a[0].children.to_a.select{|c| c.is_a? Swt::Custom::CTabFolder}
27
27
  items = tab_folders.map{|f| f.getItems.to_a}.flatten
28
28
  items.map {|i| model_tab_for_item(i)}
29
29
  end
@@ -16,20 +16,31 @@ module Redcar
16
16
  attr_reader :undo_sensitivity, :redo_sensitivity
17
17
  end
18
18
 
19
- def self.start
20
- Sensitivity.new(:edit_tab_focussed, Redcar.app, false, [:tab_focussed]) do |tab|
21
- tab and tab.is_a?(EditTab)
22
- end
23
- @undo_sensitivity =
24
- Sensitivity.new(:undoable, Redcar.app, false, [:focussed_tab_changed, :tab_focussed]) do
25
- tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
26
- tab and tab.is_a?(EditTab) and tab.edit_view.undoable?
27
- end
28
- @redo_sensitivity =
29
- Sensitivity.new(:redoable, Redcar.app, false, [:focussed_tab_changed, :tab_focussed]) do
30
- tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
31
- tab and tab.is_a?(EditTab) and tab.edit_view.redoable?
19
+ def self.sensitivities
20
+ [
21
+ Sensitivity.new(:edit_tab_focussed, Redcar.app, false, [:tab_focussed]) do |tab|
22
+ tab and tab.is_a?(EditTab)
23
+ end,
24
+ Sensitivity.new(:selected_text, Redcar.app, false, [:focussed_tab_selection_changed, :tab_focussed]) do
25
+ if win = Redcar.app.focussed_window
26
+ tab = win.focussed_notebook.focussed_tab
27
+ tab and tab.is_a?(EditTab) and tab.edit_view.document.selection?
28
+ end
29
+ end,
30
+ @undo_sensitivity =
31
+ Sensitivity.new(:undoable, Redcar.app, false, [:focussed_tab_changed, :tab_focussed]) do
32
+ tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
33
+ tab and tab.is_a?(EditTab) and tab.edit_view.undoable?
34
+ end,
35
+ @redo_sensitivity =
36
+ Sensitivity.new(:redoable, Redcar.app, false, [:focussed_tab_changed, :tab_focussed]) do
37
+ tab = Redcar.app.focussed_window.focussed_notebook.focussed_tab
38
+ tab and tab.is_a?(EditTab) and tab.edit_view.redoable?
39
+ end,
40
+ Sensitivity.new(:clipboard_not_empty, Redcar.app, false, [:clipboard_added, :focussed_window]) do
41
+ Redcar.app.clipboard.length > 0
32
42
  end
43
+ ]
33
44
  end
34
45
 
35
46
  attr_reader :document
@@ -1,31 +1,26 @@
1
1
 
2
2
  module Redcar
3
- # Each Redcar::Document is associated with an EditView, and has methods for
4
- # reading and modifying the contents of the EditView. Every document has a
5
- # Mirror of some resource.
6
- #
7
- # Events: new_mirror
3
+ # This class controls access to the document text in an edit tab.
4
+ # There are methods to read, modify and register listeners
5
+ # for the document.
8
6
  class Document
9
7
  include Redcar::Model
10
8
  include Redcar::Observable
11
9
  extend Forwardable
12
10
 
13
- def_delegators :controller,
14
- :length, :line_count, :to_s, :text=,
15
- :line_at_offset, :get_line, :offset_at_line,
16
- :cursor_offset, :cursor_offset=,
17
- :selection_range, :replace, :set_selection_range
18
-
19
11
  def self.register_controller_type(controller_type)
20
12
  unless controller_type.ancestors.include?(Document::Controller)
21
13
  raise "expected #{Document::Controller}"
22
14
  end
23
- (@document_controller_types ||= []) << controller_type
15
+ document_controller_types << controller_type
16
+ end
17
+
18
+ def self.document_controller_types
19
+ @document_controller_types ||= []
24
20
  end
25
21
 
26
22
  class << self
27
23
  attr_accessor :default_mirror
28
- attr_reader :document_controller_types
29
24
  end
30
25
 
31
26
  attr_reader :mirror
@@ -49,6 +44,10 @@ module Redcar
49
44
  end
50
45
  end
51
46
 
47
+ def controllers(klass)
48
+ @controllers.values.flatten.uniq.select {|c| c.is_a?(klass) }
49
+ end
50
+
52
51
  def save!
53
52
  @mirror.commit(to_s)
54
53
  set_modified(false)
@@ -97,22 +96,197 @@ module Redcar
97
96
  notify_listeners(:changed)
98
97
  end
99
98
 
99
+ def selection_range_changed(start_offset, end_offset)
100
+ notify_listeners(:selection_range_changed, start_offset..end_offset)
101
+ end
102
+
103
+ # The line index the cursor is on (zero-based)
104
+ #
105
+ # @return [Integer]
100
106
  def cursor_line
101
107
  line_at_offset(cursor_offset)
102
108
  end
103
109
 
110
+
111
+ def cursor_line_start_offset
112
+ offset_at_line(cursor_line)
113
+ end
114
+
115
+ def cursor_line_end_offset
116
+ offset_at_line_end(cursor_line)
117
+ end
118
+
119
+ def offset_at_line_end(line_ix)
120
+ if line_ix == line_count - 1
121
+ end_offset = length
122
+ else
123
+ end_offset = offset_at_line(line_ix + 1)
124
+ end
125
+ end
126
+
127
+ # Is there any text selected? (Or equivalently, is the length
128
+ # of the selection equal to 0)
129
+ #
130
+ # @return [Boolean]
104
131
  def selection?
105
132
  selection_range.count > 0
106
133
  end
107
-
134
+
135
+ # Insert text
136
+ #
137
+ # @param [Integer] offset character offset from the start of the document
138
+ # @param [String] text text to insert
108
139
  def insert(offset, text)
109
140
  replace(offset, 0, text)
110
141
  end
111
-
142
+
143
+ # Delete text
144
+ #
145
+ # @param [Integer] offset character offset from the start of the document
146
+ # @param [Integer] length length of text to delete
112
147
  def delete(offset, length)
113
148
  replace(offset, length, "")
114
149
  end
150
+
151
+ # Replace text
152
+ #
153
+ # @param [Integer] offset character offset from the start of the document
154
+ # @param [Integer] length length of text to replace
155
+ # @param [String] text replacement text
156
+ def replace(offset, length, text)
157
+ controller.replace(offset, length, text)
158
+ end
159
+
160
+ # Length of the document in characters
161
+ #
162
+ # @return [Integer]
163
+ def length
164
+ controller.length
165
+ end
166
+
167
+ # Number of lines.
168
+ #
169
+ # @return [Integer]
170
+ def line_count
171
+ controller.line_count
172
+ end
173
+
174
+ # The entire contents of the document
175
+ #
176
+ # @return [String]
177
+ def to_s
178
+ controller.to_s
179
+ end
180
+
181
+ # Set the contents of the document
182
+ #
183
+ # @param [String] text new text
184
+ def text=(text)
185
+ controller.text = text
186
+ end
187
+
188
+ # Get the line index of the given offset
189
+ #
190
+ # @param [Integer] offset zero-based character offset
191
+ # @return [Integer] zero-based index
192
+ def line_at_offset(offset)
193
+ controller.line_at_offset(offset)
194
+ end
195
+
196
+ # Get the character offset at the start of the given line
197
+ #
198
+ # @param [Integer] line zero-based line index
199
+ # @return [Integer] zero-based character offset
200
+ def offset_at_line(line)
201
+ controller.offset_at_line(line)
202
+ end
115
203
 
204
+ # Get the position of the cursor.
205
+ #
206
+ # @return [Integer] zero-based character offset
207
+ def cursor_offset
208
+ controller.cursor_offset
209
+ end
210
+
211
+ def cursor_line_offset
212
+ cursor_offset - offset_at_line(cursor_line)
213
+ end
214
+
215
+ # Set the position of the cursor.
216
+ #
217
+ # @param [Integer] offset zero-based character offset
218
+ def cursor_offset=(offset)
219
+ controller.cursor_offset = offset
220
+ end
221
+
222
+ # The range of text selected by the user.
223
+ #
224
+ # @return [Range<Integer>] a range between two character offsets
225
+ def selection_range
226
+ controller.selection_range
227
+ end
228
+
229
+ # The ranges of text selected by the user.
230
+ #
231
+ # @return [Range<Integer>] a range between two character offsets
232
+ def selection_ranges
233
+ controller.selection_ranges
234
+ end
235
+
236
+ # Set the range of text selected by the user.
237
+ #
238
+ # @param [Range<Integer>] range a range between two character offsets
239
+ def set_selection_range(range)
240
+ controller.set_selection_range(range.begin, range.end)
241
+ end
242
+
243
+ # Get the text selected by the user. If no text is selected
244
+ # returns "".
245
+ #
246
+ # @return [String]
247
+ def selected_text
248
+ get_range(selection_range.begin, selection_range.count)
249
+ end
250
+
251
+ def block_selection_mode?
252
+ controller.block_selection_mode?
253
+ end
254
+
255
+ def block_selection_mode=(boolean)
256
+ controller.block_selection_mode = !!boolean
257
+ end
258
+
259
+ # Get a range of text from the document.
260
+ #
261
+ # @param [String] start the character offset of the start of the range
262
+ # @param [String] length the length of the string to get
263
+ # @return [String] the text
264
+ def get_range(start, length)
265
+ controller.get_range(start, length)
266
+ end
267
+
268
+ # Get the text of a line by index. (Includes a trailing "\n",
269
+ # unless it is the last line in the document.)
270
+ #
271
+ # @param [Integer] line_ix the zero-based line number
272
+ # @return [String] the text of the line
273
+ def get_line(line_ix)
274
+ controller.get_range(
275
+ offset_at_line(line_ix),
276
+ offset_at_line_end(line_ix) - offset_at_line(line_ix)
277
+ )
278
+ end
279
+
280
+ # Replace a line in the document. This has two modes. In the first,
281
+ # you supply the replacement text as an argument:
282
+ #
283
+ # replace_line(10, "new line text")
284
+ #
285
+ # In the second, you supply a block. The block argument is the current
286
+ # text of the line, and the return value of the block is the
287
+ # replacement text:
288
+ #
289
+ # replace_line(10) {|current_text| current_text.upcase }
116
290
  def replace_line(line_ix, text=nil)
117
291
  text ||= yield(get_line(line_ix))
118
292
  start_offset = offset_at_line(line_ix)
@@ -120,6 +294,9 @@ module Redcar
120
294
  replace(start_offset, end_offset - start_offset, text)
121
295
  end
122
296
 
297
+ # Get the offset at the end of a given line, *before* the newline character.
298
+ #
299
+ # @param [Integer] line_ix a zero-based line index
123
300
  def offset_at_inner_end_of_line(line_ix)
124
301
  if line_ix == line_count - 1
125
302
  length
@@ -128,6 +305,47 @@ module Redcar
128
305
  end
129
306
  end
130
307
 
308
+ # Does the minimum amount of scrolling that brings the given line
309
+ # into the viewport. Which may be none at all.
310
+ #
311
+ # @param [Integer] line_ix a zero-based line index
312
+ def scroll_to_line(line_ix)
313
+ if line_ix > biggest_visible_line
314
+ top_line_ix = smallest_visible_line + (line_ix - biggest_visible_line) + 2
315
+ top_line_ix = [top_line_ix, line_count - 1].min
316
+ scroll_to_line_at_top(top_line_ix)
317
+ elsif line_ix < smallest_visible_line
318
+ bottom_line_ix = line_ix - 2
319
+ bottom_line_ix = [bottom_line_ix, 0].max
320
+ scroll_to_line_at_top(bottom_line_ix)
321
+ end
322
+ end
323
+
324
+ # Tries to scroll so the given line is at the top of the viewport.
325
+ #
326
+ # @param [Integer] line_ix a zero-based line index
327
+ def scroll_to_line_at_top(line_ix)
328
+ @edit_view.controller.scroll_to_line(line_ix)
329
+ end
330
+
331
+ # The line_ix of the line at the top of the viewport.
332
+ #
333
+ # @return [Integer] a zero-based line index
334
+ def smallest_visible_line
335
+ @edit_view.controller.smallest_visible_line
336
+ end
337
+
338
+ # The line_ix of the line at the bottom of the viewport.
339
+ #
340
+ # @return [Integer] a zero-based line index
341
+ def biggest_visible_line
342
+ @edit_view.controller.biggest_visible_line
343
+ end
344
+
345
+ def num_lines_visible
346
+ biggest_visible_line - smallest_visible_line
347
+ end
348
+
131
349
  private
132
350
 
133
351
  def update_from_mirror
@@ -1,6 +1,5 @@
1
1
  module Redcar
2
2
  class EditTab < Tab
3
- include Redcar::Observable
4
3
 
5
4
  attr_reader :edit_view
6
5
 
@@ -13,12 +12,13 @@ module Redcar
13
12
  @edit_view = Redcar::EditView.new(self)
14
13
  @edit_view.add_listener(:focussed, &method(:edit_view_focussed))
15
14
  @edit_view.document.add_listener(:changed) { notify_listeners(:changed, self) }
15
+ @edit_view.document.add_listener(:selection_range_changed) { notify_listeners(:selection_changed) }
16
16
  end
17
17
 
18
18
  def edit_view_focussed
19
19
  notify_listeners(:focus)
20
20
  end
21
-
21
+
22
22
  def serialize
23
23
  { :title => title }
24
24
  end
@@ -0,0 +1,9 @@
1
+
2
+ Plugin.define do
3
+ name "edit_view"
4
+ version "1.0"
5
+ file "lib", "edit_view"
6
+ object "Redcar::EditView"
7
+ dependencies "core", ">0",
8
+ "application", ">0"
9
+ end
@@ -2,4 +2,4 @@ $:.push File.join(File.dirname(__FILE__), '..', '..', '..', 'lib')
2
2
 
3
3
  require 'redcar'
4
4
  Redcar.boot
5
- Redcar.require_files
5
+ Redcar.load
@@ -1,6 +1,7 @@
1
1
 
2
2
  require 'edit_view_swt/document'
3
3
  require 'edit_view_swt/edit_tab'
4
+ require 'edit_view_swt/word_movement'
4
5
 
5
6
  require 'joni'
6
7
  require 'jcodings'
@@ -12,15 +13,15 @@ module Redcar
12
13
  class EditViewSWT
13
14
  include Redcar::Observable
14
15
 
15
- def self.load
16
+ def self.start
16
17
  gui = ApplicationSWT.gui
17
18
  gui.register_controllers(Redcar::EditTab => EditViewSWT::Tab)
18
19
  load_textmate_assets
19
20
  end
20
21
 
21
22
  def self.load_textmate_assets
22
- JavaMateView::Bundle.load_bundles(Redcar::ROOT + "/textmate/")
23
- JavaMateView::ThemeManager.load_themes(Redcar::ROOT + "/textmate/")
23
+ JavaMateView::Bundle.load_bundles(Redcar.root + "/textmate/")
24
+ JavaMateView::ThemeManager.load_themes(Redcar.root + "/textmate/")
24
25
  end
25
26
 
26
27
  attr_reader :mate_text, :widget
@@ -40,22 +41,27 @@ module Redcar
40
41
  @mate_text.set_theme_by_name(ARGV.option("theme") || "Twilight")
41
42
  create_undo_manager
42
43
  @document.attach_modification_listeners # comes after undo manager
44
+ remove_control_keybindings
43
45
  end
44
46
 
45
47
  def create_mate_text
46
48
  parent = @edit_tab.notebook.tab_folder
47
49
  @widget = Swt::Widgets::Composite.new(parent, Swt::SWT::NONE)
48
50
  layout = Swt::Layout::GridLayout.new
51
+ layout.verticalSpacing = 0
52
+ layout.marginHeight = 0
53
+ layout.horizontalSpacing = 0
54
+ layout.marginWidth = 0
49
55
  layout.numColumns = 2
50
56
  @widget.layout = layout
51
57
  @mate_text = JavaMateView::MateText.new(@widget)
52
- if Core.platform == :osx
58
+ if Redcar.platform == :osx
53
59
  default_font = "Monaco"
54
60
  default_font_size = 15
55
- elsif Core.platform == :linux
61
+ elsif Redcar.platform == :linux
56
62
  default_font = "Monospace"
57
63
  default_font_size = 11
58
- elsif Core.platform == :windows
64
+ elsif Redcar.platform == :windows
59
65
  default_font = "FixedSys"
60
66
  default_font_size = 15
61
67
  end
@@ -145,10 +151,12 @@ module Redcar
145
151
  focus_control = ApplicationSWT.display.get_focus_control
146
152
  focus_control.parent.parent == @mate_text
147
153
  end
148
-
154
+
155
+
149
156
  def attach_listeners
150
157
  # h = @document.add_listener(:set_text, &method(:reparse))
151
158
  # @handlers << [@document, h]
159
+ @mate_text.get_text_widget.add_word_movement_listener(WordMoveListener.new(self))
152
160
  end
153
161
 
154
162
  def reparse
@@ -164,13 +172,21 @@ module Redcar
164
172
  end
165
173
 
166
174
  def scroll_to_line(line_index)
167
- @mate_text.get_text_widget.set_top_index(line_index)
175
+ @mate_text.viewer.set_top_index(line_index)
168
176
  end
169
177
 
170
178
  def model_grammar_changed(name)
171
179
  @mate_text.set_grammar_by_name(name)
172
180
  end
173
181
 
182
+ def smallest_visible_line
183
+ @mate_text.viewer.get_top_index
184
+ end
185
+
186
+ def biggest_visible_line
187
+ @mate_text.viewer.get_bottom_index
188
+ end
189
+
174
190
  def update_grammar(new_mirror)
175
191
  title = new_mirror.title
176
192
  return if @mate_text.set_grammar_by_filename(title)
@@ -179,6 +195,19 @@ module Redcar
179
195
  @mate_text.set_grammar_by_first_line(first_line) if first_line
180
196
  end
181
197
 
198
+ STRIP_KEYS = {
199
+ :cut => 120|Swt::SWT::MOD1,
200
+ :copy => 99|Swt::SWT::MOD1,
201
+ :paste => 118|Swt::SWT::MOD1
202
+ }
203
+
204
+ def remove_control_keybindings
205
+ styled_text = @mate_text.get_text_widget
206
+ STRIP_KEYS.each do |_, key|
207
+ styled_text.set_key_binding(key, Swt::SWT::NULL)
208
+ end
209
+ end
210
+
182
211
  def dispose
183
212
  @combo.dispose
184
213
  @widget.dispose