Kaynağa Gözat

[core] Updated and merged Ace Editor 1.2.2

Enrico Berti 10 yıl önce
ebeveyn
işleme
2a3e71120d
100 değiştirilmiş dosya ile 657 ekleme ve 587 silme
  1. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ace.js
  2. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ext-emmet.js
  3. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ext-language_tools.js
  4. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ext-modelist.js
  5. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ext-old_ie.js
  6. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ext-searchbox.js
  7. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ext-settings_menu.js
  8. 1 1
      desktop/core/src/desktop/static/desktop/js/ace/ext-statusbar.js
  9. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/ext-textarea.js
  10. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/keybinding-emacs.js
  11. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/keybinding-vim.js
  12. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-coffee.js
  13. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-coldfusion.js
  14. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-css.js
  15. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-curly.js
  16. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-django.js
  17. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-dockerfile.js
  18. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-ejs.js
  19. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-elm.js
  20. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-erlang.js
  21. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-forth.js
  22. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-ftl.js
  23. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-gherkin.js
  24. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-golang.js
  25. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-groovy.js
  26. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-handlebars.js
  27. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-haskell.js
  28. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-html.js
  29. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-html_ruby.js
  30. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-ini.js
  31. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-jade.js
  32. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-java.js
  33. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-javascript.js
  34. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-jsp.js
  35. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-less.js
  36. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-liquid.js
  37. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-livescript.js
  38. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-lsl.js
  39. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-luapage.js
  40. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-makefile.js
  41. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-markdown.js
  42. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-mask.js
  43. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-mel.js
  44. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-mushcode.js
  45. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-mysql.js
  46. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-perl.js
  47. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-pgsql.js
  48. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-php.js
  49. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-rhtml.js
  50. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-rust.js
  51. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-scala.js
  52. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-sh.js
  53. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-sjs.js
  54. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-smarty.js
  55. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-soy_template.js
  56. 1 1
      desktop/core/src/desktop/static/desktop/js/ace/mode-sql.js
  57. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-stylus.js
  58. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-svg.js
  59. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-tex.js
  60. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-twig.js
  61. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-typescript.js
  62. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-velocity.js
  63. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/mode-verilog.js
  64. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/snippets/erlang.js
  65. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/snippets/javascript.js
  66. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/snippets/lsl.js
  67. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/snippets/php.js
  68. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/theme-github.js
  69. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/theme-kuroir.js
  70. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-coffee.js
  71. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-css.js
  72. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-html.js
  73. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-javascript.js
  74. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-json.js
  75. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-lua.js
  76. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-php.js
  77. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-xml.js
  78. 0 0
      desktop/core/src/desktop/static/desktop/js/ace/worker-xquery.js
  79. 6 0
      tools/ace-editor/ChangeLog.txt
  80. 61 17
      tools/ace-editor/Makefile.dryice.js
  81. 10 2
      tools/ace-editor/Readme.md
  82. 3 3
      tools/ace-editor/api/edit_session.html
  83. 4 4
      tools/ace-editor/api/editor.html
  84. 1 1
      tools/ace-editor/build_support/editor.html
  85. 2 0
      tools/ace-editor/demo/kitchen-sink/styles.css
  86. 2 2
      tools/ace-editor/doc/site/js/main.js
  87. 1 0
      tools/ace-editor/lib/ace/ace.js
  88. 1 1
      tools/ace-editor/lib/ace/autocomplete/popup.js
  89. 5 5
      tools/ace-editor/lib/ace/background_tokenizer_test.js
  90. 3 2
      tools/ace-editor/lib/ace/commands/incremental_search_commands.js
  91. 3 3
      tools/ace-editor/lib/ace/config.js
  92. 151 151
      tools/ace-editor/lib/ace/document.js
  93. 283 313
      tools/ace-editor/lib/ace/edit_session.js
  94. 15 15
      tools/ace-editor/lib/ace/edit_session/folding.js
  95. 41 36
      tools/ace-editor/lib/ace/editor.js
  96. 42 15
      tools/ace-editor/lib/ace/ext/emmet.js
  97. 6 3
      tools/ace-editor/lib/ace/ext/error_marker.js
  98. 2 2
      tools/ace-editor/lib/ace/ext/menu_tools/generate_settings_menu.js
  99. 12 8
      tools/ace-editor/lib/ace/ext/modelist.js
  100. 1 2
      tools/ace-editor/lib/ace/ext/searchbox.css

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ace.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ext-emmet.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ext-language_tools.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ext-modelist.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ext-old_ie.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ext-searchbox.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ext-settings_menu.js


+ 1 - 1
desktop/core/src/desktop/static/desktop/js/ace/ext-statusbar.js

@@ -1,4 +1,4 @@
-ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this));e.on("changeStatus",function(){n.schedule(100)}),e.on("changeSelection",function(){n.schedule(100)})};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection.lead;n(r.row+":"+r.column," ");if(!e.selection.isEmpty()){var i=e.getSelectionRange();n("("+(i.end.row-i.start.row)+":"+(i.end.column-i.start.column)+")")}t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s});
+ace.define("ace/ext/statusbar",["require","exports","module","ace/lib/dom","ace/lib/lang"],function(e,t,n){"use strict";var r=e("ace/lib/dom"),i=e("ace/lib/lang"),s=function(e,t){this.element=r.createElement("div"),this.element.className="ace_status-indicator",this.element.style.cssText="display: inline-block;",t.appendChild(this.element);var n=i.delayedCall(function(){this.updateStatus(e)}.bind(this)).schedule.bind(null,100);e.on("changeStatus",n),e.on("changeSelection",n),e.on("keyboardActivity",n)};(function(){this.updateStatus=function(e){function n(e,n){e&&t.push(e,n||"|")}var t=[];n(e.keyBinding.getStatusText(e)),e.commands.recording&&n("REC");var r=e.selection,i=r.lead;if(!r.isEmpty()){var s=e.getSelectionRange();n("("+(s.end.row-s.start.row)+":"+(s.end.column-s.start.column)+")"," ")}n(i.row+":"+i.column," "),r.rangeCount&&n("["+r.rangeCount+"]"," "),t.pop(),this.element.textContent=t.join("")}}).call(s.prototype),t.StatusBar=s});
                 (function() {
                     ace.require(["ace/ext/statusbar"], function() {});
                 })();

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/ext-textarea.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/keybinding-emacs.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/keybinding-vim.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-coffee.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-coldfusion.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-css.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-curly.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-django.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-dockerfile.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-ejs.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-elm.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-erlang.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-forth.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-ftl.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-gherkin.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-golang.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-groovy.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-handlebars.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-haskell.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-html.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-html_ruby.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-ini.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-jade.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-java.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-javascript.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-jsp.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-less.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-liquid.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-livescript.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-lsl.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-luapage.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-makefile.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-markdown.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-mask.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-mel.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-mushcode.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-mysql.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-perl.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-pgsql.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-php.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-rhtml.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-rust.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-scala.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-sh.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-sjs.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-smarty.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-soy_template.js


+ 1 - 1
desktop/core/src/desktop/static/desktop/js/ace/mode-sql.js

