diff --git a/src/config.ts b/src/config.ts
index cffad71..677dae2 100644
--- a/src/config.ts
+++ b/src/config.ts
@@ -20,7 +20,7 @@
 	const isTrusted = getFromWorkspaceState(WORKSPACE_IS_TRUSTED_KEY, false);
 	defaultConfig = new Configuration(isTrusted, vscode.workspace.getConfiguration);
 	ctx.subscriptions.push(
-		vscode.commands.registerCommand('go.workspace.isTrusted.toggle', defaultConfig.toggleWorkspaceIsTrusted)
+		vscode.commands.registerCommand('go.workspace.isTrusted.toggle', toggleWorkspaceIsTrusted)
 	);
 
 	if (isTrusted) {
@@ -40,7 +40,7 @@
 		'More Info');
 	switch (val) {
 		case 'Trust This Workspace':
-			await defaultConfig.toggleWorkspaceIsTrusted();
+			await toggleWorkspaceIsTrusted();
 			break;
 		case 'More Info':
 			vscode.env.openExternal(
@@ -58,22 +58,27 @@
 	});
 }
 
+async function toggleWorkspaceIsTrusted() {
+	const v = defaultConfig.toggleWorkspaceIsTrusted();
+	await updateWorkspaceState(WORKSPACE_IS_TRUSTED_KEY, v);
+}
+
 // Go extension configuration for a workspace.
 export class Configuration {
 	constructor(
-		private workspaceIsTrusted: boolean,
-		private getConfiguration: typeof vscode.workspace.getConfiguration) { }
+		private workspaceIsTrusted = false,
+		private getConfiguration = vscode.workspace.getConfiguration) { }
 
