Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Simple code hints preferences to enable/disable individual/all code hints providers. #8272

Merged
merged 3 commits into from
Jul 19, 2014
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
38 changes: 29 additions & 9 deletions src/editor/CodeHintManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -242,18 +242,23 @@ define(function (require, exports, module) {
CodeHintList = require("editor/CodeHintList").CodeHintList,
PreferencesManager = require("preferences/PreferencesManager");

var hintProviders = { "all" : [] },
lastChar = null,
sessionProvider = null,
sessionEditor = null,
hintList = null,
deferredHints = null,
keyDownEditor = null;
var hintProviders = { "all" : [] },
lastChar = null,
sessionProvider = null,
sessionEditor = null,
hintList = null,
deferredHints = null,
keyDownEditor = null,
codeHintsEnabled = true;


PreferencesManager.definePreference("showCodeHints", "boolean", true);
PreferencesManager.definePreference("insertHintOnTab", "boolean", false);


PreferencesManager.on("change", "showCodeHints", function () {
codeHintsEnabled = PreferencesManager.get("showCodeHints");
});

/**
* Comparator to sort providers from high to low priority
*/
Expand Down Expand Up @@ -347,7 +352,15 @@ define(function (require, exports, module) {
* @return {?Array.<{provider: Object, priority: number}>}
*/
function _getProvidersForLanguageId(languageId) {
return hintProviders[languageId] || hintProviders.all;
var providers = hintProviders[languageId] || hintProviders.all;

// Exclude providers that are explicitly disabled in the preferences.
// All code hint providers that do not have their constructor
// names listed in the preferences are enabled by default.
return providers.filter(function (provider) {
var prefKey = "codehint." + provider.provider.constructor.name;
return PreferencesManager.get(prefKey) !== false;
});
}

var _beginSession;
Expand Down Expand Up @@ -451,6 +464,10 @@ define(function (require, exports, module) {
* @param {Editor} editor
*/
_beginSession = function (editor) {
if (!codeHintsEnabled) {
return;
}

// Don't start a session if we have a multiple selection.
if (editor.getSelections().length > 1) {
return;
Expand Down Expand Up @@ -501,6 +518,9 @@ define(function (require, exports, module) {
* @param {Editor} editor
*/
function _startNewSession(editor) {
if (!codeHintsEnabled) {
return;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think this check is necessary since it calls _beginSession().

if (!editor) {
editor = EditorManager.getFocusedEditor();
}
Expand Down