diff --git a/src/server/AureliaSettings.ts b/src/server/AureliaSettings.ts index a10b5357..5b30bd35 100644 --- a/src/server/AureliaSettings.ts +++ b/src/server/AureliaSettings.ts @@ -1,3 +1,8 @@ +interface IFeatureToggles { + smartAutocomplete : boolean, + pathToAureliaProject: string[] +} + export default class AureliaSettings { public quote: string = '"'; public validation: boolean = true; @@ -5,7 +10,8 @@ export default class AureliaSettings { data : [] } - public featureToggles = { - smartAutocomplete : true + public featureToggles: IFeatureToggles = { + smartAutocomplete : true, + pathToAureliaProject: ['src'], } } diff --git a/src/server/FileParser/ProcessFiles.ts b/src/server/FileParser/ProcessFiles.ts index d016c6d1..75b67a68 100644 --- a/src/server/FileParser/ProcessFiles.ts +++ b/src/server/FileParser/ProcessFiles.ts @@ -15,6 +15,7 @@ import { Methods, Properties, ViewModelDocument } from './Model/ViewModelDocumen import { HTMLDocumentParser, TagDefinition, AttributeDefinition } from './HTMLDocumentParser'; import { normalizePath } from './../Util/NormalizePath'; +import AureliaSettings from '../AureliaSettings'; export default class ProcessFiles { @@ -24,7 +25,8 @@ export default class ProcessFiles { public async processPath(): Promise { const sourceDirectory = sys.getCurrentDirectory(); - const paths = sys.readDirectory(sourceDirectory, ['ts', 'js', 'html'], ['node_modules', 'aurelia_project']); + const includePath = new AureliaSettings().featureToggles.pathToAureliaProject; + const paths = sys.readDirectory(sourceDirectory, ['ts', 'js', 'html'], ['node_modules', 'aurelia_project'], includePath); for (let path of paths) { diff --git a/src/server/main.ts b/src/server/main.ts index ca638aae..47232470 100644 --- a/src/server/main.ts +++ b/src/server/main.ts @@ -51,6 +51,7 @@ import { normalizePath } from './Util/NormalizePath'; import { connect } from 'net'; import { AureliaConfigProperties } from '../client/Model/AureliaConfigProperties'; import { exposeAureliaDefinitions } from './ExposeAureliaDefinitions'; +import { sys } from 'typescript'; // Bind console.log & error to the Aurelia output const connection: IConnection = createConnection(); @@ -104,7 +105,10 @@ connection.onDidChangeConfiguration(async (change) => { settings.quote = change.settings.aurelia.autocomplete.quotes === 'single' ? '\'' : '"'; settings.validation = change.settings.aurelia.validation; settings.bindings.data = change.settings.aurelia.autocomplete.bindings.data; - settings.featureToggles = change.settings.aurelia.featureToggles; + settings.featureToggles = { + ...settings.featureToggles, + ...change.settings.aurelia.featureToggles, + }; await featureToggles(settings.featureToggles); }); @@ -159,12 +163,26 @@ connection.onDefinition((position: TextDocumentPositionParams): Definition => { connection.listen(); async function featureToggles(featureToggles) { + console.log("TCL: featureToggles -> featureToggles function") if (settings.featureToggles.smartAutocomplete) { console.log('smart auto complete init'); + + // Aurelia project path to parse + console.log('>>> 1.1 This is the project\'s directory:'); + const sourceDirectory = sys.getCurrentDirectory(); + console.log(sourceDirectory); + console.log('>>> 1.2. The extension will try to parse Aurelia components inside:') + console.log(settings.featureToggles.pathToAureliaProject); + console.log('>>> 1.3. Eg.') + console.log(sourceDirectory + '/' + settings.featureToggles.pathToAureliaProject[0]); + try { let fileProcessor = new ProcessFiles(); await fileProcessor.processPath(); aureliaApplication.components = fileProcessor.components; + console.log('>>> 2. The extension found this many components:'); + console.log(aureliaApplication.components.length); + } catch (ex) { console.log('------------- FILE PROCESSOR ERROR ---------------------'); console.log(JSON.stringify(ex));