Document.prototype.refreshText = function (text, newTimestamp) { var perfTimerName = PerfUtils.markStart("refreshText:\t" + (!this.file || this.file.fullPath)); if (this._masterEditor) { this._masterEditor._resetText(text); // _handleEditorChange() triggers "change" event for us } else { this._text = text; // We fake a change record here that looks like CodeMirror's text change records, but // omits "from" and "to", by which we mean the entire text has changed. // TODO: Dumb to split it here just to join it again in the change handler, but this is // the CodeMirror change format. Should we document our change format to allow this to // either be an array of lines or a single string? $(this).triggerHandler("change", [this, {text: text.split(/\r?\n/)}]); } this._markClean(); this.diskTimestamp = newTimestamp; // Sniff line-ending style this._lineEndings = FileUtils.sniffLineEndings(text); if (!this._lineEndings) { this._lineEndings = FileUtils.getPlatformLineEndings(); } $(exports).triggerHandler("documentRefreshed", this); PerfUtils.addMeasurement(perfTimerName); };
Document.prototype.refreshText = function (text, newTimestamp) { var perfTimerName = PerfUtils.markStart("refreshText:\t" + (!this.file || this.file.fullPath)); // If clean, don't transiently mark dirty during refresh // (we'll still send change events though, of course) this._refreshInProgress = true; if (this._masterEditor) { this._masterEditor._resetText(text); // clears undo history too // _handleEditorChange() triggers "change" event for us } else { this._text = text; // We fake a change record here that looks like CodeMirror's text change records, but // omits "from" and "to", by which we mean the entire text has changed. // TODO: Dumb to split it here just to join it again in the change handler, but this is // the CodeMirror change format. Should we document our change format to allow this to // either be an array of lines or a single string? $(this).triggerHandler("change", [this, {text: text.split(/\r?\n/)}]); } this._updateTimestamp(newTimestamp); // If Doc was dirty before refresh, reset it to clean now (don't always call, to avoid no-op dirtyFlagChange events) Since // _resetText() above already ensures Editor state is clean, it's safe to skip _markClean() as long as our own state is already clean too. if (this.isDirty) { this._markClean(); } this._refreshInProgress = false; // Sniff line-ending style this._lineEndings = FileUtils.sniffLineEndings(text); if (!this._lineEndings) { this._lineEndings = FileUtils.getPlatformLineEndings(); } $(exports).triggerHandler("_documentRefreshed", this); PerfUtils.addMeasurement(perfTimerName); };