@@ -1 +1 @@
-ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|foreign|not|references|default|null|inner|cross|natural|database|drop|grant",t="true|false",n="avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nv|",r="int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|money|real|number|integer",i=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t,"storage.type":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/sql"}.call(u.prototype),t.Mode=u})
+ace.define("ace/mode/sql_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){var e="select|insert|update|delete|from|where|and|or|group|by|order|limit|offset|having|as|case|when|else|end|type|left|right|join|on|outer|desc|asc|union|create|table|primary|key|if|foreign|not|references|default|null|inner|cross|natural|database|drop|grant",t="true|false",n="avg|count|first|last|max|min|sum|ucase|lcase|mid|len|round|rank|now|format|coalesce|ifnull|isnull|nvl",r="int|numeric|decimal|date|varchar|char|bigint|float|double|bit|binary|text|set|timestamp|money|real|number|integer",i=this.createKeywordMapper({"support.function":n,keyword:e,"constant.language":t,"storage.type":r},"identifier",!0);this.$rules={start:[{token:"comment",regex:"--.*$"},{token:"comment",start:"/\\*",end:"\\*/"},{token:"string",regex:'".*?"'},{token:"string",regex:"'.*?'"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:i,regex:"[a-zA-Z_$][a-zA-Z0-9_$]*\\b"},{token:"keyword.operator",regex:"\\+|\\-|\\/|\\/\\/|%|<@>|@>|<@|&|\\^|~|<|>|<=|=>|==|!=|<>|="},{token:"paren.lparen",regex:"[\\(]"},{token:"paren.rparen",regex:"[\\)]"},{token:"text",regex:"\\s+"}]},this.normalizeRules()};r.inherits(s,i),t.SqlHighlightRules=s}),ace.define("ace/mode/sql",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/sql_highlight_rules","ace/range"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./sql_highlight_rules").SqlHighlightRules,o=e("../range").Range,u=function(){this.HighlightRules=s};r.inherits(u,i),function(){this.lineCommentStart="--",this.$id="ace/mode/sql"}.call(u.prototype),t.Mode=u})

Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-stylus.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-svg.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-tex.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-twig.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-typescript.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-velocity.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/mode-verilog.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/snippets/erlang.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/snippets/javascript.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/snippets/lsl.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/snippets/php.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/theme-github.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/theme-kuroir.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-coffee.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-css.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-html.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-javascript.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-json.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-lua.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-php.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-xml.js


Dosya farkı çok büyük olduğundan ihmal edildi
+ 0 - 0
desktop/core/src/desktop/static/desktop/js/ace/worker-xquery.js


+ 6 - 0
tools/ace-editor/ChangeLog.txt

@@ -1,3 +1,9 @@
+2015.10.28 Version 1.2.1
+
+* new language modes
+  - Swift
+  - JSX
+
 2015.07.11 Version 1.2.0
 
 * New Features

+ 61 - 17
tools/ace-editor/Makefile.dryice.js

@@ -106,7 +106,7 @@ function ace() {
     
     console.log('# ace ---------');
     for (var i = 0; i < 4; i++)
-        buildAce({compress: i & 2, noconflict: i & 1});
+        buildAce({compress: i & 2, noconflict: i & 1, check: true});
 }
 
 function demo() {
@@ -261,11 +261,7 @@ function buildAceModuleInternal(opts, callback) {
             code = result.codeMin;
         }
             
-        var targetDir =  BUILD_DIR + "/src";
-        if (opts.compress)
-            targetDir += "-min";
-        if (opts.noconflict)
-            targetDir += "-noconflict";
+        var targetDir = getTargetDir(opts);
         
         var to = /^([\\/]|\w:)/.test(opts.outputFile)
             ? opts.outputFile
@@ -284,7 +280,9 @@ function buildAceModuleInternal(opts, callback) {
             filters.push(exportAce(ns, opts.require[0],
                 opts.noconflict ? ns : "", projectType == "ext"));
         }
-
+        
+        filters.push(normalizeLineEndings);
+        
         filters.forEach(function(f) { code = f(code); });
         
         build.writeToFile({code: code}, {
@@ -339,13 +337,13 @@ function buildAce(options) {
     var snippetFiles = jsFileList("lib/ace/snippets");
     var modeNames = modeList();
 
-    buildCore(options, {outputFile: "ace.js"}),
+    buildCore(options, {outputFile: "ace.js"}, addCb()),
     // modes
     modeNames.forEach(function(name) {
         buildSubmodule(options, {
             projectType: "mode",
             require: ["ace/mode/" + name]
-        }, "mode-" + name);
+        }, "mode-" + name, addCb());
     });
     // snippets
     modeNames.forEach(function(name) {
@@ -354,28 +352,28 @@ function buildAce(options) {
         
         buildSubmodule(options, {
             require: ["ace/snippets/" + name],
-        }, "snippets/" + name);
+        }, "snippets/" + name, addCb());
     });
     // themes
     jsFileList("lib/ace/theme").forEach(function(name) {
         buildSubmodule(options, {
             projectType: "theme",
             require: ["ace/theme/" + name]
-        }, "theme-" +  name);
+        }, "theme-" +  name, addCb());
     });
     // keybindings
     ["vim", "emacs"].forEach(function(name) {
         buildSubmodule(options, {
             projectType: "keybinding",
             require: ["ace/keyboard/" + name ]
-        }, "keybinding-" + name);
+        }, "keybinding-" + name, addCb());
     });
     // extensions
     jsFileList("lib/ace/ext").forEach(function(name) {
         buildSubmodule(options, {
             projectType: "ext",
             require: ["ace/ext/" + name]
-        }, "ext-" + name);
+        }, "ext-" + name, addCb());
     });
     // workers
     workers("lib/ace/mode").forEach(function(name) {
@@ -388,8 +386,20 @@ function buildAce(options) {
                 transforms: [],
                 order: -1000
             }],
-        }, "worker-" + name);
+        }, "worker-" + name, addCb());
     });
+    // 
+    function addCb() {
+        addCb.count = (addCb.count || 0) + 1; 
+        return done
+    }
+    function done() {
+        if (--addCb.count > 0)
+            return;
+        if (options.check)
+            sanityCheck(options)
+        console.log("Finished building " + getTargetDir(options))
+    }
 }
 
 function getLoadedFileList(options, callback, result) {
@@ -405,11 +415,14 @@ function getLoadedFileList(options, callback, result) {
         });
     });
     delete deps["ace/theme/textmate"];
