diff --git a/src/base/formula/codemirror/formula-mode.js b/src/base/formula/codemirror/formula-mode.js index 52afc5ca6..1f017806a 100644 --- a/src/base/formula/codemirror/formula-mode.js +++ b/src/base/formula/codemirror/formula-mode.js @@ -23,6 +23,10 @@ nextUntilUnescaped(stream, ch); return "string"; } + if (ch === '\u200b') { + nextUntilUnescaped(stream, ch); + return "field"; + } if (/[\[\],\(\)]/.test(ch)) { return 'bracket'; } diff --git a/src/base/single/editor/editor.code.js b/src/base/single/editor/editor.code.js index 4ba118bf4..dc99d0f17 100644 --- a/src/base/single/editor/editor.code.js +++ b/src/base/single/editor/editor.code.js @@ -25,7 +25,8 @@ BI.CodeEditor = BI.inherit(BI.Single, { textWrapping: true, lineWrapping: true, lineNumbers: false, - readOnly: o.readOnly + readOnly: o.readOnly, + specialChars: /[\u0000-\u001f\u007f\u00ad\u200c-\u200f\u2028\u2029\ufeff]/ }); o.lineHeight === 1 ? this.element.addClass("codemirror-low-line-height") : this.element.addClass("codemirror-high-line-height"); this.editor.on("change", function (cm, change) { @@ -110,7 +111,7 @@ BI.CodeEditor = BI.inherit(BI.Single, { var value = param; param = this.options.paramFormatter(param); var from = this.editor.getCursor(); - this.editor.replaceSelection(param); + this.editor.replaceSelection('\u200b' + param + '\u200b'); var to = this.editor.getCursor(); var options = {className: 'param', atomic: true}; if (BI.isNotNull(param.match(/^$/))) { @@ -118,7 +119,6 @@ BI.CodeEditor = BI.inherit(BI.Single, { } options.value = value; this.editor.markText(from, to, options); - this.editor.replaceSelection(" "); this.editor.focus(); },