Skip to content

Commit

Permalink
Use default workspace config if available and no settings config (#30)
Browse files Browse the repository at this point in the history
  • Loading branch information
josephsumabat authored Feb 14, 2024
1 parent 51d4081 commit 34561bf
Showing 1 changed file with 20 additions and 2 deletions.
22 changes: 20 additions & 2 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,16 @@ import { makeClient } from './client'
import { Config, LanguageConfig, alloglot } from './config'
import { makeFormatter } from './formatter'
import { makeTags } from './tags'
import { readFileSync, writeFile, writeFileSync } from 'fs'

export function activate(context: vscode.ExtensionContext): void {
const settingsSection = vscode.workspace.getConfiguration(alloglot.root)
const alloglotWorkspaceLanguages = getWorkspaceConfig('.vscode/alloglot.json');
const alloglotVscodeLanguages = settingsSection.get<Array<LanguageConfig>>(alloglot.config.languages, [])
const alloglotLanguages = alloglotVscodeLanguages.length === 0 ? alloglotWorkspaceLanguages : alloglotVscodeLanguages;

const config: Config = {
languages: settingsSection
.get<Array<LanguageConfig>>(alloglot.config.languages, [])
languages: alloglotLanguages
.filter(lang => {
// make sure no fields are whitespace-only
// we mutate the original object because typescript doesn't have a `filterMap` function
Expand Down Expand Up @@ -52,4 +55,19 @@ export function activate(context: vscode.ExtensionContext): void {
)
}

function getWorkspaceConfig(workspaceConfigPath: string): LanguageConfig[] {
const workspaceFolders = vscode.workspace.workspaceFolders?.map(folder => folder.uri)
try {
if (workspaceFolders && workspaceFolders.length > 0)
{
const fullPath = vscode.Uri.joinPath(workspaceFolders[0], workspaceConfigPath);
return JSON.parse(readFileSync(fullPath.path,'utf-8')).languages;
} else {
return []
}
} catch (err){
return []
}
}

export function deactivate() { }

0 comments on commit 34561bf

Please sign in to comment.