+    deps["ace/ace"] = 1;
     callback(Object.keys(deps));
 }
 
 function normalizeLineEndings(module) {
-    module.source = module.source.replace(/\r\n/g, "\n");
+    if (typeof module == "string") 
+        module = {source: module};
+    return module.source = module.source.replace(/\r\n/g, "\n");
 }
 
 function optimizeTextModules(sources) {
@@ -471,8 +484,10 @@ function namespace(ns) {
         text = text
             .toString()
             .replace(/ACE_NAMESPACE\s*=\s*""/, 'ACE_NAMESPACE = "' + ns +'"')
-            .replace(/(\.define)|\bdefine\(/g, function(_, a) {
-                return a || ns + ".define(";
+            .replace(/\bdefine\(/g, function(def, index, source) {
+                if (/(^|[;}),])\s*$/.test(source.slice(0, index)))
+                    return ns + "." + def;
+                return def;
             });
 
         return text;
@@ -565,6 +580,35 @@ function extend(base, extra) {
     return base;
 }
 
+function getTargetDir(opts) {
+    var targetDir = BUILD_DIR + "/src";
+    if (opts.compress)
+        targetDir += "-min";
+    if (opts.noconflict)
+        targetDir += "-noconflict";
+    return targetDir;
+}
+
+function sanityCheck(opts) {
+    var targetDir = getTargetDir(opts);
+    require("child_process").execFile(process.execPath, ["-e", "(" + function() {
+        window = global;
+        require("./ace");
+        if (typeof ace.edit != "function")
+            process.exit(1);
+        require("fs").readdirSync(".").forEach(function(p) {
+            if (!/ace\.js$/.test(p) && /\.js$/.test(p))
+                require("./" + p);
+        });
+        process.exit(0);
+    } + ")()"], {
+        cwd: targetDir
+    }, function(err, stdout) {
+        if (err)
+            throw err;
+    });
+}
+
 if (!module.parent)
     main(process.argv);
 else

+ 10 - 2
tools/ace-editor/Readme.md

@@ -8,7 +8,7 @@ Ace is a standalone code editor written in JavaScript. Our goal is to create a b
 Features
 --------
 
-* Syntax highlighting for over 110 languages (TextMate/Sublime/_.tmlanguage_ files can be imported)
+* Syntax highlighting for over 120 languages (TextMate/Sublime/_.tmlanguage_ files can be imported)
 * Over 20 themes (TextMate/Sublime/_.tmtheme_ files can be imported)
 * Automatic indent and outdent
 * An optional command line
@@ -80,9 +80,17 @@ The mode can then be used like this:
 
 ```javascript
     var JavaScriptMode = ace.require("ace/mode/javascript").Mode;
-    editor.getSession().setMode(new JavaScriptMode());
+    editor.session.setMode(new JavaScriptMode());
 ```
 
+to destroy editor use
+
+```javascript
+    editor.destroy();
+    editor.container.remove();
+```
+
+
 Documentation
 -------------
 

+ 3 - 3
tools/ace-editor/api/edit_session.html

@@ -1599,10 +1599,10 @@
             </ul>
           </div>
           <div class="sideToggler">
-            <div id="ellipsis_EditSession.getSelection" class="ellipsis_description"><p>Returns the string of the current selection.</p>
+            <div id="ellipsis_EditSession.getSelection" class="ellipsis_description"><p>Returns selection object.</p>
 
             </div>
-            <div class="description"><p>Returns the string of the current selection.</p>
+            <div class="description"><p>Returns selection object.</p>
 
             </div>
           </div>
@@ -3232,4 +3232,4 @@
   <script defer src="./resources/javascripts/disqus-ext.js"></script>
   <script defer src="./resources/javascripts/ga.js"></script>
   <div id="disqus_thread"></div>
-</div>
+</div>

+ 4 - 4
tools/ace-editor/api/editor.html

@@ -1661,7 +1661,7 @@
                   <li class="signature-call"><span id="Editor.getSelection" class="member-name methodClicker"><span class="sigClassName">Editor.</span><span class="sigMemberName">getSelection</span></span><span class="emptyArgumentList">()</span>
                     <li class="signature-returns">
                       <ul class="argument-types">
-                        <li class="argument-type"><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String" class="returnType " title="String" data-id="String">String</a></li>
+                        <li class="argument-type"><a href="https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String" class="returnType " title="String" data-id="String">Selection</a></li>
                       </ul>
                     </li></li>
                 </ul>
@@ -1671,10 +1671,10 @@
             </ul>
           </div>
           <div class="sideToggler">
-            <div id="ellipsis_Editor.getSelection" class="ellipsis_description"><p>Returns the currently highlighted selection.</p>
+            <div id="ellipsis_Editor.getSelection" class="ellipsis_description"><p>Returns selection object.</p>
 
             </div>
-            <div class="description"><p>Returns the currently highlighted selection.</p>
+            <div class="description"><p>Returns selection object.</p>
 
             </div>
           </div>
@@ -4686,4 +4686,4 @@ when such a character is typed in.</p>
   <script defer src="./resources/javascripts/disqus-ext.js"></script>
   <script defer src="./resources/javascripts/ga.js"></script>
   <div id="disqus_thread"></div>
-</div>
+</div>

+ 1 - 1
tools/ace-editor/build_support/editor.html

@@ -32,7 +32,7 @@
 <script>
     var editor = ace.edit("editor");
     editor.setTheme("ace/theme/twilight");
-    editor.getSession().setMode("ace/mode/javascript");
+    editor.session.setMode("ace/mode/javascript");
 </script>
 
 </body>

+ 2 - 0
tools/ace-editor/demo/kitchen-sink/styles.css

@@ -52,4 +52,6 @@ body {
     z-index: 10!important;
     opacity: 1!important;
     background: rgb(84, 0, 255)!important;
+    color: rgb(255, 255, 255)!important;
+    width: 10em!important;
 }*/

+ 2 - 2
tools/ace-editor/doc/site/js/main.js

@@ -39,7 +39,7 @@ $(function() {
             <div class="alert alert-error">\
               <button type="button" class="close" data-dismiss="alert">\xd7</button>\
               <strong>Oh No!</strong> Couldn\'t load <code>build/src/ace.js</code>.<br>\
-                You can build it by running <code>node Makefile.dryice.js</code><br>\
+                You can build it by running <code>npm install ; node Makefile.dryice.js</code><br>\
                 Or download older version by running <code>git submodule update --init --recursive</code><br>\
             </div>\
           </div>');
@@ -184,4 +184,4 @@ function highlight() {
         var mode = "ace/mode/" + (m[1] || m[2]);
         highlighter.highlight(el, {mode: mode, theme: "ace/theme/xcode"})
     });
-}
+}

+ 1 - 0
tools/ace-editor/lib/ace/ace.js

@@ -126,4 +126,5 @@ exports.createEditSession = function(text, mode) {
 }
 exports.EditSession = EditSession;
 exports.UndoManager = UndoManager;
+exports.version = "1.2.2";
 });

+ 1 - 1
tools/ace-editor/lib/ace/autocomplete/popup.js

