Sha256: 19d340ac471f5ec806b4b6a91a95b788dca30211dc4bb4928eac5773c904a27b

Contents?: true

Size: 1.46 KB

Versions: 16

Compression:

Stored size: 1.46 KB

Contents

(function() {

  // Applies automatic formatting to the specified range
  CodeMirror.defineExtension("autoFormatAll", function (from, to) {
    var cm = this;
    var outer = cm.getMode(), text = cm.getRange(from, to).split("\n");
    var state = CodeMirror.copyState(outer, cm.getTokenAt(from).state);
    var tabSize = cm.getOption("tabSize");

    var out = "", lines = 0, atSol = from.ch == 0;
    function newline() {
      out += "\n";
      atSol = true;
      ++lines;
    }

    for (var i = 0; i < text.length; ++i) {
      var stream = new CodeMirror.StringStream(text[i], tabSize);
      while (!stream.eol()) {
        var inner = CodeMirror.innerMode(outer, state);
        var style = outer.token(stream, state), cur = stream.current();
        stream.start = stream.pos;
        if (!atSol || /\S/.test(cur)) {
          out += cur;
          atSol = false;
        }
        if (!atSol && inner.mode.newlineAfterToken &&
            inner.mode.newlineAfterToken(style, cur, stream.string.slice(stream.pos) || text[i+1] || "", inner.state))
          newline();
      }
      if (!stream.pos && outer.blankLine) outer.blankLine(state);
      if (!atSol && i < text.length - 1) newline();
    }

    cm.operation(function () {
      cm.replaceRange(out, from, to);
      for (var cur = from.line + 1, end = from.line + lines; cur <= end; ++cur)
        cm.indentLine(cur, "smart");
		
		cm.setCursor({ line:0, ch:0 });
    });
  });
})();

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
glebtv-ckeditor-4.6.0 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1.7 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1.6 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1.5 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1.4 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1.3 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1.2 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1.1 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.1.1 app/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.0.2.7 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.0.2.6 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.0.2.5 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.0.2.4 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.0.2.2 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.0.2.1 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js
glebtv-ckeditor-4.0.2 vendor/assets/javascripts/ckeditor/plugins/codemirror/js/addon/format/autoFormatAll.js