UNPKG

atom-nuclide

Version:

A unified developer experience for web and mobile development, built as a suite of features on top of Atom to provide hackability and the support of an active community.

290 lines (227 loc) 8.58 kB
Object.defineProperty(exports, '__esModule', { value: true }); /* * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the license found in the LICENSE file in * the root directory of this source tree. */ exports.activate = activate; exports.createAutocompleteProvider = createAutocompleteProvider; exports.createCodeFormatProvider = createCodeFormatProvider; exports.createFindReferencesProvider = createFindReferencesProvider; exports.createTypeHintProvider = createTypeHintProvider; exports.createCodeHighlightProvider = createCodeHighlightProvider; exports.createEvaluationExpressionProvider = createEvaluationExpressionProvider; exports.provideDiagnostics = provideDiagnostics; exports.deactivate = deactivate; exports.provideOutlines = provideOutlines; exports.provideCoverage = provideCoverage; exports.provideDefinitions = provideDefinitions; function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; } var _CodeHighlightProvider2; function _CodeHighlightProvider() { return _CodeHighlightProvider2 = _interopRequireDefault(require('./CodeHighlightProvider')); } var _atom2; function _atom() { return _atom2 = require('atom'); } var _nuclideHackCommon2; function _nuclideHackCommon() { return _nuclideHackCommon2 = require('../../nuclide-hack-common'); } var _TypeCoverageProvider2; function _TypeCoverageProvider() { return _TypeCoverageProvider2 = require('./TypeCoverageProvider'); } var _OutlineViewProvider2; function _OutlineViewProvider() { return _OutlineViewProvider2 = require('./OutlineViewProvider'); } var _HackDefinitionProvider2; function _HackDefinitionProvider() { return _HackDefinitionProvider2 = require('./HackDefinitionProvider'); } var _commonsAtomProjects2; function _commonsAtomProjects() { return _commonsAtomProjects2 = require('../../commons-atom/projects'); } var _AutocompleteProvider2; function _AutocompleteProvider() { return _AutocompleteProvider2 = _interopRequireDefault(require('./AutocompleteProvider')); } var _nuclideRemoteConnection2; function _nuclideRemoteConnection() { return _nuclideRemoteConnection2 = require('../../nuclide-remote-connection'); } var _HackLanguage2; function _HackLanguage() { return _HackLanguage2 = require('./HackLanguage'); } var _FindReferencesProvider2; function _FindReferencesProvider() { return _FindReferencesProvider2 = _interopRequireDefault(require('./FindReferencesProvider')); } var _TypeHintProvider2; function _TypeHintProvider() { return _TypeHintProvider2 = _interopRequireDefault(require('./TypeHintProvider')); } var _HackEvaluationExpressionProvider2; function _HackEvaluationExpressionProvider() { return _HackEvaluationExpressionProvider2 = require('./HackEvaluationExpressionProvider'); } var _HackDiagnosticsProvider2; function _HackDiagnosticsProvider() { return _HackDiagnosticsProvider2 = _interopRequireDefault(require('./HackDiagnosticsProvider')); } // eslint-disable-next-line nuclide-internal/no-cross-atom-imports var _nuclideBusySignal2; function _nuclideBusySignal() { return _nuclideBusySignal2 = require('../../nuclide-busy-signal'); } var _HackLanguage4; function _HackLanguage3() { return _HackLanguage4 = require('./HackLanguage'); } var _CodeFormatProvider2; function _CodeFormatProvider() { return _CodeFormatProvider2 = _interopRequireDefault(require('./CodeFormatProvider')); } var HACK_GRAMMARS_STRING = (_nuclideHackCommon2 || _nuclideHackCommon()).HACK_GRAMMARS.join(', '); var PACKAGE_NAME = 'nuclide-hack'; var subscriptions = null; var hackDiagnosticsProvider = undefined; var busySignalProvider = undefined; var coverageProvider = null; var definitionProvider = null; function activate() { subscriptions = new (_atom2 || _atom()).CompositeDisposable(); subscriptions.add((0, (_commonsAtomProjects2 || _commonsAtomProjects()).onDidRemoveProjectPath)(function (projectPath) { var hackLanguage = (0, (_HackLanguage4 || _HackLanguage3()).getCachedHackLanguageForUri)(projectPath); if (hackLanguage) { hackLanguage.dispose(); } if (hackDiagnosticsProvider) { hackDiagnosticsProvider.invalidateProjectPath(projectPath); } })); subscriptions.add((_nuclideRemoteConnection2 || _nuclideRemoteConnection()).ServerConnection.onDidCloseServerConnection((_HackLanguage2 || _HackLanguage()).clearHackLanguageCache)); subscriptions.add(new (_atom2 || _atom()).Disposable((_HackLanguage2 || _HackLanguage()).clearHackLanguageCache)); } /** Provider for autocomplete service. */ function createAutocompleteProvider() { var autocompleteProvider = new (_AutocompleteProvider2 || _AutocompleteProvider()).default(); return { selector: (_nuclideHackCommon2 || _nuclideHackCommon()).HACK_GRAMMARS.map(function (grammar) { return '.' + grammar; }).join(', '), inclusionPriority: 1, // The context-sensitive hack autocompletions are more relevant than snippets. suggestionPriority: 3, excludeLowerPriority: false, getSuggestions: function getSuggestions(request) { return autocompleteProvider.getAutocompleteSuggestions(request); } }; } /** Provider for code format service. */ function createCodeFormatProvider() { var codeFormatProvider = new (_CodeFormatProvider2 || _CodeFormatProvider()).default(); return { selector: HACK_GRAMMARS_STRING, inclusionPriority: 1, formatCode: function formatCode(editor, range) { return codeFormatProvider.formatCode(editor, range); } }; } function createFindReferencesProvider() { return (_FindReferencesProvider2 || _FindReferencesProvider()).default; } function createTypeHintProvider() { var typeHintProvider = new (_TypeHintProvider2 || _TypeHintProvider()).default(); return { selector: HACK_GRAMMARS_STRING, inclusionPriority: 1, providerName: PACKAGE_NAME, typeHint: function typeHint(editor, position) { return typeHintProvider.typeHint(editor, position); } }; } function createCodeHighlightProvider() { var codeHighlightProvider = new (_CodeHighlightProvider2 || _CodeHighlightProvider()).default(); return { selector: HACK_GRAMMARS_STRING, inclusionPriority: 1, highlight: function highlight(editor, position) { return codeHighlightProvider.highlight(editor, position); } }; } function createEvaluationExpressionProvider() { var evaluationExpressionProvider = new (_HackEvaluationExpressionProvider2 || _HackEvaluationExpressionProvider()).HackEvaluationExpressionProvider(); var getEvaluationExpression = evaluationExpressionProvider.getEvaluationExpression.bind(evaluationExpressionProvider); return { selector: HACK_GRAMMARS_STRING, name: PACKAGE_NAME, getEvaluationExpression: getEvaluationExpression }; } function provideDiagnostics() { if (!hackDiagnosticsProvider) { var busyProvider = provideBusySignal(); hackDiagnosticsProvider = new (_HackDiagnosticsProvider2 || _HackDiagnosticsProvider()).default(false, busyProvider); } return hackDiagnosticsProvider; } function deactivate() { if (subscriptions) { subscriptions.dispose(); subscriptions = null; } if (hackDiagnosticsProvider) { hackDiagnosticsProvider.dispose(); hackDiagnosticsProvider = null; } } function provideOutlines() { var provider = new (_OutlineViewProvider2 || _OutlineViewProvider()).OutlineViewProvider(); return { grammarScopes: (_nuclideHackCommon2 || _nuclideHackCommon()).HACK_GRAMMARS, priority: 1, name: 'Hack', getOutline: provider.getOutline.bind(provider) }; } function provideBusySignal() { if (busySignalProvider == null) { busySignalProvider = new (_nuclideBusySignal2 || _nuclideBusySignal()).BusySignalProviderBase(); } return busySignalProvider; } function provideCoverage() { return { displayName: 'Hack', priority: 10, grammarScopes: (_nuclideHackCommon2 || _nuclideHackCommon()).HACK_GRAMMARS, getCoverage: function getCoverage(path) { return getTypeCoverageProvider().getTypeCoverage(path); } }; } function getTypeCoverageProvider() { if (coverageProvider == null) { coverageProvider = new (_TypeCoverageProvider2 || _TypeCoverageProvider()).TypeCoverageProvider(provideBusySignal()); } return coverageProvider; } function provideDefinitions() { if (definitionProvider == null) { definitionProvider = new (_HackDefinitionProvider2 || _HackDefinitionProvider()).HackDefinitionProvider(); } return definitionProvider; }