gollum 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of gollum might be problematic. Click here for more details.

Files changed (454) hide show
  1. data/README.md +44 -7
  2. data/Rakefile +1 -1
  3. data/bin/gollum +20 -1
  4. data/gollum.gemspec +400 -5
  5. data/lib/gollum.rb +2 -1
  6. data/lib/gollum/blob_entry.rb +13 -1
  7. data/lib/gollum/committer.rb +10 -1
  8. data/lib/gollum/file.rb +15 -2
  9. data/lib/gollum/file_view.rb +145 -0
  10. data/lib/gollum/frontend/app.rb +217 -69
  11. data/lib/gollum/frontend/helpers.rb +21 -0
  12. data/lib/gollum/frontend/public/gollum/css/_styles.css +121 -0
  13. data/lib/gollum/frontend/public/gollum/css/editor.css +17 -8
  14. data/lib/gollum/frontend/public/gollum/css/gollum.css +440 -402
  15. data/lib/gollum/frontend/public/gollum/css/template.css +540 -289
  16. data/lib/gollum/frontend/public/gollum/images/dirty-shade.png +0 -0
  17. data/lib/gollum/frontend/public/gollum/images/fileview/document.png +0 -0
  18. data/lib/gollum/frontend/public/gollum/images/fileview/folder-horizontal.png +0 -0
  19. data/lib/gollum/frontend/public/gollum/images/fileview/toggle-small-expand.png +0 -0
  20. data/lib/gollum/frontend/public/gollum/images/fileview/toggle-small.png +0 -0
  21. data/lib/gollum/frontend/public/gollum/images/para.png +0 -0
  22. data/lib/gollum/frontend/public/gollum/images/pin-16.png +0 -0
  23. data/lib/gollum/frontend/public/gollum/images/pin-20.png +0 -0
  24. data/lib/gollum/frontend/public/gollum/images/pin-24.png +0 -0
  25. data/lib/gollum/frontend/public/gollum/images/pin-32.png +0 -0
  26. data/lib/gollum/frontend/public/gollum/javascript/editor/gollum.editor.js +31 -7
  27. data/lib/gollum/frontend/public/gollum/javascript/editor/langs/asciidoc.js +2 -1
  28. data/lib/gollum/frontend/public/gollum/javascript/editor/langs/creole.js +2 -1
  29. data/lib/gollum/frontend/public/gollum/javascript/editor/langs/markdown.js +18 -6
  30. data/lib/gollum/frontend/public/gollum/javascript/editor/langs/org.js +2 -1
  31. data/lib/gollum/frontend/public/gollum/javascript/editor/langs/pod.js +2 -1
  32. data/lib/gollum/frontend/public/gollum/javascript/editor/langs/textile.js +2 -1
  33. data/lib/gollum/frontend/public/gollum/javascript/gollum.dialog.js +3 -0
  34. data/lib/gollum/frontend/public/gollum/javascript/gollum.js +78 -16
  35. data/lib/gollum/frontend/public/gollum/javascript/jquery-1.7.2.min.js +4 -0
  36. data/lib/gollum/frontend/public/gollum/javascript/mousetrap.min.js +8 -0
  37. data/lib/gollum/frontend/public/gollum/livepreview/css/custom.css +107 -0
  38. data/lib/gollum/frontend/public/gollum/livepreview/images/cancel_24.png +0 -0
  39. data/lib/gollum/frontend/public/gollum/livepreview/images/lr_24.png +0 -0
  40. data/lib/gollum/frontend/public/gollum/livepreview/images/save_24.png +0 -0
  41. data/lib/gollum/frontend/public/gollum/livepreview/images/savecomment_24.png +0 -0
  42. data/lib/gollum/frontend/public/gollum/livepreview/index.html +46 -0
  43. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ace.js +103 -0
  44. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/anchor.js +254 -0
  45. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/anchor_test.js +184 -0
  46. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/background_tokenizer.js +261 -0
  47. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/background_tokenizer_test.js +92 -0
  48. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/command_manager.js +121 -0
  49. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/command_manager_test.js +193 -0
  50. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/default_commands.js +460 -0
  51. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/commands/multi_select_commands.js +101 -0
  52. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/config.js +124 -0
  53. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/css/codefolding-fold-button-states.png +0 -0
  54. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/css/editor.css +327 -0
  55. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/css/expand-marker.png +0 -0
  56. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/document.js +617 -0
  57. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/document_test.js +314 -0
  58. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session.js +2419 -0
  59. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/bracket_match.js +252 -0
  60. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/fold.js +116 -0
  61. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/fold_line.js +276 -0
  62. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session/folding.js +759 -0
  63. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/edit_session_test.js +981 -0
  64. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor.js +2163 -0
  65. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor_change_document_test.js +195 -0
  66. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor_highlight_selected_word_test.js +231 -0
  67. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor_navigation_test.js +171 -0
  68. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/editor_text_edit_test.js +562 -0
  69. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/static.css +22 -0
  70. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight.js +98 -0
  71. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/static_highlight_test.js +81 -0
  72. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/ext/textarea.js +536 -0
  73. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/emacs.js +367 -0
  74. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/hash_handler.js +170 -0
  75. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/keybinding.js +143 -0
  76. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/state_handler.js +257 -0
  77. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/textinput.js +315 -0
  78. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim.js +122 -0
  79. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/commands.js +556 -0
  80. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/aliases.js +101 -0
  81. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/motions.js +611 -0
  82. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/operators.js +193 -0
  83. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/maps/util.js +134 -0
  84. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/keyboard/vim/registers.js +49 -0
  85. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/layer/cursor.js +202 -0
  86. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/layer/gutter.js +187 -0
  87. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/layer/marker.js +214 -0
  88. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/layer/text.js +595 -0
  89. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/layer/text_test.js +106 -0
  90. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/browser_focus.js +105 -0
  91. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/dom.js +292 -0
  92. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/es5-shim.js +1059 -0
  93. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/event.js +317 -0
  94. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/event_emitter.js +121 -0
  95. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/event_emitter_test.js +72 -0
  96. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/fixoldbrowsers.js +19 -0
  97. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/keys.js +129 -0
  98. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/lang.js +164 -0
  99. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/net.js +62 -0
  100. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/oop.js +61 -0
  101. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/regexp.js +113 -0
  102. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/lib/useragent.js +105 -0
  103. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour.js +98 -0
  104. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/cstyle.js +225 -0
  105. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/html.js +98 -0
  106. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/xml.js +113 -0
  107. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/behaviour/xquery.js +68 -0
  108. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/c9search.js +74 -0
  109. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/c9search_highlight_rules.js +66 -0
  110. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/c_cpp.js +132 -0
  111. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/c_cpp_highlight_rules.js +180 -0
  112. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/clojure.js +121 -0
  113. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/clojure_highlight_rules.js +235 -0
  114. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee.js +121 -0
  115. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/coffee-script.js +63 -0
  116. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/helpers.js +100 -0
  117. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/lexer.js +739 -0
  118. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/nodes.js +2756 -0
  119. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/parser.js +603 -0
  120. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/parser_test.js +68 -0
  121. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/rewriter.js +342 -0
  122. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee/scope.js +154 -0
  123. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee_highlight_rules.js +227 -0
  124. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee_highlight_rules_test.js +72 -0
  125. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coffee_worker.js +92 -0
  126. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coldfusion.js +71 -0
  127. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coldfusion_highlight_rules.js +135 -0
  128. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/coldfusion_test.js +74 -0
  129. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/csharp.js +58 -0
  130. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/csharp_highlight_rules.js +104 -0
  131. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/css.js +110 -0
  132. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/css/csslint.js +9014 -0
  133. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/css_highlight_rules.js +242 -0
  134. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/css_highlight_rules_test.js +99 -0
  135. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/css_test.js +85 -0
  136. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/css_worker.js +66 -0
  137. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/css_worker_test.js +75 -0
  138. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/diff.js +58 -0
  139. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/diff_highlight_rules.js +108 -0
  140. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/doc_comment_highlight_rules.js +93 -0
  141. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/c9search.js +83 -0
  142. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/coffee.js +127 -0
  143. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/coffee_test.js +108 -0
  144. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/cstyle.js +95 -0
  145. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/cstyle_test.js +92 -0
  146. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/diff.js +76 -0
  147. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/fold_mode.js +115 -0
  148. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/html.js +86 -0
  149. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/html_test.js +169 -0
  150. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/mixed.js +88 -0
  151. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/pythonic.js +65 -0
  152. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/pythonic_test.js +105 -0
  153. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/xml.js +262 -0
  154. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/folding/xml_test.js +117 -0
  155. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/golang.js +81 -0
  156. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/golang_highlight_rules.js +129 -0
  157. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/groovy.js +24 -0
  158. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/groovy_highlight_rules.js +183 -0
  159. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/haxe.js +58 -0
  160. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/haxe_highlight_rules.js +104 -0
  161. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/html.js +83 -0
  162. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/html_highlight_rules.js +159 -0
  163. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/html_highlight_rules_test.js +93 -0
  164. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/html_test.js +74 -0
  165. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/java.js +25 -0
  166. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/java_highlight_rules.js +144 -0
  167. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript.js +164 -0
  168. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_highlight_rules.js +471 -0
  169. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_highlight_rules_test.js +225 -0
  170. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_test.js +165 -0
  171. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_worker.js +88 -0
  172. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/javascript_worker_test.js +99 -0
  173. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/json.js +100 -0
  174. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/json/json_parse.js +346 -0
  175. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/json_highlight_rules.js +111 -0
  176. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/json_worker.js +103 -0
  177. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/json_worker_test.js +108 -0
  178. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx.js +53 -0
  179. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/jsx_highlight_rules.js +122 -0
  180. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/latex.js +57 -0
  181. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/latex_highlight_rules.js +38 -0
  182. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/less.js +87 -0
  183. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/less_highlight_rules.js +279 -0
  184. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/liquid.js +116 -0
  185. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/liquid_highlight_rules.js +220 -0
  186. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/liquid_highlight_rules_test.js +91 -0
  187. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/lua.js +87 -0
  188. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/lua_highlight_rules.js +436 -0
  189. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage.js +22 -0
  190. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/luapage_highlight_rules.js +42 -0
  191. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/markdown.js +81 -0
  192. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/markdown_highlight_rules.js +195 -0
  193. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/matching_brace_outdent.js +81 -0
  194. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/matching_parens_outdent.js +81 -0
  195. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/ocaml.js +103 -0
  196. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/ocaml_highlight_rules.js +355 -0
  197. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/perl.js +117 -0
  198. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/perl_highlight_rules.js +168 -0
  199. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/pgsql.js +78 -0
  200. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/pgsql_highlight_rules.js +583 -0
  201. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/php.js +119 -0
  202. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/php_highlight_rules.js +1165 -0
  203. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/powershell.js +58 -0
  204. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/powershell_highlight_rules.js +138 -0
  205. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/python.js +147 -0
  206. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/python_highlight_rules.js +182 -0
  207. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/python_test.js +86 -0
  208. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/ruby.js +116 -0
  209. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/ruby_highlight_rules.js +194 -0
  210. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/ruby_highlight_rules_test.js +116 -0
  211. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/scad.js +132 -0
  212. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/scad_highlight_rules.js +168 -0
  213. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/scala.js +25 -0
  214. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/scala_highlight_rules.js +179 -0
  215. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/scss.js +86 -0
  216. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/scss_highlight_rules.js +304 -0
  217. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/sh.js +144 -0
  218. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/sh_highlight_rules.js +145 -0
  219. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/sql.js +70 -0
  220. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/sql_highlight_rules.js +89 -0
  221. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/svg.js +78 -0
  222. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/svg_highlight_rules.js +71 -0
  223. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/text.js +159 -0
  224. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/text_highlight_rules.js +109 -0
  225. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/text_test.js +71 -0
  226. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/textile.js +73 -0
  227. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/textile_highlight_rules.js +100 -0
  228. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xml.js +65 -0
  229. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xml_highlight_rules.js +109 -0
  230. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xml_highlight_rules_test.js +103 -0
  231. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xml_test.js +82 -0
  232. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xml_util.js +120 -0
  233. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery.js +202 -0
  234. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/Position.js +59 -0
  235. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/Readme.md +6 -0
  236. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/StringLexer.js +1686 -0
  237. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/XMLLexer.js +2993 -0
  238. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/XQDTLexer.js +69 -0
  239. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/XQDTParser.js +63 -0
  240. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/XQueryLexer.js +10363 -0
  241. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/XQueryParser.js +42525 -0
  242. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/XQuerySemanticHighlighter.js +165 -0
  243. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/antlr3-all.js +6177 -0
  244. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery/xquery.js +55 -0
  245. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery_highlight_rules.js +158 -0
  246. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/xquery_worker.js +86 -0
  247. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/yaml.js +64 -0
  248. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mode/yaml_highlight_rules.js +116 -0
  249. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/model/editor.js +70 -0
  250. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/default_gutter_handler.js +73 -0
  251. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/default_handlers.js +354 -0
  252. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/dragdrop.js +105 -0
  253. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/fold_handler.js +71 -0
  254. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_event.js +140 -0
  255. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/mouse_handler.js +158 -0
  256. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/mouse/multi_select_handler.js +163 -0
  257. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/multi_select.js +762 -0
  258. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/multi_select_test.js +171 -0
  259. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/narcissus/definitions.js +696 -0
  260. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/narcissus/lexer.js +598 -0
  261. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/narcissus/options.js +61 -0
  262. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/narcissus/parser.js +2072 -0
  263. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/placeholder.js +278 -0
  264. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/placeholder_test.js +164 -0
  265. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range.js +581 -0
  266. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range_list.js +230 -0
  267. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range_list_test.js +170 -0
  268. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/range_test.js +198 -0
  269. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/renderloop.js +93 -0
  270. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/requirejs/text.js +58 -0
  271. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/scrollbar.js +142 -0
  272. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/search.js +398 -0
  273. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/search_highlight.js +87 -0
  274. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/search_test.js +451 -0
  275. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/selection.js +886 -0
  276. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/selection_test.js +472 -0
  277. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/split.js +411 -0
  278. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/all.js +42 -0
  279. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/all_browser.js +136 -0
  280. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/assertions.js +63 -0
  281. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/assert.js +313 -0
  282. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/async.js +529 -0
  283. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/index.js +13 -0
  284. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/test.js +195 -0
  285. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/asyncjs/utils.js +65 -0
  286. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/benchmark.js +85 -0
  287. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/mockdom.js +10 -0
  288. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/mockrenderer.js +204 -0
  289. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/test/tests.html +46 -0
  290. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/chrome.css +159 -0
  291. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/chrome.js +46 -0
  292. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/clouds.css +118 -0
  293. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/clouds.js +46 -0
  294. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/clouds_midnight.css +119 -0
  295. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/clouds_midnight.js +46 -0
  296. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/cobalt.css +145 -0
  297. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/cobalt.js +46 -0
  298. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/crimson_editor.css +151 -0
  299. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/crimson_editor.js +46 -0
  300. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/dawn.css +149 -0
  301. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/dawn.js +46 -0
  302. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/dreamweaver.css +182 -0
  303. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/dreamweaver.js +45 -0
  304. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/eclipse.css +102 -0
  305. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/eclipse.js +48 -0
  306. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/github.css +133 -0
  307. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/github.js +46 -0
  308. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/idle_fingers.css +137 -0
  309. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/idle_fingers.js +46 -0
  310. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/kr_theme.css +140 -0
  311. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/kr_theme.js +46 -0
  312. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore.css +140 -0
  313. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore.js +46 -0
  314. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore_soft.css +146 -0
  315. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/merbivore_soft.js +46 -0
  316. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/mono_industrial.css +148 -0
  317. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/mono_industrial.js +46 -0
  318. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/monokai.css +145 -0
  319. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/monokai.js +46 -0
  320. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/pastel_on_dark.css +150 -0
  321. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/pastel_on_dark.js +46 -0
  322. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_dark.css +131 -0
  323. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_dark.js +46 -0
  324. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_light.css +130 -0
  325. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/solarized_light.js +46 -0
  326. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/textmate.css +165 -0
  327. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/textmate.js +47 -0
  328. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow.css +164 -0
  329. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow.js +46 -0
  330. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night.css +164 -0
  331. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night.js +46 -0
  332. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_blue.css +164 -0
  333. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_blue.js +46 -0
  334. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_bright.css +164 -0
  335. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_bright.js +46 -0
  336. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_eighties.css +160 -0
  337. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/tomorrow_night_eighties.js +46 -0
  338. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/twilight.css +162 -0
  339. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/twilight.js +46 -0
  340. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/vibrant_ink.css +141 -0
  341. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/theme/vibrant_ink.js +46 -0
  342. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/token_iterator.js +162 -0
  343. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/token_iterator_test.js +219 -0
  344. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/tokenizer.js +195 -0
  345. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/undomanager.js +142 -0
  346. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/unicode.js +107 -0
  347. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer.js +1402 -0
  348. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/virtual_renderer_test.js +93 -0
  349. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/jshint.js +4469 -0
  350. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/jslint.js +6396 -0
  351. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/mirror.js +43 -0
  352. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/worker.js +138 -0
  353. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/worker_client.js +176 -0
  354. data/lib/gollum/frontend/public/gollum/livepreview/js/ace/lib/ace/worker/worker_sourcemint.js +73 -0
  355. data/lib/gollum/frontend/public/gollum/livepreview/js/jquery.ba-throttle-debounce.min.js +2 -0
  356. data/lib/gollum/frontend/public/gollum/livepreview/js/livepreview.js +456 -0
  357. data/lib/gollum/frontend/public/gollum/livepreview/js/md_sundown.js +22 -0
  358. data/lib/gollum/frontend/public/gollum/livepreview/js/requirejs.min.js +35 -0
  359. data/lib/gollum/frontend/public/gollum/livepreview/js/sundown.js +1 -0
  360. data/lib/gollum/frontend/public/gollum/livepreview/licenses/ace/LICENSE.txt +476 -0
  361. data/lib/gollum/frontend/public/gollum/livepreview/licenses/bootstraponline_gollum/LICENSE.txt +9 -0
  362. data/lib/gollum/frontend/public/gollum/livepreview/licenses/debounce/LICENSE-MIT.txt +22 -0
  363. data/lib/gollum/frontend/public/gollum/livepreview/licenses/gollum/LICENSE.txt +21 -0
  364. data/lib/gollum/frontend/public/gollum/livepreview/licenses/jquery/MIT-LICENSE.txt +20 -0
  365. data/lib/gollum/frontend/public/gollum/livepreview/licenses/licenses.txt +59 -0
  366. data/lib/gollum/frontend/public/gollum/livepreview/licenses/notepages/LICENSE.txt +19 -0
  367. data/lib/gollum/frontend/public/gollum/livepreview/licenses/requirejs/LICENSE.txt +58 -0
  368. data/lib/gollum/frontend/public/gollum/livepreview/licenses/retina_display_icon_set/by_sa_3.0_unported_legalcode.txt +359 -0
  369. data/lib/gollum/frontend/public/gollum/livepreview/licenses/sizzle/LICENSE.txt +148 -0
  370. data/lib/gollum/frontend/public/gollum/livepreview/licenses/sundown/sundown.txt +4 -0
  371. data/lib/gollum/frontend/public/gollum/livepreview/readme.md +44 -0
  372. data/lib/gollum/frontend/templates/compare.mustache +9 -9
  373. data/lib/gollum/frontend/templates/create.mustache +4 -1
  374. data/lib/gollum/frontend/templates/edit.mustache +6 -3
  375. data/lib/gollum/frontend/templates/editor.mustache +30 -14
  376. data/lib/gollum/frontend/templates/file_view.mustache +32 -0
  377. data/lib/gollum/frontend/templates/history.mustache +8 -8
  378. data/lib/gollum/frontend/templates/layout.mustache +21 -14
  379. data/lib/gollum/frontend/templates/page.mustache +37 -14
  380. data/lib/gollum/frontend/templates/pages.mustache +14 -10
  381. data/lib/gollum/frontend/templates/search.mustache +2 -2
  382. data/lib/gollum/frontend/templates/searchbar.mustache +1 -1
  383. data/lib/gollum/frontend/uri_encode_component.rb +172 -0
  384. data/lib/gollum/frontend/views/compare.rb +2 -4
  385. data/lib/gollum/frontend/views/create.rb +5 -0
  386. data/lib/gollum/frontend/views/edit.rb +12 -0
  387. data/lib/gollum/frontend/views/file_view.rb +19 -0
  388. data/lib/gollum/frontend/views/has_page.rb +15 -0
  389. data/lib/gollum/frontend/views/history.rb +8 -4
  390. data/lib/gollum/frontend/views/layout.rb +9 -1
  391. data/lib/gollum/frontend/views/page.rb +37 -10
  392. data/lib/gollum/frontend/views/pages.rb +48 -0
  393. data/lib/gollum/git_access.rb +2 -2
  394. data/lib/gollum/markup.rb +115 -19
  395. data/lib/gollum/page.rb +79 -9
  396. data/lib/gollum/tex.rb +319 -42
  397. data/lib/gollum/wiki.rb +92 -12
  398. data/licenses/css_tree_menu_thecssninja/license.txt +50 -0
  399. data/licenses/licenses.txt +23 -0
  400. data/licenses/unity_asset_pool/COPYRIGHT +286 -0
  401. data/test/examples/lotr.git/config +1 -1
  402. data/test/examples/lotr.git/logs/HEAD +4 -0
  403. data/test/examples/lotr.git/logs/refs/heads/master +4 -0
  404. data/test/examples/lotr.git/objects/0d/c9016ca928c78d5421a99a53b379b53929221e +0 -0
  405. data/test/examples/lotr.git/objects/1c/79ddc69707f7b164bc2ea58beb5d8965ff6bd0 +0 -0
  406. data/test/examples/lotr.git/objects/27/680b0fce1abfbc528e7aa53d92645852d52eb6 +0 -0
  407. data/test/examples/lotr.git/objects/45/3b250f979c7bd6dfb62640c944c982ae6721ee +0 -0
  408. data/test/examples/lotr.git/objects/45/f319ee12f2b551b901b22e72602963c366fff1 +0 -0
  409. data/test/examples/lotr.git/objects/46/a697caf435815bb07bbce947fc2d58be15f087 +0 -0
  410. data/test/examples/lotr.git/objects/4c/45c2b4e297a726c3d3f66886f35373e48fe1c5 +2 -0
  411. data/test/examples/lotr.git/objects/4e/023f460ce466e154ca09d8774c79ad5a53fc15 +0 -0
  412. data/test/examples/lotr.git/objects/62/9aa678272b017a4d136d35e77ac94d80b08dc2 +1 -0
  413. data/test/examples/lotr.git/objects/6e/48abfc56565574859e081ee58eae655d48cf71 +0 -0
  414. data/test/examples/lotr.git/objects/7b/60c5a20a501a70f2317fa0ef763e1e2ce22d6b +0 -0
  415. data/test/examples/lotr.git/objects/7d/981cd984ad589e3cf00d8122170c6f7d685979 +0 -0
  416. data/test/examples/lotr.git/objects/94/9a9cc3119b9c98817f375e976d2bb5e2a42809 +0 -0
  417. data/test/examples/lotr.git/objects/9b/e95b960ac388d4e7db55f610f828e9c31344e6 +0 -0
  418. data/test/examples/lotr.git/objects/b0/de6e794dfdc7ef3400e894225bfe23308aae5c +0 -0
  419. data/test/examples/lotr.git/objects/b1/6b3d9fad9d78e5a669e7f33d94c96da374eccd +0 -0
  420. data/test/examples/lotr.git/objects/c9/6a7645db5d4c76389e77cd103ef3ed77d81e4c +0 -0
  421. data/test/examples/lotr.git/objects/ca/7355dc497e9729fbaf0c0e3f424b86afef5614 +0 -0
  422. data/test/examples/lotr.git/objects/cf/ea406f5f77afc7fb673a43e97721234385b1bd +2 -0
  423. data/test/examples/lotr.git/objects/d5/29304506d37f544675244c335d85cab5d29966 +0 -0
  424. data/test/examples/lotr.git/objects/fb/c5dd7d807707b4a0a97c1182fecfef1eced5df +1 -0
  425. data/test/examples/lotr.git/objects/fc/3eee516ff72dc9099ba00d4611eb02e5c9e634 +0 -0
  426. data/test/examples/lotr.git/objects/ff/6f7de62644369380ba73b4e4297c1a2d6f0b66 +0 -0
  427. data/test/examples/lotr.git/refs/heads/master +1 -1
  428. data/test/examples/revert.git/COMMIT_EDITMSG +1 -1
  429. data/test/examples/revert.git/index +0 -0
  430. data/test/examples/revert.git/logs/HEAD +1 -0
  431. data/test/examples/revert.git/logs/refs/heads/master +1 -0
  432. data/test/examples/revert.git/objects/10/2685c42018f802557f05db171f44443e8dacab +0 -0
  433. data/test/examples/revert.git/objects/8e/83f898e5e16ae400db59dda1017acad540f3aa +0 -0
  434. data/test/examples/revert.git/objects/ed/6c9f63b98acf73c25b5ffbb38da557d3682023 +3 -0
  435. data/test/examples/revert.git/refs/heads/master +1 -1
  436. data/test/file_view/1_file.txt +3 -0
  437. data/test/file_view/1_file_1_folder.txt +8 -0
  438. data/test/file_view/1_folder.txt +8 -0
  439. data/test/file_view/2_files_2_folders.txt +12 -0
  440. data/test/file_view/2_files_2_folders_1_root.txt +13 -0
  441. data/test/file_view/nested_folders.txt +28 -0
  442. data/test/test_app.rb +162 -12
  443. data/test/test_app_helpers.rb +13 -0
  444. data/test/test_committer.rb +1 -1
  445. data/test/test_file_view.rb +102 -0
  446. data/test/test_git_access.rb +3 -2
  447. data/test/test_markup.rb +45 -12
  448. data/test/test_page.rb +65 -1
  449. data/test/test_page_revert.rb +14 -2
  450. data/test/test_pages_view.rb +37 -0
  451. data/test/test_unicode.rb +110 -0
  452. data/test/test_wiki.rb +51 -4
  453. metadata +658 -239
  454. data/lib/gollum/frontend/public/gollum/javascript/jquery.js +0 -7179
