From 04d63b1fae80e5411b7febc7e68e45fbfceb3220 Mon Sep 17 00:00:00 2001 From: Bernhard Sirlinger Date: Wed, 27 Mar 2013 23:48:52 +0100 Subject: [PATCH 1/2] Use language id --- src/editor/CodeHintManager.js | 67 +++++++++---------- .../default/JavaScriptCodeHints/HintUtils.js | 4 +- .../JavaScriptCodeHints/ScopeManager.js | 4 +- .../default/JavaScriptCodeHints/main.js | 4 +- 4 files changed, 39 insertions(+), 40 deletions(-) diff --git a/src/editor/CodeHintManager.js b/src/editor/CodeHintManager.js index a6ca81cca90..beaa7c7e294 100644 --- a/src/editor/CodeHintManager.js +++ b/src/editor/CodeHintManager.js @@ -240,61 +240,61 @@ define(function (require, exports, module) { /** * The method by which a CodeHintProvider registers its willingness to - * providing hints for editors in a given mode. + * providing hints for editors in a given language. * * @param {CodeHintProvider} provider * The hint provider to be registered, described below. * - * @param {Array[(string|Object)]} modes - * The set of mode names for which the provider is capable of - * providing hints. If the special mode name "all" is included then - * the provider may be called upon to provide hints for any mode. + * @param {Array[(string|Object)]} languageIDs + * The set of language ids for which the provider is capable of + * providing hints. If the special language id name "all" is included then + * the provider may be called upon to provide hints for any language. * * @param {Integer} priority * A non-negative number used to break ties among hint providers for a - * particular mode. Providers that register with a higher priority - * will have the opportunity to provide hints at a given mode before + * particular language. Providers that register with a higher priority + * will have the opportunity to provide hints at a given language before * those with a lower priority. Brackets default providers have * priority zero. */ - function registerHintProvider(providerInfo, modes, priority) { + function registerHintProvider(providerInfo, languageIDs, priority) { var providerObj = { provider: providerInfo, priority: priority || 0 }; - if (modes) { - var modeNames = [], registerInAllModes = false; - var i, currentModeName; - for (i = 0; i < modes.length; i++) { - currentModeName = (typeof modes[i] === "string") ? modes[i] : modes[i].name; - if (currentModeName) { - if (currentModeName === "all") { - registerInAllModes = true; + if (languageIDs) { + var languageIdNames = [], registerForAllLanguages = false; + var i, currentLanguageID; + for (i = 0; i < languageIDs.length; i++) { + currentLanguageID = languageIDs[i]; + if (currentLanguageID) { + if (currentLanguageID === "all") { + registerForAllLanguages = true; break; } else { - modeNames.push(currentModeName); + languageIdNames.push(currentLanguageID); } } } - if (registerInAllModes) { + if (registerForAllLanguages) { // if we're registering in all, then we ignore the modeNames array // so that we avoid registering a provider twice - var modeName; - for (modeName in hintProviders) { - if (hintProviders.hasOwnProperty(modeName)) { - hintProviders[modeName].push(providerObj); - hintProviders[modeName].sort(_providerSort); + var languageName; + for (languageName in hintProviders) { + if (hintProviders.hasOwnProperty(languageName)) { + hintProviders[languageName].push(providerObj); + hintProviders[languageName].sort(_providerSort); } } } else { - modeNames.forEach(function (modeName) { - if (modeName) { - if (!hintProviders[modeName]) { + languageIdNames.forEach(function (languageName) { + if (languageName) { + if (!hintProviders[languageName]) { // initialize a new mode with all providers - hintProviders[modeName] = Array.prototype.concat(hintProviders.all); + hintProviders[languageName] = Array.prototype.concat(hintProviders.all); } - hintProviders[modeName].push(providerObj); - hintProviders[modeName].sort(_providerSort); + hintProviders[languageName].push(providerObj); + hintProviders[languageName].sort(_providerSort); } }); } @@ -308,9 +308,8 @@ define(function (require, exports, module) { * @param {(string|Object)} mode * @return {Array.<{provider: Object, modes: Array., priority: number}>} */ - function _getProvidersForMode(mode) { - var modeName = (typeof mode === "string") ? mode : mode.name; - return hintProviders[modeName] || hintProviders.all; + function _getProvidersForLanguage(languageID) { + return hintProviders[languageID] || hintProviders.all; } /** @@ -395,8 +394,8 @@ define(function (require, exports, module) { */ function _beginSession(editor) { // Find a suitable provider, if any - var mode = editor.getModeForSelection(), - enabledProviders = _getProvidersForMode(mode); + var language = editor.getLanguageForSelection(), + enabledProviders = _getProvidersForLanguage(language.getId()); $.each(enabledProviders, function (index, item) { if (item.provider.hasHints(editor, lastChar)) { diff --git a/src/extensions/default/JavaScriptCodeHints/HintUtils.js b/src/extensions/default/JavaScriptCodeHints/HintUtils.js index 8a8d886eb33..cb91d58936b 100644 --- a/src/extensions/default/JavaScriptCodeHints/HintUtils.js +++ b/src/extensions/default/JavaScriptCodeHints/HintUtils.js @@ -27,7 +27,7 @@ define(function (require, exports, module) { "use strict"; - var MODE_NAME = "javascript", + var LANGUAGE_ID = "javascript", SCOPE_MSG_TYPE = "outerScope", SINGLE_QUOTE = "\'", DOUBLE_QUOTE = "\""; @@ -380,7 +380,7 @@ define(function (require, exports, module) { exports.BUILTIN_GLOBALS = BUILTIN_GLOBALS; exports.KEYWORDS = KEYWORDS; exports.LITERALS = LITERALS; - exports.MODE_NAME = MODE_NAME; + exports.LANGUAGE_ID = LANGUAGE_ID; exports.SCOPE_MSG_TYPE = SCOPE_MSG_TYPE; exports.SINGLE_QUOTE = SINGLE_QUOTE; exports.DOUBLE_QUOTE = DOUBLE_QUOTE; diff --git a/src/extensions/default/JavaScriptCodeHints/ScopeManager.js b/src/extensions/default/JavaScriptCodeHints/ScopeManager.js index 78d8c0cc8c3..b6c3e44fb7b 100644 --- a/src/extensions/default/JavaScriptCodeHints/ScopeManager.js +++ b/src/extensions/default/JavaScriptCodeHints/ScopeManager.js @@ -440,8 +440,8 @@ define(function (require, exports, module) { file = split.file; if (file.indexOf(".") > 1) { // ignore /.dotfiles - var mode = LanguageManager.getLanguageForPath(entry.fullPath).getMode(); - if (mode === HintUtils.MODE_NAME) { + var languageID = LanguageManager.getLanguageForPath(entry.fullPath).getId(); + if (languageID === HintUtils.LANGUAGE_ID) { DocumentManager.getDocumentForPath(path).done(function (document) { refreshOuterScope(dir, file, document.getText()); }); diff --git a/src/extensions/default/JavaScriptCodeHints/main.js b/src/extensions/default/JavaScriptCodeHints/main.js index 1887d0eeba5..dade7f9852c 100644 --- a/src/extensions/default/JavaScriptCodeHints/main.js +++ b/src/extensions/default/JavaScriptCodeHints/main.js @@ -400,7 +400,7 @@ define(function (require, exports, module) { cachedHints = null; cachedType = null; - if (editor && editor.getModeForDocument() === HintUtils.MODE_NAME) { + if (editor && editor.getLanguageForSelection().getId() === HintUtils.LANGUAGE_ID) { initializeSession(editor); $(editor) .on(HintUtils.eventName("change"), function () { @@ -447,7 +447,7 @@ define(function (require, exports, module) { installEditorListeners(EditorManager.getActiveEditor()); var jsHints = new JSHints(); - CodeHintManager.registerHintProvider(jsHints, [HintUtils.MODE_NAME], 0); + CodeHintManager.registerHintProvider(jsHints, [HintUtils.LANGUAGE_ID], 0); // for unit testing exports.jsHintProvider = jsHints; From 7a112d7e32f474743cafd495ed29c9162e7df557 Mon Sep 17 00:00:00 2001 From: Bernhard Sirlinger Date: Fri, 29 Mar 2013 13:50:47 +0100 Subject: [PATCH 2/2] Updated comments --- src/editor/CodeHintManager.js | 40 +++++++++++++++++------------------ 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/editor/CodeHintManager.js b/src/editor/CodeHintManager.js index beaa7c7e294..591f8476450 100644 --- a/src/editor/CodeHintManager.js +++ b/src/editor/CodeHintManager.js @@ -26,11 +26,11 @@ * * The CodeHintManager mediates the interaction between the editor and a * collection of hint providers. If hints are requested explicitly by the - * user, then the providers registered for the current mode are queried + * user, then the providers registered for the current language are queried * for their ability to provide hints in order of descending priority by * way their hasHints methods. Character insertions may also constitute an * implicit request for hints; consequently, providers for the current - * mode are also queried on character insertion for both their ability to + * language are also queried on character insertion for both their ability to * provide hints and also for the suitability of providing implicit hints * in the given editor context. * @@ -277,24 +277,24 @@ define(function (require, exports, module) { } if (registerForAllLanguages) { - // if we're registering in all, then we ignore the modeNames array + // if we're registering in all, then we ignore the languageIdNames array // so that we avoid registering a provider twice - var languageName; - for (languageName in hintProviders) { - if (hintProviders.hasOwnProperty(languageName)) { - hintProviders[languageName].push(providerObj); - hintProviders[languageName].sort(_providerSort); + var languageId; + for (languageId in hintProviders) { + if (hintProviders.hasOwnProperty(languageId)) { + hintProviders[languageId].push(providerObj); + hintProviders[languageId].sort(_providerSort); } } } else { - languageIdNames.forEach(function (languageName) { - if (languageName) { - if (!hintProviders[languageName]) { - // initialize a new mode with all providers - hintProviders[languageName] = Array.prototype.concat(hintProviders.all); + languageIdNames.forEach(function (languageId) { + if (languageId) { + if (!hintProviders[languageId]) { + // initialize a new language id with all providers + hintProviders[languageId] = Array.prototype.concat(hintProviders.all); } - hintProviders[languageName].push(providerObj); - hintProviders[languageName].sort(_providerSort); + hintProviders[languageId].push(providerObj); + hintProviders[languageId].sort(_providerSort); } }); } @@ -302,13 +302,13 @@ define(function (require, exports, module) { } /** - * Return the array of hint providers for the given mode. + * Return the array of hint providers for the given language id. * This gets called (potentially) on every keypress. So, it should be fast. * - * @param {(string|Object)} mode - * @return {Array.<{provider: Object, modes: Array., priority: number}>} + * @param {(string|Object)} languageID + * @return {Array.<{provider: Object, languageIDs: Array., priority: number}>} */ - function _getProvidersForLanguage(languageID) { + function _getProvidersForLanguageID(languageID) { return hintProviders[languageID] || hintProviders.all; } @@ -395,7 +395,7 @@ define(function (require, exports, module) { function _beginSession(editor) { // Find a suitable provider, if any var language = editor.getLanguageForSelection(), - enabledProviders = _getProvidersForLanguage(language.getId()); + enabledProviders = _getProvidersForLanguageID(language.getId()); $.each(enabledProviders, function (index, item) { if (item.provider.hasHints(editor, lastChar)) {