diff --git a/package.json b/package.json index b270a2d..1ee56fe 100644 --- a/package.json +++ b/package.json @@ -323,6 +323,11 @@ "scope": "application", "description": "Default language for solving the problems." }, + "leetcode.language.preamble": { + "type": "object", + "scope": "application", + "description": "A little preamble adding to each language's solution files" + }, "leetcode.showDescription": { "type": "string", "default": "In Webview", diff --git a/src/leetCodeExecutor.ts b/src/leetCodeExecutor.ts index d2332c7..119b548 100644 --- a/src/leetCodeExecutor.ts +++ b/src/leetCodeExecutor.ts @@ -13,6 +13,7 @@ import { executeCommand, executeCommandWithProgress } from "./utils/cpUtils"; import { DialogOptions, openUrl } from "./utils/uiUtils"; import * as wsl from "./utils/wslUtils"; import { toWslPath, useWsl } from "./utils/wslUtils"; +import { getCodePreamble } from "./utils/settingUtils"; class LeetCodeExecutor implements Disposable { private leetCodeRootPath: string; @@ -110,8 +111,9 @@ class LeetCodeExecutor implements Disposable { if (!await fse.pathExists(filePath)) { await fse.createFile(filePath); + const codePreamble: string = getCodePreamble(language); const codeTemplate: string = await this.executeCommandWithProgressEx("Fetching problem data...", this.nodeExecutable, cmd); - await fse.writeFile(filePath, codeTemplate); + await fse.writeFile(filePath, codePreamble + codeTemplate); } } diff --git a/src/utils/settingUtils.ts b/src/utils/settingUtils.ts index 7b6eb6c..136c47b 100644 --- a/src/utils/settingUtils.ts +++ b/src/utils/settingUtils.ts @@ -62,6 +62,130 @@ export function getDescriptionConfiguration(): IDescriptionConfiguration { return config; } +const defaultPreambles = { + "cpp": ` +#ifndef _GLIBCXX_NO_ASSERT +#include +#endif +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif + +// C++ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#if __cplusplus >= 201103L +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#endif +using namespace std; + ` +} + +/** + * ## About + * + * Code preamble is a short code snippet adding to the beginning of the program. A typical one is: + * + * + * ``` + * #include + * using namespace std; + * ``` + * + * This feature is useful. Maybe inserting header files is interesting for the first several times, + * it is dreadful if we need to add tons of it each time we do the problems, especially for a dreadful + * language like C/C++ + * + * ## Configuration + * + * To add a preamble for one language, the user will follow this schema: + * + * ``` + * "leetcode.language.preamble" = { + * "cpp" : "#include ", + * } + * ``` + * + * @param language + */ +export function getCodePreamble(language: string): string { + const preambles = getWorkspaceConfiguration().get>("language.preamble"); + return preambles?.[language] ?? defaultPreambles?.[language] ?? ""; +} + export interface IDescriptionConfiguration { showInComment: boolean; showInWebview: boolean; pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy