Update dev dependencies & CodeMirror
This commit is contained in:
		
							parent
							
								
									5536f7ad22
								
							
						
					
					
						commit
						14144c287c
					
				| 
						 | 
				
			
			@ -7,8 +7,8 @@
 | 
			
		|||
  "author": "Stylus Team",
 | 
			
		||||
  "devDependencies": {
 | 
			
		||||
    "archiver": "^3.0.0",
 | 
			
		||||
    "codemirror": "^5.40.0",
 | 
			
		||||
    "eslint": "^5.4.0",
 | 
			
		||||
    "codemirror": "^5.41.0",
 | 
			
		||||
    "eslint": "^5.8.0",
 | 
			
		||||
    "fs-extra": "^7.0.0",
 | 
			
		||||
    "jsonlint": "^1.6.3",
 | 
			
		||||
    "less": "^3.8.1",
 | 
			
		||||
| 
						 | 
				
			
			@ -17,7 +17,7 @@
 | 
			
		|||
    "semver-bundle": "^0.1.1",
 | 
			
		||||
    "stylelint-bundle": "^8.0.0",
 | 
			
		||||
    "stylus-lang-bundle": "^0.54.5",
 | 
			
		||||
    "updates": "^4.2.1",
 | 
			
		||||
    "updates": "^5.1.2",
 | 
			
		||||
    "webext-tx-fix": "^0.3.1"
 | 
			
		||||
  },
 | 
			
		||||
  "scripts": {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								vendor/codemirror/README.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/codemirror/README.md
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -1,3 +1,3 @@
 | 
			
		|||
## CodeMirror v5.40.0
 | 
			
		||||
## CodeMirror v5.41.0
 | 
			
		||||
 | 
			
		||||
Only files & folders that exist in the `vendor/codemirror` folder are copied from the `node_modules/codemirror` folder. Except all theme files are copied, in case new themes have been added.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								vendor/codemirror/addon/fold/brace-fold.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/codemirror/addon/fold/brace-fold.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -54,7 +54,7 @@ CodeMirror.registerHelper("fold", "brace", function(cm, start) {
 | 
			
		|||
      ++pos;
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
  if (end == null || line == end && endCh == startCh) return;
 | 
			
		||||
  if (end == null || line == end) return;
 | 
			
		||||
  return {from: CodeMirror.Pos(line, startCh),
 | 
			
		||||
          to: CodeMirror.Pos(end, endCh)};
 | 
			
		||||
});
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										109
									
								
								vendor/codemirror/keymap/vim.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										109
									
								
								vendor/codemirror/keymap/vim.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -3,7 +3,7 @@
 | 
			
		|||
 | 
			
		||||
/**
 | 
			
		||||
 * Supported keybindings:
 | 
			
		||||
 *   Too many to list. Refer to defaultKeyMap below.
 | 
			
		||||
 *   Too many to list. Refer to defaultKeymap below.
 | 
			
		||||
 *
 | 
			
		||||
 * Supported Ex commands:
 | 
			
		||||
 *   Refer to defaultExCommandMap below.
 | 
			
		||||
| 
						 | 
				
			
			@ -207,6 +207,7 @@
 | 
			
		|||
    // Ex command
 | 
			
		||||
    { keys: ':', type: 'ex' }
 | 
			
		||||
  ];
 | 
			
		||||
  var defaultKeymapLength = defaultKeymap.length;
 | 
			
		||||
 | 
			
		||||
  /**
 | 
			
		||||
   * Ex commands
 | 
			
		||||
| 
						 | 
				
			
			@ -742,6 +743,78 @@
 | 
			
		|||
      unmap: function(lhs, ctx) {
 | 
			
		||||
        exCommandDispatcher.unmap(lhs, ctx);
 | 
			
		||||
      },
 | 
			
		||||
      // Non-recursive map function.
 | 
			
		||||
      // NOTE: This will not create mappings to key maps that aren't present
 | 
			
		||||
      // in the default key map. See TODO at bottom of function.
 | 
			
		||||
      noremap: function(lhs, rhs, ctx) {
 | 
			
		||||
        function toCtxArray(ctx) {
 | 
			
		||||
          return ctx ? [ctx] : ['normal', 'insert', 'visual'];
 | 
			
		||||
        }
 | 
			
		||||
        var ctxsToMap = toCtxArray(ctx);
 | 
			
		||||
        // Look through all actual defaults to find a map candidate.
 | 
			
		||||
        var actualLength = defaultKeymap.length, origLength = defaultKeymapLength;
 | 
			
		||||
        for (var i = actualLength - origLength;
 | 
			
		||||
             i < actualLength && ctxsToMap.length;
 | 
			
		||||
             i++) {
 | 
			
		||||
          var mapping = defaultKeymap[i];
 | 
			
		||||
          // Omit mappings that operate in the wrong context(s) and those of invalid type.
 | 
			
		||||
          if (mapping.keys == rhs &&
 | 
			
		||||
              (!ctx || !mapping.context || mapping.context === ctx) &&
 | 
			
		||||
              mapping.type.substr(0, 2) !== 'ex' &&
 | 
			
		||||
              mapping.type.substr(0, 3) !== 'key') {
 | 
			
		||||
            // Make a shallow copy of the original keymap entry.
 | 
			
		||||
            var newMapping = {};
 | 
			
		||||
            for (var key in mapping) {
 | 
			
		||||
              newMapping[key] = mapping[key];
 | 
			
		||||
            }
 | 
			
		||||
            // Modify it point to the new mapping with the proper context.
 | 
			
		||||
            newMapping.keys = lhs;
 | 
			
		||||
            if (ctx && !newMapping.context) {
 | 
			
		||||
              newMapping.context = ctx;
 | 
			
		||||
            }
 | 
			
		||||
            // Add it to the keymap with a higher priority than the original.
 | 
			
		||||
            this._mapCommand(newMapping);
 | 
			
		||||
            // Record the mapped contexts as complete.
 | 
			
		||||
            var mappedCtxs = toCtxArray(mapping.context);
 | 
			
		||||
            ctxsToMap = ctxsToMap.filter(function(el) { return mappedCtxs.indexOf(el) === -1; });
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        // TODO: Create non-recursive keyToKey mappings for the unmapped contexts once those exist.
 | 
			
		||||
      },
 | 
			
		||||
      // Remove all user-defined mappings for the provided context.
 | 
			
		||||
      mapclear: function(ctx) {
 | 
			
		||||
        // Partition the existing keymap into user-defined and true defaults.
 | 
			
		||||
        var actualLength = defaultKeymap.length,
 | 
			
		||||
            origLength = defaultKeymapLength;
 | 
			
		||||
        var userKeymap = defaultKeymap.slice(0, actualLength - origLength);
 | 
			
		||||
        defaultKeymap = defaultKeymap.slice(actualLength - origLength);
 | 
			
		||||
        if (ctx) {
 | 
			
		||||
          // If a specific context is being cleared, we need to keep mappings
 | 
			
		||||
          // from all other contexts.
 | 
			
		||||
          for (var i = userKeymap.length - 1; i >= 0; i--) {
 | 
			
		||||
            var mapping = userKeymap[i];
 | 
			
		||||
            if (ctx !== mapping.context) {
 | 
			
		||||
              if (mapping.context) {
 | 
			
		||||
                this._mapCommand(mapping);
 | 
			
		||||
              } else {
 | 
			
		||||
                // `mapping` applies to all contexts so create keymap copies
 | 
			
		||||
                // for each context except the one being cleared.
 | 
			
		||||
                var contexts = ['normal', 'insert', 'visual'];
 | 
			
		||||
                for (var j in contexts) {
 | 
			
		||||
                  if (contexts[j] !== ctx) {
 | 
			
		||||
                    var newMapping = {};
 | 
			
		||||
                    for (var key in mapping) {
 | 
			
		||||
                      newMapping[key] = mapping[key];
 | 
			
		||||
                    }
 | 
			
		||||
                    newMapping.context = contexts[j];
 | 
			
		||||
                    this._mapCommand(newMapping);
 | 
			
		||||
                  }
 | 
			
		||||
                }
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
      },
 | 
			
		||||
      // TODO: Expose setOption and getOption as instance methods. Need to decide how to namespace
 | 
			
		||||
      // them, or somehow make them work with the existing CodeMirror setOption/getOption API.
 | 
			
		||||
      setOption: setOption,
 | 
			
		||||
| 
						 | 
				
			
			@ -5040,32 +5113,7 @@
 | 
			
		|||
      var insertModeChangeRegister = vimGlobalState.registerController.getRegister('.');
 | 
			
		||||
      var isPlaying = macroModeState.isPlaying;
 | 
			
		||||
      var lastChange = macroModeState.lastInsertModeChanges;
 | 
			
		||||
      // In case of visual block, the insertModeChanges are not saved as a
 | 
			
		||||
      // single word, so we convert them to a single word
 | 
			
		||||
      // so as to update the ". register as expected in real vim.
 | 
			
		||||
      var text = [];
 | 
			
		||||
      if (!isPlaying) {
 | 
			
		||||
        var selLength = lastChange.inVisualBlock && vim.lastSelection ?
 | 
			
		||||
            vim.lastSelection.visualBlock.height : 1;
 | 
			
		||||
        var changes = lastChange.changes;
 | 
			
		||||
        var text = [];
 | 
			
		||||
        var i = 0;
 | 
			
		||||
        // In case of multiple selections in blockwise visual,
 | 
			
		||||
        // the inserted text, for example: 'f<Backspace>oo', is stored as
 | 
			
		||||
        // 'f', 'f', InsertModeKey 'o', 'o', 'o', 'o'. (if you have a block with 2 lines).
 | 
			
		||||
        // We push the contents of the changes array as per the following:
 | 
			
		||||
        // 1. In case of InsertModeKey, just increment by 1.
 | 
			
		||||
        // 2. In case of a character, jump by selLength (2 in the example).
 | 
			
		||||
        while (i < changes.length) {
 | 
			
		||||
          // This loop will convert 'ff<bs>oooo' to 'f<bs>oo'.
 | 
			
		||||
          text.push(changes[i]);
 | 
			
		||||
          if (changes[i] instanceof InsertModeKey) {
 | 
			
		||||
             i++;
 | 
			
		||||
          } else {
 | 
			
		||||
             i+= selLength;
 | 
			
		||||
          }
 | 
			
		||||
        }
 | 
			
		||||
        lastChange.changes = text;
 | 
			
		||||
        cm.off('change', onChange);
 | 
			
		||||
        CodeMirror.off(cm.getInputField(), 'keydown', onKeyEventTargetKeyDown);
 | 
			
		||||
      }
 | 
			
		||||
| 
						 | 
				
			
			@ -5196,19 +5244,26 @@
 | 
			
		|||
      if (!macroModeState.isPlaying) {
 | 
			
		||||
        while(changeObj) {
 | 
			
		||||
          lastChange.expectCursorActivityForChange = true;
 | 
			
		||||
          if (changeObj.origin == '+input' || changeObj.origin == 'paste'
 | 
			
		||||
          if (lastChange.ignoreCount > 1) {
 | 
			
		||||
            lastChange.ignoreCount--;
 | 
			
		||||
          } else if (changeObj.origin == '+input' || changeObj.origin == 'paste'
 | 
			
		||||
              || changeObj.origin === undefined /* only in testing */) {
 | 
			
		||||
            var selectionCount = cm.listSelections().length;
 | 
			
		||||
            if (selectionCount > 1)
 | 
			
		||||
              lastChange.ignoreCount = selectionCount;
 | 
			
		||||
            var text = changeObj.text.join('\n');
 | 
			
		||||
            if (lastChange.maybeReset) {
 | 
			
		||||
              lastChange.changes = [];
 | 
			
		||||
              lastChange.maybeReset = false;
 | 
			
		||||
            }
 | 
			
		||||
            if (text) {
 | 
			
		||||
              if (cm.state.overwrite && !/\n/.test(text)) {
 | 
			
		||||
                lastChange.changes.push([text]);
 | 
			
		||||
              } else {
 | 
			
		||||
                lastChange.changes.push(text);
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          // Change objects may be chained with next.
 | 
			
		||||
          changeObj = changeObj.next;
 | 
			
		||||
        }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										92
									
								
								vendor/codemirror/lib/codemirror.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										92
									
								
								vendor/codemirror/lib/codemirror.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -193,9 +193,7 @@ var scrollerGap = 30;
 | 
			
		|||
  var Pass = {toString: function(){return "CodeMirror.Pass"}};
 | 
			
		||||
 | 
			
		||||
  // Reused option objects for setSelection & friends
 | 
			
		||||
var sel_dontScroll = {scroll: false};
 | 
			
		||||
var sel_mouse = {origin: "*mouse"};
 | 
			
		||||
var sel_move = {origin: "+move"};
 | 
			
		||||
  var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"};
 | 
			
		||||
 | 
			
		||||
  // The inverse of countColumn -- find the offset that corresponds to
 | 
			
		||||
  // a particular column.
 | 
			
		||||
| 
						 | 
				
			
			@ -523,8 +521,7 @@ function clipPosArray(doc, array) {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  // Optimize some code when these features are not used.
 | 
			
		||||
var sawReadOnlySpans = false;
 | 
			
		||||
var sawCollapsedSpans = false;
 | 
			
		||||
  var sawReadOnlySpans = false, sawCollapsedSpans = false;
 | 
			
		||||
 | 
			
		||||
  function seeReadOnlySpans() {
 | 
			
		||||
    sawReadOnlySpans = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -572,7 +569,8 @@ function markedSpansBefore(old, startCh, isInsert) {
 | 
			
		|||
      var span = old[i], marker = span.marker;
 | 
			
		||||
      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);
 | 
			
		||||
      if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) {
 | 
			
		||||
      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh);(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));
 | 
			
		||||
        var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)
 | 
			
		||||
        ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));
 | 
			
		||||
      }
 | 
			
		||||
    } }
 | 
			
		||||
    return nw
 | 
			
		||||
