From bf8171fd630e433f43dd2a15aea1050596debd44 Mon Sep 17 00:00:00 2001 From: Alexander Zobnin Date: Mon, 7 Aug 2017 21:08:14 +0300 Subject: [PATCH] code-editor: initial autocomplete --- .../components/code_editor/code_editor.ts | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/public/app/core/components/code_editor/code_editor.ts b/public/app/core/components/code_editor/code_editor.ts index 529b16506c4..45c2cafd275 100644 --- a/public/app/core/components/code_editor/code_editor.ts +++ b/public/app/core/components/code_editor/code_editor.ts @@ -9,22 +9,27 @@ const ACE_SRC_BASE = "public/vendor/npm/ace-builds/src-noconflict/"; // Trick for loading additional modules function fixModuleUrl(moduleType, name) { let aceModeName = `ace/${moduleType}/${name}`; - ace.config.setModuleUrl(aceModeName, ACE_SRC_BASE + `${moduleType}-${name}.js`); + let componentName = `${moduleType}-${name}.js`; + if (moduleType === 'snippets') { + componentName = `${moduleType}/${name}.js`; + } + ace.config.setModuleUrl(aceModeName, ACE_SRC_BASE + componentName); } fixModuleUrl("theme", "solarized_dark"); +fixModuleUrl("ext", "language_tools"); -let editorTemplate = ` -
-`; +let editorTemplate = `
`; function link(scope, elem, attrs) { let aceElem = elem.get(0); let codeEditor = ace.edit(aceElem); let editorSession = codeEditor.getSession(); + codeEditor.setTheme("ace/theme/solarized_dark"); codeEditor.setHighlightActiveLine(false); codeEditor.setShowPrintMargin(false); + // disable depreacation warning codeEditor.$blockScrolling = Infinity; setLangMode(); @@ -36,7 +41,7 @@ function link(scope, elem, attrs) { textarea.addClass('gf-form-input width-25'); textarea.attr("rows", "4"); - editorSession.on('change', e => { + editorSession.on('change', (e) => { scope.$apply(() => { let newValue = codeEditor.getValue(); scope.content = newValue; @@ -47,7 +52,15 @@ function link(scope, elem, attrs) { let lang = attrs.mode || 'text'; let aceModeName = `ace/mode/${lang}`; fixModuleUrl("mode", lang); + fixModuleUrl("snippets", lang); editorSession.setMode(aceModeName); + ace.config.loadModule("ace/ext/language_tools", (language_tools) => { + codeEditor.setOptions({ + enableBasicAutocompletion: true, + enableLiveAutocompletion: true, + enableSnippets: true + }); + }); } }