diff --git a/src/text-editor-component.js b/src/text-editor-component.js index 3619d3221..52e4f054e 100644 --- a/src/text-editor-component.js +++ b/src/text-editor-component.js @@ -2,10 +2,12 @@ const etch = require('etch') const {CompositeDisposable} = require('event-kit') const {Point} = require('text-buffer') const resizeDetector = require('element-resize-detector')({strategy: 'scroll'}) -const TextEditorElement = require('./text-editor-element') +const TextEditor = require('./text-editor') const {isPairedCharacter} = require('./text-utils') const $ = etch.dom +let TextEditorElement + const DEFAULT_ROWS_PER_TILE = 6 const NORMAL_WIDTH_CHARACTER = 'x' const DOUBLE_WIDTH_CHARACTER = '我' @@ -17,7 +19,12 @@ module.exports = class TextEditorComponent { constructor (props) { this.props = props - this.element = props.element || new TextEditorElement() + if (props.element) { + this.element = props.element + } else { + if (!TextEditorElement) TextEditorElement = require('./text-editor-element') + this.element = new TextEditorElement() + } this.element.initialize(this) this.virtualNode = $('atom-text-editor') this.virtualNode.domNode = this.element @@ -1154,7 +1161,6 @@ class TextEditorComponent { getModel () { if (!this.props.model) { - const TextEditor = require('./text-editor') this.props.model = new TextEditor() this.observeModel() } diff --git a/src/text-editor.coffee b/src/text-editor.coffee index c54ad0138..b826250f3 100644 --- a/src/text-editor.coffee +++ b/src/text-editor.coffee @@ -12,7 +12,7 @@ Model = require './model' Selection = require './selection' TextMateScopeSelector = require('first-mate').ScopeSelector GutterContainer = require './gutter-container' -TextEditorComponent = require './text-editor-component' +TextEditorComponent = null {isDoubleWidthCharacter, isHalfWidthCharacter, isKoreanCharacter, isWrapBoundary} = require './text-utils' ZERO_WIDTH_NBSP = '\ufeff' @@ -3547,6 +3547,7 @@ class TextEditor extends Model # Get the Element for the editor. getElement: -> + TextEditorComponent ?= require('./text-editor-component') new TextEditorComponent({model: this}) @component.element