source: OpenRLabs-Git/deploy/rlabs-docker/web2py-rlabs/applications/admin/static/codemirror/addon/fold/indent-fold.js

main
Last change on this file was 42bd667, checked in by David Fuertes <dfuertes@…>, 4 years ago

Historial Limpio

  • Property mode set to 100755
File size: 1.6 KB
Line 
1// CodeMirror, copyright (c) by Marijn Haverbeke and others
2// Distributed under an MIT license: http://codemirror.net/LICENSE
3
4(function(mod) {
5  if (typeof exports == "object" && typeof module == "object") // CommonJS
6    mod(require("../../lib/codemirror"));
7  else if (typeof define == "function" && define.amd) // AMD
8    define(["../../lib/codemirror"], mod);
9  else // Plain browser env
10    mod(CodeMirror);
11})(function(CodeMirror) {
12"use strict";
13
14CodeMirror.registerHelper("fold", "indent", function(cm, start) {
15  var tabSize = cm.getOption("tabSize"), firstLine = cm.getLine(start.line);
16  if (!/\S/.test(firstLine)) return;
17  var getIndent = function(line) {
18    return CodeMirror.countColumn(line, null, tabSize);
19  };
20  var myIndent = getIndent(firstLine);
21  var lastLineInFold = null;
22  // Go through lines until we find a line that definitely doesn't belong in
23  // the block we're folding, or to the end.
24  for (var i = start.line + 1, end = cm.lastLine(); i <= end; ++i) {
25    var curLine = cm.getLine(i);
26    var curIndent = getIndent(curLine);
27    if (curIndent > myIndent) {
28      // Lines with a greater indent are considered part of the block.
29      lastLineInFold = i;
30    } else if (!/\S/.test(curLine)) {
31      // Empty lines might be breaks within the block we're trying to fold.
32    } else {
33      // A non-empty line at an indent equal to or less than ours marks the
34      // start of another block.
35      break;
36    }
37  }
38  if (lastLineInFold) return {
39    from: CodeMirror.Pos(start.line, firstLine.length),
40    to: CodeMirror.Pos(lastLineInFold, cm.getLine(lastLineInFold).length)
41  };
42});
43
44});
Note: See TracBrowser for help on using the repository browser.