Sha256: 975f6a420764819657785762ebc0a738edebc59d6bcbfe62a527e0baabca1100

Contents?: true

Size: 1.83 KB

Versions: 12

Compression:

Stored size: 1.83 KB

Contents

(function() {
  "use strict";

  CodeMirror.defineOption("matchTags", false, function(cm, val, old) {
    if (old && old != CodeMirror.Init) {
      cm.off("cursorActivity", doMatchTags);
      cm.off("viewportChange", maybeUpdateMatch);
      clear(cm);
    }
    if (val) {
      cm.state.matchBothTags = typeof val == "object" && val.bothTags;
      cm.on("cursorActivity", doMatchTags);
      cm.on("viewportChange", maybeUpdateMatch);
      doMatchTags(cm);
    }
  });

  function clear(cm) {
    if (cm.state.tagHit) cm.state.tagHit.clear();
    if (cm.state.tagOther) cm.state.tagOther.clear();
    cm.state.tagHit = cm.state.tagOther = null;
  }

  function doMatchTags(cm) {
    cm.state.failedTagMatch = false;
    cm.operation(function() {
      clear(cm);
      if (cm.somethingSelected()) return;
      var cur = cm.getCursor(), range = cm.getViewport();
      range.from = Math.min(range.from, cur.line); range.to = Math.max(cur.line + 1, range.to);
      var match = CodeMirror.findMatchingTag(cm, cur, range);
      if (!match) return;
      if (cm.state.matchBothTags) {
        var hit = match.at == "open" ? match.open : match.close;
        if (hit) cm.state.tagHit = cm.markText(hit.from, hit.to, {className: "CodeMirror-matchingtag"});
      }
      var other = match.at == "close" ? match.open : match.close;
      if (other)
        cm.state.tagOther = cm.markText(other.from, other.to, {className: "CodeMirror-matchingtag"});
      else
        cm.state.failedTagMatch = true;
    });
  }

  function maybeUpdateMatch(cm) {
    if (cm.state.failedTagMatch) doMatchTags(cm);
  }

  CodeMirror.commands.toMatchingTag = function(cm) {
    var found = CodeMirror.findMatchingTag(cm, cm.getCursor());
    if (found) {
      var other = found.at == "close" ? found.open : found.close;
      if (other) cm.setSelection(other.to, other.from);
    }
  };
})();

Version data entries

12 entries across 12 versions & 3 rubygems

Version Path
gump-0.1.6 server/assets/js/jquery.codemirror/addon/edit/matchtags.js
codemirror-rails-3.24 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
codemirror-rails-3.23 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
codemirror-rails-3.22 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
codemirror-rails-3.21 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
codemirror-rails-3.20 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
codemirror-rails-3.19 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
codemirror-rails-3.18 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
codemirror-rails-3.17 vendor/assets/javascripts/codemirror/addons/edit/matchtags.js
poly-cms-0.1.2 core/admin/assets/js/vendor/codemirror/addon/edit/matchtags.js
poly-cms-0.1.1 core/admin/assets/js/vendor/codemirror/addon/edit/matchtags.js
poly-cms-0.1.0 core/admin/assets/js/vendor/codemirror/addon/edit/matchtags.js