@@ -0,0 +1,886 @@
1
+ /* ***** BEGIN LICENSE BLOCK *****
2
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3
+ *
4
+ * The contents of this file are subject to the Mozilla Public License Version
5
+ * 1.1 (the "License"); you may not use this file except in compliance with
6
+ * the License. You may obtain a copy of the License at
7
+ * http://www.mozilla.org/MPL/
8
+ *
9
+ * Software distributed under the License is distributed on an "AS IS" basis,
10
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11
+ * for the specific language governing rights and limitations under the
12
+ * License.
13
+ *
14
+ * The Original Code is Ajax.org Code Editor (ACE).
15
+ *
16
+ * The Initial Developer of the Original Code is
17
+ * Ajax.org B.V.
18
+ * Portions created by the Initial Developer are Copyright (C) 2010
19
+ * the Initial Developer. All Rights Reserved.
20
+ *
21
+ * Contributor(s):
22
+ * Fabian Jakobs <fabian AT ajax DOT org>
23
+ * Julian Viereck <julian.viereck@gmail.com>
24
+ *
25
+ * Alternatively, the contents of this file may be used under the terms of
26
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
27
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
28
+ * in which case the provisions of the GPL or the LGPL are applicable instead
29
+ * of those above. If you wish to allow use of your version of this file only
30
+ * under the terms of either the GPL or the LGPL, and not to allow others to
31
+ * use your version of this file under the terms of the MPL, indicate your
32
+ * decision by deleting the provisions above and replace them with the notice
33
+ * and other provisions required by the GPL or the LGPL. If you do not delete
34
+ * the provisions above, a recipient may use your version of this file under
35
+ * the terms of any one of the MPL, the GPL or the LGPL.
36
+ *
37
+ * ***** END LICENSE BLOCK ***** */
38
+
39
+ define(function(require, exports, module) {
40
+ "use strict";
41
+
42
+ var oop = require("./lib/oop");
43
+ var lang = require("./lib/lang");
44
+ var EventEmitter = require("./lib/event_emitter").EventEmitter;
45
+ var Range = require("./range").Range;
46
+
47
+ /**
48
+ * class Selection
49
+ *
50
+ * Contains the cursor position and the text selection of an edit session.
51
+ *
52
+ * The row/columns used in the selection are in document coordinates representing ths coordinates as thez appear in the document before applying soft wrap and folding.
53
+ **/
54
+
55
+ /**
56
+ * new Selection(session)
57
+ * - session (EditSession): The session to use
58
+ *
59
+ * Creates a new `Selection` object.
60
+ *
61
+ **/
62
+ var Selection = function(session) {
63
+ this.session = session;
64
+ this.doc = session.getDocument();
65
+
66
+ this.clearSelection();
67
+ this.lead = this.selectionLead = this.doc.createAnchor(0, 0);
68
+ this.anchor = this.selectionAnchor = this.doc.createAnchor(0, 0);
69
+
70
+ var self = this;
71
+ this.lead.on("change", function(e) {
72
+ self._emit("changeCursor");
73
+ if (!self.$isEmpty)
74
+ self._emit("changeSelection");
75
+ if (!self.$keepDesiredColumnOnChange && e.old.column != e.value.column)
76
+ self.$desiredColumn = null;
77
+ });
78
+
79
+ this.selectionAnchor.on("change", function() {
80
+ if (!self.$isEmpty)
81
+ self._emit("changeSelection");
82
+ });
83
+ };
84
+
85
+ (function() {
86
+
87
+ oop.implement(this, EventEmitter);
88
+
89
+ /**
90
+ * Selection.isEmpty() -> Boolean
91
+ *
92
+ * Returns `true` if the selection is empty.
93
+ **/
94
+ this.isEmpty = function() {
95
+ return (this.$isEmpty || (
96
+ this.anchor.row == this.lead.row &&
97
+ this.anchor.column == this.lead.column
98
+ ));
99
+ };
100
+
101
+ /**
102
+ * Selection.isMultiLine() -> Boolean
103
+ *
104
+ * Returns `true` if the selection is a multi-line.
105
+ **/
106
+ this.isMultiLine = function() {
107
+ if (this.isEmpty()) {
108
+ return false;
109
+ }
110
+
111
+ return this.getRange().isMultiLine();
112
+ };
113
+
114
+ /**
115
+ * Selection.getCursor() -> Number
116
+ *
117
+ * Gets the current position of the cursor.
118
+ **/
119
+ this.getCursor = function() {
120
+ return this.lead.getPosition();
121
+ };
122
+
123
+ /**
124
+ * Selection.setSelectionAnchor(row, column)
125
+ * - row (Number): The new row
126
+ * - column (Number): The new column
127
+ *
128
+ * Sets the row and column position of the anchor. This function also emits the `'changeSelection'` event.
129
+ **/
130
+ this.setSelectionAnchor = function(row, column) {
131
+ this.anchor.setPosition(row, column);
132
+
133
+ if (this.$isEmpty) {
134
+ this.$isEmpty = false;
135
+ this._emit("changeSelection");
136
+ }
137
+ };
138
+
139
+ /** related to: Anchor.getPosition
140
+ * Selection.getSelectionAnchor() -> Object
141
+ *
142
+ * Returns an object containing the `row` and `column` of the calling selection anchor.
143
+ *
144
+ **/
145
+ this.getSelectionAnchor = function() {
146
+ if (this.$isEmpty)
147
+ return this.getSelectionLead()
148
+ else
149
+ return this.anchor.getPosition();
150
+ };
151
+
152
+ /**
153
+ * Selection.getSelectionLead() -> Object
154
+ *
155
+ * Returns an object containing the `row` and `column` of the calling selection lead.
156
+ **/
157
+ this.getSelectionLead = function() {
158
+ return this.lead.getPosition();
159
+ };
160
+
161
+ /**
162
+ * Selection.shiftSelection(columns)
163
+ * - columns (Number): The number of columns to shift by
164
+ *
165
+ * Shifts the selection up (or down, if [[Selection.isBackwards `isBackwards()`]] is true) the given number of columns.
166
+ *
167
+ **/
168
+ this.shiftSelection = function(columns) {
169
+ if (this.$isEmpty) {
170
+ this.moveCursorTo(this.lead.row, this.lead.column + columns);
171
+ return;
172
+ };
173
+
174
+ var anchor = this.getSelectionAnchor();
175
+ var lead = this.getSelectionLead();
176
+
177
+ var isBackwards = this.isBackwards();
178
+
179
+ if (!isBackwards || anchor.column !== 0)
180
+ this.setSelectionAnchor(anchor.row, anchor.column + columns);
181
+
182
+ if (isBackwards || lead.column !== 0) {
183
+ this.$moveSelection(function() {
184
+ this.moveCursorTo(lead.row, lead.column + columns);
185
+ });
186
+ }
187
+ };
188
+
189
+ /**
190
+ * Selection.isBackwards() -> Boolean
191
+ *
192
+ * Returns `true` if the selection is going backwards in the document.
193
+ **/
194
+ this.isBackwards = function() {
195
+ var anchor = this.anchor;
196
+ var lead = this.lead;
197
+ return (anchor.row > lead.row || (anchor.row == lead.row && anchor.column > lead.column));
198
+ };
199
+
200
+ /**
201
+ * Selection.getRange() -> Range
202
+ *
203
+ * [Returns the [[Range `Range`]] for the selected text.]{: #Selection.getRange}
204
+ **/
205
+ this.getRange = function() {
206
+ var anchor = this.anchor;
207
+ var lead = this.lead;
208
+
209
+ if (this.isEmpty())
210
+ return Range.fromPoints(lead, lead);
211
+
212
+ if (this.isBackwards()) {
213
+ return Range.fromPoints(lead, anchor);
214
+ }
215
+ else {
216
+ return Range.fromPoints(anchor, lead);
217
+ }
218
+ };
219
+
220
+ /**
221
+ * Selection.clearSelection()
222
+ *
223
+ * [Empties the selection (by de-selecting it). This function also emits the `'changeSelection'` event.]{: #Selection.clearSelection}
224
+ **/
225
+ this.clearSelection = function() {
226
+ if (!this.$isEmpty) {
227
+ this.$isEmpty = true;
228
+ this._emit("changeSelection");
229
+ }
230
+ };
231
+
232
+ /**
233
+ * Selection.selectAll()
234
+ *
235
+ * Selects all the text in the document.
236
+ **/
237
+ this.selectAll = function() {
238
+ var lastRow = this.doc.getLength() - 1;
239
+ this.setSelectionAnchor(0, 0);
240
+ this.moveCursorTo(lastRow, this.doc.getLine(lastRow).length);
241
+ };
242
+
243
+ /**
244
+ * Selection.setSelectionRange(range, reverse)
245
+ * - range (Range): The range of text to select
246
+ * - reverse (Boolean): Indicates if the range should go backwards (`true`) or not
247
+ *
248
+ * Sets the selection to the provided range.
249
+ *
250
+ **/
251
+ this.setRange =
252
+ this.setSelectionRange = function(range, reverse) {
253
+ if (reverse) {
254
+ this.setSelectionAnchor(range.end.row, range.end.column);
255
+ this.selectTo(range.start.row, range.start.column);
256
+ } else {
257
+ this.setSelectionAnchor(range.start.row, range.start.column);
258
+ this.selectTo(range.end.row, range.end.column);
259
+ }
260
+ this.$desiredColumn = null;
261
+ };
262
+
263
+ this.$moveSelection = function(mover) {
264
+ var lead = this.lead;
265
+ if (this.$isEmpty)
266
+ this.setSelectionAnchor(lead.row, lead.column);
267
+
268
+ mover.call(this);
269
+ };
270
+
271
+ /**
272
+ * Selection.selectTo(row, column)
273
+ * - row (Number): The row to select to
274
+ * - column (Number): The column to select to
275
+ *
276
+ * Moves the selection cursor to the indicated row and column.
277
+ *
278
+ **/
279
+ this.selectTo = function(row, column) {
280
+ this.$moveSelection(function() {
281
+ this.moveCursorTo(row, column);
282
+ });
283
+ };
284
+
285
+ /**
286
+ * Selection.selectToPosition(pos)
287
+ * - pos (Object): An object containing the row and column
288
+ *
289
+ * Moves the selection cursor to the row and column indicated by `pos`.
290
+ *
291
+ **/
292
+ this.selectToPosition = function(pos) {
293
+ this.$moveSelection(function() {
294
+ this.moveCursorToPosition(pos);
295
+ });
296
+ };
297
+
298
+ /**
299
+ * Selection.selectUp()
300
+ *
301
+ * Moves the selection up one row.
302
+ **/
303
+ this.selectUp = function() {
304
+ this.$moveSelection(this.moveCursorUp);
305
+ };
306
+
307
+ /**
308
+ * Selection.selectDown()
309
+ *
310
+ * Moves the selection down one row.
311
+ **/
312
+ this.selectDown = function() {
313
+ this.$moveSelection(this.moveCursorDown);
314
+ };
315
+
316
+ /**
317
+ * Selection.selectRight()
318
+ *
319
+ * Moves the selection right one column.
320
+ **/
321
+ this.selectRight = function() {
322
+ this.$moveSelection(this.moveCursorRight);
323
+ };
324
+
325
+ /**
326
+ * Selection.selectLeft()
327
+ *
328
+ * Moves the selection left one column.
329
+ **/
330
+ this.selectLeft = function() {
331
+ this.$moveSelection(this.moveCursorLeft);
332
+ };
333
+
334
+ /**
335
+ * Selection.selectLineStart()
336
+ *
337
+ * Moves the selection to the beginning of the current line.
338
+ **/
339
+ this.selectLineStart = function() {
340
+ this.$moveSelection(this.moveCursorLineStart);
341
+ };
342
+
343
+ /**
344
+ * Selection.selectLineEnd()
345
+ *
346
+ * Moves the selection to the end of the current line.
347
+ **/
348
+ this.selectLineEnd = function() {
349
+ this.$moveSelection(this.moveCursorLineEnd);
350
+ };
351
+
352
+ /**
353
+ * Selection.selectFileEnd()
354
+ *
355
+ * Moves the selection to the end of the file.
356
+ **/
357
+ this.selectFileEnd = function() {
358
+ this.$moveSelection(this.moveCursorFileEnd);
359
+ };
360
+
361
+ /**
362
+ * Selection.selectFileStart()
363
+ *
364
+ * Moves the selection to the start of the file.
365
+ **/
366
+ this.selectFileStart = function() {
367
+ this.$moveSelection(this.moveCursorFileStart);
368
+ };
369
+
370
+ /**
371
+ * Selection.selectWordRight()
372
+ *
373
+ * Moves the selection to the first word on the right.
374
+ **/
375
+ this.selectWordRight = function() {
376
+ this.$moveSelection(this.moveCursorWordRight);
377
+ };
378
+
379
+ /**
380
+ * Selection.selectWordLeft()
381
+ *
382
+ * Moves the selection to the first word on the left.
383
+ **/
384
+ this.selectWordLeft = function() {
385
+ this.$moveSelection(this.moveCursorWordLeft);
386
+ };
387
+
388
+ /** related to: EditSession.getWordRange
389
+ * Selection.selectWord()
390
+ *
391
+ * Moves the selection to highlight the entire word.
392
+ **/
393
+ this.getWordRange = function(row, column) {
394
+ if (typeof column == "undefined") {
395
+ var cursor = row || this.lead;
396
+ row = cursor.row;
397
+ column = cursor.column;
398
+ }
399
+ return this.session.getWordRange(row, column);
400
+ };
401
+
402
+ this.selectWord = function() {
403
+ this.setSelectionRange(this.getWordRange());
404
+ };
405
+
406
+ /** related to: EditSession.getAWordRange
407
+ * Selection.selectAWord()
408
+ *
409
+ * Selects a word, including its right whitespace.
410
+ **/
411
+ this.selectAWord = function() {
412
+ var cursor = this.getCursor();
413
+ var range = this.session.getAWordRange(cursor.row, cursor.column);
414
+ this.setSelectionRange(range);
415
+ };
416
+
417
+ this.getLineRange = function(row, excludeLastChar) {
418
+ var rowStart = typeof row == "number" ? row : this.lead.row;
419
+ var rowEnd;
420
+
421
+ var foldLine = this.session.getFoldLine(rowStart);
422
+ if (foldLine) {
423
+ rowStart = foldLine.start.row;
424
+ rowEnd = foldLine.end.row;
425
+ } else {
426
+ rowEnd = rowStart;
427
+ }
428
+ if (excludeLastChar)
429
+ return new Range(rowStart, 0, rowEnd, this.session.getLine(rowEnd).length);
430
+ else
431
+ return new Range(rowStart, 0, rowEnd + 1, 0);
432
+ };
433
+
434
+ /**
435
+ * Selection.selectLine()
436
+ *
437
+ * Selects the entire line.
438
+ **/
439
+ this.selectLine = function() {
440
+ this.setSelectionRange(this.getLineRange());
441
+ };
442
+
443
+ /**
444
+ * Selection.moveCursorUp()
445
+ *
446
+ * Moves the cursor up one row.
447
+ **/
448
+ this.moveCursorUp = function() {
449
+ this.moveCursorBy(-1, 0);
450
+ };
451
+
452
+ /**
453
+ * Selection.moveCursorDown()
454
+ *
455
+ * Moves the cursor down one row.
456
+ **/
457
+ this.moveCursorDown = function() {
458
+ this.moveCursorBy(1, 0);
459
+ };
460
+
461
+ /**
462
+ * Selection.moveCursorLeft()
463
+ *
464
+ * Moves the cursor left one column.
465
+ **/
466
+ this.moveCursorLeft = function() {
467
+ var cursor = this.lead.getPosition(),
468
+ fold;
469
+
470
+ if (fold = this.session.getFoldAt(cursor.row, cursor.column, -1)) {
471
+ this.moveCursorTo(fold.start.row, fold.start.column);
472
+ } else if (cursor.column == 0) {
473
+ // cursor is a line (start
474
+ if (cursor.row > 0) {
475
+ this.moveCursorTo(cursor.row - 1, this.doc.getLine(cursor.row - 1).length);
476
+ }
477
+ }
478
+ else {
479
+ var tabSize = this.session.getTabSize();
480
+ if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column-tabSize, cursor.column).split(" ").length-1 == tabSize)
481
+ this.moveCursorBy(0, -tabSize);
482
+ else
483
+ this.moveCursorBy(0, -1);
484
+ }
485
+ };
486
+
487
+ /**
488
+ * Selection.moveCursorRight()
489
+ *
490
+ * Moves the cursor right one column.
491
+ **/
492
+ this.moveCursorRight = function() {
493
+ var cursor = this.lead.getPosition(),
494
+ fold;
495
+ if (fold = this.session.getFoldAt(cursor.row, cursor.column, 1)) {
496
+ this.moveCursorTo(fold.end.row, fold.end.column);
497
+ }
498
+ else if (this.lead.column == this.doc.getLine(this.lead.row).length) {
499
+ if (this.lead.row < this.doc.getLength() - 1) {
500
+ this.moveCursorTo(this.lead.row + 1, 0);
501
+ }
502
+ }
503
+ else {
504
+ var tabSize = this.session.getTabSize();
505
+ var cursor = this.lead;
506
+ if (this.session.isTabStop(cursor) && this.doc.getLine(cursor.row).slice(cursor.column, cursor.column+tabSize).split(" ").length-1 == tabSize)
507
+ this.moveCursorBy(0, tabSize);
508
+ else
509
+ this.moveCursorBy(0, 1);
510
+ }
511
+ };
512
+
513
+ /**
514
+ * Selection.moveCursorLineStart()
515
+ *
516
+ * Moves the cursor to the start of the line.
517
+ **/
518
+ this.moveCursorLineStart = function() {
519
+ var row = this.lead.row;
520
+ var column = this.lead.column;
521
+ var screenRow = this.session.documentToScreenRow(row, column);
522
+
523
+ // Determ the doc-position of the first character at the screen line.
524
+ var firstColumnPosition = this.session.screenToDocumentPosition(screenRow, 0);
525
+
526
+ // Determ the line
527
+ var beforeCursor = this.session.getDisplayLine(
528
+ row, null,
529
+ firstColumnPosition.row, firstColumnPosition.column
530
+ );
531
+
532
+ var leadingSpace = beforeCursor.match(/^\s*/);
533
+ if (leadingSpace[0].length == column) {
534
+ this.moveCursorTo(
535
+ firstColumnPosition.row, firstColumnPosition.column
536
+ );
537
+ }
538
+ else {
539
+ this.moveCursorTo(
540
+ firstColumnPosition.row,
541
+ firstColumnPosition.column + leadingSpace[0].length
542
+ );
543
+ }
544
+ };
545
+
546
+ /**
547
+ * Selection.moveCursorLineEnd()
548
+ *
549
+ * Moves the cursor to the end of the line.
550
+ **/
551
+ this.moveCursorLineEnd = function() {
552
+ var lead = this.lead;
553
+ var lastRowColumnPosition =
554
+ this.session.getDocumentLastRowColumnPosition(lead.row, lead.column);
555
+ this.moveCursorTo(
556
+ lastRowColumnPosition.row,
557
+ lastRowColumnPosition.column
558
+ );
559
+ };
560
+
561
+ /**
562
+ * Selection.moveCursorFileEnd()
563
+ *
564
+ * Moves the cursor to the end of the file.
565
+ **/
566
+ this.moveCursorFileEnd = function() {
567
+ var row = this.doc.getLength() - 1;
568
+ var column = this.doc.getLine(row).length;
569
+ this.moveCursorTo(row, column);
570
+ };
571
+
572
+ /**
573
+ * Selection.moveCursorFileStart()
574
+ *
575
+ * Moves the cursor to the start of the file.
576
+ **/
577
+ this.moveCursorFileStart = function() {
578
+ this.moveCursorTo(0, 0);
579
+ };
580
+
581
+ /**
582
+ * Selection.moveCursorLongWordRight()
583
+ *
584
+ * Moves the cursor to the word on the right.
585
+ **/
586
+ this.moveCursorLongWordRight = function() {
587
+ var row = this.lead.row;
588
+ var column = this.lead.column;
589
+ var line = this.doc.getLine(row);
590
+ var rightOfCursor = line.substring(column);
591
+
592
+ var match;
593
+ this.session.nonTokenRe.lastIndex = 0;
594
+ this.session.tokenRe.lastIndex = 0;
595
+
596
+ // skip folds
597
+ var fold = this.session.getFoldAt(row, column, 1);
598
+ if (fold) {
599
+ this.moveCursorTo(fold.end.row, fold.end.column);
600
+ return;
601
+ }
602
+
603
+ // first skip space
604
+ if (match = this.session.nonTokenRe.exec(rightOfCursor)) {
605
+ column += this.session.nonTokenRe.lastIndex;
606
+ this.session.nonTokenRe.lastIndex = 0;
607
+ rightOfCursor = line.substring(column);
608
+ }
609
+
610
+ // if at line end proceed with next line
611
+ if (column >= line.length) {
612
+ this.moveCursorTo(row, line.length);
613
+ this.moveCursorRight();
614
+ if (row < this.doc.getLength() - 1)
615
+ this.moveCursorWordRight();
616
+ return;
617
+ }
618
+
619
+ // advance to the end of the next token
620
+ if (match = this.session.tokenRe.exec(rightOfCursor)) {
621
+ column += this.session.tokenRe.lastIndex;
622
+ this.session.tokenRe.lastIndex = 0;
623
+ }
624
+
625
+ this.moveCursorTo(row, column);
626
+ };
627
+
628
+ /**
629
+ * Selection.moveCursorLongWordLeft()
630
+ *
631
+ * Moves the cursor to the word on the left.
632
+ **/
633
+ this.moveCursorLongWordLeft = function() {
634
+ var row = this.lead.row;
635
+ var column = this.lead.column;
636
+
637
+ // skip folds
638
+ var fold;
639
+ if (fold = this.session.getFoldAt(row, column, -1)) {
640
+ this.moveCursorTo(fold.start.row, fold.start.column);
641
+ return;
642
+ }
643
+
644
+ var str = this.session.getFoldStringAt(row, column, -1);
645
+ if (str == null) {
646
+ str = this.doc.getLine(row).substring(0, column)
647
+ }
648
+
649
+ var leftOfCursor = lang.stringReverse(str);
650
+ var match;
651
+ this.session.nonTokenRe.lastIndex = 0;
652
+ this.session.tokenRe.lastIndex = 0;
653
+
654
+ // skip whitespace
655
+ if (match = this.session.nonTokenRe.exec(leftOfCursor)) {
656
+ column -= this.session.nonTokenRe.lastIndex;
657
+ leftOfCursor = leftOfCursor.slice(this.session.nonTokenRe.lastIndex);
658
+ this.session.nonTokenRe.lastIndex = 0;
659
+ }
660
+
661
+ // if at begin of the line proceed in line above
662
+ if (column <= 0) {
663
+ this.moveCursorTo(row, 0);
664
+ this.moveCursorLeft();
665
+ if (row > 0)
666
+ this.moveCursorWordLeft();
667
+ return;
668
+ }
669
+
670
+ // move to the begin of the word
671
+ if (match = this.session.tokenRe.exec(leftOfCursor)) {
672
+ column -= this.session.tokenRe.lastIndex;
673
+ this.session.tokenRe.lastIndex = 0;
674
+ }
675
+
676
+ this.moveCursorTo(row, column);
677
+ };
678
+
679
+ this.$shortWordEndIndex = function(rightOfCursor) {
680
+ var match, index = 0, ch;
681
+ var whitespaceRe = /\s/;
682
+ var tokenRe = this.session.tokenRe;
683
+
684
+ tokenRe.lastIndex = 0;
685
+ if (match = this.session.tokenRe.exec(rightOfCursor)) {
686
+ index = this.session.tokenRe.lastIndex;
687
+ } else {
688
+ while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))
689
+ index ++;
690
+
691
+ if (index <= 1) {
692
+ tokenRe.lastIndex = 0;
693
+ while ((ch = rightOfCursor[index]) && !tokenRe.test(ch)) {
694
+ tokenRe.lastIndex = 0;
695
+ index ++;
696
+ if (whitespaceRe.test(ch)) {
697
+ if (index > 2) {
698
+ index--
699
+ break;
700
+ } else {
701
+ while ((ch = rightOfCursor[index]) && whitespaceRe.test(ch))
702
+ index ++;
703
+ if (index > 2)
704
+ break
705
+ }
706
+ }
707
+ }
708
+ }
709
+ }
710
+ tokenRe.lastIndex = 0;
711
+
712
+ return index;
713
+ };
714
+
715
+ this.moveCursorShortWordRight = function() {
716
+ var row = this.lead.row;
717
+ var column = this.lead.column;
718
+ var line = this.doc.getLine(row);
719
+ var rightOfCursor = line.substring(column);
720
+
721
+ var fold = this.session.getFoldAt(row, column, 1);
722
+ if (fold)
723
+ return this.moveCursorTo(fold.end.row, fold.end.column);
724
+
725
+ if (column == line.length) {
726
+ var l = this.doc.getLength();
727
+ do {
728
+ row++;
729
+ rightOfCursor = this.doc.getLine(row)
730
+ } while (row < l && /^\s*$/.test(rightOfCursor))
731
+
732
+ if (!/^\s+/.test(rightOfCursor))
733
+ rightOfCursor = ""
734
+ column = 0;
735
+ }
736
+
737
+ var index = this.$shortWordEndIndex(rightOfCursor);
738
+
739
+ this.moveCursorTo(row, column + index);
740
+ };
741
+
742
+ this.moveCursorShortWordLeft = function() {
743
+ var row = this.lead.row;
744
+ var column = this.lead.column;
745
+
746
+ var fold;
747
+ if (fold = this.session.getFoldAt(row, column, -1))
748
+ return this.moveCursorTo(fold.start.row, fold.start.column);
749
+
750
+ var line = this.session.getLine(row).substring(0, column);
751
+ if (column == 0) {
752
+ do {
753
+ row--;
754
+ line = this.doc.getLine(row);
755
+ } while (row > 0 && /^\s*$/.test(line))
756
+
757
+ column = line.length;
758
+ if (!/\s+$/.test(line))
759
+ line = ""
760
+ }
761
+
762
+ var leftOfCursor = lang.stringReverse(line);
763
+ var index = this.$shortWordEndIndex(leftOfCursor);
764
+
765
+ return this.moveCursorTo(row, column - index);
766
+ };
767
+
768
+ this.moveCursorWordRight = function() {
769
+ if (this.session.$selectLongWords)
770
+ this.moveCursorLongWordRight();
771
+ else
772
+ this.moveCursorShortWordRight();
773
+ };
774
+
775
+ this.moveCursorWordLeft = function() {
776
+ if (this.session.$selectLongWords)
777
+ this.moveCursorLongWordLeft();
778
+ else
779
+ this.moveCursorShortWordLeft();
780
+ };
781
+
782
+ /** related to: EditSession.documentToScreenPosition
783
+ * Selection.moveCursorBy(rows, chars)
784
+ * - rows (Number): The number of rows to move by
785
+ * - chars (Number): The number of characters to move by
786
+ *
787
+ * Moves the cursor to position indicated by the parameters. Negative numbers move the cursor backwards in the document.
788
+ **/
789
+ this.moveCursorBy = function(rows, chars) {
790
+ var screenPos = this.session.documentToScreenPosition(
791
+ this.lead.row,
792
+ this.lead.column
793
+ );
794
+
795
+ if (chars === 0) {
796
+ if (this.$desiredColumn)
797
+ screenPos.column = this.$desiredColumn;
798
+ else
799
+ this.$desiredColumn = screenPos.column;
800
+ }
801
+
802
+ var docPos = this.session.screenToDocumentPosition(screenPos.row + rows, screenPos.column);
803
+
804
+ // move the cursor and update the desired column
805
+ this.moveCursorTo(docPos.row, docPos.column + chars, chars === 0);
806
+ };
807
+
808
+ /**
809
+ * Selection.moveCursorToPosition(position)
810
+ * - position (Object): The position to move to
811
+ *
812
+ * Moves the selection to the position indicated by its `row` and `column`.
813
+ **/
814
+ this.moveCursorToPosition = function(position) {
815
+ this.moveCursorTo(position.row, position.column);
816
+ };
817
+
818
+ /**
819
+ * Selection.moveCursorTo(row, column, keepDesiredColumn)
820
+ * - row (Number): The row to move to
821
+ * - column (Number): The column to move to
822
+ * - keepDesiredColumn (Boolean): [If `true`, the cursor move does not respect the previous column]{: #preventUpdateBool}
823
+ *
824
+ * Moves the cursor to the row and column provided. [If `preventUpdateDesiredColumn` is `true`, then the cursor stays in the same column position as its original point.]{: #preventUpdateBoolDesc}
825
+ **/
826
+ this.moveCursorTo = function(row, column, keepDesiredColumn) {
827
+ // Ensure the row/column is not inside of a fold.
828
+ var fold = this.session.getFoldAt(row, column, 1);
829
+ if (fold) {
830
+ row = fold.start.row;
831
+ column = fold.start.column;
832
+ }
833
+
834
+ this.$keepDesiredColumnOnChange = true;
835
+ this.lead.setPosition(row, column);
836
+ this.$keepDesiredColumnOnChange = false;
837
+
838
+ if (!keepDesiredColumn)
839
+ this.$desiredColumn = null;
840
+ };
841
+
842
+ /**
843
+ * Selection.moveCursorToScreen(row, column, keepDesiredColumn)
844
+ * - row (Number): The row to move to
845
+ * - column (Number): The column to move to
846
+ * - keepDesiredColumn (Boolean): {:preventUpdateBool}
847
+ *
848
+ * Moves the cursor to the screen position indicated by row and column. {:preventUpdateBoolDesc}
849
+ **/
850
+ this.moveCursorToScreen = function(row, column, keepDesiredColumn) {
851
+ var pos = this.session.screenToDocumentPosition(row, column);
852
+ this.moveCursorTo(pos.row, pos.column, keepDesiredColumn);
853
+ };
854
+
855
+ // remove listeners from document
856
+ this.detach = function() {
857
+ this.lead.detach();
858
+ this.anchor.detach();
859
+ this.session = this.doc = null;
860
+ }
861
+
862
+ this.fromOrientedRange = function(range) {
863
+ this.setSelectionRange(range, range.cursor == range.start);
864
+ this.$desiredColumn = range.desiredColumn || this.$desiredColumn;
865
+ }
866
+
867
+ this.toOrientedRange = function(range) {
868
+ var r = this.getRange();
869
+ if (range) {
870
+ range.start.column = r.start.column;
871
+ range.start.row = r.start.row;
872
+ range.end.column = r.end.column;
873
+ range.end.row = r.end.row;
874
+ } else {
875
+ range = r;
876
+ }
877
+
878
+ range.cursor = this.isBackwards() ? range.start : range.end;
879
+ range.desiredColumn = this.$desiredColumn;
880
+ return range;
881
+ }
882
+
883
+ }).call(Selection.prototype);
884
+
885
+ exports.Selection = Selection;
886
+ });