| 
						 | 
				
			
			@ -583,7 +581,8 @@ function markedSpansAfter(old, endCh, isInsert) {
 | 
			
		|||
      var span = old[i], marker = span.marker;
 | 
			
		||||
      var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);
 | 
			
		||||
      if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) {
 | 
			
		||||
      var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh);(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,
 | 
			
		||||
        var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)
 | 
			
		||||
        ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,
 | 
			
		||||
                                              span.to == null ? null : span.to - endCh));
 | 
			
		||||
      }
 | 
			
		||||
    } }
 | 
			
		||||
| 
						 | 
				
			
			@ -1306,8 +1305,7 @@ function hasBadZoomedRects(measure) {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  // Known modes, by name and by MIME
 | 
			
		||||
var modes = {};
 | 
			
		||||
var mimeModes = {};
 | 
			
		||||
  var modes = {}, mimeModes = {};
 | 
			
		||||
 | 
			
		||||
  // Extra arguments are stored as the mode's dependencies, which is
 | 
			
		||||
  // used by (legacy) mechanisms like loadmode.js to automatically
 | 
			
		||||
| 
						 | 
				
			
			@ -1800,8 +1798,7 @@ function cleanUpLine(line) {
 | 
			
		|||
  // Convert a style as returned by a mode (either null, or a string
 | 
			
		||||
  // containing one or more styles) to a CSS style. This is cached,
 | 
			
		||||
  // and also looks for line-wide styles.
 | 
			
		||||
var styleToClassCache = {};
 | 
			
		||||
var styleToClassCacheWithMode = {};
 | 
			
		||||
  var styleToClassCache = {}, styleToClassCacheWithMode = {};
 | 
			
		||||
  function interpretTokenStyle(style, options) {
 | 
			
		||||
    if (!style || /^\s*$/.test(style)) { return null }
 | 
			
		||||
    var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;
 | 
			
		||||
| 
						 | 
				
			
			@ -1822,7 +1819,7 @@ function buildLineContent(cm, lineView) {
 | 
			
		|||
    var builder = {pre: eltP("pre", [content], "CodeMirror-line"), content: content,
 | 
			
		||||
                   col: 0, pos: 0, cm: cm,
 | 
			
		||||
                   trailingSpace: false,
 | 
			
		||||
                 splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")};
 | 
			
		||||
                   splitSpaces: cm.getOption("lineWrapping")};
 | 
			
		||||
    lineView.measure = {};
 | 
			
		||||
 | 
			
		||||
    // Iterate over the logical lines that make up this visual line.
 | 
			
		||||
| 
						 | 
				
			
			@ -1943,6 +1940,8 @@ function buildToken(builder, text, style, startStyle, endStyle, title, css) {
 | 
			
		|||
    builder.content.appendChild(content);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Change some spaces to NBSP to prevent the browser from collapsing
 | 
			
		||||
  // trailing spaces at the end of a line when rendering text (issue #1362).
 | 
			
		||||
  function splitSpaces(text, trailingBefore) {
 | 
			
		||||
    if (text.length > 1 && !/  /.test(text)) { return text }
 | 
			
		||||
    var spaceBefore = trailingBefore, result = "";
 | 
			
		||||
| 
						 | 
				
			
			@ -3745,11 +3744,11 @@ function startOperation(cm) {
 | 
			
		|||
  // Finish an operation, updating the display and signalling delayed events
 | 
			
		||||
  function endOperation(cm) {
 | 
			
		||||
    var op = cm.curOp;
 | 
			
		||||
  finishOperation(op, function (group) {
 | 
			
		||||
    if (op) { finishOperation(op, function (group) {
 | 
			
		||||
      for (var i = 0; i < group.ops.length; i++)
 | 
			
		||||
        { group.ops[i].cm.curOp = null; }
 | 
			
		||||
      endOperations(group);
 | 
			
		||||
  });
 | 
			
		||||
    }); }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // The DOM updates done when an operation finishes are batched so
 | 
			
		||||
| 
						 | 
				
			
			@ -4312,8 +4311,7 @@ function patchDisplay(cm, updateNumbersFrom, dims) {
 | 
			
		|||
    // in display.lineDiv) with the view as we go.
 | 
			
		||||
    for (var i = 0; i < view.length; i++) {
 | 
			
		||||
      var lineView = view[i];
 | 
			
		||||
    if (lineView.hidden) {
 | 
			
		||||
    } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
 | 
			
		||||
      if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet
 | 
			
		||||
        var node = buildLineElement(cm, lineView, lineN, dims);
 | 
			
		||||
        container.insertBefore(node, cur);
 | 
			
		||||
      } else { // Already drawn
 | 
			
		||||
| 
						 | 
				
			
			@ -4387,8 +4385,7 @@ function setGuttersForLineNumbers(options) {
 | 
			
		|||
  // is that it gives us a chance to update the display before the
 | 
			
		||||
  // actual scrolling happens, reducing flickering.
 | 
			
		||||
 | 
			
		||||
var wheelSamples = 0;
 | 
			
		||||
var wheelPixelsPerUnit = null;
 | 
			
		||||
  var wheelSamples = 0, wheelPixelsPerUnit = null;
 | 
			
		||||
  // Fill in a browser-detected starting value on browsers where we
 | 
			
		||||
  // know one. These don't have to be accurate -- the result of them
 | 
			
		||||
  // being wrong would just be a slight flicker on the first wheel
 | 
			
		||||
| 
						 | 
				
			
			@ -4551,13 +4548,15 @@ Range.prototype.empty = function () { return this.head.line == this.anchor.line
 | 
			
		|||
  // Take an unsorted, potentially overlapping set of ranges, and
 | 
			
		||||
  // build a selection out of it. 'Consumes' ranges array (modifying
 | 
			
		||||
  // it).
 | 
			
		||||
function normalizeSelection(ranges, primIndex) {
 | 
			
		||||
  function normalizeSelection(cm, ranges, primIndex) {
 | 
			
		||||
    var mayTouch = cm && cm.options.selectionsMayTouch;
 | 
			
		||||
    var prim = ranges[primIndex];
 | 
			
		||||
    ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });
 | 
			
		||||
    primIndex = indexOf(ranges, prim);
 | 
			
		||||
    for (var i = 1; i < ranges.length; i++) {
 | 
			
		||||
      var cur = ranges[i], prev = ranges[i - 1];
 | 
			
		||||
    if (cmp(prev.to(), cur.from()) >= 0) {
 | 
			
		||||
      var diff = cmp(prev.to(), cur.from());
 | 
			
		||||
      if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {
 | 
			
		||||
        var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());
 | 
			
		||||
        var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;
 | 
			
		||||
        if (i <= primIndex) { --primIndex; }
 | 
			
		||||
| 
						 | 
				
			
			@ -4597,7 +4596,7 @@ function computeSelAfterChange(doc, change) {
 | 
			
		|||
      out.push(new Range(adjustForChange(range.anchor, change),
 | 
			
		||||
                         adjustForChange(range.head, change)));
 | 
			
		||||
    }
 | 
			
		||||
  return normalizeSelection(out, doc.sel.primIndex)
 | 
			
		||||
    return normalizeSelection(doc.cm, out, doc.sel.primIndex)
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function offsetPos(pos, old, nw) {
 | 
			
		||||
| 
						 | 
				
			
			@ -5005,7 +5004,7 @@ function extendSelections(doc, heads, options) {
 | 
			
		|||
    var extend = doc.cm && (doc.cm.display.shift || doc.extend);
 | 
			
		||||
    for (var i = 0; i < doc.sel.ranges.length; i++)
 | 
			
		||||
      { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }
 | 
			
		||||
  var newSel = normalizeSelection(out, doc.sel.primIndex);
 | 
			
		||||
    var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);
 | 
			
		||||
    setSelection(doc, newSel, options);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5013,7 +5012,7 @@ function extendSelections(doc, heads, options) {
 | 
			
		|||
  function replaceOneSelection(doc, i, range, options) {
 | 
			
		||||
    var ranges = doc.sel.ranges.slice(0);
 | 
			
		||||
    ranges[i] = range;
 | 
			
		||||
  setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options);
 | 
			
		||||
    setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Reset the selection to a single range.
 | 
			
		||||
| 
						 | 
				
			
			@ -5038,7 +5037,7 @@ function filterSelectionChange(doc, sel, options) {
 | 
			
		|||
    };
 | 
			
		||||
    signal(doc, "beforeSelectionChange", doc, obj);
 | 
			
		||||
    if (doc.cm) { signal(doc.cm, "beforeSelectionChange", doc.cm, obj); }
 | 
			
		||||
  if (obj.ranges != sel.ranges) { return normalizeSelection(obj.ranges, obj.ranges.length - 1) }
 | 
			
		||||
    if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }
 | 
			
		||||
    else { return sel }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -5102,7 +5101,7 @@ function skipAtomicInSelection(doc, sel, bias, mayClear) {
 | 
			
		|||
        out[i] = new Range(newAnchor, newHead);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  return out ? normalizeSelection(out, sel.primIndex) : sel
 | 
			
		||||
    return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {
 | 
			
		||||
| 
						 | 
				
			
			@ -5418,9 +5417,10 @@ function makeChangeSingleDocInEditor(cm, change, spans) {
 | 
			
		|||
  }
 | 
			
		||||
 | 
			
		||||
  function replaceRange(doc, code, from, to, origin) {
 | 
			
		||||
    var assign;
 | 
			
		||||
 | 
			
		||||
    if (!to) { to = from; }
 | 
			
		||||
  if (cmp(to, from) < 0) { var assign;
 | 
			
		||||
    (assign = [to, from], from = assign[0], to = assign[1]); }
 | 
			
		||||
    if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }
 | 
			
		||||
    if (typeof code == "string") { code = doc.splitLines(code); }
 | 
			
		||||
    makeChange(doc, {from: from, to: to, text: code, origin: origin});
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -5876,7 +5876,8 @@ TextMarker.prototype.attachLine = function (line) {
 | 
			
		|||
  TextMarker.prototype.detachLine = function (line) {
 | 
			
		||||
    this.lines.splice(indexOf(this.lines, line), 1);
 | 
			
		||||
    if (!this.lines.length && this.doc.cm) {
 | 
			
		||||
    var op = this.doc.cm.curOp;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);
 | 
			
		||||
      var op = this.doc.cm.curOp
 | 
			
		||||
      ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);
 | 
			
		||||
    }
 | 
			
		||||
  };
 | 
			
		||||
  eventMixin(TextMarker);
 | 
			
		||||
| 
						 | 
				
			
			@ -6149,12 +6150,12 @@ Doc.prototype = createObj(BranchChunk.prototype, {
 | 
			
		|||
        { out[i] = new Range(clipPos(this$1, ranges[i].anchor),
 | 
			
		||||
                           clipPos(this$1, ranges[i].head)); }
 | 
			
		||||
      if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }
 | 
			
		||||
    setSelection(this, normalizeSelection(out, primary), options);
 | 
			
		||||
      setSelection(this, normalizeSelection(this.cm, out, primary), options);
 | 
			
		||||
    }),
 | 
			
		||||
    addSelection: docMethodOp(function(anchor, head, options) {
 | 
			
		||||
      var ranges = this.sel.ranges.slice(0);
 | 
			
		||||
      ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));
 | 
			
		||||
    setSelection(this, normalizeSelection(ranges, ranges.length - 1), options);
 | 
			
		||||
      setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);
 | 
			
		||||
    }),
 | 
			
		||||
 | 
			
		||||
    getSelection: function(lineSep) {
 | 
			
		||||
| 
						 | 
				
			
			@ -7216,8 +7217,7 @@ PastClick.prototype.compare = function (time, pos, button) {
 | 
			
		|||
      cmp(pos, this.pos) == 0 && button == this.button
 | 
			
		||||
  };
 | 
			
		||||
 | 
			
		||||
var lastClick;
 | 
			
		||||
var lastDoubleClick;
 | 
			
		||||
  var lastClick, lastDoubleClick;
 | 
			
		||||
  function clickRepeat(pos, button) {
 | 
			
		||||
    var now = +new Date;
 | 
			
		||||
    if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {
 | 
			
		||||
| 
						 | 
				
			
			@ -7271,7 +7271,7 @@ function onMouseDown(e) {
 | 
			
		|||
      if (pos) { extendSelection(cm.doc, pos); }
 | 
			
		||||
      setTimeout(function () { return display.input.focus(); }, 20);
 | 
			
		||||
    } else if (button == 3) {
 | 
			
		||||
    if (captureRightClick) { onContextMenu(cm, e); }
 | 
			
		||||
      if (captureRightClick) { cm.display.input.onContextMenu(e); }
 | 
			
		||||
      else { delayBlurEvent(cm); }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			@ -7409,10 +7409,10 @@ function leftButtonSelect(cm, event, start, behavior) {
 | 
			
		|||
      startSel = doc.sel;
 | 
			
		||||
    } else if (ourIndex == -1) {
 | 
			
		||||
      ourIndex = ranges.length;
 | 
			
		||||
    setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex),
 | 
			
		||||
      setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),
 | 
			
		||||
                   {scroll: false, origin: "*mouse"});
 | 
			
		||||
    } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == "char" && !behavior.extend) {
 | 
			
		||||
    setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
 | 
			
		||||
      setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),
 | 
			
		||||
                   {scroll: false, origin: "*mouse"});
 | 
			
		||||
      startSel = doc.sel;
 | 
			
		||||
    } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -7438,7 +7438,7 @@ function leftButtonSelect(cm, event, start, behavior) {
 | 
			
		|||
            { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }
 | 
			
		||||
        }
 | 
			
		||||
        if (!ranges.length) { ranges.push(new Range(start, start)); }
 | 
			
		||||
      setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
 | 
			
		||||
        setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),
 | 
			
		||||
                     {origin: "*mouse", scroll: false});
 | 
			
		||||
        cm.scrollIntoView(pos);
 | 
			
		||||
      } else {
 | 
			
		||||
| 
						 | 
				
			
			@ -7454,7 +7454,7 @@ function leftButtonSelect(cm, event, start, behavior) {
 | 
			
		|||
        }
 | 
			
		||||
        var ranges$1 = startSel.ranges.slice(0);
 | 
			
		||||
        ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));
 | 
			
		||||
      setSelection(doc, normalizeSelection(ranges$1, ourIndex), sel_mouse);
 | 
			
		||||
        setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -7583,7 +7583,7 @@ function clickInGutter(cm, e) {
 | 
			
		|||
  function onContextMenu(cm, e) {
 | 
			
		||||
    if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }
 | 
			
		||||
    if (signalDOMEvent(cm, e, "contextmenu")) { return }
 | 
			
		||||
  cm.display.input.onContextMenu(e);
 | 
			
		||||
    if (!captureRightClick) { cm.display.input.onContextMenu(e); }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function contextMenuInGutter(cm, e) {
 | 
			
		||||
| 
						 | 
				
			
			@ -7702,6 +7702,7 @@ function defineOptions(CodeMirror) {
 | 
			
		|||
    option("resetSelectionOnContextMenu", true);
 | 
			
		||||
    option("lineWiseCopyCut", true);
 | 
			
		||||
    option("pasteLinesPerSelection", true);
 | 
			
		||||
    option("selectionsMayTouch", false);
 | 
			
		||||
 | 
			
		||||
    option("readOnly", false, function (cm, val) {
 | 
			
		||||
      if (val == "nocursor") {
 | 
			
		||||
| 
						 | 
				
			
			@ -7869,7 +7870,7 @@ function registerEventHandlers(cm) {
 | 
			
		|||
    // Some browsers fire contextmenu *after* opening the menu, at
 | 
			
		||||
    // which point we can't mess with it anymore. Context menu is
 | 
			
		||||
    // handled in onMouseDown for these browsers.
 | 
			
		||||
  if (!captureRightClick) { on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); }); }
 | 
			
		||||
    on(d.scroller, "contextmenu", function (e) { return onContextMenu(cm, e); });
 | 
			
		||||
 | 
			
		||||
    // Used to suppress mouse event handling when a touch happens
 | 
			
		||||
    var touchFinished, prevTouch = {end: 0};
 | 
			
		||||
| 
						 | 
				
			
			@ -8064,7 +8065,7 @@ function applyTextInput(cm, inserted, deleted, sel, origin) {
 | 
			
		|||
          { from = Pos(from.line, from.ch - deleted); }
 | 
			
		||||
        else if (cm.state.overwrite && !paste) // Handle overwrite
 | 
			
		||||
          { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }
 | 
			
		||||
      else if (lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted)
 | 
			
		||||
        else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join("\n") == inserted)
 | 
			
		||||
          { from = to = Pos(from.line, 0); }
 | 
			
		||||
      }
 | 
			
		||||
      updateInput = cm.curOp.updateInput;
 | 
			
		||||
| 
						 | 
				
			
			@ -8156,7 +8157,7 @@ function hiddenTextarea() {
 | 
			
		|||
  // CodeMirror.prototype, for backwards compatibility and
 | 
			
		||||
  // convenience.
 | 
			
		||||
 | 
			
		||||
var addEditorMethods = function(CodeMirror) {
 | 
			
		||||
  function addEditorMethods(CodeMirror) {
 | 
			
		||||
    var optionHandlers = CodeMirror.optionHandlers;
 | 
			
		||||
 | 
			
		||||
    var helpers = CodeMirror.helpers = {};
 | 
			
		||||
| 
						 | 
				
			
			@ -8593,7 +8594,7 @@ var addEditorMethods = function(CodeMirror) {
 | 
			
		|||
      CodeMirror.registerHelper(type, name, value);
 | 
			
		||||
      helpers[type]._global.push({pred: predicate, val: value});
 | 
			
		||||
    };
 | 
			
		||||
};
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // Used for horizontal relative motion. Dir is -1 or 1 (left or
 | 
			
		||||
  // right), unit can be "char", "column" (like char, but doesn't
 | 
			
		||||
| 
						 | 
				
			
			@ -9661,13 +9662,8 @@ for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && inde
 | 
			
		|||
    })(Doc.prototype[prop]); } }
 | 
			
		||||
 | 
			
		||||
  eventMixin(Doc);
 | 
			
		||||
 | 
			
		||||
// INPUT HANDLING
 | 
			
		||||
 | 
			
		||||
  CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput};
 | 
			
		||||
 | 
			
		||||
// MODE DEFINITION AND QUERYING
 | 
			
		||||
 | 
			
		||||
  // Extra arguments are stored as the mode's dependencies, which is
 | 
			
		||||
  // used by (legacy) mechanisms like loadmode.js to automatically
 | 
			
		||||
  // load a mode. (Preferred mechanism is the require/define calls.)
 | 
			
		||||
| 
						 | 
				
			
			@ -9695,7 +9691,7 @@ CodeMirror.fromTextArea = fromTextArea;
 | 
			
		|||
 | 
			
		||||
  addLegacyProps(CodeMirror);
 | 
			
		||||
 | 
			
		||||
CodeMirror.version = "5.40.0";
 | 
			
		||||
  CodeMirror.version = "5.41.0";
 | 
			
		||||
 | 
			
		||||
  return CodeMirror;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										2
									
								
								vendor/codemirror/mode/css/css.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/codemirror/mode/css/css.js
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -501,7 +501,7 @@ CodeMirror.defineMode("css", function(config, parserConfig) {
 | 
			
		|||
    "margin-bottom", "margin-left", "margin-right", "margin-top",
 | 
			
		||||
    "marks", "marquee-direction", "marquee-loop",
 | 
			
		||||
    "marquee-play-count", "marquee-speed", "marquee-style", "max-height",
 | 
			
		||||
    "max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index",
 | 
			
		||||
    "max-width", "min-height", "min-width", "mix-blend-mode", "move-to", "nav-down", "nav-index",
 | 
			
		||||
    "nav-left", "nav-right", "nav-up", "object-fit", "object-position",
 | 
			
		||||
    "opacity", "order", "orphans", "outline",
 | 
			
		||||
    "outline-color", "outline-offset", "outline-style", "outline-width",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -644,7 +644,7 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
 | 
			
		|||
    if (isTS && isModifier(value)) { cx.marked = "keyword"; return cont(pattern) }
 | 
			
		||||
    if (type == "variable") { register(value); return cont(); }
 | 
			
		||||
    if (type == "spread") return cont(pattern);
 | 
			
		||||
    if (type == "[") return contCommasep(pattern, "]");
 | 
			
		||||
    if (type == "[") return contCommasep(eltpattern, "]");
 | 
			
		||||
    if (type == "{") return contCommasep(proppattern, "}");
 | 
			
		||||
  }
 | 
			
		||||
  function proppattern(type, value) {
 | 
			
		||||
| 
						 | 
				
			
			@ -657,6 +657,9 @@ CodeMirror.defineMode("javascript", function(config, parserConfig) {
 | 
			
		|||
    if (type == "}") return pass();
 | 
			
		||||
    return cont(expect(":"), pattern, maybeAssign);
 | 
			
		||||
  }
 | 
			
		||||
  function eltpattern() {
 | 
			
		||||
    return pass(pattern, maybeAssign)
 | 
			
		||||
  }
 | 
			
		||||
  function maybeAssign(_type, value) {
 | 
			
		||||
    if (value == "=") return cont(expressionNoComma);
 | 
			
		||||
  }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										9
									
								
								vendor/codemirror/theme/gruvbox-dark.css
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/codemirror/theme/gruvbox-dark.css
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -12,7 +12,7 @@
 | 
			
		|||
.cm-s-gruvbox-dark .CodeMirror-linenumber {color: #7c6f64;}
 | 
			
		||||
.cm-s-gruvbox-dark .CodeMirror-cursor { border-left: 1px solid #ebdbb2; }
 | 
			
		||||
.cm-s-gruvbox-dark div.CodeMirror-selected { background: #928374; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-meta { color: #808000; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-meta { color: #83a598; }
 | 
			
		||||
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-comment { color: #928374; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-number, span.cm-atom { color: #d3869b; }
 | 
			
		||||
| 
						 | 
				
			
			@ -20,15 +20,18 @@
 | 
			
		|||
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-variable { color: #ebdbb2; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-variable-2 { color: #ebdbb2; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-variable-3, .cm-s-gruvbox-dark span.cm-type { color: black; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-variable-3, .cm-s-gruvbox-dark span.cm-type { color: #fabd2f; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-operator { color: #ebdbb2; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-callee { color: #ebdbb2; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-def { color: #ebdbb2; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-property { color: #ebdbb2; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-string { color: #b8bb26; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-string-2 { color: #8ec07c; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-qualifier { color: #555; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-qualifier { color: #8ec07c; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-attribute { color: #8ec07c; }
 | 
			
		||||
 | 
			
		||||
.cm-s-gruvbox-dark .CodeMirror-activeline-background { background: #3c3836; }
 | 
			
		||||
.cm-s-gruvbox-dark .CodeMirror-matchingbracket { background: #928374; color:#282828 !important; }
 | 
			
		||||
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-builtin { color: #fe8019; }
 | 
			
		||||
.cm-s-gruvbox-dark span.cm-tag { color: #fe8019; }
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user