commit
86e85d9618
@ -0,0 +1,67 @@ |
|||||||
|
'use strict' |
||||||
|
var csjs = require('csjs-inject') |
||||||
|
var globlalRegistry = require('../../global/registry') |
||||||
|
var styleGuide = require('../ui/styles-guide/theme-chooser') |
||||||
|
var styles = styleGuide.chooser() |
||||||
|
|
||||||
|
var css = csjs` |
||||||
|
.highlightcode { |
||||||
|
position:absolute; |
||||||
|
z-index:20; |
||||||
|
background-color: ${styles.editor.backgroundColor_DebuggerMode}; |
||||||
|
} |
||||||
|
.highlightcode_fullLine { |
||||||
|
position:absolute; |
||||||
|
z-index:20; |
||||||
|
background-color: ${styles.editor.backgroundColor_DebuggerMode}; |
||||||
|
opacity: 0.5; |
||||||
|
} |
||||||
|
` |
||||||
|
|
||||||
|
class SourceHighlighter { |
||||||
|
constructor (localRegistry) { |
||||||
|
const self = this |
||||||
|
self._components = {} |
||||||
|
self._components.registry = localRegistry || globlalRegistry |
||||||
|
// dependencies
|
||||||
|
self._deps = { |
||||||
|
editor: self._components.registry.get('editor').api, |
||||||
|
config: self._components.registry.get('config').api, |
||||||
|
fileManager: self._components.registry.get('filemanager').api, |
||||||
|
compiler: self._components.registry.get('compiler').api |
||||||
|
} |
||||||
|
this.statementMarker = null |
||||||
|
this.fullLineMarker = null |
||||||
|
this.source = null |
||||||
|
} |
||||||
|
|
||||||
|
currentSourceLocation (lineColumnPos, location) { |
||||||
|
if (this.statementMarker) this._deps.editor.removeMarker(this.statementMarker, this.source) |
||||||
|
if (this.fullLineMarker) this._deps.editor.removeMarker(this.fullLineMarker, this.source) |
||||||
|
this.statementMarker = null |
||||||
|
this.fullLineMarker = null |
||||||
|
this.source = null |
||||||
|
if (lineColumnPos) { |
||||||
|
this.source = this._deps.compiler.getSourceName(location.file) |
||||||
|
if (this._deps.config.get('currentFile') !== this.source) { |
||||||
|
this._deps.fileManager.switchFile(this.source) |
||||||
|
} |
||||||
|
this.statementMarker = this._deps.editor.addMarker(lineColumnPos, this.source, css.highlightcode) |
||||||
|
this._deps.editor.scrollToLine(lineColumnPos.start.line, true, true, function () {}) |
||||||
|
if (lineColumnPos.start.line === lineColumnPos.end.line) { |
||||||
|
this.fullLineMarker = this._deps.editor.addMarker({ |
||||||
|
start: { |
||||||
|
line: lineColumnPos.start.line, |
||||||
|
column: 0 |
||||||
|
}, |
||||||
|
end: { |
||||||
|
line: lineColumnPos.start.line + 1, |
||||||
|
column: 0 |
||||||
|
} |
||||||
|
}, this.source, css.highlightcode_fullLine) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
module.exports = SourceHighlighter |
Loading…
Reference in new issue