-	public async toggleWorkspaceIsTrusted() {
+	public toggleWorkspaceIsTrusted() {
 		this.workspaceIsTrusted = !this.workspaceIsTrusted;
-		await updateWorkspaceState(WORKSPACE_IS_TRUSTED_KEY, this.workspaceIsTrusted);
+		return this.workspaceIsTrusted;
 	}
 
 	// returns a Proxied vscode.WorkspaceConfiguration, which prevents
 	// from using the workspace configuration if the workspace is untrusted.
-	public get<T>(uri?: vscode.Uri): vscode.WorkspaceConfiguration {
-		const cfg = this.getConfiguration('go', uri);
-		if (this.workspaceIsTrusted) {
+	public get<T>(section: string, uri?: vscode.Uri): vscode.WorkspaceConfiguration {
+		const cfg = this.getConfiguration(section, uri);
+		if (section !== 'go' || this.workspaceIsTrusted) {
 			return cfg;
 		}
 
@@ -117,3 +122,24 @@
 		return this._wrapped.update(section, value, configurationTarget, overrideInLanguage);
 	}
 }
+
+// getGoConfig is declared as an exported const rather than a function, so it can be stubbbed in testing.
+export const getGoConfig = (uri?: vscode.Uri) => {
+	return getConfig('go', uri);
+};
+
+// getGoplsConfig returns the user's gopls configuration.
+export function getGoplsConfig(uri?: vscode.Uri) {
+	return getConfig('gopls', uri);
+}
+
+function getConfig(section: string, uri?: vscode.Uri) {
+	if (!uri) {
+		if (vscode.window.activeTextEditor) {
+			uri = vscode.window.activeTextEditor.document.uri;
+		} else {
+			uri = null;
+		}
+	}
+	return defaultConfig ? defaultConfig.get(section, uri) : new Configuration().get(section, uri);
+}
diff --git a/src/goBuild.ts b/src/goBuild.ts
index 66ffb5e..2008ce3 100644
--- a/src/goBuild.ts
+++ b/src/goBuild.ts
@@ -5,6 +5,7 @@
 
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { buildDiagnosticCollection } from './goMain';
 import { isModSupported } from './goModules';
@@ -13,7 +14,6 @@
 import { getTestFlags } from './testUtils';
 import {
 	getCurrentGoPath,
-	getGoConfig,
 	getModuleCache,
 	getTempFilePath,
 	getWorkspaceFolderPath,
diff --git a/src/goCover.ts b/src/goCover.ts
index 2d525b3..d15cbf0 100644
--- a/src/goCover.ts
+++ b/src/goCover.ts
@@ -8,10 +8,10 @@
 import fs = require('fs');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { isModSupported } from './goModules';
 import { getImportPathToFolder } from './goPackages';
 import { getTestFlags, goTest, showTestOutput, TestConfig } from './testUtils';
-import { getGoConfig } from './util';
 import { fixDriveCasingInWindows } from './utils/pathUtils';
 
 let gutterSvgs: { [key: string]: string; };
diff --git a/src/goDebugConfiguration.ts b/src/goDebugConfiguration.ts
index 7ac8851..61fd2f7 100644
--- a/src/goDebugConfiguration.ts
+++ b/src/goDebugConfiguration.ts
@@ -9,11 +9,12 @@
 import vscode = require('vscode');
 import parse = require('yargs-parser');
 import unparse = require('yargs-unparser');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool } from './goInstallTools';
 import { packagePathToGoModPathMap } from './goModules';
 import { getFromGlobalState, updateGlobalState } from './stateUtils';
-import { getBinPath, getGoConfig, resolvePath } from './util';
+import { getBinPath, resolvePath } from './util';
 import { parseEnvFiles } from './utils/envUtils';
 
 export class GoDebugConfigurationProvider implements vscode.DebugConfigurationProvider {
diff --git a/src/goDeclaration.ts b/src/goDeclaration.ts
index 034413c..4c9fd6d 100644
--- a/src/goDeclaration.ts
+++ b/src/goDeclaration.ts
@@ -8,6 +8,7 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool, promptForUpdatingTool } from './goInstallTools';
 import { getModFolderPath, promptToUpdateToolForModules } from './goModules';
@@ -15,7 +16,6 @@
 	byteOffsetAt,
 	getBinPath,
 	getFileArchive,
-	getGoConfig,
 	getModuleCache,
 	getWorkspaceFolderPath,
 	goKeywords,
diff --git a/src/goEnv.ts b/src/goEnv.ts
index 754ff52..dddf3e0 100644
--- a/src/goEnv.ts
+++ b/src/goEnv.ts
@@ -7,7 +7,8 @@
 
 import path = require('path');
 import vscode = require('vscode');
-import { getCurrentGoPath, getGoConfig, getToolsGopath, resolvePath } from './util';
+import { getGoConfig } from './config';
+import { getCurrentGoPath, getToolsGopath, resolvePath } from './util';
 
 // toolInstallationEnvironment returns the environment in which tools should
 // be installed. It always returns a new object.
diff --git a/src/goEnvironmentStatus.ts b/src/goEnvironmentStatus.ts
index 1f6073b..8adc665 100644
--- a/src/goEnvironmentStatus.ts
+++ b/src/goEnvironmentStatus.ts
@@ -13,12 +13,13 @@
 import { promisify } from 'util';
 import vscode = require('vscode');
 import WebRequest = require('web-request');
+import { getGoConfig } from './config';
 import { toolInstallationEnvironment } from './goEnv';
 import { logVerbose } from './goLogging';
 import { addGoStatus, goEnvStatusbarItem, outputChannel, removeGoStatus } from './goStatus';
 import { getFromGlobalState, getFromWorkspaceState, updateGlobalState, updateWorkspaceState } from './stateUtils';
 import {
-	getBinPath, getCheckForToolsUpdatesConfig, getGoConfig, getGoVersion,
+	getBinPath, getCheckForToolsUpdatesConfig, getGoVersion,
 	getTempFilePath, GoVersion, rmdirRecursive } from './util';
 import {
 	correctBinname,
diff --git a/src/goExtraInfo.ts b/src/goExtraInfo.ts
index 694af96..24bd7a0 100644
--- a/src/goExtraInfo.ts
+++ b/src/goExtraInfo.ts
@@ -7,8 +7,8 @@
 
 import vscode = require('vscode');
 import { CancellationToken, Hover, HoverProvider, Position, TextDocument, WorkspaceConfiguration } from 'vscode';
+import { getGoConfig } from './config';
 import { definitionLocation } from './goDeclaration';
-import { getGoConfig } from './util';
 
 export class GoHoverProvider implements HoverProvider {
 	private goConfig: WorkspaceConfiguration | undefined;
diff --git a/src/goFormat.ts b/src/goFormat.ts
index 7810c04..34644a6 100644
--- a/src/goFormat.ts
+++ b/src/goFormat.ts
@@ -8,9 +8,10 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool, promptForUpdatingTool } from './goInstallTools';
-import { getBinPath, getGoConfig } from './util';
+import { getBinPath } from './util';
 import { killProcessTree } from './utils/processUtils';
 
 export class GoDocumentFormattingEditProvider implements vscode.DocumentFormattingEditProvider {
diff --git a/src/goGenerateTests.ts b/src/goGenerateTests.ts
index a9e71c9..7f8ffe2 100644
--- a/src/goGenerateTests.ts
+++ b/src/goGenerateTests.ts
@@ -8,12 +8,13 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool } from './goInstallTools';
 import { GoDocumentSymbolProvider } from './goOutline';
 import { outputChannel } from './goStatus';
-import { getBinPath, getGoConfig } from './util';
+import { getBinPath } from './util';
 
 const generatedWord = 'Generated ';
 
diff --git a/src/goImplementations.ts b/src/goImplementations.ts
index 36f9e36..4ff1287 100644
--- a/src/goImplementations.ts
+++ b/src/goImplementations.ts
@@ -8,13 +8,13 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool } from './goInstallTools';
 import {
 	byteOffsetAt,
 	canonicalizeGOPATHPrefix,
 	getBinPath,
-	getGoConfig,
 	getWorkspaceFolderPath
 } from './util';
 import { envPath, getCurrentGoRoot } from './utils/pathUtils';
diff --git a/src/goInstall.ts b/src/goInstall.ts
index 52b0223..874d831 100644
--- a/src/goInstall.ts
+++ b/src/goInstall.ts
@@ -6,10 +6,11 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { isModSupported } from './goModules';
 import { outputChannel } from './goStatus';
-import { getBinPath, getCurrentGoPath, getGoConfig, getModuleCache } from './util';
+import { getBinPath, getCurrentGoPath, getModuleCache } from './util';
 import { envPath, getCurrentGoRoot, getCurrentGoWorkspaceFromGOPATH } from './utils/pathUtils';
 
 export async function installCurrentPackage(): Promise<void> {
diff --git a/src/goInstallTools.ts b/src/goInstallTools.ts
index d4fddd8..97fd0e2 100644
--- a/src/goInstallTools.ts
+++ b/src/goInstallTools.ts
@@ -11,6 +11,7 @@
 import { SemVer } from 'semver';
 import util = require('util');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment, toolInstallationEnvironment } from './goEnv';
 import { addGoRuntimeBaseToPATH, clearGoRuntimeBaseFromPATH } from './goEnvironmentStatus';
 import { getLanguageServerToolPath } from './goLanguageServer';
@@ -31,7 +32,6 @@
 import {
 	getBinPath,
 	getBinPathWithExplanation,
-	getGoConfig,
 	getGoVersion,
 	getTempFilePath,
 	getWorkspaceFolderPath,
diff --git a/src/goLanguageServer.ts b/src/goLanguageServer.ts
index b9ea67f..1282f20 100644
--- a/src/goLanguageServer.ts
+++ b/src/goLanguageServer.ts
@@ -33,6 +33,8 @@
 import {
 	LanguageClient
 } from 'vscode-languageclient/node';
+import WebRequest = require('web-request');
+import { getGoConfig, getGoplsConfig } from './config';
 import { extensionId } from './const';
 import { GoCodeActionProvider } from './goCodeAction';
 import { GoDefinitionProvider } from './goDeclaration';
@@ -58,16 +60,12 @@
 	getBinPath,
 	getCheckForToolsUpdatesConfig,
 	getCurrentGoPath,
-	getGoConfig,
-	getGoplsConfig,
 	getGoVersion,
 	getWorkspaceFolderPath,
 	removeDuplicateDiagnostics
 } from './util';
 import { getToolFromToolPath } from './utils/pathUtils';
 
-import WebRequest = require('web-request');
-
 export interface LanguageServerConfig {
 	serverName: string;
 	path: string;
diff --git a/src/goLint.ts b/src/goLint.ts
index 0e8abfb..1cd4346 100644
--- a/src/goLint.ts
+++ b/src/goLint.ts
@@ -5,11 +5,11 @@
 
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { lintDiagnosticCollection } from './goMain';
 import { diagnosticsStatusBarItem, outputChannel } from './goStatus';
 import {
-	getGoConfig,
 	getToolsGopath,
 	getWorkspaceFolderPath,
 	handleDiagnosticErrors,
diff --git a/src/goLiveErrors.ts b/src/goLiveErrors.ts
index fb592c5..7c4a723 100644
--- a/src/goLiveErrors.ts
+++ b/src/goLiveErrors.ts
@@ -8,11 +8,12 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool } from './goInstallTools';
 import { buildDiagnosticCollection } from './goMain';
 import { isModSupported } from './goModules';
-import { getBinPath, getGoConfig } from './util';
+import { getBinPath } from './util';
 
 // Interface for settings configuration for adding and removing tags
 interface GoLiveErrorsConfig {
diff --git a/src/goMain.ts b/src/goMain.ts
index 21ad7d2..4c0d474 100644
--- a/src/goMain.ts
+++ b/src/goMain.ts
@@ -9,7 +9,7 @@
 import * as path from 'path';
 import semver = require('semver');
 import vscode = require('vscode');
-import { initConfig } from './config';
+import { getGoConfig, initConfig } from './config';
 import { extensionId } from './const';
 import { browsePackages } from './goBrowsePackage';
 import { buildCode } from './goBuild';
@@ -63,7 +63,6 @@
 	getBinPath,
 	getCurrentGoPath,
 	getExtensionCommands,
-	getGoConfig,
 	getGoEnv,
 	getGoVersion,
 	getToolsGopath,
diff --git a/src/goModifytags.ts b/src/goModifytags.ts
index 2d2e87c..8070597 100644
--- a/src/goModifytags.ts
+++ b/src/goModifytags.ts
@@ -7,9 +7,10 @@
 
 import cp = require('child_process');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool, promptForUpdatingTool } from './goInstallTools';
-import { byteOffsetAt, getBinPath, getFileArchive, getGoConfig } from './util';
+import { byteOffsetAt, getBinPath, getFileArchive } from './util';
 
 // Interface for the output from gomodifytags
 interface GomodifytagsOutput {
diff --git a/src/goModules.ts b/src/goModules.ts
index 87f50f5..902e7af 100644
--- a/src/goModules.ts
+++ b/src/goModules.ts
@@ -6,11 +6,12 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { installTools } from './goInstallTools';
 import { getTool } from './goTools';
 import { getFromGlobalState, updateGlobalState } from './stateUtils';
-import { getBinPath, getGoConfig, getGoVersion, getModuleCache } from './util';
+import { getBinPath, getGoVersion, getModuleCache } from './util';
 import { envPath, fixDriveCasingInWindows, getCurrentGoRoot } from './utils/pathUtils';
 
 export let GO111MODULE: string;
diff --git a/src/goOutline.ts b/src/goOutline.ts
index 9e52f6d..c0f782b 100644
--- a/src/goOutline.ts
+++ b/src/goOutline.ts
@@ -7,12 +7,12 @@
 
 import cp = require('child_process');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool, promptForUpdatingTool } from './goInstallTools';
 import {
 	getBinPath,
 	getFileArchive,
-	getGoConfig,
 	makeMemoizedByteOffsetConverter
 } from './util';
 import {killProcess} from './utils/processUtils';
diff --git a/src/goPlayground.ts b/src/goPlayground.ts
index 6d09c02..ec7570c 100644
--- a/src/goPlayground.ts
+++ b/src/goPlayground.ts
@@ -6,9 +6,10 @@
 import { execFile } from 'child_process';
 import * as path from 'path';
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { promptForMissingTool } from './goInstallTools';
 import { outputChannel } from './goStatus';
-import { getBinPath, getGoConfig } from './util';
+import { getBinPath } from './util';
 
 const TOOL_CMD_NAME = 'goplay';
 
diff --git a/src/goReferences.ts b/src/goReferences.ts
index 1aba8d9..53771fd 100644
--- a/src/goReferences.ts
+++ b/src/goReferences.ts
@@ -8,6 +8,7 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool } from './goInstallTools';
 import {
@@ -15,7 +16,6 @@
 	canonicalizeGOPATHPrefix,
 	getBinPath,
 	getFileArchive,
-	getGoConfig
 } from './util';
 import {killProcessTree} from './utils/processUtils';
 
diff --git a/src/goReferencesCodelens.ts b/src/goReferencesCodelens.ts
index 2746191..1e23213 100644
--- a/src/goReferencesCodelens.ts
+++ b/src/goReferencesCodelens.ts
@@ -8,10 +8,11 @@
 import { isAbsolute } from 'path';
 import vscode = require('vscode');
 import { CancellationToken, CodeLens, Range, TextDocument } from 'vscode';
+import { getGoConfig } from './config';
 import { GoBaseCodeLensProvider } from './goBaseCodelens';
 import { GoDocumentSymbolProvider } from './goOutline';
 import { GoReferenceProvider } from './goReferences';
-import { getBinPath, getGoConfig } from './util';
+import { getBinPath } from './util';
 
 const methodRegex = /^func\s+\(\s*\w+\s+\*?\w+\s*\)\s+/;
 
diff --git a/src/goRename.ts b/src/goRename.ts
index ff71aa3..6dff038 100644
--- a/src/goRename.ts
+++ b/src/goRename.ts
@@ -7,11 +7,12 @@
 
 import cp = require('child_process');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { Edit, FilePatch, getEditsFromUnifiedDiffStr, isDiffToolAvailable } from './diffUtils';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool } from './goInstallTools';
 import { outputChannel } from './goStatus';
-import { byteOffsetAt, canonicalizeGOPATHPrefix, getBinPath, getGoConfig } from './util';
+import { byteOffsetAt, canonicalizeGOPATHPrefix, getBinPath } from './util';
 import {killProcessTree} from './utils/processUtils';
 
 export class GoRenameProvider implements vscode.RenameProvider {
diff --git a/src/goRunTestCodelens.ts b/src/goRunTestCodelens.ts
index 587450a..9474f6d 100644
--- a/src/goRunTestCodelens.ts
+++ b/src/goRunTestCodelens.ts
@@ -7,10 +7,10 @@
 
 import vscode = require('vscode');
 import { CancellationToken, CodeLens, Command, TextDocument } from 'vscode';
+import { getGoConfig } from './config';
 import { GoBaseCodeLensProvider } from './goBaseCodelens';
 import { GoDocumentSymbolProvider } from './goOutline';
 import { getBenchmarkFunctions, getTestFunctions } from './testUtils';
-import { getGoConfig } from './util';
 
 export class GoRunTestCodeLensProvider extends GoBaseCodeLensProvider {
 	private readonly benchmarkRegex = /^Benchmark.+/;
diff --git a/src/goSignature.ts b/src/goSignature.ts
index c8d7e42..d3bb93f 100755
--- a/src/goSignature.ts
+++ b/src/goSignature.ts
@@ -15,8 +15,9 @@
 	TextDocument,
 	WorkspaceConfiguration
 } from 'vscode';
+import { getGoConfig } from './config';
 import { definitionLocation } from './goDeclaration';
-import { getGoConfig, getParametersAndReturnType, isPositionInComment, isPositionInString } from './util';
+import { getParametersAndReturnType, isPositionInComment, isPositionInString } from './util';
 
 export class GoSignatureHelpProvider implements SignatureHelpProvider {
 	constructor(private goConfig?: WorkspaceConfiguration) {}
diff --git a/src/goStatus.ts b/src/goStatus.ts
index 2d0585e..3f31d04 100644
--- a/src/goStatus.ts
+++ b/src/goStatus.ts
@@ -8,11 +8,12 @@
 
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { formatGoVersion, GoEnvironmentOption, terminalCreationListener } from './goEnvironmentStatus';
 import { buildLanguageServerConfig, getLocalGoplsVersion, languageServerIsRunning, serverOutputChannel } from './goLanguageServer';
 import { isGoFile } from './goMode';
 import { getModFolderPath, isModSupported } from './goModules';
-import { getGoConfig, getGoVersion } from './util';
+import { getGoVersion } from './util';
 
 export let outputChannel = vscode.window.createOutputChannel('Go');
 
diff --git a/src/goSuggest.ts b/src/goSuggest.ts
index 20ea2cb..284060f 100644
--- a/src/goSuggest.ts
+++ b/src/goSuggest.ts
@@ -8,6 +8,7 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { getTextEditForAddImport } from './goImport';
 import { promptForMissingTool, promptForUpdatingTool } from './goInstallTools';
@@ -17,7 +18,6 @@
 	byteOffsetAt,
 	getBinPath,
 	getCurrentGoPath,
-	getGoConfig,
 	getParametersAndReturnType,
 	goBuiltinTypes,
 	goKeywords,
diff --git a/src/goSymbol.ts b/src/goSymbol.ts
index 4e4948d..91a378b 100644
--- a/src/goSymbol.ts
+++ b/src/goSymbol.ts
@@ -7,9 +7,10 @@
 
 import cp = require('child_process');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool, promptForUpdatingTool } from './goInstallTools';
-import { getBinPath, getGoConfig, getWorkspaceFolderPath} from './util';
+import { getBinPath, getWorkspaceFolderPath} from './util';
 import { getCurrentGoRoot } from './utils/pathUtils';
 import {killProcessTree} from './utils/processUtils';
 
diff --git a/src/goTools.ts b/src/goTools.ts
index e9387ba..a4e4d97 100644
--- a/src/goTools.ts
+++ b/src/goTools.ts
@@ -12,7 +12,7 @@
 import semver = require('semver');
 import util = require('util');
 import { goLiveErrorsEnabled } from './goLiveErrors';
-import { getBinPath, getGoConfig, GoVersion } from './util';
+import { getBinPath, GoVersion } from './util';
 
 export interface Tool {
 	name: string;
diff --git a/src/goTypeDefinition.ts b/src/goTypeDefinition.ts
index 0487d70..0568669 100644
--- a/src/goTypeDefinition.ts
+++ b/src/goTypeDefinition.ts
@@ -8,6 +8,7 @@
 import cp = require('child_process');
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { adjustWordPosition, definitionLocation, parseMissingError } from './goDeclaration';
 import { toolExecutionEnvironment } from './goEnv';
 import { promptForMissingTool } from './goInstallTools';
@@ -16,7 +17,6 @@
 	canonicalizeGOPATHPrefix,
 	getBinPath,
 	getFileArchive,
-	getGoConfig,
 	goBuiltinTypes
 } from './util';
 import {killProcessTree} from './utils/processUtils';
diff --git a/src/goVet.ts b/src/goVet.ts
index 210213a..dbfb3ea 100644
--- a/src/goVet.ts
+++ b/src/goVet.ts
@@ -5,11 +5,11 @@
 
 import path = require('path');
 import vscode = require('vscode');
+import { getGoConfig } from './config';
 import { toolExecutionEnvironment } from './goEnv';
 import { vetDiagnosticCollection } from './goMain';
 import { diagnosticsStatusBarItem, outputChannel } from './goStatus';
 import {
-	getGoConfig,
 	getGoVersion,
 	getWorkspaceFolderPath,
 	handleDiagnosticErrors,
diff --git a/src/util.ts b/src/util.ts
index 896914b..4ac4f69 100644
--- a/src/util.ts
+++ b/src/util.ts
@@ -11,6 +11,7 @@
 import util = require('util');
 import vscode = require('vscode');
 import { NearestNeighborDict, Node } from './avlTree';
+import { getGoConfig } from './config';
 import { extensionId } from './const';
 import { toolExecutionEnvironment } from './goEnv';
 import { languageClient } from './goLanguageServer';
@@ -157,16 +158,6 @@
 let vendorSupport: boolean | undefined;
 let toolsGopath: string;
 
-// getGoConfig is declared as an exported const rather than a function, so it can be stubbbed in testing.
-export const getGoConfig = (uri?: vscode.Uri) => {
-	return getConfig('go', uri);
-};
-
-// getGoplsConfig returns the user's gopls configuration.
-export function getGoplsConfig(uri?: vscode.Uri) {
-	return getConfig('gopls', uri);
-}
-
 // getCheckForToolsUpdatesConfig returns go.toolsManagement.checkForUpdates configuration.
 export function getCheckForToolsUpdatesConfig(gocfg: vscode.WorkspaceConfiguration) {
 	// useGoProxyToCheckForToolUpdates deprecation
@@ -183,17 +174,6 @@
 	return gocfg.get('toolsManagement.checkForUpdates') as string;
 }
 
-function getConfig(section: string, uri?: vscode.Uri) {
-	if (!uri) {
-		if (vscode.window.activeTextEditor) {
-			uri = vscode.window.activeTextEditor.document.uri;
-		} else {
-			uri = null;
-		}
-	}
-	return vscode.workspace.getConfiguration(section, uri);
-}
-
 export function byteOffsetAt(document: vscode.TextDocument, position: vscode.Position): number {
 	const offset = document.offsetAt(position);
 	const text = document.getText();
diff --git a/test/gopls/extension.test.ts b/test/gopls/extension.test.ts
index 5d4d93c..05d3523 100644
--- a/test/gopls/extension.test.ts
+++ b/test/gopls/extension.test.ts
@@ -3,14 +3,13 @@
  * Licensed under the MIT License. See LICENSE in the project root for license information.
  *--------------------------------------------------------*/
 import * as assert from 'assert';
-import cp = require('child_process');
 import { EventEmitter } from 'events';
 import * as path from 'path';
 import sinon = require('sinon');
 import * as vscode from 'vscode';
 import { LanguageClient } from 'vscode-languageclient/node';
+import { getGoConfig } from '../../src/config';
 import { buildLanguageClient, BuildLanguageClientOption, buildLanguageServerConfig } from '../../src/goLanguageServer';
-import { getGoConfig } from '../../src/util';
 
 // FakeOutputChannel is a fake output channel used to buffer
 // the output of the tested language client in an in-memory
diff --git a/test/gopls/update.test.ts b/test/gopls/update.test.ts
index 4a3e101..ecefa75 100644
--- a/test/gopls/update.test.ts
+++ b/test/gopls/update.test.ts
@@ -9,9 +9,10 @@
 import semver = require('semver');
 import sinon = require('sinon');
 import * as vscode from 'vscode';
+import { getGoConfig } from '../../src/config';
 import * as lsp from '../../src/goLanguageServer';
 import { getTool, Tool } from '../../src/goTools';
-import { getCheckForToolsUpdatesConfig as getCheckForToolUpdatesConfig, getGoConfig } from '../../src/util';
+import { getCheckForToolsUpdatesConfig as getCheckForToolUpdatesConfig } from '../../src/util';
 
 suite('getCheckForToolUpdatesConfig tests', () => {
 	const CHECK_FOR_UPDATES = 'toolsManagement.checkForUpdates';
diff --git a/test/integration/config.test.ts b/test/integration/config.test.ts
index 4569d9f..500cc58 100644
--- a/test/integration/config.test.ts
+++ b/test/integration/config.test.ts
@@ -12,15 +12,15 @@
 suite('GoConfiguration Tests', () => {
 	function check(trusted: boolean, workspaceConfig: { [key: string]: any }, key: string, expected: any) {
 		const getConfigurationFn = (section: string) => new MockCfg(workspaceConfig);
-		const cfg = (new Configuration(trusted, getConfigurationFn)).get();
+		const cfg = (new Configuration(trusted, getConfigurationFn)).get('go');
 
 		const got0 = JSON.stringify(cfg.get(key));
 		const got1 = JSON.stringify(cfg[key]);
 		const want = JSON.stringify(expected);
 		assert.strictEqual(got0, want, `cfg.get(${key}) = ${got0}, want ${want}`);
 		assert.strictEqual(got1, want, `cfg[${key}] = ${got1}, want ${want}`);
-
 	}
+
 	test('trusted workspace', () => {
 		check(true, { goroot: 'goroot_val' }, 'goroot', 'goroot_val');
 		check(true, { gopath: 'gopath_val' }, 'gopath', 'gopath_val');
@@ -40,6 +40,27 @@
 		check(false, { buildFlags: ['-v'] }, 'buildFlags', ['-v']);
 		check(false, { languageServerFlags: ['-rpc.trace'] }, 'languageServerFlags', ['-rpc.trace']);
 	});
+
+	function checkGopls(trusted: boolean, workspaceConfig: { [key: string]: any }, key: string, expected: any) {
+		const getConfigurationFn = (section: string) => new MockCfg(workspaceConfig);
+		const cfg = (new Configuration(trusted, getConfigurationFn)).get('gopls');
+
+		const got0 = JSON.stringify(cfg.get(key));
+		const got1 = JSON.stringify(cfg[key]);
+		const want = JSON.stringify(expected);
+		assert.strictEqual(got0, want, `cfg.get(${key}) = ${got0}, want ${want}`);
+		assert.strictEqual(got1, want, `cfg[${key}] = ${got1}, want ${want}`);
+	}
+
+	test('trusted workspace (gopls settings)', () => {
+		checkGopls(true, { buildFlags: '-v' }, 'buildFlags', '-v');
+		checkGopls(true, { env: { GOBIN: 'foo' } }, 'env', { GOBIN: 'foo' });
+	});
+
+	test('untrusted workspace (gopls settings)', () => {
+		checkGopls(false, { buildFlags: '-v' }, 'buildFlags', '-v');
+		checkGopls(false, { env: { GOBIN: 'foo' } }, 'env', { GOBIN: 'foo' });
+	});
 });
 
 // tslint:disable: no-any
diff --git a/test/integration/extension.test.ts b/test/integration/extension.test.ts
index 3957b2e..5b75118 100644
--- a/test/integration/extension.test.ts
+++ b/test/integration/extension.test.ts
@@ -9,6 +9,7 @@
 import * as path from 'path';
 import * as sinon from 'sinon';
 import * as vscode from 'vscode';
+import { getGoConfig } from '../../src/config';
 import { FilePatch, getEdits, getEditsFromUnifiedDiffStr } from '../../src/diffUtils';
 import { check } from '../../src/goCheck';
 import { GoDefinitionProvider } from '../../src/goDeclaration';
@@ -33,7 +34,6 @@
 import {
 	getBinPath,
 	getCurrentGoPath,
-	getGoConfig,
 	getImportPath,
 	getToolsGopath,
 	handleDiagnosticErrors,
diff --git a/test/integration/goDebugConfiguration.test.ts b/test/integration/goDebugConfiguration.test.ts
index d65cc82..03662ab 100644
--- a/test/integration/goDebugConfiguration.test.ts
+++ b/test/integration/goDebugConfiguration.test.ts
@@ -5,10 +5,11 @@
 import sinon = require('sinon');
 import vscode = require('vscode');
 import parse = require('yargs-parser');
+import { getGoConfig } from '../../src/config';
 import { GoDebugConfigurationProvider } from '../../src/goDebugConfiguration';
 import goEnv = require('../../src/goEnv');
 import { updateGoVarsFromConfig } from '../../src/goInstallTools';
-import { getGoConfig, rmdirRecursive } from '../../src/util';
+import { rmdirRecursive } from '../../src/util';
 
 suite('Debug Environment Variable Merge Test', () => {
 	const debugConfigProvider = new GoDebugConfigurationProvider();
@@ -138,7 +139,7 @@
 
 suite('Debug Configuration Merge User Settings', () => {
 	const debugConfigProvider = new GoDebugConfigurationProvider();
-	const utils = require('../../src/util');
+	const config = require('../../src/config');
 
 	teardown(() => sinon.restore());
 
@@ -166,7 +167,7 @@
 			}) as vscode.WorkspaceConfiguration;
 
 			// Adjust the workspace config.
-			sinon.stub(utils, 'getGoConfig').returns(goConfig);
+			sinon.stub(config, 'getGoConfig').returns(goConfig);
 
 			const cfg2 = {
 				name: 'Launch',
@@ -208,7 +209,7 @@
 					}
 				}
 			}) as vscode.WorkspaceConfiguration;
-			sinon.stub(utils, 'getGoConfig').returns(goConfig);
+			sinon.stub(config, 'getGoConfig').returns(goConfig);
 
 			const cfg = {
 				name: 'Launch',
@@ -249,7 +250,7 @@
 					}
 				}
 			}) as vscode.WorkspaceConfiguration;
-			sinon.stub(utils, 'getGoConfig').returns(goConfig);
+			sinon.stub(config, 'getGoConfig').returns(goConfig);
 
 			const cfg = {
 				name: 'Launch',
diff --git a/test/integration/test.test.ts b/test/integration/test.test.ts
index 902c923..670a8bc 100644
--- a/test/integration/test.test.ts
+++ b/test/integration/test.test.ts
@@ -11,8 +11,9 @@
 import path = require('path');
 import sinon = require('sinon');
 import vscode = require('vscode');
+import { getGoConfig } from '../../src/config';
 import { computeTestCommand, getTestFlags, goTest } from '../../src/testUtils';
-import { getGoConfig, rmdirRecursive } from '../../src/util';
+import { rmdirRecursive } from '../../src/util';
 
 suite('Test Go Test Args', () => {
 	function runTest(param: {
