2018-07-30 18:42:46 +03:00
|
|
|
#!/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
|
|
|
|
|
2018-07-30 18:42:52 +03:00
|
|
|
cat >.vscode/settings.json.new <<\EOF ||
|
2018-07-30 18:42:46 +03:00
|
|
|
{
|
|
|
|
"C_Cpp.intelliSenseEngine": "Default",
|
|
|
|
"C_Cpp.intelliSenseEngineFallback": "Disabled",
|
2018-07-30 18:42:54 +03:00
|
|
|
"[git-commit]": {
|
|
|
|
"editor.wordWrap": "wordWrapColumn",
|
|
|
|
"editor.wordWrapColumn": 72
|
|
|
|
},
|
2018-07-30 18:42:55 +03:00
|
|
|
"[c]": {
|
|
|
|
"editor.detectIndentation": false,
|
|
|
|
"editor.insertSpaces": false,
|
|
|
|
"editor.tabSize": 8,
|
|
|
|
"editor.wordWrap": "wordWrapColumn",
|
|
|
|
"editor.wordWrapColumn": 80,
|
|
|
|
"files.trimTrailingWhitespace": true
|
|
|
|
},
|
2018-07-30 18:42:46 +03:00
|
|
|
"files.associations": {
|
|
|
|
"*.h": "c",
|
|
|
|
"*.c": "c"
|
2018-07-30 18:42:57 +03:00
|
|
|
},
|
vscode: let cSpell work on commit messages, too
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>
2018-07-30 18:42:58 +03:00
|
|
|
"cSpell.ignorePaths": [
|
|
|
|
],
|
2018-07-30 18:42:57 +03:00
|
|
|
"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",
|
|
|
|
],
|
2018-07-30 18:42:46 +03:00
|
|
|
}
|
|
|
|
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
|
|
|
|
|
2018-07-30 18:42:52 +03:00
|
|
|
cat >.vscode/tasks.json.new <<EOF ||
|
2018-07-30 18:42:46 +03:00
|
|
|
{
|
|
|
|
// 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
|
|
|
|
|
2018-07-30 18:42:52 +03:00
|
|
|
cat >.vscode/launch.json.new <<EOF ||
|
2018-07-30 18:42:46 +03:00
|
|
|
{
|
|
|
|
// 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= && \
|
2018-07-30 18:42:48 +03:00
|
|
|
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 \
|
2018-07-30 18:42:46 +03:00
|
|
|
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"
|
2018-07-30 18:42:52 +03:00
|
|
|
|
|
|
|
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
|