move editorOnChange to editor

pull/1/head
yann300 7 years ago
parent dda9dba1a2
commit e3a5fdcb28
  1. 33
      src/app.js
  2. 39
      src/app/editor/editor.js

@ -488,38 +488,6 @@ Please make a backup of your contracts and start using http://remix.ethereum.org
var txLogger = new TxLogger() // eslint-disable-line
var previousInput = ''
var saveTimeout = null
function editorOnChange () {
var currentFile = self._components.config.get('currentFile')
if (!currentFile) {
return
}
var input = editor.get(currentFile)
if (!input) {
return
}
// if there's no change, don't do anything
if (input === previousInput) {
return
}
previousInput = input
// fire storage update
// NOTE: save at most once per 5 seconds
if (saveTimeout) {
window.clearTimeout(saveTimeout)
}
saveTimeout = window.setTimeout(() => {
fileManager.saveCurrentFile()
}, 5000)
}
// auto save the file when content changed
editor.event.register('contentChanged', editorOnChange)
// save the file when switching
editor.event.register('sessionSwitched', editorOnChange)
executionContext.event.register('contextChanged', this, function (context) {
self.runCompiler()
})
@ -533,7 +501,6 @@ Please make a backup of your contracts and start using http://remix.ethereum.org
// check init query parameters from the URL once the compiler is loaded
self._components.compiler.event.register('compilerLoaded', this, function (version) {
previousInput = ''
self.runCompiler()
if (queryParams.get().context) {

@ -7,6 +7,8 @@ var ace = require('brace')
require('brace/theme/tomorrow_night_blue')
var globalRegistry = require('../../global/registry')
var Range = ace.acequire('ace/range').Range
require('brace/ext/language_tools')
require('brace/ext/searchbox')
@ -63,13 +65,19 @@ document.head.appendChild(yo`
</style>
`)
function Editor (opts = {}) {
function Editor (opts = {}, localRegistry) {
var self = this
var el = yo`<div id="input"></div>`
var editor = ace.edit(el)
if (styles.appProperties.aceTheme) {
editor.setTheme('ace/theme/' + styles.appProperties.aceTheme)
}
self._components = {}
self._components.registry = localRegistry || globalRegistry
self._deps = {
fileManager: self._components.registry.get('filemanager').api,
config: self._components.registry.get('config').api
}
ace.acequire('ace/ext/language_tools')
editor.setOptions({
@ -275,11 +283,15 @@ function Editor (opts = {}) {
this.find = (string) => editor.find(string)
this.previousInput = ''
this.saveTimeout = null
// Do setup on initialisation here
editor.on('changeSession', function () {
editorOnChange(self)
event.trigger('sessionSwitched', [])
editor.getSession().on('change', function () {
editorOnChange(self)
event.trigger('contentChanged', [])
})
})
@ -290,4 +302,29 @@ function Editor (opts = {}) {
editor.resize(true)
}
function editorOnChange (self) {
var currentFile = self._deps.config.get('currentFile')
if (!currentFile) {
return
}
var input = self.get(currentFile)
if (!input) {
return
}
// if there's no change, don't do anything
if (input === self.previousInput) {
return
}
self.previousInput = input
// fire storage update
// NOTE: save at most once per 5 seconds
if (self.saveTimeout) {
window.clearTimeout(self.saveTimeout)
}
self.saveTimeout = window.setTimeout(() => {
self._deps.fileManager.saveCurrentFile()
}, 5000)
}
module.exports = Editor

Loading…
Cancel
Save