12861e200a
By default, the cSpell extension ignores all files under .git/. That includes, unfortunately, COMMIT_EDITMSG, i.e. commit messages. However, spell checking is *quite* useful when writing commit messages... And since the user hardly ever opens any file inside .git (apart from commit messages, the config, and sometimes interactive rebase's todo lists), there is really not much harm in *not* ignoring .git/. The default also ignores `node_modules/`, but that does not apply to Git, so let's skip ignoring that, too. Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
376 lines
8.5 KiB
Bash
Executable File
376 lines
8.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
die () {
|
|
echo "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
cd "$(dirname "$0")"/../.. ||
|
|
die "Could not cd to top-level directory"
|
|
|
|
mkdir -p .vscode ||
|
|
die "Could not create .vscode/"
|
|
|
|
# General settings
|
|
|
|
cat >.vscode/settings.json.new <<\EOF ||
|
|
{
|
|
"C_Cpp.intelliSenseEngine": "Default",
|
|
"C_Cpp.intelliSenseEngineFallback": "Disabled",
|
|
"[git-commit]": {
|
|
"editor.wordWrap": "wordWrapColumn",
|
|
"editor.wordWrapColumn": 72
|
|
},
|
|
"[c]": {
|
|
"editor.detectIndentation": false,
|
|
"editor.insertSpaces": false,
|
|
"editor.tabSize": 8,
|
|
"editor.wordWrap": "wordWrapColumn",
|
|
"editor.wordWrapColumn": 80,
|
|
"files.trimTrailingWhitespace": true
|
|
},
|
|
"files.associations": {
|
|
"*.h": "c",
|
|
"*.c": "c"
|
|
},
|
|
"cSpell.ignorePaths": [
|
|
],
|
|
"cSpell.words": [
|
|
"DATAW",
|
|
"DBCACHED",
|
|
"DFCHECK",
|
|
"DTYPE",
|
|
"Hamano",
|
|
"HCAST",
|
|
"HEXSZ",
|
|
"HKEY",
|
|
"HKLM",
|
|
"IFGITLINK",
|
|
"IFINVALID",
|
|
"ISBROKEN",
|
|
"ISGITLINK",
|
|
"ISSYMREF",
|
|
"Junio",
|
|
"LPDWORD",
|
|
"LPPROC",
|
|
"LPWSTR",
|
|
"MSVCRT",
|
|
"NOARG",
|
|
"NOCOMPLETE",
|
|
"NOINHERIT",
|
|
"RENORMALIZE",
|
|
"STARTF",
|
|
"STARTUPINFOEXW",
|
|
"Schindelin",
|
|
"UCRT",
|
|
"YESNO",
|
|
"argcp",
|
|
"beginthreadex",
|
|
"committish",
|
|
"contentp",
|
|
"cpath",
|
|
"cpidx",
|
|
"ctim",
|
|
"dequote",
|
|
"envw",
|
|
"ewah",
|
|
"fdata",
|
|
"fherr",
|
|
"fhin",
|
|
"fhout",
|
|
"fragp",
|
|
"fsmonitor",
|
|
"hnsec",
|
|
"idents",
|
|
"includeif",
|
|
"interpr",
|
|
"iprog",
|
|
"isexe",
|
|
"iskeychar",
|
|
"kompare",
|
|
"mksnpath",
|
|
"mktag",
|
|
"mktree",
|
|
"mmblob",
|
|
"mmbuffer",
|
|
"mmfile",
|
|
"noenv",
|
|
"nparents",
|
|
"ntpath",
|
|
"ondisk",
|
|
"ooid",
|
|
"oplen",
|
|
"osdl",
|
|
"pnew",
|
|
"pold",
|
|
"ppinfo",
|
|
"pushf",
|
|
"pushv",
|
|
"rawsz",
|
|
"rebasing",
|
|
"reencode",
|
|
"repo",
|
|
"rerere",
|
|
"scld",
|
|
"sharedrepo",
|
|
"spawnv",
|
|
"spawnve",
|
|
"spawnvpe",
|
|
"strdup'ing",
|
|
"submodule",
|
|
"submodules",
|
|
"topath",
|
|
"topo",
|
|
"tpatch",
|
|
"unexecutable",
|
|
"unhide",
|
|
"unkc",
|
|
"unkv",
|
|
"unmark",
|
|
"unmatch",
|
|
"unsets",
|
|
"unshown",
|
|
"untracked",
|
|
"untrackedcache",
|
|
"unuse",
|
|
"upos",
|
|
"uval",
|
|
"vreportf",
|
|
"wargs",
|
|
"wargv",
|
|
"wbuffer",
|
|
"wcmd",
|
|
"wcsnicmp",
|
|
"wcstoutfdup",
|
|
"wdeltaenv",
|
|
"wdir",
|
|
"wenv",
|
|
"wenvblk",
|
|
"wenvcmp",
|
|
"wenviron",
|
|
"wenvpos",
|
|
"wenvsz",
|
|
"wfile",
|
|
"wfilename",
|
|
"wfopen",
|
|
"wfreopen",
|
|
"wfullpath",
|
|
"which'll",
|
|
"wlink",
|
|
"wmain",
|
|
"wmkdir",
|
|
"wmktemp",
|
|
"wnewpath",
|
|
"wotype",
|
|
"wpath",
|
|
"wpathname",
|
|
"wpgmptr",
|
|
"wpnew",
|
|
"wpointer",
|
|
"wpold",
|
|
"wpos",
|
|
"wputenv",
|
|
"wrmdir",
|
|
"wship",
|
|
"wtarget",
|
|
"wtemplate",
|
|
"wunlink",
|
|
"xcalloc",
|
|
"xgetcwd",
|
|
"xmallocz",
|
|
"xmemdupz",
|
|
"xmmap",
|
|
"xopts",
|
|
"xrealloc",
|
|
"xsnprintf",
|
|
"xutftowcs",
|
|
"xutftowcsn",
|
|
"xwcstoutf"
|
|
],
|
|
"cSpell.ignoreRegExpList": [
|
|
"\\\"(DIRC|FSMN|REUC|UNTR)\\\"",
|
|
"\\\\u[0-9a-fA-Fx]{4}\\b",
|
|
"\\b(filfre|frotz|xyzzy)\\b",
|
|
"\\bCMIT_FMT_DEFAULT\\b",
|
|
"\\bde-munge\\b",
|
|
"\\bGET_OID_DISAMBIGUATORS\\b",
|
|
"\\bHASH_RENORMALIZE\\b",
|
|
"\\bTREESAMEness\\b",
|
|
"\\bUSE_STDEV\\b",
|
|
"\\Wchar *\\*\\W*utfs\\W",
|
|
"cURL's",
|
|
"nedmalloc'ed",
|
|
"ntifs\\.h",
|
|
],
|
|
}
|
|
EOF
|
|
die "Could not write settings.json"
|
|
|
|
# Infer some setup-specific locations/names
|
|
|
|
GCCPATH="$(which gcc)"
|
|
GDBPATH="$(which gdb)"
|
|
MAKECOMMAND="make -j5 DEVELOPER=1"
|
|
OSNAME=
|
|
X=
|
|
case "$(uname -s)" in
|
|
MINGW*)
|
|
GCCPATH="$(cygpath -am "$GCCPATH")"
|
|
GDBPATH="$(cygpath -am "$GDBPATH")"
|
|
MAKE_BASH="$(cygpath -am /git-cmd.exe) --command=usr\\\\bin\\\\bash.exe"
|
|
MAKECOMMAND="$MAKE_BASH -lc \\\"$MAKECOMMAND\\\""
|
|
OSNAME=Win32
|
|
X=.exe
|
|
;;
|
|
Linux)
|
|
OSNAME=Linux
|
|
;;
|
|
Darwin)
|
|
OSNAME=macOS
|
|
;;
|
|
esac
|
|
|
|
# Default build task
|
|
|
|
cat >.vscode/tasks.json.new <<EOF ||
|
|
{
|
|
// See https://go.microsoft.com/fwlink/?LinkId=733558
|
|
// for the documentation about the tasks.json format
|
|
"version": "2.0.0",
|
|
"tasks": [
|
|
{
|
|
"label": "make",
|
|
"type": "shell",
|
|
"command": "$MAKECOMMAND",
|
|
"group": {
|
|
"kind": "build",
|
|
"isDefault": true
|
|
}
|
|
}
|
|
]
|
|
}
|
|
EOF
|
|
die "Could not install default build task"
|
|
|
|
# Debugger settings
|
|
|
|
cat >.vscode/launch.json.new <<EOF ||
|
|
{
|
|
// Use IntelliSense to learn about possible attributes.
|
|
// Hover to view descriptions of existing attributes.
|
|
// For more information, visit:
|
|
// https://go.microsoft.com/fwlink/?linkid=830387
|
|
"version": "0.2.0",
|
|
"configurations": [
|
|
{
|
|
"name": "(gdb) Launch",
|
|
"type": "cppdbg",
|
|
"request": "launch",
|
|
"program": "\${workspaceFolder}/git$X",
|
|
"args": [],
|
|
"stopAtEntry": false,
|
|
"cwd": "\${workspaceFolder}",
|
|
"environment": [],
|
|
"externalConsole": true,
|
|
"MIMode": "gdb",
|
|
"miDebuggerPath": "$GDBPATH",
|
|
"setupCommands": [
|
|
{
|
|
"description": "Enable pretty-printing for gdb",
|
|
"text": "-enable-pretty-printing",
|
|
"ignoreFailures": true
|
|
}
|
|
]
|
|
}
|
|
]
|
|
}
|
|
EOF
|
|
die "Could not write launch configuration"
|
|
|
|
# C/C++ extension settings
|
|
|
|
make -f - OSNAME=$OSNAME GCCPATH="$GCCPATH" vscode-init \
|
|
>.vscode/c_cpp_properties.json <<\EOF ||
|
|
include Makefile
|
|
|
|
vscode-init:
|
|
@mkdir -p .vscode && \
|
|
incs= && defs= && \
|
|
for e in $(ALL_CFLAGS) \
|
|
'-DGIT_EXEC_PATH="$(gitexecdir_SQ)"' \
|
|
'-DGIT_LOCALE_PATH="$(localedir_relative_SQ)"' \
|
|
'-DBINDIR="$(bindir_relative_SQ)"' \
|
|
'-DFALLBACK_RUNTIME_PREFIX="$(prefix_SQ)"' \
|
|
'-DDEFAULT_GIT_TEMPLATE_DIR="$(template_dir_SQ)"' \
|
|
'-DETC_GITCONFIG="$(ETC_GITCONFIG_SQ)"' \
|
|
'-DETC_GITATTRIBUTES="$(ETC_GITATTRIBUTES_SQ)"' \
|
|
'-DGIT_LOCALE_PATH="$(localedir_relative_SQ)"' \
|
|
'-DCURL_DISABLE_TYPECHECK', \
|
|
'-DGIT_HTML_PATH="$(htmldir_relative_SQ)"' \
|
|
'-DGIT_MAN_PATH="$(mandir_relative_SQ)"' \
|
|
'-DGIT_INFO_PATH="$(infodir_relative_SQ)"'; do \
|
|
case "$$e" in \
|
|
-I.) \
|
|
incs="$$(printf '% 16s"$${workspaceRoot}",\n%s' \
|
|
"" "$$incs")" \
|
|
;; \
|
|
-I/*) \
|
|
incs="$$(printf '% 16s"%s",\n%s' \
|
|
"" "$${e#-I}" "$$incs")" \
|
|
;; \
|
|
-I*) \
|
|
incs="$$(printf '% 16s"$${workspaceRoot}/%s",\n%s' \
|
|
"" "$${e#-I}" "$$incs")" \
|
|
;; \
|
|
-D*) \
|
|
defs="$$(printf '% 16s"%s",\n%s' \
|
|
"" "$$(echo "$${e#-D}" | sed 's/"/\\&/g')" \
|
|
"$$defs")" \
|
|
;; \
|
|
esac; \
|
|
done && \
|
|
echo '{' && \
|
|
echo ' "configurations": [' && \
|
|
echo ' {' && \
|
|
echo ' "name": "$(OSNAME)",' && \
|
|
echo ' "intelliSenseMode": "clang-x64",' && \
|
|
echo ' "includePath": [' && \
|
|
echo "$$incs" | sort | sed '$$s/,$$//' && \
|
|
echo ' ],' && \
|
|
echo ' "defines": [' && \
|
|
echo "$$defs" | sort | sed '$$s/,$$//' && \
|
|
echo ' ],' && \
|
|
echo ' "browse": {' && \
|
|
echo ' "limitSymbolsToIncludedHeaders": true,' && \
|
|
echo ' "databaseFilename": "",' && \
|
|
echo ' "path": [' && \
|
|
echo ' "$${workspaceRoot}"' && \
|
|
echo ' ]' && \
|
|
echo ' },' && \
|
|
echo ' "cStandard": "c11",' && \
|
|
echo ' "cppStandard": "c++17",' && \
|
|
echo ' "compilerPath": "$(GCCPATH)"' && \
|
|
echo ' }' && \
|
|
echo ' ],' && \
|
|
echo ' "version": 4' && \
|
|
echo '}'
|
|
EOF
|
|
die "Could not write settings for the C/C++ extension"
|
|
|
|
for file in .vscode/settings.json .vscode/tasks.json .vscode/launch.json
|
|
do
|
|
if test -f $file
|
|
then
|
|
if git diff --no-index --quiet --exit-code $file $file.new
|
|
then
|
|
rm $file.new
|
|
else
|
|
printf "The file $file.new has these changes:\n\n"
|
|
git --no-pager diff --no-index $file $file.new
|
|
printf "\n\nMaybe \`mv $file.new $file\`?\n\n"
|
|
fi
|
|
else
|
|
mv $file.new $file
|
|
fi
|
|
done
|