[Visual Studio Code](https://code.visualstudio.com/) (nickname "VS Code") is a light-weight, cross-platform, Open Source development environment, with an increasingly powerful extension to support C/C++ development. In particular the intellisense support as well as all the other niceties developers might have come to expect from Integrated Development Environments will help accelerate development. Due to the way Git's source code and build process is structured, it can be quite challenging to use VS Code effectively for developing Git. Which is a shame, as developing with vim and the command-line causes unnecessary churn, and it is quite understandable that most Git developers simply do not want to fight with a modern development environment just to try whether they like developing Git with it. This topic branch makes it easy to get started using VS Code to develop Git. Simply run the script `./contrib/vscode/init.sh`. This will initialize the `.vscode/` directory and some files in that directory. After that, just open Git's top-level directory as "folder" in VS Code. The files have to be generated because of the curious way Git determines what flags to pass to the C compiler, in particular which constants are defined, because they change the compile flow in rather dramatic ways (determining, e.g. which SHA-1 backend to use). Changes since v1: - Clarified commit message of the first commit. Johannes Schindelin (9): contrib: add a script to initialize VS Code configuration vscode: hard-code a couple defines cache.h: extract enum declaration from inside a struct declaration mingw: define WIN32 explicitly vscode: only overwrite C/C++ settings vscode: wrap commit messages at column 72 by default vscode: use 8-space tabs, no trailing ws, etc for Git's source code vscode: add a dictionary for cSpell vscode: let cSpell work on commit messages, too .gitignore | 1 + cache.h | 24 ++- config.mak.uname | 2 +- contrib/vscode/.gitattributes | 1 + contrib/vscode/README.md | 14 ++ contrib/vscode/init.sh | 375 ++++++++++++++++++++++++++++++++++ 6 files changed, 405 insertions(+), 12 deletions(-) create mode 100644 contrib/vscode/.gitattributes create mode 100644 contrib/vscode/README.md create mode 100755 contrib/vscode/init.sh base-commit: 53f9a3e157dbbc901a02ac2c73346d375e24978c Published-As: https://github.com/gitgitgadget/git/releases/tags/pr-2%2Fdscho%2Fvscode-v2 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-2/dscho/vscode-v2 Pull-Request: https://github.com/gitgitgadget/git/pull/2 Range-diff vs v1: 1: e2e449a00 ! 1: bbf13e40a contrib: add a script to initialize VS Code configuration @@ -4,11 +4,14 @@ VS Code is a lightweight but powerful source code editor which runs on your desktop and is available for Windows, macOS and Linux. Among other - languages, it has support for C/C++ via an extension. + languages, it has support for C/C++ via an extension, which offers to + not only build and debug the code, but also Intellisense, i.e. + code-aware completion and similar niceties. - To start developing Git with VS Code, simply run the Unix shell script - contrib/vscode/init.sh, which creates the configuration files in - .vscode/ that VS Code consumes. + This patch adds a script that helps set up the environment to work + effectively with VS Code: simply run the Unix shell script + contrib/vscode/init.sh, which creates the relevant files, and open the + top level folder of Git's source code in VS Code. Signed-off-by: Johannes Schindelin <johannes.schindelin@xxxxxx> 2: 3770bd855 = 2: 6c8b5a4f2 vscode: hard-code a couple defines 3: de49c4bf2 = 3: 105b50c62 cache.h: extract enum declaration from inside a struct declaration 4: b3ce2ccf4 = 4: 4b95b1e2a mingw: define WIN32 explicitly 5: 06dcf6d97 = 5: 3dd53c04c vscode: only overwrite C/C++ settings 6: 08212c57e = 6: 384b08836 vscode: wrap commit messages at column 72 by default 7: 2e880b6f1 = 7: ba78af756 vscode: use 8-space tabs, no trailing ws, etc for Git's source code 8: ce216cf43 = 8: 358f38d3a vscode: add a dictionary for cSpell 9: 4c2aa015a = 9: b9c628b88 vscode: let cSpell work on commit messages, too -- gitgitgadget