1
0

editor.js 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. /*function initAce(callback,data){
  2. data=data||{};
  3. addScript({src:'lib/ace-min-noconflict/ace.js'},function(){
  4. var T=ace.edit('eCode'),s=T.getSession();
  5. T.setTheme('ace/theme/github');
  6. T.setValueAndFocus=function(v){
  7. T.setValue(v);T.focus();T.gotoLine(0,0);
  8. };
  9. s.setMode('ace/mode/javascript');
  10. s.setUseSoftTabs(false);
  11. s.setUseWrapMode(true);
  12. s.setUseWorker(true);
  13. T.clearHistory=s.getUndoManager().reset;
  14. if(data.onchange) s.on('change',data.onchange);
  15. if(data.save) T.commands.addCommand({
  16. name:'Save',
  17. bindKey:{win:'Ctrl-S',mac:'Command-S'},
  18. exec:data.save,
  19. readOnly:false,
  20. });
  21. if(data.exit) T.commands.addCommand({
  22. name:'Exit',
  23. bindKey:{win:'Esc'},
  24. exec:data.exit,
  25. readOnly:true,
  26. });
  27. if(data.readonly) T.setReadOnly(data.readonly);
  28. callback(T);
  29. });
  30. }*/
  31. function initCodeMirror(callback,data){
  32. data=data||{};
  33. addCSS([
  34. {href:'lib/CodeMirror/lib/codemirror.css'},
  35. {href:'mylib/CodeMirror/fold.css'},
  36. {href:'mylib/CodeMirror/search.css'},
  37. ]);
  38. addScript({src:'lib/CodeMirror/lib/codemirror.js'},function(){
  39. addScript([
  40. {src:'lib/CodeMirror/mode/javascript/javascript.js'},
  41. {src:'lib/CodeMirror/addon/comment/continuecomment.js'},
  42. {src:'lib/CodeMirror/addon/edit/matchbrackets.js'},
  43. {src:'lib/CodeMirror/addon/edit/closebrackets.js'},
  44. {src:'lib/CodeMirror/addon/fold/foldcode.js'},
  45. {src:'lib/CodeMirror/addon/fold/foldgutter.js'},
  46. {src:'lib/CodeMirror/addon/fold/brace-fold.js'},
  47. {src:'lib/CodeMirror/addon/fold/comment-fold.js'},
  48. {src:'lib/CodeMirror/addon/search/match-highlighter.js'},
  49. {src:'lib/CodeMirror/addon/search/searchcursor.js'},
  50. {src:'lib/CodeMirror/addon/selection/active-line.js'},
  51. {src:'mylib/CodeMirror/search.js'},
  52. ],function(){
  53. CodeMirror.keyMap.vm={'fallthrough':'default'};
  54. if(data.save) {
  55. CodeMirror.keyMap.vm['Ctrl-S']='save';
  56. CodeMirror.commands.save=data.save;
  57. }
  58. if(data.exit) {
  59. CodeMirror.keyMap.vm['Esc']='exit';
  60. CodeMirror.commands.exit=data.exit;
  61. }
  62. var T=CodeMirror($('eCode'),{
  63. continueComments:true,
  64. matchBrackets:true,
  65. autoCloseBrackets:true,
  66. highlightSelectionMatches:true,
  67. lineNumbers:true,
  68. mode:'javascript',
  69. lineWrapping:true,
  70. indentUnit:4,
  71. indentWithTabs:true,
  72. keyMap:'vm',
  73. styleActiveLine:true,
  74. foldGutter:true,
  75. gutters:['CodeMirror-linenumbers','CodeMirror-foldgutter'],
  76. });
  77. T.clearHistory=function(){T.getDoc().clearHistory();};
  78. T.setValueAndFocus=function(v){T.setValue(v);T.focus();};
  79. T.getWrapperElement().setAttribute('style','position:absolute;height:100%;width:100%;');
  80. if(data.onchange) T.on('change',data.onchange);
  81. if(data.readonly) T.setOption('readOnly',data.readonly);
  82. callback(T);
  83. });
  84. });
  85. }
  86. var initEditor=initCodeMirror;