From e58fa3e6d74c6aeecdcac435e38ff390b060fb39 Mon Sep 17 00:00:00 2001 From: sevin7676 Date: Mon, 20 Apr 2015 04:50:25 -0400 Subject: [PATCH] remove completionModifer, one off for SQL Server Mode --- lib/ace/mode/javascript_highlight_rules.js | 24 ------------- lib/ace/mode/sqlserver.js | 30 ++++++++++++++++ lib/ace/mode/sqlserver_highlight_rules.js | 40 +++++----------------- lib/ace/mode/text.js | 6 +--- lib/ace/mode/text_highlight_rules.js | 8 ----- 5 files changed, 40 insertions(+), 68 deletions(-) diff --git a/lib/ace/mode/javascript_highlight_rules.js b/lib/ace/mode/javascript_highlight_rules.js index fd23e7d9..5bdcce12 100644 --- a/lib/ace/mode/javascript_highlight_rules.js +++ b/lib/ace/mode/javascript_highlight_rules.js @@ -64,30 +64,6 @@ var JavaScriptHighlightRules = function(options) { "alert", "constant.language.boolean": "true|false" }, "identifier"); - - // modify keyword completions meta display and remove things that are irrelevant - var modCache = {}; - this.completionModifier = function(obj) { - var n = obj.name; - if (n.search('__parent__|__count__|proto__') !== -1) return; //can't cache reserved keys - - if (modCache[n] === undefined) { - if (n.search('enum|await|implements|package|protected|static|interface|private|public') !== -1) modCache[n] = ''; //future - else if (n.search('Namespace|QName|XML|XMLList') !== -1) modCache[n] = ''; //E4X is obsolete - else if (n.search('Iterator|ParallelArray|StopIeration') !== -1) modCache[n] = ''; //non standard - else if (n.search('Array|Boolean|Date|Function|Number|Object|RegExp|String|Proxy') !== -1) modCache[n] = 'object'; - else if (n.search('Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError') !== -1) modCache[n] = 'object'; - else if (n.search('alert|eval|isFinite|isNan|parseFloat|parseInt|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|escape|unescape') !== -1) modCache[n] = 'function'; - else if (n.search('null|Infinity|NaN|undefined') !== -1) modCache[n] = 'constant'; - else if (n.search('const|let|var|function|class|get|set') !== -1) modCache[n] = 'declaration'; - else if (n.search('true|false') !== -1) modCache[n] = 'boolean'; - else modCache[n] = 'keyword'; - } - - obj.meta = modCache[n]; - if (obj.meta === '') return; //don't show obsolete - return obj; - }; // keywords which can be followed by regular expressions var kwBeforeRe = "case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void"; diff --git a/lib/ace/mode/sqlserver.js b/lib/ace/mode/sqlserver.js index 0f66c1e5..352e2ac8 100644 --- a/lib/ace/mode/sqlserver.js +++ b/lib/ace/mode/sqlserver.js @@ -46,6 +46,36 @@ oop.inherits(Mode, TextMode); (function() { this.lineCommentStart = "--"; this.blockComment = {start: "/*", end: "*/"}; + + /** + * Override keyword completions to ensure proper case for completions + * and use smart meta tags instead of 'keyword' for all completions. + */ + this.getCompletions = function(state, session, pos, prefix) { + if (this.getCompletionsResult) return this.getCompletionsResult; + + var keywords = this.$keywordList || this.$createKeywordList(); + var types = session.$mode.$highlightRules.keywordTypes; + + this.getCompletionsResult = keywords.map(function(word) { + var meta = 'keyword'; + if (types.builtInStoredProcedures.indexOf(word) !== -1) meta = "procedure"; + else { + word = word.toUpperCase(); //all others are upper case + if (types.builtinFunctions.indexOf(word) !== -1) meta = "function"; + else if (types.dataTypes.indexOf(word) !== -1) meta = "type"; + else if (types.setStatements.indexOf(word) !== -1) meta = "statement"; + else if (types.logicalOperators.indexOf(word) !== -1) meta = "operator"; + } + return { + name: word, + value: word, + score: 0, + meta: meta + }; + }); + return this.getCompletionsResult; + }; this.$id = "ace/mode/sql"; }).call(Mode.prototype); diff --git a/lib/ace/mode/sqlserver_highlight_rules.js b/lib/ace/mode/sqlserver_highlight_rules.js index 4a7a7658..c8770641 100644 --- a/lib/ace/mode/sqlserver_highlight_rules.js +++ b/lib/ace/mode/sqlserver_highlight_rules.js @@ -211,41 +211,19 @@ var SqlServerHighlightRules = function() { this.normalizeRules(); - - // prepare key word types for completion modifier - builtInStoredProcedures = builtInStoredProcedures.split('|'); - logicalOperators = logicalOperators.split('|'); - builtinFunctions = builtinFunctions.split('|'); - dataTypes = dataTypes.split('|'); - - var modCache = {}; - this.completionModifier = function(obj) { - var word = obj.name, - meta = 'keyword'; - - if (modCache[word] === undefined) { - if (builtInStoredProcedures.indexOf(word) !== -1) meta = "procedure"; - else { - //all others are upper case - word = word.toUpperCase(); - if (builtinFunctions.indexOf(word) !== -1) meta = "function"; - else if (dataTypes.indexOf(word) !== -1) meta = "type"; - else if (setStatements.indexOf(word) !== -1) meta = "statement"; - else if (logicalOperators.indexOf(word) !== -1) meta = "operator"; - } - modCache[word] = { - word: word, - value: word, - meta: meta, - score: 0 - }; - } - - return modCache[word]; + // export types for overriding get completions + this.keywordTypes = { + builtInStoredProcedures: builtInStoredProcedures.split('|'), + logicalOperators: logicalOperators.split('|'), + builtinFunctions: builtinFunctions.split('|'), + dataTypes: dataTypes.split('|'), + setStatements: setStatements, }; + }; oop.inherits(SqlServerHighlightRules, TextHighlightRules); exports.SqlHighlightRules = SqlServerHighlightRules; +console.log('exports',exports); }); diff --git a/lib/ace/mode/text.js b/lib/ace/mode/text.js index f8f0581d..f04f1722 100644 --- a/lib/ace/mode/text.js +++ b/lib/ace/mode/text.js @@ -368,18 +368,14 @@ var Mode = function() { }; this.getCompletions = function(state, session, pos, prefix) { - var self = this; var keywords = this.$keywordList || this.$createKeywordList(); return keywords.map(function(word) { - var r = { + return { name: word, value: word, score: 0, meta: "keyword" }; - return self.$highlightRules.completionModifier ? self.$highlightRules.completionModifier.call(self, r) : r; - }).filter(function(value) { - return value !== undefined; }); }; diff --git a/lib/ace/mode/text_highlight_rules.js b/lib/ace/mode/text_highlight_rules.js index fc481442..ae72040b 100644 --- a/lib/ace/mode/text_highlight_rules.js +++ b/lib/ace/mode/text_highlight_rules.js @@ -227,14 +227,6 @@ var TextHighlightRules = function() { this.getKeywords = function() { return this.$keywords; }; - - /** - * Function that can be set by HighlightRules to modify a keyword completion. - * The function receives {name, value, score, meta} - * and should return the same type or undefined to skip adding the result to - * the completion list. - */ - this.completionModifier = null; }).call(TextHighlightRules.prototype);