code-editor: support language mode
This commit is contained in:
@@ -4,8 +4,15 @@
|
||||
import coreModule from 'app/core/core_module';
|
||||
import ace from 'ace';
|
||||
|
||||
const ACE_SRC_BASE = "public/vendor/npm/ace-builds/src-noconflict/";
|
||||
|
||||
// Trick for loading additional modules
|
||||
ace.config.setModuleUrl("ace/theme/solarized_dark", "public/vendor/npm/ace-builds/src-noconflict/theme-solarized_dark.js");
|
||||
function fixModuleUrl(moduleType, name) {
|
||||
let aceModeName = `ace/${moduleType}/${name}`;
|
||||
ace.config.setModuleUrl(aceModeName, ACE_SRC_BASE + `${moduleType}-${name}.js`);
|
||||
}
|
||||
|
||||
fixModuleUrl("theme", "solarized_dark");
|
||||
|
||||
let editorTemplate = `
|
||||
<div class="gf-code-editor"></div>
|
||||
@@ -19,6 +26,7 @@ function link(scope, elem, attrs) {
|
||||
codeEditor.setHighlightActiveLine(false);
|
||||
codeEditor.setShowPrintMargin(false);
|
||||
codeEditor.$blockScrolling = Infinity;
|
||||
setLangMode();
|
||||
|
||||
codeEditor.setValue(scope.content);
|
||||
codeEditor.clearSelection();
|
||||
@@ -35,6 +43,12 @@ function link(scope, elem, attrs) {
|
||||
});
|
||||
});
|
||||
|
||||
function setLangMode() {
|
||||
let lang = attrs.mode || 'text';
|
||||
let aceModeName = `ace/mode/${lang}`;
|
||||
fixModuleUrl("mode", lang);
|
||||
editorSession.setMode(aceModeName);
|
||||
}
|
||||
}
|
||||
|
||||
export function codeEditorDirective() {
|
||||
|
||||
Reference in New Issue
Block a user