@@ -232,7 +232,7 @@ var AcePopup = function(parentNode) {
         return selectionMarker.start.row;
     };
     popup.setRow = function(line) {
-        line = Math.max(-1, Math.min(this.data.length, line));
+        line = Math.max(0, Math.min(this.data.length, line));
         if (selectionMarker.start.row != line) {
             popup.selection.clearSelection();
             selectionMarker.start.row = selectionMarker.end.row = line || 0;

+ 5 - 5
tools/ace-editor/lib/ace/background_tokenizer_test.js

@@ -62,19 +62,19 @@ module.exports = {
         doc.setMode("./mode/javascript")  
         
         forceTokenize(doc)
-        testStates(doc, ["comment_regex_allowed", "start", "no_regex"])
+        testStates(doc, ["comment1", "start", "no_regex"])
         
         doc.remove(new Range(0,2,1,2))
         testStates(doc, [null, "no_regex"])
         
         forceTokenize(doc)
-        testStates(doc, ["comment_regex_allowed", "comment_regex_allowed"])
+        testStates(doc, ["comment1", "comment1"])
         
         doc.insert({row:0, column:2}, "\n*/")
-        testStates(doc, [undefined, undefined, "comment_regex_allowed"])
+        testStates(doc, [undefined, undefined, "comment1"])
         
         forceTokenize(doc)
-        testStates(doc, ["comment_regex_allowed", "start", "no_regex"])
+        testStates(doc, ["comment1", "start", "no_regex"])
     },
     "test background tokenizer sends update event" : function() {
         var doc = new EditSession([
@@ -100,7 +100,7 @@ module.exports = {
         }
         
         forceTokenize(doc);
-        var comment = "comment_regex_allowed";
+        var comment = "comment1";
         testStates(doc, [comment, comment, comment, "start"]);
         
         doc.remove(new Range(0,0,0,2));

+ 3 - 2
tools/ace-editor/lib/ace/commands/incremental_search_commands.js

@@ -175,7 +175,8 @@ oop.inherits(IncrementalSearchKeyboardHandler, HashHandler);
         var iSearch = this.$iSearch;
         HashHandler.call(this, exports.iSearchCommands, editor.commands.platform);
         this.$commandExecHandler = editor.commands.addEventListener('exec', function(e) {
-            if (!e.command.isIncrementalSearchCommand) return undefined;
+            if (!e.command.isIncrementalSearchCommand)
+                return iSearch.deactivate();
             e.stopPropagation();
             e.preventDefault();
             var scrollTop = editor.session.getScrollTop();
@@ -202,7 +203,7 @@ oop.inherits(IncrementalSearchKeyboardHandler, HashHandler);
             var extendCmd = this.commands.extendSearchTerm;
             if (extendCmd) { return {command: extendCmd, args: key}; }
         }
-        return {command: "null", passEvent: hashId == 0 || hashId == 4};
+        return false;
     };
 
 }).call(IncrementalSearchKeyboardHandler.prototype);

+ 3 - 3
tools/ace-editor/lib/ace/config.js

@@ -144,11 +144,11 @@ exports.loadModule = function(moduleName, onLoad) {
 
 // initialization
 function init(packaged) {
+    if (!global || !global.document)
+        return;
+    
     options.packaged = packaged || require.packaged || module.packaged || (global.define && define.packaged);
 
-    if (!global.document)
-        return "";
-
     var scriptOptions = {};
     var scriptUrl = "";
 

+ 151 - 151
tools/ace-editor/lib/ace/document.js

@@ -70,10 +70,10 @@ var Document = function(textOrLines) {
     oop.implement(this, EventEmitter);
 
     /**
-    * Replaces all the lines in the current `Document` with the value of `text`.
-    *
-    * @param {String} text The text to use
-    **/
+     * Replaces all the lines in the current `Document` with the value of `text`.
+     *
+     * @param {String} text The text to use
+     **/
     this.setValue = function(text) {
         var len = this.getLength() - 1;
         this.remove(new Range(0, 0, len, this.getLine(len).length));
@@ -81,30 +81,30 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Returns all the lines in the document as a single string, joined by the new line character.
-    **/
+     * Returns all the lines in the document as a single string, joined by the new line character.
+     **/
     this.getValue = function() {
         return this.getAllLines().join(this.getNewLineCharacter());
     };
 
     /** 
-    * Creates a new `Anchor` to define a floating point in the document.
-    * @param {Number} row The row number to use
-    * @param {Number} column The column number to use
-    *
-    **/
+     * Creates a new `Anchor` to define a floating point in the document.
+     * @param {Number} row The row number to use
+     * @param {Number} column The column number to use
+     *
+     **/
     this.createAnchor = function(row, column) {
         return new Anchor(this, row, column);
     };
 
     /** 
-    * Splits a string of text on any newline (`\n`) or carriage-return (`\r`) characters.
-    *
-    * @method $split
-    * @param {String} text The text to work with
-    * @returns {String} A String array, with each index containing a piece of the original `text` string.
-    *
-    **/
+     * Splits a string of text on any newline (`\n`) or carriage-return (`\r`) characters.
+     *
+     * @method $split
+     * @param {String} text The text to work with
+     * @returns {String} A String array, with each index containing a piece of the original `text` string.
+     *
+     **/
 
     // check for IE split bug
     if ("aaa".split(/a/).length === 0) {
@@ -125,12 +125,12 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Returns the newline character that's being used, depending on the value of `newLineMode`. 
-    * @returns {String} If `newLineMode == windows`, `\r\n` is returned.  
-    *  If `newLineMode == unix`, `\n` is returned.  
-    *  If `newLineMode == auto`, the value of `autoNewLine` is returned.
-    *
-    **/
+     * Returns the newline character that's being used, depending on the value of `newLineMode`. 
+     * @returns {String} If `newLineMode == windows`, `\r\n` is returned.  
+     *  If `newLineMode == unix`, `\n` is returned.  
+     *  If `newLineMode == auto`, the value of `autoNewLine` is returned.
+     *
+     **/
     this.getNewLineCharacter = function() {
         switch (this.$newLineMode) {
           case "windows":
@@ -158,71 +158,71 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * [Returns the type of newlines being used; either `windows`, `unix`, or `auto`]{: #Document.getNewLineMode}
-    * @returns {String}
-    **/
+     * [Returns the type of newlines being used; either `windows`, `unix`, or `auto`]{: #Document.getNewLineMode}
+     * @returns {String}
+     **/
     this.getNewLineMode = function() {
         return this.$newLineMode;
     };
 
     /**
-    * Returns `true` if `text` is a newline character (either `\r\n`, `\r`, or `\n`).
-    * @param {String} text The text to check
-    *
-    **/
+     * Returns `true` if `text` is a newline character (either `\r\n`, `\r`, or `\n`).
+     * @param {String} text The text to check
+     *
+     **/
     this.isNewLine = function(text) {
         return (text == "\r\n" || text == "\r" || text == "\n");
     };
 
     /**
-    * Returns a verbatim copy of the given line as it is in the document
-    * @param {Number} row The row index to retrieve
-    *
-    **/
+     * Returns a verbatim copy of the given line as it is in the document
+     * @param {Number} row The row index to retrieve
+     *
+     **/
     this.getLine = function(row) {
         return this.$lines[row] || "";
     };
 
     /**
-    * Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`.
-    * @param {Number} firstRow The first row index to retrieve
-    * @param {Number} lastRow The final row index to retrieve
-    *
-    **/
+     * Returns an array of strings of the rows between `firstRow` and `lastRow`. This function is inclusive of `lastRow`.
+     * @param {Number} firstRow The first row index to retrieve
+     * @param {Number} lastRow The final row index to retrieve
+     *
+     **/
     this.getLines = function(firstRow, lastRow) {
         return this.$lines.slice(firstRow, lastRow + 1);
     };
 
     /**
-    * Returns all lines in the document as string array.
-    **/
+     * Returns all lines in the document as string array.
+     **/
     this.getAllLines = function() {
         return this.getLines(0, this.getLength());
     };
 
     /**
-    * Returns the number of rows in the document.
-    **/
+     * Returns the number of rows in the document.
+     **/
     this.getLength = function() {
         return this.$lines.length;
     };
 
     /**
-    * Returns all the text within `range` as a single string.
-    * @param {Range} range The range to work with.
-    * 
-    * @returns {String}
-    **/
+     * Returns all the text within `range` as a single string.
+     * @param {Range} range The range to work with.
+     * 
+     * @returns {String}
+     **/
     this.getTextRange = function(range) {
         return this.getLinesForRange(range).join(this.getNewLineCharacter());
     };
     
     /**
-    * Returns all the text within `range` as an array of lines.
-    * @param {Range} range The range to work with.
-    * 
-    * @returns {Array}
-    **/
+     * Returns all the text within `range` as an array of lines.
+     * @param {Range} range The range to work with.
+     * 
+     * @returns {Array}
+     **/
     this.getLinesForRange = function(range) {
         var lines;
         if (range.start.row === range.end.row) {
@@ -254,12 +254,12 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Inserts a block of `text` at the indicated `position`.
-    * @param {Object} position The position to start inserting at; it's an object that looks like `{ row: row, column: column}`
-    * @param {String} text A chunk of text to insert
-    * @returns {Object} The position ({row, column}) of the last line of `text`. If the length of `text` is 0, this function simply returns `position`. 
-    *
-    **/
+     * Inserts a block of `text` at the indicated `position`.
+     * @param {Object} position The position to start inserting at; it's an object that looks like `{ row: row, column: column}`
+     * @param {String} text A chunk of text to insert
+     * @returns {Object} The position ({row, column}) of the last line of `text`. If the length of `text` is 0, this function simply returns `position`. 
+     *
+     **/
     this.insert = function(position, text) {
         // Only detect new lines if the document has no line break yet.
         if (this.getLength() <= 1)
@@ -269,19 +269,19 @@ var Document = function(textOrLines) {
     };
     
     /**
-    * Inserts `text` into the `position` at the current row. This method also triggers the `"change"` event.
-    * 
-    * This differs from the `insert` method in two ways:
-    *   1. This does NOT handle newline characters (single-line text only).
-    *   2. This is faster than the `insert` method for single-line text insertions.
-    * 
-    * @param {Object} position The position to insert at; it's an object that looks like `{ row: row, column: column}`
-    * @param {String} text A chunk of text
-    * @returns {Object} Returns an object containing the final row and column, like this:  
-    *     ```
-    *     {row: endRow, column: 0}
-    *     ```
-    **/
+     * Inserts `text` into the `position` at the current row. This method also triggers the `"change"` event.
+     * 
+     * This differs from the `insert` method in two ways:
+     *   1. This does NOT handle newline characters (single-line text only).
+     *   2. This is faster than the `insert` method for single-line text insertions.
+     * 
+     * @param {Object} position The position to insert at; it's an object that looks like `{ row: row, column: column}`
+     * @param {String} text A chunk of text
+     * @returns {Object} Returns an object containing the final row and column, like this:  
+     *     ```
+     *     {row: endRow, column: 0}
+     *     ```
+     **/
     this.insertInLine = function(position, text) {
         var start = this.clippedPos(position.row, position.column);
         var end = this.pos(position.row, position.column + text.length);
@@ -334,36 +334,36 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Fires whenever the document changes.
-    *
-    * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
-    *
-    *  * `"insert"`
-    *    * `range`: the [[Range]] of the change within the document
-    *    * `lines`: the lines being added
-    *  * `"remove"`
-    *    * `range`: the [[Range]] of the change within the document
-    *    * `lines`: the lines being removed
-    *
-    * @event change
-    * @param {Object} e Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
-    *
-    **/
+     * Fires whenever the document changes.
+     *
+     * Several methods trigger different `"change"` events. Below is a list of each action type, followed by each property that's also available:
+     *
+     *  * `"insert"`
+     *    * `range`: the [[Range]] of the change within the document
+     *    * `lines`: the lines being added
+     *  * `"remove"`
+     *    * `range`: the [[Range]] of the change within the document
+     *    * `lines`: the lines being removed
+     *
+     * @event change
+     * @param {Object} e Contains at least one property called `"action"`. `"action"` indicates the action that triggered the change. Each action also has a set of additional properties.
+     *
+     **/
     
     /**
-    * Inserts the elements in `lines` into the document as full lines (does not merge with existing line), starting at the row index given by `row`. This method also triggers the `"change"` event.
-    * @param {Number} row The index of the row to insert at
-    * @param {Array} lines An array of strings
-    * @returns {Object} Contains the final row and column, like this:  
-    *   ```
-    *   {row: endRow, column: 0}
-    *   ```  
-    *   If `lines` is empty, this function returns an object containing the current row, and column, like this:  
-    *   ``` 
-    *   {row: row, column: 0}
-    *   ```
-    *
-    **/
+     * Inserts the elements in `lines` into the document as full lines (does not merge with existing line), starting at the row index given by `row`. This method also triggers the `"change"` event.
+     * @param {Number} row The index of the row to insert at
+     * @param {Array} lines An array of strings
+     * @returns {Object} Contains the final row and column, like this:  
+     *   ```
+     *   {row: endRow, column: 0}
+     *   ```  
+     *   If `lines` is empty, this function returns an object containing the current row, and column, like this:  
+     *   ``` 
+     *   {row: row, column: 0}
+     *   ```
+     *
+     **/
     this.insertFullLines = function(row, lines) {
         // Clip to document.
         // Allow one past the document end.
@@ -387,19 +387,19 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Inserts the elements in `lines` into the document, starting at the position index given by `row`. This method also triggers the `"change"` event.
-    * @param {Number} row The index of the row to insert at
-    * @param {Array} lines An array of strings
-    * @returns {Object} Contains the final row and column, like this:  
-    *   ```
-    *   {row: endRow, column: 0}
-    *   ```  
-    *   If `lines` is empty, this function returns an object containing the current row, and column, like this:  
-    *   ``` 
-    *   {row: row, column: 0}
-    *   ```
-    *
-    **/    
+     * Inserts the elements in `lines` into the document, starting at the position index given by `row`. This method also triggers the `"change"` event.
+     * @param {Number} row The index of the row to insert at
+     * @param {Array} lines An array of strings
+     * @returns {Object} Contains the final row and column, like this:  
+     *   ```
+     *   {row: endRow, column: 0}
+     *   ```  
+     *   If `lines` is empty, this function returns an object containing the current row, and column, like this:  
+     *   ``` 
+     *   {row: row, column: 0}
+     *   ```
+     *
+     **/    
     this.insertMergedLines = function(position, lines) {
         var start = this.clippedPos(position.row, position.column);
         var end = {
@@ -418,11 +418,11 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Removes the `range` from the document.
-    * @param {Range} range A specified Range to remove
-    * @returns {Object} Returns the new `start` property of the range, which contains `startRow` and `startColumn`. If `range` is empty, this function returns the unmodified value of `range.start`.
-    *
-    **/
+     * Removes the `range` from the document.
+     * @param {Range} range A specified Range to remove
+     * @returns {Object} Returns the new `start` property of the range, which contains `startRow` and `startColumn`. If `range` is empty, this function returns the unmodified value of `range.start`.
+     *
+     **/
     this.remove = function(range) {
         var start = this.clippedPos(range.start.row, range.start.column);
         var end = this.clippedPos(range.end.row, range.end.column);
@@ -458,12 +458,12 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Removes a range of full lines. This method also triggers the `"change"` event.
-    * @param {Number} firstRow The first row to be removed
-    * @param {Number} lastRow The last row to be removed
-    * @returns {[String]} Returns all the removed lines.
-    *
-    **/
+     * Removes a range of full lines. This method also triggers the `"change"` event.
+     * @param {Number} firstRow The first row to be removed
+     * @param {Number} lastRow The last row to be removed
+     * @returns {[String]} Returns all the removed lines.
+     *
+     **/
     this.removeFullLines = function(firstRow, lastRow) {
         // Clip to document.
         firstRow = Math.min(Math.max(0, firstRow), this.getLength() - 1);
@@ -495,10 +495,10 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Removes the new line between `row` and the row immediately following it. This method also triggers the `"change"` event.
-    * @param {Number} row The row to check
-    *
-    **/
+     * Removes the new line between `row` and the row immediately following it. This method also triggers the `"change"` event.
+     * @param {Number} row The row to check
+     *
+     **/
     this.removeNewLine = function(row) {
         if (row < this.getLength() - 1 && row >= 0) {
             this.applyDelta({
@@ -511,17 +511,17 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Replaces a range in the document with the new `text`.
-    * @param {Range} range A specified Range to replace
-    * @param {String} text The new text to use as a replacement
-    * @returns {Object} Returns an object containing the final row and column, like this:
-    *     {row: endRow, column: 0}
-    * If the text and range are empty, this function returns an object containing the current `range.start` value.
-    * If the text is the exact same as what currently exists, this function returns an object containing the current `range.end` value.
-    *
-    **/
+     * Replaces a range in the document with the new `text`.
+     * @param {Range} range A specified Range to replace
+     * @param {String} text The new text to use as a replacement
+     * @returns {Object} Returns an object containing the final row and column, like this:
+     *     {row: endRow, column: 0}
+     * If the text and range are empty, this function returns an object containing the current `range.start` value.
+     * If the text is the exact same as what currently exists, this function returns an object containing the current `range.end` value.
+     *
+     **/
     this.replace = function(range, text) {
-        if (!range instanceof Range)
+        if (!(range instanceof Range))
             range = Range.fromPoints(range.start, range.end);
         if (text.length === 0 && range.isEmpty())
             return range.start;
@@ -544,9 +544,9 @@ var Document = function(textOrLines) {
     };
 
     /**
-    * Applies all changes in `deltas` to the document.
-    * @param {Array} deltas An array of delta objects (can include "insert" and "remove" actions)
-    **/
+     * Applies all changes in `deltas` to the document.
+     * @param {Array} deltas An array of delta objects (can include "insert" and "remove" actions)
+     **/
     this.applyDeltas = function(deltas) {
         for (var i=0; i<deltas.length; i++) {
             this.applyDelta(deltas[i]);
@@ -554,9 +554,9 @@ var Document = function(textOrLines) {
     };
     
     /**
-    * Reverts all changes in `deltas` from the document.
-    * @param {Array} deltas An array of delta objects (can include "insert" and "remove" actions)
-    **/
+     * Reverts all changes in `deltas` from the document.
+     * @param {Array} deltas An array of delta objects (can include "insert" and "remove" actions)
+     **/
     this.revertDeltas = function(deltas) {
         for (var i=deltas.length-1; i>=0; i--) {
             this.revertDelta(deltas[i]);
@@ -564,9 +564,9 @@ var Document = function(textOrLines) {
     };
     
     /**
-    * Applies `delta` to the document.
-    * @param {Object} delta A delta object (can include "insert" and "remove" actions)
-    **/
+     * Applies `delta` to the document.
+     * @param {Object} delta A delta object (can include "insert" and "remove" actions)
+     **/
     this.applyDelta = function(delta, doNotValidate) {
         var isInsert = delta.action == "insert";
         // An empty range is a NOOP.
@@ -620,9 +620,9 @@ var Document = function(textOrLines) {
     };
     
     /**
-    * Reverts `delta` from the document.
-    * @param {Object} delta A delta object (can include "insert" and "remove" actions)
-    **/
+     * Reverts `delta` from the document.
+     * @param {Object} delta A delta object (can include "insert" and "remove" actions)
+     **/
     this.revertDelta = function(delta) {
         this.applyDelta({
             start: this.clonePos(delta.start),

Dosya farkı çok büyük olduğundan ihmal edildi
+ 283 - 313
tools/ace-editor/lib/ace/edit_session.js


+ 15 - 15
tools/ace-editor/lib/ace/edit_session/folding.js

@@ -119,7 +119,7 @@ function Folding() {
             var folds = this.getFoldsInRange(ranges);
         }
         return folds;
-    }
+    };
     
     /*
      * Returns all folds in the document
@@ -229,15 +229,15 @@ function Folding() {
                 end = foldLine.end.row,
                 start = foldLine.start.row;
             if (end >= last) {
-                if(start < last) {
-                    if(start >= first)
+                if (start < last) {
+                    if (start >= first)
                         rowCount -= last-start;
                     else
-                        rowCount = 0;//in one fold
+                        rowCount = 0; // in one fold
                 }
                 break;
-            } else if(end >= first){
-                if (start >= first) //fold inside range
+            } else if (end >= first){
+                if (start >= first) // fold inside range
                     rowCount -=  end-start;
                 else
                     rowCount -=  end-first+1;
@@ -340,7 +340,7 @@ function Folding() {
 
         // Notify that fold data has changed.
         this.$modified = true;
-        this._emit("changeFold", { data: fold, action: "add" });
+        this._signal("changeFold", { data: fold, action: "add" });
 
         return fold;
     };
@@ -401,7 +401,7 @@ function Folding() {
         
         // Notify that fold data has changed.
         this.$modified = true;
-        this._emit("changeFold", { data: fold, action: "remove" });
+        this._signal("changeFold", { data: fold, action: "remove" });
     };
 
     this.removeFolds = function(folds) {
@@ -593,7 +593,7 @@ function Folding() {
         var placeholder = "...";
         if (!range.isMultiLine()) {
             placeholder = this.getTextRange(range);
-            if(placeholder.length < 4)
+            if (placeholder.length < 4)
                 return;
             placeholder = placeholder.trim().substring(0, 2) + "..";
         }
@@ -610,7 +610,7 @@ function Folding() {
             if (dir != 1) {
                 do {
                     token = iterator.stepBackward();
-                } while(token && re.test(token.type));
+                } while (token && re.test(token.type));
                 iterator.stepForward();
             }
             
@@ -622,7 +622,7 @@ function Folding() {
             if (dir != -1) {
                 do {
                     token = iterator.stepForward();
-                } while(token && re.test(token.type));
+                } while (token && re.test(token.type));
                 token = iterator.stepBackward();
             } else
                 token = iterator.getCurrentToken();
@@ -698,7 +698,7 @@ function Folding() {
         
         this.off('change', this.$updateFoldWidgets);
         this.off('tokenizerUpdate', this.$tokenizerUpdateFoldWidgets);
-        this._emit("changeAnnotation");
+        this._signal("changeAnnotation");
         
         if (!foldMode || this.$foldStyle == "manual") {
             this.foldWidgets = null;
@@ -740,7 +740,7 @@ function Folding() {
             range: i !== -1 && range,
             firstRange: firstRange
         };
-    }
+    };
 
     this.onFoldWidgetClick = function(row, e) {
         e = e.domEvent;
@@ -752,7 +752,7 @@ function Folding() {
         
         var range = this.$toggleFoldWidget(row, options);
         if (!range) {
-            var el = (e.target || e.srcElement)
+            var el = (e.target || e.srcElement);
             if (el && /ace_fold-widget/.test(el.className))
                 el.className += " ace_invalid";
         }
@@ -849,7 +849,7 @@ function Folding() {
             if (this.foldWidgets.length > rows.first)
                 this.foldWidgets.splice(rows.first, this.foldWidgets.length);
         }
-    }
+    };
 }
 
 exports.Folding = Folding;

+ 41 - 36
tools/ace-editor/lib/ace/editor.js

@@ -285,76 +285,76 @@ var Editor = function(renderer, session) {
 
         var oldSession = this.session;
         if (oldSession) {
-            this.session.removeEventListener("change", this.$onDocumentChange);
-            this.session.removeEventListener("changeMode", this.$onChangeMode);
-            this.session.removeEventListener("tokenizerUpdate", this.$onTokenizerUpdate);
-            this.session.removeEventListener("changeTabSize", this.$onChangeTabSize);
-            this.session.removeEventListener("changeWrapLimit", this.$onChangeWrapLimit);
-            this.session.removeEventListener("changeWrapMode", this.$onChangeWrapMode);
-            this.session.removeEventListener("onChangeFold", this.$onChangeFold);
-            this.session.removeEventListener("changeFrontMarker", this.$onChangeFrontMarker);
-            this.session.removeEventListener("changeBackMarker", this.$onChangeBackMarker);
-            this.session.removeEventListener("changeBreakpoint", this.$onChangeBreakpoint);
-            this.session.removeEventListener("changeAnnotation", this.$onChangeAnnotation);
-            this.session.removeEventListener("changeOverwrite", this.$onCursorChange);
-            this.session.removeEventListener("changeScrollTop", this.$onScrollTopChange);
-            this.session.removeEventListener("changeScrollLeft", this.$onScrollLeftChange);
+            this.session.off("change", this.$onDocumentChange);
+            this.session.off("changeMode", this.$onChangeMode);
+            this.session.off("tokenizerUpdate", this.$onTokenizerUpdate);
+            this.session.off("changeTabSize", this.$onChangeTabSize);
+            this.session.off("changeWrapLimit", this.$onChangeWrapLimit);
+            this.session.off("changeWrapMode", this.$onChangeWrapMode);
+            this.session.off("changeFold", this.$onChangeFold);
+            this.session.off("changeFrontMarker", this.$onChangeFrontMarker);
+            this.session.off("changeBackMarker", this.$onChangeBackMarker);
+            this.session.off("changeBreakpoint", this.$onChangeBreakpoint);
+            this.session.off("changeAnnotation", this.$onChangeAnnotation);
+            this.session.off("changeOverwrite", this.$onCursorChange);
+            this.session.off("changeScrollTop", this.$onScrollTopChange);
+            this.session.off("changeScrollLeft", this.$onScrollLeftChange);
 
             var selection = this.session.getSelection();
-            selection.removeEventListener("changeCursor", this.$onCursorChange);
-            selection.removeEventListener("changeSelection", this.$onSelectionChange);
+            selection.off("changeCursor", this.$onCursorChange);
+            selection.off("changeSelection", this.$onSelectionChange);
         }
 
         this.session = session;
         if (session) {
             this.$onDocumentChange = this.onDocumentChange.bind(this);
-            session.addEventListener("change", this.$onDocumentChange);
+            session.on("change", this.$onDocumentChange);
             this.renderer.setSession(session);
     
             this.$onChangeMode = this.onChangeMode.bind(this);
-            session.addEventListener("changeMode", this.$onChangeMode);
+            session.on("changeMode", this.$onChangeMode);
     
             this.$onTokenizerUpdate = this.onTokenizerUpdate.bind(this);
-            session.addEventListener("tokenizerUpdate", this.$onTokenizerUpdate);
+            session.on("tokenizerUpdate", this.$onTokenizerUpdate);
     
             this.$onChangeTabSize = this.renderer.onChangeTabSize.bind(this.renderer);
-            session.addEventListener("changeTabSize", this.$onChangeTabSize);
+            session.on("changeTabSize", this.$onChangeTabSize);
     
             this.$onChangeWrapLimit = this.onChangeWrapLimit.bind(this);
-            session.addEventListener("changeWrapLimit", this.$onChangeWrapLimit);
+            session.on("changeWrapLimit", this.$onChangeWrapLimit);
     
             this.$onChangeWrapMode = this.onChangeWrapMode.bind(this);
-            session.addEventListener("changeWrapMode", this.$onChangeWrapMode);
+            session.on("changeWrapMode", this.$onChangeWrapMode);
     
             this.$onChangeFold = this.onChangeFold.bind(this);
-            session.addEventListener("changeFold", this.$onChangeFold);
+            session.on("changeFold", this.$onChangeFold);
     
             this.$onChangeFrontMarker = this.onChangeFrontMarker.bind(this);
-            this.session.addEventListener("changeFrontMarker", this.$onChangeFrontMarker);
+            this.session.on("changeFrontMarker", this.$onChangeFrontMarker);
     
             this.$onChangeBackMarker = this.onChangeBackMarker.bind(this);
-            this.session.addEventListener("changeBackMarker", this.$onChangeBackMarker);
+            this.session.on("changeBackMarker", this.$onChangeBackMarker);
     
             this.$onChangeBreakpoint = this.onChangeBreakpoint.bind(this);
-            this.session.addEventListener("changeBreakpoint", this.$onChangeBreakpoint);
+            this.session.on("changeBreakpoint", this.$onChangeBreakpoint);
     
             this.$onChangeAnnotation = this.onChangeAnnotation.bind(this);
-            this.session.addEventListener("changeAnnotation", this.$onChangeAnnotation);
+            this.session.on("changeAnnotation", this.$onChangeAnnotation);
     
             this.$onCursorChange = this.onCursorChange.bind(this);
-            this.session.addEventListener("changeOverwrite", this.$onCursorChange);
+            this.session.on("changeOverwrite", this.$onCursorChange);
     
             this.$onScrollTopChange = this.onScrollTopChange.bind(this);
-            this.session.addEventListener("changeScrollTop", this.$onScrollTopChange);
+            this.session.on("changeScrollTop", this.$onScrollTopChange);
     
             this.$onScrollLeftChange = this.onScrollLeftChange.bind(this);
-            this.session.addEventListener("changeScrollLeft", this.$onScrollLeftChange);
+            this.session.on("changeScrollLeft", this.$onScrollLeftChange);
     
             this.selection = session.getSelection();
-            this.selection.addEventListener("changeCursor", this.$onCursorChange);
+            this.selection.on("changeCursor", this.$onCursorChange);
     
             this.$onSelectionChange = this.onSelectionChange.bind(this);
-            this.selection.addEventListener("changeSelection", this.$onSelectionChange);
+            this.selection.on("changeSelection", this.$onSelectionChange);
     
             this.onChangeMode();
     
@@ -429,7 +429,7 @@ var Editor = function(renderer, session) {
     /**
      *
      * Returns the currently highlighted selection.
-     * @returns {String} The highlighted selection
+     * @returns {Selection} The selection object
      **/
     this.getSelection = function() {
         return this.selection;
@@ -2588,9 +2588,9 @@ var Editor = function(renderer, session) {
             if (enable)
                 return;
             delete this.setAutoScrollEditorIntoView;
-            this.removeEventListener("changeSelection", onChangeSelection);
-            this.renderer.removeEventListener("afterRender", onAfterRender);
-            this.renderer.removeEventListener("beforeRender", onBeforeRender);
+            this.off("changeSelection", onChangeSelection);
+            this.renderer.off("afterRender", onAfterRender);
+            this.renderer.off("beforeRender", onBeforeRender);
         };
     };
 
@@ -2647,6 +2647,11 @@ config.defineOptions(Editor.prototype, "editor", {
     autoScrollEditorIntoView: {
         set: function(val) {this.setAutoScrollEditorIntoView(val)}
     },
+    keyboardHandler: {
+        set: function(val) { this.setKeyboardHandler(val); },
+        get: function() { return this.keybindingId; },
+        handlesSet: true
+    },
 
     hScrollBarAlwaysVisible: "renderer",
     vScrollBarAlwaysVisible: "renderer",

+ 42 - 15
tools/ace-editor/lib/ace/ext/emmet.js

@@ -212,7 +212,7 @@ AceEmmetEditor.prototype = {
      * @return {String}
      */
     getProfileName: function() {
-        switch(this.getSyntax()) {
+        switch (this.getSyntax()) {
           case "css": return "css";
           case "xml":
           case "xsl":
@@ -223,8 +223,10 @@ AceEmmetEditor.prototype = {
             if (!profile)
                 profile = this.ace.session.getLines(0,2).join("").search(/<!DOCTYPE[^>]+XHTML/i) != -1 ? "xhtml": "html";
             return profile;
+          default:
+            var mode = this.ace.session.$mode;
+            return mode.emmetConfig && mode.emmetConfig.profile || "xhtml";
         }
-        return "xhtml";
     },
 
     /**
@@ -341,11 +343,9 @@ var keymap = {
 
 var editorProxy = new AceEmmetEditor();
 exports.commands = new HashHandler();
-exports.runEmmetCommand = function(editor) {
+exports.runEmmetCommand = function runEmmetCommand(editor) {
     try {
         editorProxy.setupContext(editor);
-        if (editorProxy.getSyntax() == "php")
-            return false;
         var actions = emmet.require("actions");
     
         if (this.action == "expand_abbreviation_with_tab") {
@@ -367,6 +367,10 @@ exports.runEmmetCommand = function(editor) {
         
         var result = actions.run(this.action, editorProxy);
     } catch(e) {
+        if (!emmet) {
+            load(runEmmetCommand.bind(this, editor));
+            return true;
+        }
         editor._signal("changeStatus", typeof e == "string" ? e : e.message);
         console.log(e);
         result = false;
@@ -392,27 +396,50 @@ exports.updateCommands = function(editor, enabled) {
     }
 };
 
-exports.isSupportedMode = function(modeId) {
-    return modeId && /css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(modeId);
+exports.isSupportedMode = function(mode) {
+    if (!mode) return false;
+    if (mode.emmetConfig) return true;
+    var id = mode.$id || mode;
+    return /css|less|scss|sass|stylus|html|php|twig|ejs|handlebars/.test(id);
 };
 
+exports.isAvailable = function(editor, command) {
+    if (/(evaluate_math_expression|expand_abbreviation)$/.test(command))
+        return true;
+    var mode = editor.session.$mode;
+    var isSupported = exports.isSupportedMode(mode);
+    if (isSupported && mode.$modes) {
+        // TODO refactor mode delegates to make this simpler
+        try {
+            editorProxy.setupContext(editor);
+            if (/js|php/.test(editorProxy.getSyntax()))
+                isSupported = false;
+        } catch(e) {}
+    }
+    return isSupported;
+}
+
 var onChangeMode = function(e, target) {
     var editor = target;
     if (!editor)
         return;
-    var enabled = exports.isSupportedMode(editor.session.$modeId);
+    var enabled = exports.isSupportedMode(editor.session.$mode);
     if (e.enableEmmet === false)
         enabled = false;
-    if (enabled) {
-        if (typeof emmetPath == "string") {
-            require("ace/config").loadModule(emmetPath, function() {
-                emmetPath = null;
-            });
-        }
-    }
+    if (enabled)
+        load();
     exports.updateCommands(editor, enabled);
 };
 
+var load = function(cb) {
+    if (typeof emmetPath == "string") {
+        require("ace/config").loadModule(emmetPath, function() {
+            emmetPath = null;
+            cb && cb();
+        });
+    }
+};
+
 exports.AceEmmetEditor = AceEmmetEditor;
 require("ace/config").defineOptions(Editor.prototype, "editor", {
     enableEmmet: {

+ 6 - 3
tools/ace-editor/lib/ace/ext/error_marker.js

@@ -98,7 +98,9 @@ exports.showErrorMarker = function(editor, dir) {
     
     var pos = editor.getCursorPosition();
     var row = pos.row;
-    var oldWidget = session.lineWidgets && session.lineWidgets[row];
+    var oldWidget = session.widgetManager.getWidgetsAtRow(row).filter(function(w) {
+        return w.type == "errorMarker";
+    })[0];
     if (oldWidget) {
         oldWidget.destroy();
     } else {
@@ -128,7 +130,8 @@ exports.showErrorMarker = function(editor, dir) {
         row: pos.row, 
         fixedWidth: true,
         coverGutter: true,
-        el: dom.createElement("div")
+        el: dom.createElement("div"),
+        type: "errorMarker"
     };
     var el = w.el.appendChild(dom.createElement("div"));
     var arrow = w.el.appendChild(dom.createElement("div"));
@@ -211,4 +214,4 @@ dom.importCssString("\
     }\
 ", "");
 
-});
+});

+ 2 - 2
tools/ace-editor/lib/ace/ext/menu_tools/generate_settings_menu.js

@@ -93,7 +93,7 @@ module.exports.generateSettingsMenu = function generateSettingsMenu (editor) {
         });
         
         var el = topmenu.appendChild(document.createElement('div'));
-        var version = "1.2.0";
+        var version = require("../../ace").version;
         el.style.padding = "1em";
         el.textContent = "Ace version " + version;
         
@@ -261,4 +261,4 @@ module.exports.generateSettingsMenu = function generateSettingsMenu (editor) {
     return wrapElements();
 };
 
-});
+});

+ 12 - 8
tools/ace-editor/lib/ace/ext/modelist.js

@@ -25,12 +25,13 @@ var Mode = function(name, caption, extensions) {
     this.caption = caption;
     this.mode = "ace/mode/" + name;
     this.extensions = extensions;
+    var re;
     if (/\^/.test(extensions)) {
-        var re = extensions.replace(/\|(\^)?/g, function(a, b){
+        re = extensions.replace(/\|(\^)?/g, function(a, b){
             return "$|" + (b ? "^" : "^.*\\.");
         }) + "$";
     } else {
-        var re = "^.*\\.(" + extensions + ")$";
+        re = "^.*\\.(" + extensions + ")$";
     }
 
     this.extRe = new RegExp(re, "gi");
@@ -48,11 +49,11 @@ var supportedModes = {
     ADA:         ["ada|adb"],
     Apache_Conf: ["^htaccess|^htgroups|^htpasswd|^conf|htaccess|htgroups|htpasswd"],
     AsciiDoc:    ["asciidoc|adoc"],
-    Assembly_x86:["asm"],
+    Assembly_x86:["asm|a"],
     AutoHotKey:  ["ahk"],
     BatchFile:   ["bat|cmd"],
+    C_Cpp:       ["cpp|c|cc|cxx|h|hh|hpp|ino"],
     C9Search:    ["c9search_results"],
-    C_Cpp:       ["cpp|c|cc|cxx|h|hh|hpp"],
     Cirru:       ["cirru|cr"],
     Clojure:     ["clj|cljs"],
     Cobol:       ["CBL|COB"],
@@ -68,7 +69,7 @@ var supportedModes = {
     Dot:         ["dot"],
     Dummy:       ["dummy"],
     DummySyntax: ["dummy"],
-    Eiffel:      ["e"],
+    Eiffel:      ["e|ge"],
     EJS:         ["ejs"],
     Elixir:      ["ex|exs"],
     Elm:         ["elm"],
@@ -88,12 +89,13 @@ var supportedModes = {
     Hive:        ["hql|q|ql"],
     HTML:        ["html|htm|xhtml"],
     HTML_Ruby:   ["erb|rhtml|html.erb"],
+    HTML_Elixir: ["eex|html.eex"],
     INI:         ["ini|conf|cfg|prefs"],
     Io:          ["io"],
     Jack:        ["jack"],
     Jade:        ["jade"],
     Java:        ["java"],
-    JavaScript:  ["js|jsm"],
+    JavaScript:  ["js|jsm|jsx"],
     JSON:        ["json"],
     JSONiq:      ["jq"],
     JSP:         ["jsp"],
@@ -140,7 +142,7 @@ var supportedModes = {
     SASS:        ["sass"],
     SCAD:        ["scad"],
     Scala:       ["scala"],
-    Scheme:      ["scm|rkt"],
+    Scheme:      ["scm|sm|rkt|oak|scheme"],
     SCSS:        ["scss"],
     SH:          ["sh|bash|^.bashrc"],
     SJS:         ["sjs"],
@@ -152,12 +154,13 @@ var supportedModes = {
     SQLServer:   ["sqlserver"],
     Stylus:      ["styl|stylus"],
     SVG:         ["svg"],
+    Swift:       ["swift"],
     Tcl:         ["tcl"],
     Tex:         ["tex"],
     Text:        ["txt"],
     Textile:     ["textile"],
     Toml:        ["toml"],
-    Twig:        ["twig"],
+    Twig:        ["twig|swig"],
     Typescript:  ["ts|typescript|str"],
     Vala:        ["vala"],
     VBScript:    ["vbs|vb"],
@@ -178,6 +181,7 @@ var nameOverrides = {
     C_Cpp: "C and C++",
     coffee: "CoffeeScript",
     HTML_Ruby: "HTML (Ruby)",
+    HTML_Elixir: "HTML (Elixir)",
     FTL: "FreeMarker"
 };
 var modesByName = {};

+ 1 - 2
tools/ace-editor/lib/ace/ext/searchbox.css

@@ -63,7 +63,6 @@
     float: left;
     height: 22px;
     margin: 0;
-    padding: 0;
     position: relative;
 }
 .ace_searchbtn:last-child,
@@ -150,4 +149,4 @@
     -o-user-select: none;
     -ms-user-select: none;
     user-select: none;
-}
+}

Bu fark içinde çok fazla dosya değişikliği olduğu için bazı dosyalar gösterilmiyor