Copy disabled (too large)
Download .txt
Showing preview only (14,049K chars total). Download the full file to get everything.
Repository: ramensoftware/windhawk
Branch: main
Commit: b59b38cd77da
Files: 429
Total size: 24.7 MB
Directory structure:
gitextract_zq1lf0ms/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── LICENSE
├── README.md
└── src/
├── vscode-windhawk/
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierrc
│ ├── .vscode/
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ ├── settings.json
│ │ └── tasks.json
│ ├── .vscodeignore
│ ├── LICENSE
│ ├── README.md
│ ├── files/
│ │ └── mod_template.wh.cpp
│ ├── helper_scripts/
│ │ └── disable_default_keybindings.py
│ ├── package.json
│ ├── package.nls.json
│ ├── src/
│ │ ├── config.ts
│ │ ├── extension.ts
│ │ ├── ini.ts
│ │ ├── logOutputChannel.ts
│ │ ├── storagePaths.ts
│ │ ├── utils/
│ │ │ ├── appSettingsUtils.ts
│ │ │ ├── compilerUtils.ts
│ │ │ ├── editorWorkspaceUtils.ts
│ │ │ ├── modConfigUtils.ts
│ │ │ ├── modFilesUtils.ts
│ │ │ ├── modSourceUtils.ts
│ │ │ ├── trayProgramUtils.ts
│ │ │ ├── updateUtils.ts
│ │ │ └── userProfileUtils.ts
│ │ ├── webviewIPC.ts
│ │ └── webviewIPCMessages.ts
│ ├── syntaxes/
│ │ └── cpp.injection.json
│ ├── tsconfig.json
│ └── webpack.config.js
├── vscode-windhawk-ui/
│ ├── .editorconfig
│ ├── .eslintrc.json
│ ├── .gitignore
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── .vscode/
│ │ └── extensions.json
│ ├── apps/
│ │ ├── .gitkeep
│ │ ├── vscode-windhawk-ui/
│ │ │ ├── .babelrc
│ │ │ ├── .browserslistrc
│ │ │ ├── .eslintrc.json
│ │ │ ├── jest.config.ts
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.css
│ │ │ │ │ ├── app.less
│ │ │ │ │ ├── app.tsx
│ │ │ │ │ ├── appUISettings.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── EllipsisText.tsx
│ │ │ │ │ │ ├── InputWithContextMenu.tsx
│ │ │ │ │ │ └── ReactMarkdownCustom.tsx
│ │ │ │ │ ├── i18n.ts
│ │ │ │ │ ├── panel/
│ │ │ │ │ │ ├── About.tsx
│ │ │ │ │ │ ├── AppHeader.tsx
│ │ │ │ │ │ ├── ChangelogModal.tsx
│ │ │ │ │ │ ├── CreateNewModButton.tsx
│ │ │ │ │ │ ├── DevModeAction.tsx
│ │ │ │ │ │ ├── ModCard.tsx
│ │ │ │ │ │ ├── ModDetails.tsx
│ │ │ │ │ │ ├── ModDetailsAdvanced.tsx
│ │ │ │ │ │ ├── ModDetailsChangelog.tsx
│ │ │ │ │ │ ├── ModDetailsHeader.tsx
│ │ │ │ │ │ ├── ModDetailsReadme.tsx
│ │ │ │ │ │ ├── ModDetailsSettings.spec.ts
│ │ │ │ │ │ ├── ModDetailsSettings.tsx
│ │ │ │ │ │ ├── ModDetailsSource.tsx
│ │ │ │ │ │ ├── ModDetailsSourceDiff.tsx
│ │ │ │ │ │ ├── ModMetadataLine.tsx
│ │ │ │ │ │ ├── ModPreview.tsx
│ │ │ │ │ │ ├── ModsBrowserLocal.tsx
│ │ │ │ │ │ ├── ModsBrowserOnline.tsx
│ │ │ │ │ │ ├── Panel.tsx
│ │ │ │ │ │ ├── SafeModeIndicator.tsx
│ │ │ │ │ │ ├── Settings.tsx
│ │ │ │ │ │ ├── UpdateModal.tsx
│ │ │ │ │ │ ├── VersionSelectorModal.tsx
│ │ │ │ │ │ └── mockData.ts
│ │ │ │ │ ├── sidebar/
│ │ │ │ │ │ ├── EditorModeControls.tsx
│ │ │ │ │ │ ├── Sidebar.tsx
│ │ │ │ │ │ └── mockData.ts
│ │ │ │ │ ├── swrHelpers.ts
│ │ │ │ │ ├── utils.spec.ts
│ │ │ │ │ ├── utils.ts
│ │ │ │ │ ├── vsCodeApi.ts
│ │ │ │ │ ├── webviewIPC.ts
│ │ │ │ │ └── webviewIPCMessages.ts
│ │ │ │ ├── environments/
│ │ │ │ │ ├── environment.prod.ts
│ │ │ │ │ └── environment.ts
│ │ │ │ ├── index.html
│ │ │ │ ├── locales/
│ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ ├── ar/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── cs/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── da/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── de/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── el/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── en/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── es/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── fr/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── hi/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── hr/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── hu/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── id/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── it/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ja/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ko/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── nl/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── pl/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── pt-BR/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ro/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ru/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── sv/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ta/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── th/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── tr/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── uk/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── vi/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── zh-CN/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ └── zh-TW/
│ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ └── translation.json
│ │ │ │ ├── main.css
│ │ │ │ ├── main.tsx
│ │ │ │ └── polyfills.ts
│ │ │ ├── tsconfig.app.json
│ │ │ ├── tsconfig.json
│ │ │ ├── tsconfig.spec.json
│ │ │ └── webpack.config.js
│ │ └── vscode-windhawk-ui-e2e/
│ │ ├── .eslintrc.json
│ │ ├── cypress.config.ts
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── e2e/
│ │ │ │ └── app.cy.ts
│ │ │ ├── fixtures/
│ │ │ │ └── example.json
│ │ │ └── support/
│ │ │ ├── app.po.ts
│ │ │ ├── commands.ts
│ │ │ └── e2e.ts
│ │ └── tsconfig.json
│ ├── babel.config.json
│ ├── jest.config.ts
│ ├── jest.preset.js
│ ├── libs/
│ │ └── .gitkeep
│ ├── nx.json
│ ├── package.json
│ ├── tools/
│ │ ├── generators/
│ │ │ └── .gitkeep
│ │ └── tsconfig.tools.json
│ └── tsconfig.base.json
└── windhawk/
├── .clang-format
├── .gitattributes
├── .gitignore
├── _typos.toml
├── app/
│ ├── app.cpp
│ ├── app.vcxproj
│ ├── app.vcxproj.filters
│ ├── engine_control.cpp
│ ├── engine_control.h
│ ├── event_viewer_crash_monitor.cpp
│ ├── event_viewer_crash_monitor.h
│ ├── functions.cpp
│ ├── functions.h
│ ├── libraries/
│ │ ├── nlohmann/
│ │ │ └── json.hpp
│ │ └── winhttpwrappers/
│ │ └── WinHTTPWrappers.h
│ ├── logger.cpp
│ ├── logger.h
│ ├── main_window.cpp
│ ├── main_window.h
│ ├── packages.config
│ ├── resource.h
│ ├── rsrc/
│ │ └── compatibility.manifest
│ ├── rsrc.rc
│ ├── rsrc.rc2
│ ├── service.cpp
│ ├── service.h
│ ├── service_common.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── storage_manager.cpp
│ ├── storage_manager.h
│ ├── task_manager_dlg.cpp
│ ├── task_manager_dlg.h
│ ├── toolkit_dlg.cpp
│ ├── toolkit_dlg.h
│ ├── tray_icon.cpp
│ ├── tray_icon.h
│ ├── ui_control.cpp
│ ├── ui_control.h
│ ├── update_checker.cpp
│ ├── update_checker.h
│ ├── userprofile.cpp
│ ├── userprofile.h
│ └── winhttpsimple.h
├── build.bat
├── engine/
│ ├── _exports.def
│ ├── all_processes_injector.cpp
│ ├── all_processes_injector.h
│ ├── customization_session.cpp
│ ├── customization_session.h
│ ├── dll_inject.cpp
│ ├── dll_inject.h
│ ├── engine.vcxproj
│ ├── engine.vcxproj.filters
│ ├── functions.cpp
│ ├── functions.h
│ ├── inject_shellcode/
│ │ ├── .clang-format
│ │ ├── InjectShellcode.filters
│ │ ├── InjectShellcode.sln
│ │ ├── InjectShellcode.vcxproj
│ │ └── main.cpp
│ ├── libraries/
│ │ ├── MinHook/
│ │ │ ├── include/
│ │ │ │ └── MinHook.h
│ │ │ └── src/
│ │ │ ├── buffer.c
│ │ │ ├── buffer.h
│ │ │ ├── hde/
│ │ │ │ ├── hde32.c
│ │ │ │ ├── hde32.h
│ │ │ │ ├── hde64.c
│ │ │ │ ├── hde64.h
│ │ │ │ ├── pstdint.h
│ │ │ │ ├── table32.h
│ │ │ │ └── table64.h
│ │ │ ├── hook.c
│ │ │ ├── trampoline.c
│ │ │ └── trampoline.h
│ │ ├── MinHook-Detours/
│ │ │ ├── MinHook.c
│ │ │ ├── MinHook.h
│ │ │ └── SlimDetours/
│ │ │ ├── .editorconfig
│ │ │ ├── Disassembler.c
│ │ │ ├── InlineHook.c
│ │ │ ├── Instruction.c
│ │ │ ├── LICENSE
│ │ │ ├── Memory.c
│ │ │ ├── SlimDetours.NDK.inl
│ │ │ ├── SlimDetours.h
│ │ │ ├── SlimDetours.inl
│ │ │ ├── Thread.c
│ │ │ ├── Trampoline.c
│ │ │ └── Transaction.c
│ │ ├── ThreadLocal.h
│ │ ├── Zydis/
│ │ │ ├── Zydis.c
│ │ │ └── Zydis.h
│ │ ├── binaryninja-arm64-disassembler/
│ │ │ ├── arm64dis.h
│ │ │ ├── decode.c
│ │ │ ├── decode.h
│ │ │ ├── decode0.c
│ │ │ ├── decode1.c
│ │ │ ├── decode1.h
│ │ │ ├── decode2.c
│ │ │ ├── decode2.h
│ │ │ ├── decode_fields32.c
│ │ │ ├── decode_fields32.h
│ │ │ ├── decode_scratchpad.c
│ │ │ ├── decompose_and_disassemble.c
│ │ │ ├── decompose_and_disassemble.h
│ │ │ ├── encodings_dec.c
│ │ │ ├── encodings_dec.h
│ │ │ ├── encodings_fmt.c
│ │ │ ├── encodings_fmt.h
│ │ │ ├── feature_flags.h
│ │ │ ├── format.c
│ │ │ ├── format.h
│ │ │ ├── gofer.c
│ │ │ ├── operations.c
│ │ │ ├── operations.h
│ │ │ ├── pcode.c
│ │ │ ├── pcode.h
│ │ │ ├── regs.c
│ │ │ ├── regs.h
│ │ │ ├── sysregs.c
│ │ │ ├── sysregs.h
│ │ │ ├── sysregs_fmt_gen.c
│ │ │ ├── sysregs_fmt_gen.h
│ │ │ ├── sysregs_gen.c
│ │ │ └── sysregs_gen.h
│ │ ├── dia/
│ │ │ ├── cvconst.h
│ │ │ ├── dia2.h
│ │ │ ├── diacreate.h
│ │ │ └── lib/
│ │ │ ├── amd64/
│ │ │ │ └── diaguids.lib
│ │ │ ├── arm/
│ │ │ │ └── diaguids.lib
│ │ │ ├── arm64/
│ │ │ │ └── diaguids.lib
│ │ │ └── diaguids.lib
│ │ ├── phnt/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── ntafd.h
│ │ │ ├── ntbcd.h
│ │ │ ├── ntdbg.h
│ │ │ ├── ntexapi.h
│ │ │ ├── ntgdi.h
│ │ │ ├── ntimage.h
│ │ │ ├── ntintsafe.h
│ │ │ ├── ntioapi.h
│ │ │ ├── ntkeapi.h
│ │ │ ├── ntldr.h
│ │ │ ├── ntlpcapi.h
│ │ │ ├── ntmisc.h
│ │ │ ├── ntmmapi.h
│ │ │ ├── ntnls.h
│ │ │ ├── ntobapi.h
│ │ │ ├── ntpebteb.h
│ │ │ ├── ntpfapi.h
│ │ │ ├── ntpnpapi.h
│ │ │ ├── ntpoapi.h
│ │ │ ├── ntpsapi.h
│ │ │ ├── ntregapi.h
│ │ │ ├── ntrtl.h
│ │ │ ├── ntsam.h
│ │ │ ├── ntseapi.h
│ │ │ ├── ntsmss.h
│ │ │ ├── ntstrsafe.h
│ │ │ ├── ntsxs.h
│ │ │ ├── nttmapi.h
│ │ │ ├── nttp.h
│ │ │ ├── ntuser.h
│ │ │ ├── ntwmi.h
│ │ │ ├── ntwow64.h
│ │ │ ├── ntxcapi.h
│ │ │ ├── ntzwapi.h
│ │ │ ├── phnt.h
│ │ │ ├── phnt_ntdef.h
│ │ │ ├── phnt_windows.h
│ │ │ ├── smbios.h
│ │ │ ├── subprocesstag.h
│ │ │ ├── usermgr.h
│ │ │ └── winsta.h
│ │ ├── thread-call-stack-scanner/
│ │ │ ├── Memory.c
│ │ │ ├── Memory.h
│ │ │ ├── Thread.c
│ │ │ ├── Thread.h
│ │ │ ├── ThreadsCallStackIterate.c
│ │ │ ├── ThreadsCallStackIterate.h
│ │ │ ├── ThreadsCallStackWaitForRegions.c
│ │ │ └── ThreadsCallStackWaitForRegions.h
│ │ └── wow64pp/
│ │ └── wow64pp.hpp
│ ├── logger.cpp
│ ├── logger.h
│ ├── main.cpp
│ ├── mod.cpp
│ ├── mod.h
│ ├── mods_api.cpp
│ ├── mods_api.h
│ ├── mods_api_internal.h
│ ├── mods_manager.cpp
│ ├── mods_manager.h
│ ├── new_process_injector.cpp
│ ├── new_process_injector.h
│ ├── no_destructor.cpp
│ ├── no_destructor.h
│ ├── process_lists.h
│ ├── resource.h
│ ├── rsrc.rc
│ ├── rsrc.rc2
│ ├── session_private_namespace.cpp
│ ├── session_private_namespace.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── storage_manager.cpp
│ ├── storage_manager.h
│ ├── symbol_enum.cpp
│ ├── symbol_enum.h
│ └── var_init_once.h
├── shared/
│ ├── libraries/
│ │ └── wil/
│ │ ├── Tracelogging.h
│ │ ├── _version.txt
│ │ ├── com.h
│ │ ├── com_apartment_variable.h
│ │ ├── common.h
│ │ ├── coroutine.h
│ │ ├── cppwinrt.h
│ │ ├── cppwinrt_authoring.h
│ │ ├── cppwinrt_helpers.h
│ │ ├── cppwinrt_notifiable_module_lock.h
│ │ ├── cppwinrt_register_com_server.h
│ │ ├── cppwinrt_wrl.h
│ │ ├── filesystem.h
│ │ ├── nt_result_macros.h
│ │ ├── registry.h
│ │ ├── registry_helpers.h
│ │ ├── resource.h
│ │ ├── result.h
│ │ ├── result_macros.h
│ │ ├── result_originate.h
│ │ ├── rpc_helpers.h
│ │ ├── safecast.h
│ │ ├── stl.h
│ │ ├── token_helpers.h
│ │ ├── traceloggingconfig.h
│ │ ├── win32_helpers.h
│ │ ├── win32_result_macros.h
│ │ ├── windowing.h
│ │ ├── winrt.h
│ │ ├── wistd_config.h
│ │ ├── wistd_functional.h
│ │ ├── wistd_memory.h
│ │ ├── wistd_type_traits.h
│ │ └── wrl.h
│ ├── logger_base.cpp
│ ├── logger_base.h
│ ├── portable_settings.cpp
│ ├── portable_settings.h
│ └── version.h
└── windhawk.sln
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitattributes
================================================
# Apply override to all files and directories in the directory
# https://github.com/github-linguist/linguist/blob/master/docs/overrides.md#vendored-code
/src/windhawk/*/libraries/** linguist-vendored
/src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/app.css linguist-vendored
================================================
FILE: .github/FUNDING.yml
================================================
# These are supported funding model platforms
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
patreon: # Replace with a single Patreon username
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: ['https://ramensoftware.com/donate']
================================================
FILE: .github/ISSUE_TEMPLATE/bug_report.md
================================================
---
name: Bug report
about: Report a bug in Windhawk
title: ''
labels: bug
assignees: ''
---
<!--
For reporting a bug in a specific mod, please create an issue here:
https://github.com/ramensoftware/windhawk-mods/issues
⚠️ Before reporting a bug, please go over the troubleshooting page:
https://github.com/ramensoftware/windhawk/wiki/Troubleshooting
-->
================================================
FILE: .github/ISSUE_TEMPLATE/feature_request.md
================================================
---
name: Feature request
about: Suggest an idea for Windhawk
title: ''
labels: enhancement
assignees: ''
---
<!--
For suggesting an idea for a specific mod or for a new mod idea, please create an issue here:
https://github.com/ramensoftware/windhawk-mods/issues
-->
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
Windhawk, The customization marketplace for Windows programs.
Copyright (C) 2023 Michael Maltsev
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
Windhawk Copyright (C) 2023 Michael Maltsev
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
================================================
FILE: README.md
================================================
# Windhawk

Windhawk aims to make it easier to customize Windows programs. For more details, see [the official website](https://windhawk.net/) and [the announcement](https://ramensoftware.com/windhawk).
This repository is used to [report issues](https://github.com/ramensoftware/windhawk/issues) and to [discuss Windhawk](https://github.com/ramensoftware/windhawk/discussions). For discussing Windhawk mods, refer to [the windhawk-mods repository](https://github.com/ramensoftware/windhawk-mods).
You're also welcome to join [the Windhawk Discord channel](https://discord.com/servers/windhawk-923944342991818753) for a live discussion.
## Technical details
High level architecture:

For technical details about the global injection and hooking method that is used, refer to the following blog post: [Implementing Global Injection and Hooking in Windows](https://m417z.com/Implementing-Global-Injection-and-Hooking-in-Windows/).
## Source code
The Windhawk source code can be found in the `src` folder, which contains the following subfolders:
* `windhawk`: The code of the main `windhawk.exe` executable and the 32-bit and 64-bit `windhawk.dll` engine libraries.
* `vscode-windhawk`: The code of the VSCode extension that is responsible for UI operations such as installing mods and listing installed mods.
* `vscode-windhawk-ui`: The UI part of the VSCode extension.
A simple way to get started is by extracting the portable version of Windhawk with the official installer, building the part of Windhawk that you want to modify, and then replacing the corresponding files in the portable version with the newly built files.
## Additional resources
Code which demonstrates the global injection and hooking method that is used can be found in this repository: [global-inject-demo](https://github.com/m417z/global-inject-demo).
================================================
FILE: src/vscode-windhawk/.eslintrc.js
================================================
/**@type {import('eslint').Linter.Config} */
// eslint-disable-next-line no-undef
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/recommended',
],
rules: {
'semi': [2, "always"],
'@typescript-eslint/no-unused-vars': 0,
'@typescript-eslint/no-explicit-any': 0,
'@typescript-eslint/explicit-module-boundary-types': 0,
'@typescript-eslint/no-non-null-assertion': 0,
}
};
================================================
FILE: src/vscode-windhawk/.gitignore
================================================
node_modules/
out/
webview/
prebuilds/
dist/
windhawk*.vsix
================================================
FILE: src/vscode-windhawk/.prettierrc
================================================
{
"singleQuote": true
}
================================================
FILE: src/vscode-windhawk/.vscode/extensions.json
================================================
{
// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.
// Extension identifier format: ${publisher}.${name}. Example: vscode.csharp
// List of extensions which should be recommended for users of this workspace.
"recommendations": [
"dbaeumer.vscode-eslint"
]
}
================================================
FILE: src/vscode-windhawk/.vscode/launch.json
================================================
// A launch configuration that compiles the extension and then opens it inside a new window
// 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": "Launch Extension",
"type": "extensionHost",
"request": "launch",
"runtimeExecutable": "${execPath}",
"args": [
"--extensionDevelopmentPath=${workspaceRoot}"
],
"outFiles": [
"${workspaceFolder}/dist/**/*.js"
],
"preLaunchTask": "npm: webpack"
}
]
}
================================================
FILE: src/vscode-windhawk/.vscode/settings.json
================================================
{
"editor.insertSpaces": false,
"cSpell.words": [
"DUNICODE",
"DWORD",
"HKCU",
"HKEY",
"HKLM",
"Windhawk",
"cppbuild",
"cppdbg",
"localizable",
"opendir",
"userprofile"
]
}
================================================
FILE: src/vscode-windhawk/.vscode/tasks.json
================================================
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
{
"version": "2.0.0",
"tasks": [
{
"type": "npm",
"script": "watch",
"problemMatcher": "$tsc-watch",
"isBackground": true,
"presentation": {
"reveal": "never"
},
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
================================================
FILE: src/vscode-windhawk/.vscodeignore
================================================
.vscode/**
helper_scripts/**
src/**
out/**
node_modules/**
.claude/**
tsconfig.json
.gitignore
CLAUDE.local.md
================================================
FILE: src/vscode-windhawk/LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
VSCode Windhawk - Part of the Windhawk Windows customization tool
Copyright (C) 2021 Michael Maltsev
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
VSCode Windhawk Copyright (C) 2021 Michael Maltsev
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<https://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<https://www.gnu.org/licenses/why-not-lgpl.html>.
================================================
FILE: src/vscode-windhawk/README.md
================================================
# Windhawk VSCode extension
Part of the Windhawk Windows customization tool.
https://windhawk.net/
================================================
FILE: src/vscode-windhawk/files/mod_template.wh.cpp
================================================
// ==WindhawkMod==
// @id new-mod
// @name Your Awesome Mod
// @description The best mod ever that does great things
// @version 0.1
// @author You
// @github https://github.com/nat
// @twitter https://twitter.com/jack
// @homepage https://your-personal-homepage.example.com/
// @include mspaint.exe
// @compilerOptions -lcomdlg32
// @license MIT
// ==/WindhawkMod==
// ==WindhawkModReadme==
/*
# Your Awesome Mod
This is a place for useful information about your mod. Use it to describe the
mod, explain why it's useful, and add any other relevant details. You can use
[Markdown](https://en.wikipedia.org/wiki/Markdown) to add links and
**formatting** to the readme.
This short sample customizes Microsoft Paint by forcing it to use just a single
color, and by blocking file opening. To see the mod in action:
- Compile the mod with the button on the left or with Ctrl+B.
- Run Microsoft Paint from the start menu (type "Paint") or by running
mspaint.exe.
- Draw something and notice that the orange color is always used, regardless of
the color you pick.
- Try opening a file and notice that it's blocked.
# Getting started
Check out the documentation
[here](https://github.com/ramensoftware/windhawk/wiki/Creating-a-new-mod).
*/
// ==/WindhawkModReadme==
// ==WindhawkModSettings==
/*
# Here you can define settings, in YAML format, that the mod users will be able
# to configure. Metadata values such as $name and $description are optional.
# Check out the documentation for more information:
# https://github.com/ramensoftware/windhawk/wiki/Creating-a-new-mod#settings
- color:
- red: 255
- green: 127
- blue: 39
$name: Custom color
$description: This color will be used regardless of the selected color.
- blockOpen: true
$name: Block opening files
$description: When enabled, opening files in Paint is not allowed.
*/
// ==/WindhawkModSettings==
// The source code of the mod starts here. This sample was inspired by the great
// article of Kyle Halladay, X64 Function Hooking by Example:
// https://kylehalladay.com/blog/2020/11/13/Hooking-By-Example.html
// If you're new to terms such as code injection and function hooking, the
// article is great to get started.
#include <gdiplus.h>
using namespace Gdiplus;
struct {
BYTE red;
BYTE green;
BYTE blue;
bool blockOpen;
} settings;
using GdipSetSolidFillColor_t = decltype(&DllExports::GdipSetSolidFillColor);
GdipSetSolidFillColor_t GdipSetSolidFillColor_Original;
GpStatus WINAPI GdipSetSolidFillColor_Hook(GpSolidFill* brush, ARGB color) {
Wh_Log(L"GdipSetSolidFillColor_Hook: color=%08X", color);
// If the color is not transparent, replace it.
if (Color(color).GetAlpha() == 255) {
color =
Color::MakeARGB(255, settings.red, settings.green, settings.blue);
}
// Call the original function.
return GdipSetSolidFillColor_Original(brush, color);
}
using GetOpenFileNameW_t = decltype(&GetOpenFileNameW);
GetOpenFileNameW_t GetOpenFileNameW_Original;
BOOL WINAPI GetOpenFileNameW_Hook(LPOPENFILENAMEW params) {
Wh_Log(L"GetOpenFileNameW_Hook");
if (settings.blockOpen) {
// Forbid the operation and return without calling the original
// function.
MessageBoxW(GetActiveWindow(), L"Opening files is forbidden",
L"Surprise!", MB_OK);
return FALSE;
}
return GetOpenFileNameW_Original(params);
}
void LoadSettings() {
settings.red = Wh_GetIntSetting(L"color.red");
settings.green = Wh_GetIntSetting(L"color.green");
settings.blue = Wh_GetIntSetting(L"color.blue");
settings.blockOpen = Wh_GetIntSetting(L"blockOpen");
}
// The mod is being initialized, load settings, hook functions, and do other
// initialization stuff if required.
BOOL Wh_ModInit() {
Wh_Log(L"Init");
LoadSettings();
HMODULE gdiPlusModule = LoadLibrary(L"gdiplus.dll");
GdipSetSolidFillColor_t GdipSetSolidFillColor =
(GdipSetSolidFillColor_t)GetProcAddress(gdiPlusModule,
"GdipSetSolidFillColor");
Wh_SetFunctionHook((void*)GdipSetSolidFillColor,
(void*)GdipSetSolidFillColor_Hook,
(void**)&GdipSetSolidFillColor_Original);
Wh_SetFunctionHook((void*)GetOpenFileNameW, (void*)GetOpenFileNameW_Hook,
(void**)&GetOpenFileNameW_Original);
return TRUE;
}
// The mod is being unloaded, free all allocated resources.
void Wh_ModUninit() {
Wh_Log(L"Uninit");
}
// The mod setting were changed, reload them.
void Wh_ModSettingsChanged() {
Wh_Log(L"SettingsChanged");
LoadSettings();
}
================================================
FILE: src/vscode-windhawk/helper_scripts/disable_default_keybindings.py
================================================
import json
# How to get these keybindings:
# * Create Windhawk bundle.
# * Remove Windhawk extension from UI.
# * Run UI -> Ctrl+Shift+P -> Preferences: Open Default Keyboard Shortcuts (JSON).
DEFAULT_KEYBINDINGS = json.loads(R'''
[
{ "key": "escape escape", "command": "workbench.action.exitZenMode",
"when": "inZenMode" },
{ "key": "shift+escape", "command": "closeReferenceSearch",
"when": "inReferenceSearchEditor && !config.editor.stablePeek" },
{ "key": "escape", "command": "closeReferenceSearch",
"when": "inReferenceSearchEditor && !config.editor.stablePeek" },
{ "key": "escape", "command": "editor.closeTestPeek",
"when": "testing.isInPeek && !config.editor.stablePeek || testing.isPeekVisible && !config.editor.stablePeek" },
{ "key": "shift+escape", "command": "cancelSelection",
"when": "editorHasSelection && textInputFocus" },
{ "key": "escape", "command": "cancelSelection",
"when": "editorHasSelection && textInputFocus" },
{ "key": "ctrl+end", "command": "cursorBottom",
"when": "textInputFocus" },
{ "key": "ctrl+shift+end", "command": "cursorBottomSelect",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+down", "command": "cursorColumnSelectDown",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+left", "command": "cursorColumnSelectLeft",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+pagedown", "command": "cursorColumnSelectPageDown",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+pageup", "command": "cursorColumnSelectPageUp",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+right", "command": "cursorColumnSelectRight",
"when": "textInputFocus" },
{ "key": "ctrl+shift+alt+up", "command": "cursorColumnSelectUp",
"when": "textInputFocus" },
{ "key": "down", "command": "cursorDown",
"when": "textInputFocus" },
{ "key": "ctrl+shift+down", "command": "cursorDownSelect",
"when": "textInputFocus" },
{ "key": "shift+down", "command": "cursorDownSelect",
"when": "textInputFocus" },
{ "key": "end", "command": "cursorEnd",
"when": "textInputFocus",
"args": {"sticky":false} },
{ "key": "shift+end", "command": "cursorEndSelect",
"when": "textInputFocus",
"args": {"sticky":false} },
{ "key": "home", "command": "cursorHome",
"when": "textInputFocus" },
{ "key": "shift+home", "command": "cursorHomeSelect",
"when": "textInputFocus" },
{ "key": "left", "command": "cursorLeft",
"when": "textInputFocus" },
{ "key": "shift+left", "command": "cursorLeftSelect",
"when": "textInputFocus" },
{ "key": "pagedown", "command": "cursorPageDown",
"when": "textInputFocus" },
{ "key": "shift+pagedown", "command": "cursorPageDownSelect",
"when": "textInputFocus" },
{ "key": "pageup", "command": "cursorPageUp",
"when": "textInputFocus" },
{ "key": "shift+pageup", "command": "cursorPageUpSelect",
"when": "textInputFocus" },
{ "key": "right", "command": "cursorRight",
"when": "textInputFocus" },
{ "key": "shift+right", "command": "cursorRightSelect",
"when": "textInputFocus" },
{ "key": "ctrl+home", "command": "cursorTop",
"when": "textInputFocus" },
{ "key": "ctrl+shift+home", "command": "cursorTopSelect",
"when": "textInputFocus" },
{ "key": "up", "command": "cursorUp",
"when": "textInputFocus" },
{ "key": "ctrl+shift+up", "command": "cursorUpSelect",
"when": "textInputFocus" },
{ "key": "shift+up", "command": "cursorUpSelect",
"when": "textInputFocus" },
{ "key": "shift+backspace", "command": "deleteLeft",
"when": "textInputFocus" },
{ "key": "backspace", "command": "deleteLeft",
"when": "textInputFocus" },
{ "key": "delete", "command": "deleteRight",
"when": "textInputFocus" },
{ "key": "ctrl+a", "command": "editor.action.selectAll" },
{ "key": "ctrl+l", "command": "expandLineSelection",
"when": "textInputFocus" },
{ "key": "shift+tab", "command": "outdent",
"when": "editorTextFocus && !editorReadonly && !editorTabMovesFocus" },
{ "key": "ctrl+shift+z", "command": "redo" },
{ "key": "ctrl+y", "command": "redo" },
{ "key": "ctrl+down", "command": "scrollLineDown",
"when": "textInputFocus" },
{ "key": "ctrl+up", "command": "scrollLineUp",
"when": "textInputFocus" },
{ "key": "alt+pagedown", "command": "scrollPageDown",
"when": "textInputFocus" },
{ "key": "alt+pageup", "command": "scrollPageUp",
"when": "textInputFocus" },
{ "key": "tab", "command": "tab",
"when": "editorTextFocus && !editorReadonly && !editorTabMovesFocus" },
{ "key": "ctrl+z", "command": "undo" },
{ "key": "shift+down", "command": "cursorColumnSelectDown",
"when": "editorColumnSelection && textInputFocus" },
{ "key": "shift+left", "command": "cursorColumnSelectLeft",
"when": "editorColumnSelection && textInputFocus" },
{ "key": "shift+pagedown", "command": "cursorColumnSelectPageDown",
"when": "editorColumnSelection && textInputFocus" },
{ "key": "shift+pageup", "command": "cursorColumnSelectPageUp",
"when": "editorColumnSelection && textInputFocus" },
{ "key": "shift+right", "command": "cursorColumnSelectRight",
"when": "editorColumnSelection && textInputFocus" },
{ "key": "shift+up", "command": "cursorColumnSelectUp",
"when": "editorColumnSelection && textInputFocus" },
{ "key": "shift+escape", "command": "removeSecondaryCursors",
"when": "editorHasMultipleSelections && textInputFocus" },
{ "key": "escape", "command": "removeSecondaryCursors",
"when": "editorHasMultipleSelections && textInputFocus" },
{ "key": "f12", "command": "goToNextReference",
"when": "inReferenceSearchEditor || referenceSearchVisible" },
{ "key": "f4", "command": "goToNextReference",
"when": "inReferenceSearchEditor || referenceSearchVisible" },
{ "key": "shift+f12", "command": "goToPreviousReference",
"when": "inReferenceSearchEditor || referenceSearchVisible" },
{ "key": "shift+f4", "command": "goToPreviousReference",
"when": "inReferenceSearchEditor || referenceSearchVisible" },
{ "key": "shift+enter", "command": "refactorPreview.apply",
"when": "refactorPreview.enabled && refactorPreview.enabled && refactorPreview.hasCheckedChanges && focusedView == 'refactorPreview'" },
{ "key": "alt+enter", "command": "testing.editFocusedTest",
"when": "focusedView == 'workbench.view.testing'" },
{ "key": "escape", "command": "notebook.cell.quitEdit",
"when": "inputFocus && notebookEditorFocused && !editorHasMultipleSelections && !editorHasSelection && !editorHoverVisible" },
{ "key": "ctrl+alt+enter", "command": "notebook.cell.quitEdit",
"when": "inputFocus && notebookEditorFocused && !editorHasMultipleSelections && !editorHasSelection && !editorHoverVisible && notebookCellType == 'markup'" },
{ "key": "ctrl+f", "command": "actions.find",
"when": "editorFocus || editorIsOpen" },
{ "key": "enter", "command": "breakpointWidget.action.acceptInput",
"when": "breakpointWidgetVisible && inBreakpointWidget" },
{ "key": "shift+escape", "command": "closeBreakpointWidget",
"when": "breakpointWidgetVisible && textInputFocus" },
{ "key": "escape", "command": "closeBreakpointWidget",
"when": "breakpointWidgetVisible && textInputFocus" },
{ "key": "ctrl+u", "command": "cursorUndo",
"when": "textInputFocus" },
{ "key": "ctrl+right", "command": "cursorWordEndRight",
"when": "textInputFocus && !accessibilityModeEnabled" },
{ "key": "ctrl+shift+right", "command": "cursorWordEndRightSelect",
"when": "textInputFocus && !accessibilityModeEnabled" },
{ "key": "ctrl+left", "command": "cursorWordLeft",
"when": "textInputFocus && !accessibilityModeEnabled" },
{ "key": "ctrl+shift+left", "command": "cursorWordLeftSelect",
"when": "textInputFocus && !accessibilityModeEnabled" },
{ "key": "ctrl+backspace", "command": "deleteWordLeft",
"when": "textInputFocus && !editorReadonly" },
{ "key": "ctrl+delete", "command": "deleteWordRight",
"when": "textInputFocus && !editorReadonly" },
{ "key": "ctrl+k ctrl+c", "command": "editor.action.addCommentLine",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+d", "command": "editor.action.addSelectionToNextFindMatch",
"when": "editorFocus" },
{ "key": "shift+alt+.", "command": "editor.action.autoFix",
"when": "editorTextFocus && !editorReadonly && supportedCodeAction =~ /(\\s|^)quickfix\\b/" },
{ "key": "shift+alt+a", "command": "editor.action.blockComment",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "escape", "command": "editor.action.cancelSelectionAnchor",
"when": "editorTextFocus && selectionAnchorSet" },
{ "key": "ctrl+f2", "command": "editor.action.changeAll",
"when": "editorTextFocus && editorTextFocus && !editorReadonly" },
{ "key": "ctrl+insert", "command": "editor.action.clipboardCopyAction" },
{ "key": "ctrl+c", "command": "editor.action.clipboardCopyAction" },
{ "key": "shift+delete", "command": "editor.action.clipboardCutAction" },
{ "key": "ctrl+x", "command": "editor.action.clipboardCutAction" },
{ "key": "shift+insert", "command": "editor.action.clipboardPasteAction" },
{ "key": "ctrl+v", "command": "editor.action.clipboardPasteAction" },
{ "key": "ctrl+/", "command": "editor.action.commentLine",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "shift+alt+down", "command": "editor.action.copyLinesDownAction",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "shift+alt+up", "command": "editor.action.copyLinesUpAction",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+k ctrl+k", "command": "editor.action.defineKeybinding",
"when": "editorTextFocus && !editorReadonly && editorLangId == 'jsonc'" },
{ "key": "ctrl+shift+k", "command": "editor.action.deleteLines",
"when": "textInputFocus && !editorReadonly" },
{ "key": "f7", "command": "editor.action.diffReview.next",
"when": "isInDiffEditor" },
{ "key": "shift+f7", "command": "editor.action.diffReview.prev",
"when": "isInDiffEditor" },
{ "key": "alt+f3", "command": "editor.action.dirtydiff.next",
"when": "editorTextFocus" },
{ "key": "shift+alt+f3", "command": "editor.action.dirtydiff.previous",
"when": "editorTextFocus" },
{ "key": "enter", "command": "editor.action.extensioneditor.findNext",
"when": "webviewFindWidgetFocused && !editorFocus && activeEditor == 'workbench.editor.extension'" },
{ "key": "shift+enter", "command": "editor.action.extensioneditor.findPrevious",
"when": "webviewFindWidgetFocused && !editorFocus && activeEditor == 'workbench.editor.extension'" },
{ "key": "ctrl+f", "command": "editor.action.extensioneditor.showfind",
"when": "!editorFocus && activeEditor == 'workbench.editor.extension'" },
{ "key": "shift+alt+f", "command": "editor.action.formatDocument",
"when": "editorHasDocumentFormattingProvider && editorTextFocus && !editorReadonly && !inCompositeEditor" },
{ "key": "shift+alt+f", "command": "editor.action.formatDocument.none",
"when": "editorTextFocus && !editorHasDocumentFormattingProvider && !editorReadonly" },
{ "key": "ctrl+k ctrl+f", "command": "editor.action.formatSelection",
"when": "editorHasDocumentSelectionFormattingProvider && editorTextFocus && !editorReadonly" },
{ "key": "ctrl+f12", "command": "editor.action.goToImplementation",
"when": "editorHasImplementationProvider && editorTextFocus && !isInEmbeddedEditor" },
{ "key": "shift+f12", "command": "editor.action.goToReferences",
"when": "editorHasReferenceProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor" },
{ "key": "ctrl+shift+.", "command": "editor.action.inPlaceReplace.down",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+shift+,", "command": "editor.action.inPlaceReplace.up",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+]", "command": "editor.action.indentLines",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "escape", "command": "editor.action.inlineSuggest.hide",
"when": "inlineSuggestionVisible" },
{ "key": "alt+]", "command": "editor.action.inlineSuggest.showNext",
"when": "inlineSuggestionVisible && !editorReadonly" },
{ "key": "alt+[", "command": "editor.action.inlineSuggest.showPrevious",
"when": "inlineSuggestionVisible && !editorReadonly" },
{ "key": "ctrl+alt+up", "command": "editor.action.insertCursorAbove",
"when": "editorTextFocus" },
{ "key": "shift+alt+i", "command": "editor.action.insertCursorAtEndOfEachLineSelected",
"when": "editorTextFocus" },
{ "key": "ctrl+alt+down", "command": "editor.action.insertCursorBelow",
"when": "editorTextFocus" },
{ "key": "ctrl+enter", "command": "editor.action.insertLineAfter",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+shift+enter", "command": "editor.action.insertLineBefore",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+shift+\\", "command": "editor.action.jumpToBracket",
"when": "editorTextFocus" },
{ "key": "ctrl+shift+f2", "command": "editor.action.linkedEditing",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly" },
{ "key": "alt+f8", "command": "editor.action.marker.next",
"when": "editorFocus" },
{ "key": "f8", "command": "editor.action.marker.nextInFiles",
"when": "editorFocus" },
{ "key": "shift+alt+f8", "command": "editor.action.marker.prev",
"when": "editorFocus" },
{ "key": "shift+f8", "command": "editor.action.marker.prevInFiles",
"when": "editorFocus" },
{ "key": "alt+down", "command": "editor.action.moveLinesDownAction",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "alt+up", "command": "editor.action.moveLinesUpAction",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "ctrl+k ctrl+d", "command": "editor.action.moveSelectionToNextFindMatch",
"when": "editorFocus" },
{ "key": "f3", "command": "editor.action.nextMatchFindAction",
"when": "editorFocus" },
{ "key": "enter", "command": "editor.action.nextMatchFindAction",
"when": "editorFocus && findInputFocussed" },
{ "key": "ctrl+f3", "command": "editor.action.nextSelectionMatchFindAction",
"when": "editorFocus" },
{ "key": "shift+alt+o", "command": "editor.action.organizeImports",
"when": "editorTextFocus && !editorReadonly && supportedCodeAction =~ /(\\s|^)source\\.organizeImports\\b/" },
{ "key": "ctrl+[", "command": "editor.action.outdentLines",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "alt+f12", "command": "editor.action.peekDefinition",
"when": "editorHasDefinitionProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor" },
{ "key": "ctrl+shift+f12", "command": "editor.action.peekImplementation",
"when": "editorHasImplementationProvider && editorTextFocus && !inReferenceSearchEditor && !isInEmbeddedEditor" },
{ "key": "shift+f3", "command": "editor.action.previousMatchFindAction",
"when": "editorFocus" },
{ "key": "shift+enter", "command": "editor.action.previousMatchFindAction",
"when": "editorFocus && findInputFocussed" },
{ "key": "ctrl+shift+f3", "command": "editor.action.previousSelectionMatchFindAction",
"when": "editorFocus" },
{ "key": "ctrl+.", "command": "editor.action.quickFix",
"when": "editorHasCodeActionsProvider && editorTextFocus && !editorReadonly" },
{ "key": "ctrl+shift+r", "command": "editor.action.refactor",
"when": "editorHasCodeActionsProvider && editorTextFocus && !editorReadonly" },
{ "key": "ctrl+k ctrl+u", "command": "editor.action.removeCommentLine",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "f2", "command": "editor.action.rename",
"when": "editorHasRenameProvider && editorTextFocus && !editorReadonly" },
{ "key": "f12", "command": "editor.action.revealDefinition",
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor" },
{ "key": "ctrl+k f12", "command": "editor.action.revealDefinitionAside",
"when": "editorHasDefinitionProvider && editorTextFocus && !isInEmbeddedEditor" },
{ "key": "ctrl+k ctrl+k", "command": "editor.action.selectFromAnchorToCursor",
"when": "editorTextFocus && selectionAnchorSet" },
{ "key": "ctrl+shift+l", "command": "editor.action.selectHighlights",
"when": "editorFocus" },
{ "key": "ctrl+k ctrl+b", "command": "editor.action.setSelectionAnchor",
"when": "editorTextFocus" },
{ "key": "alt+f1", "command": "editor.action.showAccessibilityHelp" },
{ "key": "shift+f10", "command": "editor.action.showContextMenu",
"when": "textInputFocus" },
{ "key": "ctrl+k ctrl+i", "command": "editor.action.showHover",
"when": "editorTextFocus" },
{ "key": "shift+alt+right", "command": "editor.action.smartSelect.expand",
"when": "editorTextFocus" },
{ "key": "shift+alt+left", "command": "editor.action.smartSelect.shrink",
"when": "editorTextFocus" },
{ "key": "ctrl+h", "command": "editor.action.startFindReplaceAction",
"when": "editorFocus || editorIsOpen" },
{ "key": "ctrl+m", "command": "editor.action.toggleTabFocusMode" },
{ "key": "alt+z", "command": "editor.action.toggleWordWrap" },
{ "key": "ctrl+shift+space", "command": "editor.action.triggerParameterHints",
"when": "editorHasSignatureHelpProvider && editorTextFocus" },
{ "key": "ctrl+i", "command": "editor.action.triggerSuggest",
"when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly" },
{ "key": "ctrl+space", "command": "editor.action.triggerSuggest",
"when": "editorHasCompletionItemProvider && textInputFocus && !editorReadonly" },
{ "key": "ctrl+k ctrl+x", "command": "editor.action.trimTrailingWhitespace",
"when": "editorTextFocus && !editorReadonly" },
{ "key": "enter", "command": "editor.action.webvieweditor.findNext",
"when": "webviewFindWidgetFocused && !editorFocus && activeEditor == 'WebviewEditor'" },
{ "key": "shift+enter", "command": "editor.action.webvieweditor.findPrevious",
"when": "webviewFindWidgetFocused && !editorFocus && activeEditor == 'WebviewEditor'" },
{ "key": "escape", "command": "editor.action.webvieweditor.hideFind",
"when": "webviewFindWidgetVisible && !editorFocus && activeEditor == 'WebviewEditor'" },
{ "key": "ctrl+f", "command": "editor.action.webvieweditor.showFind",
"when": "webviewFindWidgetEnabled && !editorFocus && activeEditor == 'WebviewEditor'" },
{ "key": "f7", "command": "editor.action.wordHighlight.next",
"when": "editorTextFocus && hasWordHighlights" },
{ "key": "shift+f7", "command": "editor.action.wordHighlight.prev",
"when": "editorTextFocus && hasWordHighlights" },
{ "key": "escape", "command": "editor.cancelOperation",
"when": "cancellableOperation" },
{ "key": "escape", "command": "editor.debug.action.closeExceptionWidget",
"when": "exceptionWidgetVisible" },
{ "key": "ctrl+k ctrl+i", "command": "editor.debug.action.showDebugHover",
"when": "editorTextFocus && inDebugMode" },
{ "key": "f9", "command": "editor.debug.action.toggleBreakpoint",
"when": "debuggersAvailable && editorTextFocus" },
{ "key": "tab", "command": "editor.emmet.action.expandAbbreviation",
"when": "config.emmet.triggerExpansionOnTab && editorTextFocus && !editorReadonly && !editorTabMovesFocus" },
{ "key": "ctrl+shift+[", "command": "editor.fold",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+0", "command": "editor.foldAll",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+/", "command": "editor.foldAllBlockComments",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+-", "command": "editor.foldAllExcept",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+8", "command": "editor.foldAllMarkerRegions",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+1", "command": "editor.foldLevel1",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+2", "command": "editor.foldLevel2",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+3", "command": "editor.foldLevel3",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+4", "command": "editor.foldLevel4",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+5", "command": "editor.foldLevel5",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+6", "command": "editor.foldLevel6",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+7", "command": "editor.foldLevel7",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+[", "command": "editor.foldRecursively",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "f12", "command": "editor.gotoNextSymbolFromResult",
"when": "hasSymbols" },
{ "key": "escape", "command": "editor.gotoNextSymbolFromResult.cancel",
"when": "hasSymbols" },
{ "key": "ctrl+k ctrl+l", "command": "editor.toggleFold",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+shift+]", "command": "editor.unfold",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+j", "command": "editor.unfoldAll",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+=", "command": "editor.unfoldAllExcept",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+9", "command": "editor.unfoldAllMarkerRegions",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "ctrl+k ctrl+]", "command": "editor.unfoldRecursively",
"when": "editorTextFocus && foldingEnabled" },
{ "key": "right", "command": "gettingStarted.next",
"when": "inWelcome && activeEditor == 'gettingStartedPage'" },
{ "key": "down", "command": "gettingStarted.next",
"when": "inWelcome && activeEditor == 'gettingStartedPage'" },
{ "key": "left", "command": "gettingStarted.prev",
"when": "inWelcome && activeEditor == 'gettingStartedPage'" },
{ "key": "up", "command": "gettingStarted.prev",
"when": "inWelcome && activeEditor == 'gettingStartedPage'" },
{ "key": "tab", "command": "insertSnippet",
"when": "editorTextFocus && hasSnippetCompletions && !editorTabMovesFocus && !inSnippetMode" },
{ "key": "ctrl+enter", "command": "interactive.execute",
"when": "resourceScheme == 'vscode-interactive'" },
{ "key": "ctrl+alt+enter", "command": "notebook.cell.execute",
"when": "notebookCellListFocused && notebookMissingKernelExtension && !notebookCellExecuting && notebookCellType == 'code' || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelCount > 0" },
{ "key": "alt+enter", "command": "notebook.cell.executeAndInsertBelow",
"when": "notebookCellListFocused && notebookMissingKernelExtension && !notebookCellExecuting && notebookCellType == 'code' || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelCount > 0" },
{ "key": "shift+enter", "command": "notebook.cell.executeAndSelectBelow",
"when": "notebookCellListFocused && notebookCellType == 'markup' || notebookCellListFocused && notebookMissingKernelExtension && !notebookCellExecuting && notebookCellType == 'code' || notebookCellListFocused && !notebookCellExecuting && notebookCellType == 'code' && notebookKernelCount > 0" },
{ "key": "ctrl+shift+v", "command": "notebook.cell.pasteAbove",
"when": "notebookEditorFocused && !inputFocus" },
{ "key": "down", "command": "notebook.focusNextEditor",
"when": "config.notebook.navigation.allowNavigateToSurroundingCells && editorTextFocus && inputFocus && notebookEditorFocused && notebookEditorCursorAtBoundary != 'none' && notebookEditorCursorAtBoundary != 'top'" },
{ "key": "up", "command": "notebook.focusPreviousEditor",
"when": "config.notebook.navigation.allowNavigateToSurroundingCells && editorTextFocus && inputFocus && notebookEditorFocused && notebookEditorCursorAtBoundary != 'bottom' && notebookEditorCursorAtBoundary != 'none'" },
{ "key": "shift+alt+f", "command": "notebook.formatCell",
"when": "editorHasDocumentFormattingProvider && editorTextFocus && inCompositeEditor && notebookEditable && !editorReadonly && activeEditor == 'workbench.editor.notebook'" },
{ "key": "ctrl+enter", "command": "openReferenceToSide",
"when": "listFocus && referenceSearchVisible && !inputFocus" },
{ "key": "enter", "command": "repl.action.acceptInput",
"when": "inDebugRepl && textInputFocus" },
{ "key": "ctrl+f", "command": "repl.action.filter",
"when": "inDebugRepl && textInputFocus" },
{ "key": "ctrl+shift+r", "command": "rerunSearchEditorSearch",
"when": "inSearchEditor" },
{ "key": "escape", "command": "search.action.focusQueryEditorWidget",
"when": "inSearchEditor" },
{ "key": "ctrl+shift+backspace", "command": "search.searchEditor.action.deleteFileResults",
"when": "inSearchEditor" },
{ "key": "escape", "command": "settings.action.clearSearchResults",
"when": "inSettingsEditor && inSettingsSearch" },
{ "key": "down", "command": "settings.action.focusSettingsFile",
"when": "inSettingsSearch && !suggestWidgetVisible" },
{ "key": "ctrl+f", "command": "settings.action.search",
"when": "inSettingsEditor" },
{ "key": "ctrl+/", "command": "toggleExplainMode",
"when": "suggestWidgetVisible" },
{ "key": "ctrl+k f2", "command": "togglePeekWidgetFocus",
"when": "inReferenceSearchEditor || referenceSearchVisible" },
{ "key": "escape", "command": "welcome.goBack",
"when": "inWelcome && activeEditor == 'gettingStartedPage'" },
{ "key": "alt+f5", "command": "workbench.action.editor.nextChange",
"when": "editorTextFocus" },
{ "key": "shift+alt+f5", "command": "workbench.action.editor.previousChange",
"when": "editorTextFocus" },
{ "key": "shift+escape", "command": "workbench.action.hideComment",
"when": "commentEditorFocused" },
{ "key": "escape", "command": "workbench.action.hideComment",
"when": "commentEditorFocused" },
{ "key": "ctrl+enter", "command": "workbench.action.submitComment",
"when": "commentEditorFocused" },
{ "key": "alt+f8", "command": "testing.goToNextMessage",
"when": "editorFocus && testing.isPeekVisible" },
{ "key": "shift+alt+f8", "command": "testing.goToPreviousMessage",
"when": "editorFocus && testing.isPeekVisible" },
{ "key": "shift+escape", "command": "closeFindWidget",
"when": "editorFocus && findWidgetVisible && !isComposing" },
{ "key": "escape", "command": "closeFindWidget",
"when": "editorFocus && findWidgetVisible && !isComposing" },
{ "key": "ctrl+alt+enter", "command": "editor.action.replaceAll",
"when": "editorFocus && findWidgetVisible" },
{ "key": "ctrl+shift+1", "command": "editor.action.replaceOne",
"when": "editorFocus && findWidgetVisible" },
{ "key": "enter", "command": "editor.action.replaceOne",
"when": "editorFocus && findWidgetVisible && replaceInputFocussed" },
{ "key": "alt+enter", "command": "editor.action.selectAllMatches",
"when": "editorFocus && findWidgetVisible" },
{ "key": "alt+c", "command": "toggleFindCaseSensitive",
"when": "editorFocus" },
{ "key": "alt+l", "command": "toggleFindInSelection",
"when": "editorFocus" },
{ "key": "alt+r", "command": "toggleFindRegex",
"when": "editorFocus" },
{ "key": "alt+w", "command": "toggleFindWholeWord",
"when": "editorFocus" },
{ "key": "alt+p", "command": "togglePreserveCase",
"when": "editorFocus" },
{ "key": "tab", "command": "jumpToNextSnippetPlaceholder",
"when": "editorTextFocus && hasNextTabstop && inSnippetMode" },
{ "key": "shift+tab", "command": "jumpToPrevSnippetPlaceholder",
"when": "editorTextFocus && hasPrevTabstop && inSnippetMode" },
{ "key": "escape", "command": "leaveEditorMessage",
"when": "messageVisible" },
{ "key": "shift+escape", "command": "leaveSnippet",
"when": "editorTextFocus && inSnippetMode" },
{ "key": "escape", "command": "leaveSnippet",
"when": "editorTextFocus && inSnippetMode" },
{ "key": "shift+escape", "command": "closeDirtyDiff",
"when": "dirtyDiffVisible" },
{ "key": "escape", "command": "closeDirtyDiff",
"when": "dirtyDiffVisible" },
{ "key": "shift+escape", "command": "closeMarkersNavigation",
"when": "editorFocus && markersNavigationVisible" },
{ "key": "escape", "command": "closeMarkersNavigation",
"when": "editorFocus && markersNavigationVisible" },
{ "key": "escape", "command": "notifications.hideToasts",
"when": "notificationToastsVisible" },
{ "key": "shift+escape", "command": "closeParameterHints",
"when": "editorFocus && parameterHintsVisible" },
{ "key": "escape", "command": "closeParameterHints",
"when": "editorFocus && parameterHintsVisible" },
{ "key": "alt+down", "command": "showNextParameterHint",
"when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible" },
{ "key": "down", "command": "showNextParameterHint",
"when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible" },
{ "key": "alt+up", "command": "showPrevParameterHint",
"when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible" },
{ "key": "up", "command": "showPrevParameterHint",
"when": "editorFocus && parameterHintsMultipleSignatures && parameterHintsVisible" },
{ "key": "shift+tab", "command": "acceptAlternativeSelectedSuggestion",
"when": "suggestWidgetVisible && textInputFocus && textInputFocus" },
{ "key": "shift+enter", "command": "acceptAlternativeSelectedSuggestion",
"when": "suggestWidgetVisible && textInputFocus && textInputFocus" },
{ "key": "tab", "command": "acceptSelectedSuggestion",
"when": "suggestWidgetVisible && textInputFocus" },
{ "key": "enter", "command": "acceptSelectedSuggestion",
"when": "acceptSuggestionOnEnter && suggestWidgetVisible && suggestionMakesTextEdit && textInputFocus" },
{ "key": "shift+escape", "command": "hideSuggestWidget",
"when": "suggestWidgetVisible && textInputFocus" },
{ "key": "escape", "command": "hideSuggestWidget",
"when": "suggestWidgetVisible && textInputFocus" },
{ "key": "tab", "command": "insertBestCompletion",
"when": "atEndOfWord && textInputFocus && !hasOtherSuggestions && !inSnippetMode && !suggestWidgetVisible && config.editor.tabCompletion == 'on'" },
{ "key": "tab", "command": "insertNextSuggestion",
"when": "hasOtherSuggestions && textInputFocus && textInputFocus && !inSnippetMode && !suggestWidgetVisible && config.editor.tabCompletion == 'on'" },
{ "key": "shift+tab", "command": "insertPrevSuggestion",
"when": "hasOtherSuggestions && textInputFocus && textInputFocus && !inSnippetMode && !suggestWidgetVisible && config.editor.tabCompletion == 'on'" },
{ "key": "ctrl+pagedown", "command": "selectNextPageSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "pagedown", "command": "selectNextPageSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "ctrl+down", "command": "selectNextSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "down", "command": "selectNextSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "ctrl+pageup", "command": "selectPrevPageSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "pageup", "command": "selectPrevPageSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "ctrl+up", "command": "selectPrevSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "up", "command": "selectPrevSuggestion",
"when": "suggestWidgetMultipleSuggestions && suggestWidgetVisible && textInputFocus" },
{ "key": "ctrl+space", "command": "toggleSuggestionDetails",
"when": "suggestWidgetVisible && textInputFocus" },
{ "key": "ctrl+alt+space", "command": "toggleSuggestionFocus",
"when": "suggestWidgetVisible && textInputFocus" },
{ "key": "enter", "command": "acceptRenameInput",
"when": "editorFocus && renameInputVisible" },
{ "key": "shift+enter", "command": "acceptRenameInputWithPreview",
"when": "config.editor.rename.enablePreview && editorFocus && renameInputVisible" },
{ "key": "shift+escape", "command": "cancelLinkedEditingInput",
"when": "LinkedEditingInputVisible && editorTextFocus" },
{ "key": "escape", "command": "cancelLinkedEditingInput",
"when": "LinkedEditingInputVisible && editorTextFocus" },
{ "key": "shift+escape", "command": "cancelRenameInput",
"when": "editorFocus && renameInputVisible" },
{ "key": "escape", "command": "cancelRenameInput",
"when": "editorFocus && renameInputVisible" },
{ "key": "ctrl+shift+l", "command": "addCursorsAtSearchResults",
"when": "fileMatchOrMatchFocus && searchViewletVisible" },
{ "key": "ctrl+shift+;", "command": "breadcrumbs.focus",
"when": "breadcrumbsPossible" },
{ "key": "ctrl+shift+.", "command": "breadcrumbs.focusAndSelect",
"when": "breadcrumbsPossible" },
{ "key": "ctrl+right", "command": "breadcrumbs.focusNext",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "right", "command": "breadcrumbs.focusNext",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "ctrl+left", "command": "breadcrumbs.focusPrevious",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "left", "command": "breadcrumbs.focusPrevious",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "ctrl+enter", "command": "breadcrumbs.revealFocused",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "space", "command": "breadcrumbs.revealFocused",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "ctrl+enter", "command": "breadcrumbs.revealFocusedFromTreeAside",
"when": "breadcrumbsActive && breadcrumbsVisible && listFocus && !inputFocus" },
{ "key": "down", "command": "breadcrumbs.selectFocused",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "enter", "command": "breadcrumbs.selectFocused",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "ctrl+shift+.", "command": "breadcrumbs.toggleToOn",
"when": "!config.breadcrumbs.enabled" },
{ "key": "shift+escape", "command": "closeAccessibilityHelp",
"when": "accessibilityHelpWidgetVisible && editorFocus" },
{ "key": "escape", "command": "closeAccessibilityHelp",
"when": "accessibilityHelpWidgetVisible && editorFocus" },
{ "key": "escape", "command": "closeReplaceInFilesWidget",
"when": "replaceInputBoxFocus && searchViewletVisible" },
{ "key": "shift+alt+c", "command": "copyFilePath",
"when": "!editorFocus" },
{ "key": "ctrl+k ctrl+shift+c", "command": "copyRelativeFilePath",
"when": "!editorFocus" },
{ "key": "alt+enter", "command": "debug.openBreakpointToSide",
"when": "breakpointsFocused" },
{ "key": "ctrl+enter", "command": "debug.openBreakpointToSide",
"when": "breakpointsFocused" },
{ "key": "ctrl+f5", "command": "debug.openView",
"when": "!debuggersAvailable" },
{ "key": "f5", "command": "debug.openView",
"when": "!debuggersAvailable" },
{ "key": "delete", "command": "debug.removeBreakpoint",
"when": "breakpointsFocused && !breakpointInputFocused" },
{ "key": "delete", "command": "debug.removeWatchExpression",
"when": "watchExpressionsFocused && !expressionSelected" },
{ "key": "alt+-", "command": "decreaseSearchEditorContextLines",
"when": "inSearchEditor" },
{ "key": "tab", "command": "editor.action.inlineSuggest.commit",
"when": "inlineSuggestionVisible && !editorTabMovesFocus && !inlineSuggestionHasIndentation" },
{ "key": "shift+f9", "command": "editor.debug.action.toggleInlineBreakpoint",
"when": "editorTextFocus" },
{ "key": "shift+enter", "command": "editor.refocusCallHierarchy",
"when": "callHierarchyVisible" },
{ "key": "shift+alt+h", "command": "editor.showCallHierarchy",
"when": "editorHasCallHierarchyProvider && editorTextFocus && !inReferenceSearchEditor" },
{ "key": "shift+alt+h", "command": "editor.showIncomingCalls",
"when": "callHierarchyVisible && callHierarchyDirection == 'outgoingCalls'" },
{ "key": "shift+alt+h", "command": "editor.showOutgoingCalls",
"when": "callHierarchyVisible && callHierarchyDirection == 'incomingCalls'" },
{ "key": "ctrl+enter", "command": "explorer.openToSide",
"when": "explorerViewletFocus && explorerViewletVisible && !inputFocus" },
{ "key": "shift+alt+f", "command": "filesExplorer.findInFolder",
"when": "explorerResourceIsFolder && explorerViewletVisible && filesExplorerFocus && !inputFocus" },
{ "key": "alt+down", "command": "history.showNext",
"when": "historyNavigationEnabled && historyNavigationWidget" },
{ "key": "down", "command": "history.showNext",
"when": "historyNavigationEnabled && historyNavigationWidget" },
{ "key": "alt+up", "command": "history.showPrevious",
"when": "historyNavigationEnabled && historyNavigationWidget" },
{ "key": "up", "command": "history.showPrevious",
"when": "historyNavigationEnabled && historyNavigationWidget" },
{ "key": "alt+=", "command": "increaseSearchEditorContextLines",
"when": "inSearchEditor" },
{ "key": "down", "command": "interactive.history.next",
"when": "!suggestWidgetVisible && resourceScheme == 'vscode-interactive' && interactiveInputCursorAtBoundary != 'none' && interactiveInputCursorAtBoundary != 'top'" },
{ "key": "up", "command": "interactive.history.previous",
"when": "!suggestWidgetVisible && resourceScheme == 'vscode-interactive' && interactiveInputCursorAtBoundary != 'bottom' && interactiveInputCursorAtBoundary != 'none'" },
{ "key": "ctrl+k ctrl+a", "command": "keybindings.editor.addKeybinding",
"when": "inKeybindings && keybindingFocus" },
{ "key": "escape", "command": "keybindings.editor.clearSearchResults",
"when": "inKeybindings && inKeybindingsSearch" },
{ "key": "ctrl+c", "command": "keybindings.editor.copyKeybindingEntry",
"when": "inKeybindings && keybindingFocus" },
{ "key": "enter", "command": "keybindings.editor.defineKeybinding",
"when": "inKeybindings && keybindingFocus" },
{ "key": "ctrl+k ctrl+e", "command": "keybindings.editor.defineWhenExpression",
"when": "inKeybindings && keybindingFocus" },
{ "key": "ctrl+down", "command": "keybindings.editor.focusKeybindings",
"when": "inKeybindings && inKeybindingsSearch" },
{ "key": "alt+k", "command": "keybindings.editor.recordSearchKeys",
"when": "inKeybindings && inKeybindingsSearch" },
{ "key": "delete", "command": "keybindings.editor.removeKeybinding",
"when": "inKeybindings && keybindingFocus && !inputFocus" },
{ "key": "ctrl+f", "command": "keybindings.editor.searchKeybindings",
"when": "inKeybindings" },
{ "key": "alt+p", "command": "keybindings.editor.toggleSortByPrecedence",
"when": "inKeybindings" },
{ "key": "escape", "command": "list.clear",
"when": "listFocus && listHasSelectionOrFocus && !inputFocus" },
{ "key": "left", "command": "list.collapse",
"when": "listFocus && !inputFocus" },
{ "key": "ctrl+left", "command": "list.collapseAll",
"when": "listFocus && !inputFocus" },
{ "key": "right", "command": "list.expand",
"when": "listFocus && !inputFocus" },
{ "key": "shift+down", "command": "list.expandSelectionDown",
"when": "listFocus && listSupportsMultiselect && !inputFocus" },
{ "key": "shift+up", "command": "list.expandSelectionUp",
"when": "listFocus && listSupportsMultiselect && !inputFocus" },
{ "key": "down", "command": "list.focusDown",
"when": "listFocus && !inputFocus" },
{ "key": "home", "command": "list.focusFirst",
"when": "listFocus && !inputFocus" },
{ "key": "end", "command": "list.focusLast",
"when": "listFocus && !inputFocus" },
{ "key": "pagedown", "command": "list.focusPageDown",
"when": "listFocus && !inputFocus" },
{ "key": "pageup", "command": "list.focusPageUp",
"when": "listFocus && !inputFocus" },
{ "key": "up", "command": "list.focusUp",
"when": "listFocus && !inputFocus" },
{ "key": "ctrl+down", "command": "list.scrollDown",
"when": "listFocus && !inputFocus" },
{ "key": "ctrl+up", "command": "list.scrollUp",
"when": "listFocus && !inputFocus" },
{ "key": "enter", "command": "list.select",
"when": "listFocus && !inputFocus" },
{ "key": "ctrl+a", "command": "list.selectAll",
"when": "listFocus && listSupportsMultiselect && !inputFocus" },
{ "key": "space", "command": "list.toggleExpand",
"when": "listFocus && !inputFocus" },
{ "key": "ctrl+shift+enter", "command": "list.toggleSelection",
"when": "listFocus && !inputFocus" },
{ "key": "y", "command": "notebook.cell.changeToCode",
"when": "notebookEditorFocused && !inputFocus && activeEditor == 'workbench.editor.notebook' && notebookCellType == 'markup'" },
{ "key": "m", "command": "notebook.cell.changeToMarkdown",
"when": "notebookEditorFocused && !inputFocus && activeEditor == 'workbench.editor.notebook' && notebookCellType == 'code'" },
{ "key": "alt+delete", "command": "notebook.cell.clearOutputs",
"when": "notebookCellEditable && notebookCellHasOutputs && notebookEditable && notebookEditorFocused && !inputFocus" },
{ "key": "ctrl+k ctrl+c", "command": "notebook.cell.collapseCellInput",
"when": "notebookCellListFocused && !inputFocus && !notebookCellInputIsCollapsed" },
{ "key": "ctrl+k t", "command": "notebook.cell.collapseCellOutput",
"when": "notebookCellHasOutputs && notebookCellListFocused && !inputFocus && !notebookCellOutputIsCollapsed" },
{ "key": "shift+alt+down", "command": "notebook.cell.copyDown",
"when": "notebookEditorFocused && !inputFocus" },
{ "key": "shift+alt+up", "command": "notebook.cell.copyUp",
"when": "notebookEditorFocused && !inputFocus" },
{ "key": "delete", "command": "notebook.cell.delete",
"when": "notebookEditable && notebookEditorFocused && !inputFocus" },
{ "key": "enter", "command": "notebook.cell.edit",
"when": "notebookCellListFocused && notebookEditable && !inputFocus" },
{ "key": "ctrl+k ctrl+c", "command": "notebook.cell.expandCellInput",
"when": "notebookCellInputIsCollapsed && notebookCellListFocused" },
{ "key": "ctrl+k t", "command": "notebook.cell.expandCellOutput",
"when": "notebookCellListFocused && notebookCellOutputIsCollapsed" },
{ "key": "ctrl+down", "command": "notebook.cell.focusInOutput",
"when": "notebookCellHasOutputs && notebookEditorFocused" },
{ "key": "ctrl+up", "command": "notebook.cell.focusOutOutput",
"when": "notebookEditorFocused" },
{ "key": "ctrl+shift+enter", "command": "notebook.cell.insertCodeCellAbove",
"when": "notebookCellListFocused && !inputFocus" },
{ "key": "ctrl+enter", "command": "notebook.cell.insertCodeCellBelow",
"when": "notebookCellListFocused && !inputFocus" },
{ "key": "shift+alt+win+j", "command": "notebook.cell.joinAbove",
"when": "notebookEditorFocused" },
{ "key": "alt+win+j", "command": "notebook.cell.joinBelow",
"when": "notebookEditorFocused" },
{ "key": "alt+down", "command": "notebook.cell.moveDown",
"when": "notebookEditorFocused && !inputFocus" },
{ "key": "alt+up", "command": "notebook.cell.moveUp",
"when": "notebookEditorFocused && !inputFocus" },
{ "key": "ctrl+k ctrl+shift+\\", "command": "notebook.cell.split",
"when": "notebookCellEditable && notebookEditable && notebookEditorFocused" },
{ "key": "ctrl+l", "command": "notebook.centerActiveCell",
"when": "notebookEditorFocused" },
{ "key": "ctrl+f", "command": "notebook.find",
"when": "notebookEditorFocused || !editorFocus && activeEditor == 'workbench.editor.notebook'" },
{ "key": "ctrl+end", "command": "notebook.focusBottom",
"when": "notebookEditorFocused && !inputFocus" },
{ "key": "ctrl+down", "command": "notebook.focusNextEditor",
"when": "notebookEditorFocused && notebookOutputFocused" },
{ "key": "ctrl+home", "command": "notebook.focusTop",
"when": "notebookEditorFocused && !inputFocus" },
{ "key": "left", "command": "notebook.fold",
"when": "notebookEditorFocused && !inputFocus && activeEditor == 'workbench.editor.notebook'" },
{ "key": "ctrl+shift+[", "command": "notebook.fold",
"when": "notebookEditorFocused && !inputFocus && activeEditor == 'workbench.editor.notebook'" },
{ "key": "shift+alt+f", "command": "notebook.format",
"when": "notebookEditable && !editorTextFocus && activeEditor == 'workbench.editor.notebook'" },
{ "key": "escape", "command": "notebook.hideFind",
"when": "notebookEditorFocused && notebookFindWidgetFocused" },
{ "key": "right", "command": "notebook.unfold",
"when": "notebookEditorFocused && !inputFocus && activeEditor == 'workbench.editor.notebook'" },
{ "key": "ctrl+shift+]", "command": "notebook.unfold",
"when": "notebookEditorFocused && !inputFocus && activeEditor == 'workbench.editor.notebook'" },
{ "key": "delete", "command": "notification.clear",
"when": "notificationFocus" },
{ "key": "left", "command": "notification.collapse",
"when": "notificationFocus" },
{ "key": "right", "command": "notification.expand",
"when": "notificationFocus" },
{ "key": "enter", "command": "notification.toggle",
"when": "notificationFocus" },
{ "key": "space", "command": "notification.toggle",
"when": "notificationFocus" },
{ "key": "home", "command": "notifications.focusFirstToast",
"when": "notificationFocus && notificationToastsVisible" },
{ "key": "pageup", "command": "notifications.focusFirstToast",
"when": "notificationFocus && notificationToastsVisible" },
{ "key": "end", "command": "notifications.focusLastToast",
"when": "notificationFocus && notificationToastsVisible" },
{ "key": "pagedown", "command": "notifications.focusLastToast",
"when": "notificationFocus && notificationToastsVisible" },
{ "key": "down", "command": "notifications.focusNextToast",
"when": "notificationFocus && notificationToastsVisible" },
{ "key": "up", "command": "notifications.focusPreviousToast",
"when": "notificationFocus && notificationToastsVisible" },
{ "key": "ctrl+c", "command": "problems.action.copy",
"when": "problemFocus" },
{ "key": "ctrl+f", "command": "problems.action.focusFilter",
"when": "focusedView == 'workbench.panel.markers.view'" },
{ "key": "ctrl+down", "command": "problems.action.focusProblemsFromFilter",
"when": "problemsFilterFocus" },
{ "key": "enter", "command": "problems.action.open",
"when": "problemFocus" },
{ "key": "ctrl+enter", "command": "problems.action.openToSide",
"when": "problemFocus" },
{ "key": "ctrl+.", "command": "problems.action.showQuickFixes",
"when": "problemFocus" },
{ "key": "space", "command": "refactorPreview.toggleCheckedState",
"when": "listFocus && refactorPreview.enabled && !inputFocus" },
{ "key": "shift+alt+r", "command": "revealFileInOS",
"when": "!editorFocus" },
{ "key": "enter", "command": "revealReference",
"when": "listFocus && referenceSearchVisible && !inputFocus" },
{ "key": "ctrl+k s", "command": "saveAll" },
{ "key": "ctrl+enter", "command": "scm.acceptInput",
"when": "scmRepository" },
{ "key": "alt+down", "command": "scm.forceViewNextCommit",
"when": "scmRepository" },
{ "key": "alt+up", "command": "scm.forceViewPreviousCommit",
"when": "scmRepository" },
{ "key": "down", "command": "scm.viewNextCommit",
"when": "scmInputIsInLastPosition && scmRepository && !suggestWidgetVisible" },
{ "key": "up", "command": "scm.viewPreviousCommit",
"when": "scmInputIsInFirstPosition && scmRepository && !suggestWidgetVisible" },
{ "key": "escape", "command": "search.action.cancel",
"when": "listFocus && searchViewletVisible && !inputFocus && searchState != '0'" },
{ "key": "ctrl+c", "command": "search.action.copyMatch",
"when": "fileMatchOrMatchFocus" },
{ "key": "shift+alt+c", "command": "search.action.copyPath",
"when": "fileMatchOrFolderMatchWithResourceFocus" },
{ "key": "f4", "command": "search.action.focusNextSearchResult",
"when": "hasSearchResult || inSearchEditor" },
{ "key": "shift+f4", "command": "search.action.focusPreviousSearchResult",
"when": "hasSearchResult || inSearchEditor" },
{ "key": "ctrl+up", "command": "search.action.focusSearchFromResults",
"when": "firstMatchFocus && searchViewletVisible" },
{ "key": "alt+enter", "command": "search.action.openInEditor",
"when": "hasSearchResult && searchViewletFocus" },
{ "key": "enter", "command": "search.action.openResult",
"when": "fileMatchOrMatchFocus && searchViewletVisible" },
{ "key": "ctrl+enter", "command": "search.action.openResultToSide",
"when": "fileMatchOrMatchFocus && searchViewletVisible" },
{ "key": "delete", "command": "search.action.remove",
"when": "fileMatchOrMatchFocus && searchViewletVisible" },
{ "key": "ctrl+shift+1", "command": "search.action.replace",
"when": "matchFocus && replaceActive && searchViewletVisible" },
{ "key": "ctrl+alt+enter", "command": "search.action.replaceAll",
"when": "replaceActive && searchViewletVisible && !findWidgetVisible" },
{ "key": "ctrl+shift+enter", "command": "search.action.replaceAllInFile",
"when": "fileMatchFocus && replaceActive && searchViewletVisible" },
{ "key": "ctrl+shift+1", "command": "search.action.replaceAllInFile",
"when": "fileMatchFocus && replaceActive && searchViewletVisible" },
{ "key": "ctrl+shift+enter", "command": "search.action.replaceAllInFolder",
"when": "folderMatchFocus && replaceActive && searchViewletVisible" },
{ "key": "ctrl+shift+1", "command": "search.action.replaceAllInFolder",
"when": "folderMatchFocus && replaceActive && searchViewletVisible" },
{ "key": "ctrl+down", "command": "search.focus.nextInputBox",
"when": "inSearchEditor && inputBoxFocus || inputBoxFocus && searchViewletVisible" },
{ "key": "ctrl+up", "command": "search.focus.previousInputBox",
"when": "inSearchEditor && inputBoxFocus || inputBoxFocus && searchViewletVisible && !searchInputBoxFocus" },
{ "key": "ctrl+shift+l", "command": "selectAllSearchEditorMatches",
"when": "inSearchEditor" },
{ "key": "escape", "command": "settings.action.focusLevelUp",
"when": "inSettingsEditor && !inSettingsJSONEditor && !inSettingsSearch" },
{ "key": "enter", "command": "settings.action.focusSettingControl",
"when": "settingRowFocus" },
{ "key": "down", "command": "settings.action.focusSettingsFromSearch",
"when": "inSettingsSearch && !suggestWidgetVisible" },
{ "key": "enter", "command": "settings.action.focusSettingsList",
"when": "inSettingsEditor && settingsTocRowFocus" },
{ "key": "left", "command": "settings.action.focusTOC",
"when": "inSettingsEditor && settingRowFocus" },
{ "key": "shift+f9", "command": "settings.action.showContextMenu",
"when": "inSettingsEditor" },
{ "key": "ctrl+; ctrl+x", "command": "testing.cancelRun" },
{ "key": "ctrl+; ctrl+a", "command": "testing.debugAll" },
{ "key": "ctrl+; ctrl+c", "command": "testing.debugAtCursor",
"when": "editorTextFocus" },
{ "key": "ctrl+; ctrl+f", "command": "testing.debugCurrentFile",
"when": "editorTextFocus" },
{ "key": "ctrl+; ctrl+e", "command": "testing.debugFailTests" },
{ "key": "ctrl+; ctrl+l", "command": "testing.debugLastRun" },
{ "key": "ctrl+; m", "command": "testing.openOutputPeek" },
{ "key": "ctrl+; e", "command": "testing.reRunFailTests" },
{ "key": "ctrl+; l", "command": "testing.reRunLastRun" },
{ "key": "ctrl+; a", "command": "testing.runAll" },
{ "key": "ctrl+; c", "command": "testing.runAtCursor",
"when": "editorTextFocus" },
{ "key": "ctrl+; f", "command": "testing.runCurrentFile",
"when": "editorTextFocus" },
{ "key": "ctrl+; ctrl+o", "command": "testing.showMostRecentOutput",
"when": "testing.hasAnyResults" },
{ "key": "alt+c", "command": "toggleSearchCaseSensitive",
"when": "searchViewletFocus" },
{ "key": "alt+c", "command": "toggleSearchEditorCaseSensitive",
"when": "inSearchEditor && searchInputBoxFocus" },
{ "key": "alt+l", "command": "toggleSearchEditorContextLines",
"when": "inSearchEditor" },
{ "key": "alt+r", "command": "toggleSearchEditorRegex",
"when": "inSearchEditor && searchInputBoxFocus" },
{ "key": "alt+w", "command": "toggleSearchEditorWholeWord",
"when": "inSearchEditor && searchInputBoxFocus" },
{ "key": "alt+p", "command": "toggleSearchPreserveCase",
"when": "searchViewletFocus" },
{ "key": "alt+r", "command": "toggleSearchRegex",
"when": "searchViewletFocus" },
{ "key": "alt+w", "command": "toggleSearchWholeWord",
"when": "searchViewletFocus" },
{ "key": "ctrl+alt+win+n", "command": "welcome.showNewFileEntries" },
{ "key": "ctrl+w", "command": "workbench.action.closeActiveEditor" },
{ "key": "ctrl+f4", "command": "workbench.action.closeActiveEditor" },
{ "key": "ctrl+k ctrl+w", "command": "workbench.action.closeAllEditors" },
{ "key": "ctrl+k ctrl+shift+w", "command": "workbench.action.closeAllGroups" },
{ "key": "ctrl+k w", "command": "workbench.action.closeEditorsInGroup" },
{ "key": "ctrl+k f", "command": "workbench.action.closeFolder",
"when": "emptyWorkspaceSupport" },
{ "key": "ctrl+w", "command": "workbench.action.closeGroup",
"when": "activeEditorGroupEmpty && multipleEditorGroups" },
{ "key": "ctrl+f4", "command": "workbench.action.closeGroup",
"when": "activeEditorGroupEmpty && multipleEditorGroups" },
{ "key": "shift+escape", "command": "workbench.action.closeQuickOpen",
"when": "inQuickOpen" },
{ "key": "escape", "command": "workbench.action.closeQuickOpen",
"when": "inQuickOpen" },
{ "key": "ctrl+k u", "command": "workbench.action.closeUnmodifiedEditors" },
{ "key": "ctrl+shift+w", "command": "workbench.action.closeWindow" },
{ "key": "alt+f4", "command": "workbench.action.closeWindow" },
{ "key": "alt+f5", "command": "workbench.action.compareEditor.nextChange",
"when": "textCompareEditorVisible" },
{ "key": "shift+alt+f5", "command": "workbench.action.compareEditor.previousChange",
"when": "textCompareEditorVisible" },
{ "key": "shift+f5", "command": "workbench.action.debug.disconnect",
"when": "focusedSessionIsAttach && inDebugMode" },
{ "key": "ctrl+shift+f5", "command": "workbench.action.debug.restart",
"when": "inDebugMode" },
{ "key": "ctrl+f5", "command": "workbench.action.debug.run",
"when": "debuggersAvailable && debugState != 'initializing'" },
{ "key": "f5", "command": "workbench.action.debug.start",
"when": "debuggersAvailable && debugState == 'inactive'" },
{ "key": "shift+f11", "command": "workbench.action.debug.stepOut",
"when": "debugState == 'stopped'" },
{ "key": "f10", "command": "workbench.action.debug.stepOver",
"when": "debugState == 'stopped'" },
{ "key": "shift+f5", "command": "workbench.action.debug.stop",
"when": "inDebugMode && !focusedSessionIsAttach" },
{ "key": "ctrl+k m", "command": "workbench.action.editor.changeLanguageMode",
"when": "!notebookEditorFocused" },
{ "key": "ctrl+k p", "command": "workbench.action.files.copyPathOfActiveFile" },
{ "key": "ctrl+n", "command": "workbench.action.files.newUntitledFile" },
{ "key": "ctrl+o", "command": "workbench.action.files.openFile" },
{ "key": "ctrl+k ctrl+o", "command": "workbench.action.files.openFolder" },
{ "key": "ctrl+o", "command": "workbench.action.files.openLocalFile",
"when": "remoteFileDialogVisible" },
{ "key": "ctrl+k ctrl+o", "command": "workbench.action.files.openLocalFolder",
"when": "remoteFileDialogVisible" },
{ "key": "ctrl+k r", "command": "workbench.action.files.revealActiveFileInWindows" },
{ "key": "ctrl+s", "command": "workbench.action.files.save" },
{ "key": "ctrl+shift+s", "command": "workbench.action.files.saveAs" },
{ "key": "ctrl+shift+s", "command": "workbench.action.files.saveLocalFile",
"when": "remoteFileDialogVisible" },
{ "key": "ctrl+k ctrl+shift+s", "command": "workbench.action.files.saveWithoutFormatting" },
{ "key": "ctrl+k o", "command": "workbench.action.files.showOpenedFileInNewWindow",
"when": "emptyWorkspaceSupport" },
{ "key": "ctrl+shift+f", "command": "workbench.action.findInFiles" },
{ "key": "ctrl+k ctrl+up", "command": "workbench.action.focusAboveGroup" },
{ "key": "ctrl+k ctrl+down", "command": "workbench.action.focusBelowGroup" },
{ "key": "ctrl+8", "command": "workbench.action.focusEighthEditorGroup" },
{ "key": "ctrl+5", "command": "workbench.action.focusFifthEditorGroup" },
{ "key": "ctrl+1", "command": "workbench.action.focusFirstEditorGroup" },
{ "key": "ctrl+4", "command": "workbench.action.focusFourthEditorGroup" },
{ "key": "ctrl+k ctrl+left", "command": "workbench.action.focusLeftGroup" },
{ "key": "f6", "command": "workbench.action.focusNextPart" },
{ "key": "shift+f6", "command": "workbench.action.focusPreviousPart" },
{ "key": "ctrl+k ctrl+right", "command": "workbench.action.focusRightGroup" },
{ "key": "ctrl+2", "command": "workbench.action.focusSecondEditorGroup" },
{ "key": "ctrl+7", "command": "workbench.action.focusSeventhEditorGroup" },
{ "key": "ctrl+0", "command": "workbench.action.focusSideBar" },
{ "key": "ctrl+6", "command": "workbench.action.focusSixthEditorGroup" },
{ "key": "ctrl+3", "command": "workbench.action.focusThirdEditorGroup" },
{ "key": "ctrl+g", "command": "workbench.action.gotoLine" },
{ "key": "ctrl+shift+o", "command": "workbench.action.gotoSymbol" },
{ "key": "escape", "command": "workbench.action.hideInterfaceOverview",
"when": "interfaceOverviewVisible" },
{ "key": "down", "command": "workbench.action.interactivePlayground.arrowDown",
"when": "interactivePlaygroundFocus && !editorTextFocus" },
{ "key": "up", "command": "workbench.action.interactivePlayground.arrowUp",
"when": "interactivePlaygroundFocus && !editorTextFocus" },
{ "key": "pagedown", "command": "workbench.action.interactivePlayground.pageDown",
"when": "interactivePlaygroundFocus && !editorTextFocus" },
{ "key": "pageup", "command": "workbench.action.interactivePlayground.pageUp",
"when": "interactivePlaygroundFocus && !editorTextFocus" },
{ "key": "ctrl+k enter", "command": "workbench.action.keepEditor" },
{ "key": "ctrl+k ctrl+r", "command": "workbench.action.keybindingsReference" },
{ "key": "ctrl+9", "command": "workbench.action.lastEditorInGroup" },
{ "key": "alt+0", "command": "workbench.action.lastEditorInGroup" },
{ "key": "ctrl+k down", "command": "workbench.action.moveActiveEditorGroupDown" },
{ "key": "ctrl+k left", "command": "workbench.action.moveActiveEditorGroupLeft" },
{ "key": "ctrl+k right", "command": "workbench.action.moveActiveEditorGroupRight" },
{ "key": "ctrl+k up", "command": "workbench.action.moveActiveEditorGroupUp" },
{ "key": "ctrl+shift+pageup", "command": "workbench.action.moveEditorLeftInGroup" },
{ "key": "ctrl+shift+pagedown", "command": "workbench.action.moveEditorRightInGroup" },
{ "key": "shift+alt+1", "command": "workbench.action.moveEditorToFirstGroup" },
{ "key": "shift+alt+9", "command": "workbench.action.moveEditorToLastGroup" },
{ "key": "ctrl+alt+right", "command": "workbench.action.moveEditorToNextGroup" },
{ "key": "ctrl+alt+left", "command": "workbench.action.moveEditorToPreviousGroup" },
{ "key": "alt+left", "command": "workbench.action.navigateBack" },
{ "key": "alt+right", "command": "workbench.action.navigateForward" },
{ "key": "ctrl+k ctrl+q", "command": "workbench.action.navigateToLastEditLocation" },
{ "key": "ctrl+shift+n", "command": "workbench.action.newWindow" },
{ "key": "ctrl+pagedown", "command": "workbench.action.nextEditor" },
{ "key": "ctrl+k ctrl+pagedown", "command": "workbench.action.nextEditorInGroup" },
{ "key": "alt+1", "command": "workbench.action.openEditorAtIndex1" },
{ "key": "alt+2", "command": "workbench.action.openEditorAtIndex2" },
{ "key": "alt+3", "command": "workbench.action.openEditorAtIndex3" },
{ "key": "alt+4", "command": "workbench.action.openEditorAtIndex4" },
{ "key": "alt+5", "command": "workbench.action.openEditorAtIndex5" },
{ "key": "alt+6", "command": "workbench.action.openEditorAtIndex6" },
{ "key": "alt+7", "command": "workbench.action.openEditorAtIndex7" },
{ "key": "alt+8", "command": "workbench.action.openEditorAtIndex8" },
{ "key": "alt+9", "command": "workbench.action.openEditorAtIndex9" },
{ "key": "ctrl+k ctrl+s", "command": "workbench.action.openGlobalKeybindings" },
{ "key": "ctrl+r", "command": "workbench.action.openRecent" },
{ "key": "ctrl+,", "command": "workbench.action.openSettings" },
{ "key": "ctrl+shift+u", "command": "workbench.action.output.toggleOutput",
"when": "workbench.panel.output.active" },
{ "key": "ctrl+k shift+enter", "command": "workbench.action.pinEditor",
"when": "!activeEditorIsPinned" },
{ "key": "ctrl+pageup", "command": "workbench.action.previousEditor" },
{ "key": "ctrl+k ctrl+pageup", "command": "workbench.action.previousEditorInGroup" },
{ "key": "ctrl+e", "command": "workbench.action.quickOpen" },
{ "key": "ctrl+p", "command": "workbench.action.quickOpen" },
{ "key": "ctrl+shift+tab", "command": "workbench.action.quickOpenLeastRecentlyUsedEditorInGroup" },
{ "key": "ctrl+tab", "command": "workbench.action.quickOpenPreviousRecentlyUsedEditorInGroup" },
{ "key": "ctrl+q", "command": "workbench.action.quickOpenView" },
{ "key": "ctrl+shift+t", "command": "workbench.action.reopenClosedEditor" },
{ "key": "ctrl+shift+h", "command": "workbench.action.replaceInFiles" },
{ "key": "ctrl+shift+j", "command": "workbench.action.search.toggleQueryDetails",
"when": "inSearchEditor || searchViewletFocus" },
{ "key": "ctrl+k ctrl+t", "command": "workbench.action.selectTheme" },
{ "key": "ctrl+k ctrl+p", "command": "workbench.action.showAllEditors" },
{ "key": "ctrl+t", "command": "workbench.action.showAllSymbols" },
{ "key": "f1", "command": "workbench.action.showCommands" },
{ "key": "ctrl+shift+p", "command": "workbench.action.showCommands" },
{ "key": "ctrl+\\", "command": "workbench.action.splitEditor" },
{ "key": "ctrl+k ctrl+\\", "command": "workbench.action.splitEditorOrthogonal" },
{ "key": "ctrl+shift+b", "command": "workbench.action.tasks.build" },
{ "key": "escape", "command": "workbench.action.terminal.clearSelection",
"when": "terminalFocus && terminalProcessSupported && terminalTextSelected && !terminalFindVisible" },
{ "key": "ctrl+shift+c", "command": "workbench.action.terminal.copySelection",
"when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected" },
{ "key": "ctrl+c", "command": "workbench.action.terminal.copySelection",
"when": "terminalFocus && terminalProcessSupported && terminalTextSelected && terminalTextSelected" },
{ "key": "f3", "command": "workbench.action.terminal.findNext",
"when": "terminalFindFocused && terminalProcessSupported || terminalFocus && terminalProcessSupported" },
{ "key": "shift+enter", "command": "workbench.action.terminal.findNext",
"when": "terminalFindFocused && terminalProcessSupported" },
{ "key": "shift+f3", "command": "workbench.action.terminal.findPrevious",
"when": "terminalFindFocused && terminalProcessSupported || terminalFocus && terminalProcessSupported" },
{ "key": "enter", "command": "workbench.action.terminal.findPrevious",
"when": "terminalFindFocused && terminalProcessSupported" },
{ "key": "ctrl+f", "command": "workbench.action.terminal.focusFind",
"when": "terminalFindFocused && terminalProcessSupported || terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+pagedown", "command": "workbench.action.terminal.focusNext",
"when": "terminalFocus && terminalProcessSupported && !terminalEditorFocus" },
{ "key": "alt+down", "command": "workbench.action.terminal.focusNextPane",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "alt+right", "command": "workbench.action.terminal.focusNextPane",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+pageup", "command": "workbench.action.terminal.focusPrevious",
"when": "terminalFocus && terminalProcessSupported && !terminalEditorFocus" },
{ "key": "alt+up", "command": "workbench.action.terminal.focusPreviousPane",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "alt+left", "command": "workbench.action.terminal.focusPreviousPane",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+shift+\\", "command": "workbench.action.terminal.focusTabs",
"when": "terminalFocus && terminalProcessSupported || terminalProcessSupported && terminalTabsFocus" },
{ "key": "shift+escape", "command": "workbench.action.terminal.hideFind",
"when": "terminalFindVisible && terminalFocus && terminalProcessSupported" },
{ "key": "escape", "command": "workbench.action.terminal.hideFind",
"when": "terminalFindVisible && terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+w", "command": "workbench.action.terminal.killEditor",
"when": "terminalFocus && terminalProcessSupported && resourceScheme == 'vscode-terminal'" },
{ "key": "ctrl+f4", "command": "workbench.action.terminal.killEditor",
"when": "terminalFocus && terminalProcessSupported && resourceScheme == 'vscode-terminal'" },
{ "key": "delete", "command": "workbench.action.terminal.killInstance",
"when": "terminalIsOpen && terminalTabsFocus || terminalProcessSupported && terminalTabsFocus" },
{ "key": "escape", "command": "workbench.action.terminal.navigationModeExit",
"when": "accessibilityModeEnabled && terminalA11yTreeFocus && terminalProcessSupported" },
{ "key": "ctrl+down", "command": "workbench.action.terminal.navigationModeFocusNext",
"when": "accessibilityModeEnabled && terminalA11yTreeFocus && terminalProcessSupported || accessibilityModeEnabled && terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+up", "command": "workbench.action.terminal.navigationModeFocusPrevious",
"when": "accessibilityModeEnabled && terminalA11yTreeFocus && terminalProcessSupported || accessibilityModeEnabled && terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+shift+`", "command": "workbench.action.terminal.new",
"when": "terminalProcessSupported" },
{ "key": "ctrl+shift+c", "command": "workbench.action.terminal.openNativeConsole",
"when": "!terminalFocus" },
{ "key": "ctrl+shift+v", "command": "workbench.action.terminal.paste",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+v", "command": "workbench.action.terminal.paste",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "f2", "command": "workbench.action.terminal.renameInstance",
"when": "terminalProcessSupported && terminalTabsFocus && terminalTabsSingularSelection" },
{ "key": "ctrl+alt+pagedown", "command": "workbench.action.terminal.scrollDown",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "shift+pagedown", "command": "workbench.action.terminal.scrollDownPage",
"when": "terminalFocus && terminalProcessSupported && !terminalAltBufferActive" },
{ "key": "ctrl+end", "command": "workbench.action.terminal.scrollToBottom",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+home", "command": "workbench.action.terminal.scrollToTop",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+alt+pageup", "command": "workbench.action.terminal.scrollUp",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "shift+pageup", "command": "workbench.action.terminal.scrollUpPage",
"when": "terminalFocus && terminalProcessSupported && !terminalAltBufferActive" },
{ "key": "ctrl+v", "command": "workbench.action.terminal.sendSequence",
"when": "terminalFocus && !accessibilityModeEnabled && terminalShellType == 'pwsh'",
"args": {"text":"\u0016"} },
{ "key": "ctrl+backspace", "command": "workbench.action.terminal.sendSequence",
"when": "terminalFocus",
"args": {"text":"\u0017"} },
{ "key": "ctrl+backspace", "command": "workbench.action.terminal.sendSequence",
"when": "terminalFocus && terminalShellType == 'cmd'",
"args": {"text":"\b"} },
{ "key": "ctrl+delete", "command": "workbench.action.terminal.sendSequence",
"when": "terminalFocus",
"args": {"text":"\u001bd"} },
{ "key": "ctrl+shift+5", "command": "workbench.action.terminal.split",
"when": "terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+shift+5", "command": "workbench.action.terminal.splitInstance",
"when": "terminalProcessSupported && terminalTabsFocus" },
{ "key": "alt+c", "command": "workbench.action.terminal.toggleFindCaseSensitive",
"when": "terminalFindFocused && terminalProcessSupported || terminalFocus && terminalProcessSupported" },
{ "key": "alt+r", "command": "workbench.action.terminal.toggleFindRegex",
"when": "terminalFindFocused && terminalProcessSupported || terminalFocus && terminalProcessSupported" },
{ "key": "alt+w", "command": "workbench.action.terminal.toggleFindWholeWord",
"when": "terminalFindFocused && terminalProcessSupported || terminalFocus && terminalProcessSupported" },
{ "key": "ctrl+`", "command": "workbench.action.terminal.toggleTerminal",
"when": "terminal.active" },
{ "key": "shift+alt+0", "command": "workbench.action.toggleEditorGroupLayout" },
{ "key": "f11", "command": "workbench.action.toggleFullScreen",
"when": "!isIOS" },
{ "key": "ctrl+j", "command": "workbench.action.togglePanel" },
{ "key": "ctrl+b", "command": "workbench.action.toggleSidebarVisibility" },
{ "key": "ctrl+k z", "command": "workbench.action.toggleZenMode" },
{ "key": "ctrl+k shift+enter", "command": "workbench.action.unpinEditor",
"when": "activeEditorIsPinned" },
{ "key": "ctrl+numpad_add", "command": "workbench.action.zoomIn" },
{ "key": "ctrl+shift+=", "command": "workbench.action.zoomIn" },
{ "key": "ctrl+=", "command": "workbench.action.zoomIn" },
{ "key": "ctrl+numpad_subtract", "command": "workbench.action.zoomOut" },
{ "key": "ctrl+shift+-", "command": "workbench.action.zoomOut" },
{ "key": "ctrl+-", "command": "workbench.action.zoomOut" },
{ "key": "ctrl+numpad0", "command": "workbench.action.zoomReset" },
{ "key": "ctrl+shift+m", "command": "workbench.actions.view.problems",
"when": "workbench.panel.markers.view.active" },
{ "key": "escape", "command": "workbench.banner.focusBanner",
"when": "bannerFocused" },
{ "key": "down", "command": "workbench.banner.focusNextAction",
"when": "bannerFocused" },
{ "key": "right", "command": "workbench.banner.focusNextAction",
"when": "bannerFocused" },
{ "key": "up", "command": "workbench.banner.focusPreviousAction",
"when": "bannerFocused" },
{ "key": "left", "command": "workbench.banner.focusPreviousAction",
"when": "bannerFocused" },
{ "key": "ctrl+shift+y", "command": "workbench.debug.action.toggleRepl",
"when": "workbench.panel.repl.view.active" },
{ "key": "ctrl+k ctrl+m", "command": "workbench.extensions.action.showRecommendedKeymapExtensions" },
{ "key": "ctrl+k c", "command": "workbench.files.action.compareWithClipboard" },
{ "key": "ctrl+k d", "command": "workbench.files.action.compareWithSaved" },
{ "key": "ctrl+k e", "command": "workbench.files.action.focusOpenEditorsView",
"when": "workbench.explorer.openEditorsView.active" },
{ "key": "escape", "command": "workbench.statusBar.clearFocus",
"when": "statusBarFocused" },
{ "key": "home", "command": "workbench.statusBar.focusFirst",
"when": "statusBarFocused" },
{ "key": "end", "command": "workbench.statusBar.focusLast",
"when": "statusBarFocused" },
{ "key": "down", "command": "workbench.statusBar.focusNext",
"when": "statusBarFocused" },
{ "key": "right", "command": "workbench.statusBar.focusNext",
"when": "statusBarFocused" },
{ "key": "up", "command": "workbench.statusBar.focusPrevious",
"when": "statusBarFocused" },
{ "key": "left", "command": "workbench.statusBar.focusPrevious",
"when": "statusBarFocused" },
{ "key": "ctrl+shift+d", "command": "workbench.view.debug",
"when": "viewContainer.workbench.view.debug.enabled" },
{ "key": "ctrl+shift+e", "command": "workbench.view.explorer",
"when": "viewContainer.workbench.view.explorer.enabled" },
{ "key": "ctrl+shift+x", "command": "workbench.view.extensions",
"when": "viewContainer.workbench.view.extensions.enabled" },
{ "key": "ctrl+shift+g", "command": "workbench.view.scm",
"when": "workbench.scm.active" },
{ "key": "ctrl+shift+f", "command": "workbench.view.search",
"when": "workbench.view.search.active && neverMatch =~ /doesNotMatch/" },
{ "key": "ctrl+right", "command": "breadcrumbs.focusNextWithPicker",
"when": "breadcrumbsActive && breadcrumbsVisible && listFocus && !inputFocus" },
{ "key": "ctrl+left", "command": "breadcrumbs.focusPreviousWithPicker",
"when": "breadcrumbsActive && breadcrumbsVisible && listFocus && !inputFocus" },
{ "key": "escape", "command": "breadcrumbs.selectEditor",
"when": "breadcrumbsActive && breadcrumbsVisible" },
{ "key": "ctrl+k down", "command": "views.moveViewDown",
"when": "focusedView != ''" },
{ "key": "ctrl+k left", "command": "views.moveViewLeft",
"when": "focusedView != ''" },
{ "key": "ctrl+k right", "command": "views.moveViewRight",
"when": "focusedView != ''" },
{ "key": "ctrl+k up", "command": "views.moveViewUp",
"when": "focusedView != ''" },
{ "key": "f6", "command": "workbench.action.debug.pause",
"when": "debugState == 'running'" },
{ "key": "f2", "command": "debug.renameWatchExpression",
"when": "watchExpressionsFocused" },
{ "key": "f2", "command": "debug.setVariable",
"when": "variablesFocused" },
{ "key": "space", "command": "debug.toggleBreakpoint",
"when": "breakpointsFocused && !inputFocus" },
{ "key": "shift+delete", "command": "deleteFile",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceReadonly && !inputFocus" },
{ "key": "delete", "command": "deleteFile",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceMoveableToTrash && !explorerResourceReadonly && !inputFocus" },
{ "key": "escape", "command": "editor.closeCallHierarchy",
"when": "callHierarchyVisible && !config.editor.stablePeek" },
{ "key": "enter", "command": "explorer.openAndPassFocus",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsFolder && !inputFocus" },
{ "key": "escape", "command": "filesExplorer.cancelCut",
"when": "explorerResourceCut && explorerViewletVisible && filesExplorerFocus && !inputFocus" },
{ "key": "ctrl+c", "command": "filesExplorer.copy",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !inputFocus" },
{ "key": "ctrl+x", "command": "filesExplorer.cut",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" },
{ "key": "space", "command": "filesExplorer.openFilePreserveFocus",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsFolder && !inputFocus" },
{ "key": "ctrl+v", "command": "filesExplorer.paste",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceReadonly && !inputFocus" },
{ "key": "home", "command": "firstCompressedFolder",
"when": "explorerViewletCompressedFocus && explorerViewletVisible && filesExplorerFocus && !explorerViewletCompressedFirstFocus && !inputFocus" },
{ "key": "end", "command": "lastCompressedFolder",
"when": "explorerViewletCompressedFocus && explorerViewletVisible && filesExplorerFocus && !explorerViewletCompressedLastFocus && !inputFocus" },
{ "key": "delete", "command": "moveFileToTrash",
"when": "explorerResourceMoveableToTrash && explorerViewletVisible && filesExplorerFocus && !explorerResourceReadonly && !inputFocus" },
{ "key": "right", "command": "nextCompressedFolder",
"when": "explorerViewletCompressedFocus && explorerViewletVisible && filesExplorerFocus && !explorerViewletCompressedLastFocus && !inputFocus" },
{ "key": "left", "command": "previousCompressedFolder",
"when": "explorerViewletCompressedFocus && explorerViewletVisible && filesExplorerFocus && !explorerViewletCompressedFirstFocus && !inputFocus" },
{ "key": "delete", "command": "remote.tunnel.closeInline",
"when": "tunnelCloseable && tunnelViewFocus" },
{ "key": "ctrl+c", "command": "remote.tunnel.copyAddressInline",
"when": "tunnelViewFocus && tunnelType == 'Detected' && tunnelViewMultiSelection == 'undefined' || tunnelViewFocus && tunnelType == 'Forwarded' && tunnelViewMultiSelection == 'undefined'" },
{ "key": "f2", "command": "remote.tunnel.label",
"when": "tunnelViewFocus && tunnelType == 'Forwarded' && tunnelViewMultiSelection == 'undefined'" },
{ "key": "f2", "command": "renameFile",
"when": "explorerViewletVisible && filesExplorerFocus && !explorerResourceIsRoot && !explorerResourceReadonly && !inputFocus" },
{ "key": "f5", "command": "workbench.action.debug.continue",
"when": "debugState == 'stopped'" },
{ "key": "f11", "command": "workbench.action.debug.stepInto",
"when": "debugState != 'inactive'" },
{ "key": "shift+escape", "command": "closeReferenceSearch",
"when": "referenceSearchVisible && !config.editor.stablePeek" },
{ "key": "escape", "command": "closeReferenceSearch",
"when": "referenceSearchVisible && !config.editor.stablePeek" },
{ "key": "escape", "command": "notifications.hideList",
"when": "notificationCenterVisible" },
{ "key": "alt+left", "command": "workbench.action.quickInputBack",
"when": "inQuickOpen" },
{ "key": "ctrl+tab", "command": "workbench.action.quickOpenNavigateNextInEditorPicker",
"when": "inEditorsPicker && inQuickOpen" },
{ "key": "ctrl+e", "command": "workbench.action.quickOpenNavigateNextInFilePicker",
"when": "inFilesPicker && inQuickOpen" },
{ "key": "ctrl+p", "command": "workbench.action.quickOpenNavigateNextInFilePicker",
"when": "inFilesPicker && inQuickOpen" },
{ "key": "ctrl+r", "command": "workbench.action.quickOpenNavigateNextInRecentFilesPicker",
"when": "inQuickOpen && inRecentFilesPicker" },
{ "key": "ctrl+q", "command": "workbench.action.quickOpenNavigateNextInViewPicker",
"when": "inQuickOpen && inViewsPicker" },
{ "key": "ctrl+shift+tab", "command": "workbench.action.quickOpenNavigatePreviousInEditorPicker",
"when": "inEditorsPicker && inQuickOpen" },
{ "key": "ctrl+shift+e", "command": "workbench.action.quickOpenNavigatePreviousInFilePicker",
"when": "inFilesPicker && inQuickOpen" },
{ "key": "ctrl+shift+p", "command": "workbench.action.quickOpenNavigatePreviousInFilePicker",
"when": "inFilesPicker && inQuickOpen" },
{ "key": "ctrl+shift+r", "command": "workbench.action.quickOpenNavigatePreviousInRecentFilesPicker",
"when": "inQuickOpen && inRecentFilesPicker" },
{ "key": "ctrl+shift+q", "command": "workbench.action.quickOpenNavigatePreviousInViewPicker",
"when": "inQuickOpen && inViewsPicker" },
{ "key": "ctrl+r", "command": "workbench.action.reloadWindow",
"when": "isDevelopment" },
{ "key": "ctrl+shift+f", "command": "workbench.action.terminal.searchWorkspace",
"when": "terminalFocus && terminalProcessSupported && terminalProcessSupported && terminalTextSelected" },
{ "key": "ctrl+shift+i", "command": "workbench.action.toggleDevTools",
"when": "isDevelopment" },
{ "key": "escape", "command": "notifications.hideToasts",
"when": "notificationFocus && notificationToastsVisible" },
{ "key": "alt+o", "command": "clangd.switchheadersource",
"when": "editorTextFocus" },
{ "key": "ctrl+shift+v", "command": "markdown.showPreview",
"when": "!notebookEditorFocused && editorLangId == 'markdown'" },
{ "key": "shift+alt+f12", "command": "references-view.findReferences",
"when": "editorHasReferenceProvider" },
{ "key": "shift+alt+t", "command": "clangd.typeHierarchy",
"when": "editorTextFocus" },
{ "key": "ctrl+k v", "command": "markdown.showPreviewToSide",
"when": "!notebookEditorFocused && editorLangId == 'markdown'" },
{ "key": "f4", "command": "references-view.next",
"when": "reference-list.hasResult && references-view.canNavigate" },
{ "key": "shift+f4", "command": "references-view.prev",
"when": "reference-list.hasResult && references-view.canNavigate" },
{ "key": "shift+alt+h", "command": "references-view.showCallHierarchy",
"when": "editorHasCallHierarchyProvider" }
]
''')
def main():
keys = set()
for binding in DEFAULT_KEYBINDINGS:
key = binding['key']
if key in [
'ctrl+a',
'ctrl+x',
'ctrl+c',
'ctrl+v',
'ctrl+z',
'ctrl+y',
'ctrl+insert',
'shift+insert',
'shift+delete',
'ctrl+-',
'ctrl+=',
'ctrl+numpad0',
'ctrl+numpad_add',
'ctrl+numpad_subtract',
]:
continue
when = binding.get('when')
if when is None:
pass # add keys without conditions
elif when in [
'workbench.panel.output.active',
'terminal.active',
'workbench.panel.markers.view.active',
'workbench.panel.repl.view.active',
'workbench.explorer.openEditorsView.active',
'workbench.scm.active',
'terminalProcessSupported',
'viewContainer.workbench.view.debug.enabled',
'viewContainer.workbench.view.explorer.enabled',
'viewContainer.workbench.view.extensions.enabled',
]:
pass # add keys with these conditions
elif when.startswith('!') and ' ' not in when:
pass # add simple negation conditions
else:
continue
assert key not in keys
keys.add(key)
new_keybindings = []
for key in sorted(keys):
new_keybindings.append({
'key': key,
'command': '',
'when': '!config.windhawk.editedModId'
})
print(json.dumps(new_keybindings, indent=4))
if __name__ == '__main__':
main()
================================================
FILE: src/vscode-windhawk/package.json
================================================
{
"name": "windhawk",
"displayName": "Windhawk",
"description": "Part of the Windhawk Windows customization tool",
"version": "1.7.3",
"icon": "assets/main-icon.png",
"publisher": "m417z",
"engines": {
"vscode": "^1.74.2"
},
"categories": [
"Other"
],
"activationEvents": [
"*"
],
"repository": {
"type": "git",
"url": "https://github.com/ramensoftware/windhawk-vscode-extension"
},
"main": "./dist/extension.js",
"contributes": {
"viewsContainers": {
"activitybar": [
{
"id": "windhawk",
"title": "Windhawk",
"icon": "assets/tab-icon-white.svg"
}
]
},
"views": {
"windhawk": [
{
"type": "webview",
"id": "windhawk.sidebar",
"name": "Windhawk",
"icon": "assets/tab-icon-white.svg"
}
]
},
"commands": [
{
"command": "windhawk.start",
"title": "%commands.start.title%",
"category": "%commands.category%"
}
],
"keybindings": [
{
"key": "ctrl+b",
"command": "windhawk.compileMod",
"when": "config.windhawk.editedModId"
},
{
"key": "ctrl+shift+alt+p",
"command": "workbench.action.showCommands",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+0",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+1",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+2",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+3",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+4",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+5",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+6",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+7",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+8",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+9",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+f1",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+f4",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+left",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+right",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "alt+z",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+,",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+0",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+1",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+2",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+3",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+4",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+5",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+6",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+7",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+8",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+9",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; a",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; ctrl+a",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; ctrl+e",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; ctrl+l",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; ctrl+x",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; e",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; l",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+; m",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+\\",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+`",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+alt+left",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+alt+right",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+alt+win+n",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+b",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+e",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+f4",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+f5",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+g",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+j",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k c",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+\\",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+down",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+left",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+m",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+o",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+p",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+pagedown",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+pageup",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+q",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+r",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+right",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+s",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+shift+c",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+shift+s",
"command": "",
"when": "!config.windhawk.editedModId"
},
{
"key": "ctrl+k ctrl+shift+w",
"command": "",
"when": "!config.windhawk.editedModI
gitextract_zq1lf0ms/
├── .gitattributes
├── .github/
│ ├── FUNDING.yml
│ └── ISSUE_TEMPLATE/
│ ├── bug_report.md
│ └── feature_request.md
├── LICENSE
├── README.md
└── src/
├── vscode-windhawk/
│ ├── .eslintrc.js
│ ├── .gitignore
│ ├── .prettierrc
│ ├── .vscode/
│ │ ├── extensions.json
│ │ ├── launch.json
│ │ ├── settings.json
│ │ └── tasks.json
│ ├── .vscodeignore
│ ├── LICENSE
│ ├── README.md
│ ├── files/
│ │ └── mod_template.wh.cpp
│ ├── helper_scripts/
│ │ └── disable_default_keybindings.py
│ ├── package.json
│ ├── package.nls.json
│ ├── src/
│ │ ├── config.ts
│ │ ├── extension.ts
│ │ ├── ini.ts
│ │ ├── logOutputChannel.ts
│ │ ├── storagePaths.ts
│ │ ├── utils/
│ │ │ ├── appSettingsUtils.ts
│ │ │ ├── compilerUtils.ts
│ │ │ ├── editorWorkspaceUtils.ts
│ │ │ ├── modConfigUtils.ts
│ │ │ ├── modFilesUtils.ts
│ │ │ ├── modSourceUtils.ts
│ │ │ ├── trayProgramUtils.ts
│ │ │ ├── updateUtils.ts
│ │ │ └── userProfileUtils.ts
│ │ ├── webviewIPC.ts
│ │ └── webviewIPCMessages.ts
│ ├── syntaxes/
│ │ └── cpp.injection.json
│ ├── tsconfig.json
│ └── webpack.config.js
├── vscode-windhawk-ui/
│ ├── .editorconfig
│ ├── .eslintrc.json
│ ├── .gitignore
│ ├── .prettierignore
│ ├── .prettierrc
│ ├── .vscode/
│ │ └── extensions.json
│ ├── apps/
│ │ ├── .gitkeep
│ │ ├── vscode-windhawk-ui/
│ │ │ ├── .babelrc
│ │ │ ├── .browserslistrc
│ │ │ ├── .eslintrc.json
│ │ │ ├── jest.config.ts
│ │ │ ├── project.json
│ │ │ ├── src/
│ │ │ │ ├── app/
│ │ │ │ │ ├── app.css
│ │ │ │ │ ├── app.less
│ │ │ │ │ ├── app.tsx
│ │ │ │ │ ├── appUISettings.ts
│ │ │ │ │ ├── components/
│ │ │ │ │ │ ├── EllipsisText.tsx
│ │ │ │ │ │ ├── InputWithContextMenu.tsx
│ │ │ │ │ │ └── ReactMarkdownCustom.tsx
│ │ │ │ │ ├── i18n.ts
│ │ │ │ │ ├── panel/
│ │ │ │ │ │ ├── About.tsx
│ │ │ │ │ │ ├── AppHeader.tsx
│ │ │ │ │ │ ├── ChangelogModal.tsx
│ │ │ │ │ │ ├── CreateNewModButton.tsx
│ │ │ │ │ │ ├── DevModeAction.tsx
│ │ │ │ │ │ ├── ModCard.tsx
│ │ │ │ │ │ ├── ModDetails.tsx
│ │ │ │ │ │ ├── ModDetailsAdvanced.tsx
│ │ │ │ │ │ ├── ModDetailsChangelog.tsx
│ │ │ │ │ │ ├── ModDetailsHeader.tsx
│ │ │ │ │ │ ├── ModDetailsReadme.tsx
│ │ │ │ │ │ ├── ModDetailsSettings.spec.ts
│ │ │ │ │ │ ├── ModDetailsSettings.tsx
│ │ │ │ │ │ ├── ModDetailsSource.tsx
│ │ │ │ │ │ ├── ModDetailsSourceDiff.tsx
│ │ │ │ │ │ ├── ModMetadataLine.tsx
│ │ │ │ │ │ ├── ModPreview.tsx
│ │ │ │ │ │ ├── ModsBrowserLocal.tsx
│ │ │ │ │ │ ├── ModsBrowserOnline.tsx
│ │ │ │ │ │ ├── Panel.tsx
│ │ │ │ │ │ ├── SafeModeIndicator.tsx
│ │ │ │ │ │ ├── Settings.tsx
│ │ │ │ │ │ ├── UpdateModal.tsx
│ │ │ │ │ │ ├── VersionSelectorModal.tsx
│ │ │ │ │ │ └── mockData.ts
│ │ │ │ │ ├── sidebar/
│ │ │ │ │ │ ├── EditorModeControls.tsx
│ │ │ │ │ │ ├── Sidebar.tsx
│ │ │ │ │ │ └── mockData.ts
│ │ │ │ │ ├── swrHelpers.ts
│ │ │ │ │ ├── utils.spec.ts
│ │ │ │ │ ├── utils.ts
│ │ │ │ │ ├── vsCodeApi.ts
│ │ │ │ │ ├── webviewIPC.ts
│ │ │ │ │ └── webviewIPCMessages.ts
│ │ │ │ ├── environments/
│ │ │ │ │ ├── environment.prod.ts
│ │ │ │ │ └── environment.ts
│ │ │ │ ├── index.html
│ │ │ │ ├── locales/
│ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ ├── ar/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── cs/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── da/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── de/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── el/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── en/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── es/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── fr/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── hi/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── hr/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── hu/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── id/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── it/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ja/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ko/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── nl/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── pl/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── pt-BR/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ro/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ru/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── sv/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── ta/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── th/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── tr/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── uk/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── vi/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ ├── zh-CN/
│ │ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ │ └── translation.json
│ │ │ │ │ └── zh-TW/
│ │ │ │ │ ├── DO_NOT_EDIT.txt
│ │ │ │ │ └── translation.json
│ │ │ │ ├── main.css
│ │ │ │ ├── main.tsx
│ │ │ │ └── polyfills.ts
│ │ │ ├── tsconfig.app.json
│ │ │ ├── tsconfig.json
│ │ │ ├── tsconfig.spec.json
│ │ │ └── webpack.config.js
│ │ └── vscode-windhawk-ui-e2e/
│ │ ├── .eslintrc.json
│ │ ├── cypress.config.ts
│ │ ├── project.json
│ │ ├── src/
│ │ │ ├── e2e/
│ │ │ │ └── app.cy.ts
│ │ │ ├── fixtures/
│ │ │ │ └── example.json
│ │ │ └── support/
│ │ │ ├── app.po.ts
│ │ │ ├── commands.ts
│ │ │ └── e2e.ts
│ │ └── tsconfig.json
│ ├── babel.config.json
│ ├── jest.config.ts
│ ├── jest.preset.js
│ ├── libs/
│ │ └── .gitkeep
│ ├── nx.json
│ ├── package.json
│ ├── tools/
│ │ ├── generators/
│ │ │ └── .gitkeep
│ │ └── tsconfig.tools.json
│ └── tsconfig.base.json
└── windhawk/
├── .clang-format
├── .gitattributes
├── .gitignore
├── _typos.toml
├── app/
│ ├── app.cpp
│ ├── app.vcxproj
│ ├── app.vcxproj.filters
│ ├── engine_control.cpp
│ ├── engine_control.h
│ ├── event_viewer_crash_monitor.cpp
│ ├── event_viewer_crash_monitor.h
│ ├── functions.cpp
│ ├── functions.h
│ ├── libraries/
│ │ ├── nlohmann/
│ │ │ └── json.hpp
│ │ └── winhttpwrappers/
│ │ └── WinHTTPWrappers.h
│ ├── logger.cpp
│ ├── logger.h
│ ├── main_window.cpp
│ ├── main_window.h
│ ├── packages.config
│ ├── resource.h
│ ├── rsrc/
│ │ └── compatibility.manifest
│ ├── rsrc.rc
│ ├── rsrc.rc2
│ ├── service.cpp
│ ├── service.h
│ ├── service_common.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── storage_manager.cpp
│ ├── storage_manager.h
│ ├── task_manager_dlg.cpp
│ ├── task_manager_dlg.h
│ ├── toolkit_dlg.cpp
│ ├── toolkit_dlg.h
│ ├── tray_icon.cpp
│ ├── tray_icon.h
│ ├── ui_control.cpp
│ ├── ui_control.h
│ ├── update_checker.cpp
│ ├── update_checker.h
│ ├── userprofile.cpp
│ ├── userprofile.h
│ └── winhttpsimple.h
├── build.bat
├── engine/
│ ├── _exports.def
│ ├── all_processes_injector.cpp
│ ├── all_processes_injector.h
│ ├── customization_session.cpp
│ ├── customization_session.h
│ ├── dll_inject.cpp
│ ├── dll_inject.h
│ ├── engine.vcxproj
│ ├── engine.vcxproj.filters
│ ├── functions.cpp
│ ├── functions.h
│ ├── inject_shellcode/
│ │ ├── .clang-format
│ │ ├── InjectShellcode.filters
│ │ ├── InjectShellcode.sln
│ │ ├── InjectShellcode.vcxproj
│ │ └── main.cpp
│ ├── libraries/
│ │ ├── MinHook/
│ │ │ ├── include/
│ │ │ │ └── MinHook.h
│ │ │ └── src/
│ │ │ ├── buffer.c
│ │ │ ├── buffer.h
│ │ │ ├── hde/
│ │ │ │ ├── hde32.c
│ │ │ │ ├── hde32.h
│ │ │ │ ├── hde64.c
│ │ │ │ ├── hde64.h
│ │ │ │ ├── pstdint.h
│ │ │ │ ├── table32.h
│ │ │ │ └── table64.h
│ │ │ ├── hook.c
│ │ │ ├── trampoline.c
│ │ │ └── trampoline.h
│ │ ├── MinHook-Detours/
│ │ │ ├── MinHook.c
│ │ │ ├── MinHook.h
│ │ │ └── SlimDetours/
│ │ │ ├── .editorconfig
│ │ │ ├── Disassembler.c
│ │ │ ├── InlineHook.c
│ │ │ ├── Instruction.c
│ │ │ ├── LICENSE
│ │ │ ├── Memory.c
│ │ │ ├── SlimDetours.NDK.inl
│ │ │ ├── SlimDetours.h
│ │ │ ├── SlimDetours.inl
│ │ │ ├── Thread.c
│ │ │ ├── Trampoline.c
│ │ │ └── Transaction.c
│ │ ├── ThreadLocal.h
│ │ ├── Zydis/
│ │ │ ├── Zydis.c
│ │ │ └── Zydis.h
│ │ ├── binaryninja-arm64-disassembler/
│ │ │ ├── arm64dis.h
│ │ │ ├── decode.c
│ │ │ ├── decode.h
│ │ │ ├── decode0.c
│ │ │ ├── decode1.c
│ │ │ ├── decode1.h
│ │ │ ├── decode2.c
│ │ │ ├── decode2.h
│ │ │ ├── decode_fields32.c
│ │ │ ├── decode_fields32.h
│ │ │ ├── decode_scratchpad.c
│ │ │ ├── decompose_and_disassemble.c
│ │ │ ├── decompose_and_disassemble.h
│ │ │ ├── encodings_dec.c
│ │ │ ├── encodings_dec.h
│ │ │ ├── encodings_fmt.c
│ │ │ ├── encodings_fmt.h
│ │ │ ├── feature_flags.h
│ │ │ ├── format.c
│ │ │ ├── format.h
│ │ │ ├── gofer.c
│ │ │ ├── operations.c
│ │ │ ├── operations.h
│ │ │ ├── pcode.c
│ │ │ ├── pcode.h
│ │ │ ├── regs.c
│ │ │ ├── regs.h
│ │ │ ├── sysregs.c
│ │ │ ├── sysregs.h
│ │ │ ├── sysregs_fmt_gen.c
│ │ │ ├── sysregs_fmt_gen.h
│ │ │ ├── sysregs_gen.c
│ │ │ └── sysregs_gen.h
│ │ ├── dia/
│ │ │ ├── cvconst.h
│ │ │ ├── dia2.h
│ │ │ ├── diacreate.h
│ │ │ └── lib/
│ │ │ ├── amd64/
│ │ │ │ └── diaguids.lib
│ │ │ ├── arm/
│ │ │ │ └── diaguids.lib
│ │ │ ├── arm64/
│ │ │ │ └── diaguids.lib
│ │ │ └── diaguids.lib
│ │ ├── phnt/
│ │ │ ├── CMakeLists.txt
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── ntafd.h
│ │ │ ├── ntbcd.h
│ │ │ ├── ntdbg.h
│ │ │ ├── ntexapi.h
│ │ │ ├── ntgdi.h
│ │ │ ├── ntimage.h
│ │ │ ├── ntintsafe.h
│ │ │ ├── ntioapi.h
│ │ │ ├── ntkeapi.h
│ │ │ ├── ntldr.h
│ │ │ ├── ntlpcapi.h
│ │ │ ├── ntmisc.h
│ │ │ ├── ntmmapi.h
│ │ │ ├── ntnls.h
│ │ │ ├── ntobapi.h
│ │ │ ├── ntpebteb.h
│ │ │ ├── ntpfapi.h
│ │ │ ├── ntpnpapi.h
│ │ │ ├── ntpoapi.h
│ │ │ ├── ntpsapi.h
│ │ │ ├── ntregapi.h
│ │ │ ├── ntrtl.h
│ │ │ ├── ntsam.h
│ │ │ ├── ntseapi.h
│ │ │ ├── ntsmss.h
│ │ │ ├── ntstrsafe.h
│ │ │ ├── ntsxs.h
│ │ │ ├── nttmapi.h
│ │ │ ├── nttp.h
│ │ │ ├── ntuser.h
│ │ │ ├── ntwmi.h
│ │ │ ├── ntwow64.h
│ │ │ ├── ntxcapi.h
│ │ │ ├── ntzwapi.h
│ │ │ ├── phnt.h
│ │ │ ├── phnt_ntdef.h
│ │ │ ├── phnt_windows.h
│ │ │ ├── smbios.h
│ │ │ ├── subprocesstag.h
│ │ │ ├── usermgr.h
│ │ │ └── winsta.h
│ │ ├── thread-call-stack-scanner/
│ │ │ ├── Memory.c
│ │ │ ├── Memory.h
│ │ │ ├── Thread.c
│ │ │ ├── Thread.h
│ │ │ ├── ThreadsCallStackIterate.c
│ │ │ ├── ThreadsCallStackIterate.h
│ │ │ ├── ThreadsCallStackWaitForRegions.c
│ │ │ └── ThreadsCallStackWaitForRegions.h
│ │ └── wow64pp/
│ │ └── wow64pp.hpp
│ ├── logger.cpp
│ ├── logger.h
│ ├── main.cpp
│ ├── mod.cpp
│ ├── mod.h
│ ├── mods_api.cpp
│ ├── mods_api.h
│ ├── mods_api_internal.h
│ ├── mods_manager.cpp
│ ├── mods_manager.h
│ ├── new_process_injector.cpp
│ ├── new_process_injector.h
│ ├── no_destructor.cpp
│ ├── no_destructor.h
│ ├── process_lists.h
│ ├── resource.h
│ ├── rsrc.rc
│ ├── rsrc.rc2
│ ├── session_private_namespace.cpp
│ ├── session_private_namespace.h
│ ├── stdafx.cpp
│ ├── stdafx.h
│ ├── storage_manager.cpp
│ ├── storage_manager.h
│ ├── symbol_enum.cpp
│ ├── symbol_enum.h
│ └── var_init_once.h
├── shared/
│ ├── libraries/
│ │ └── wil/
│ │ ├── Tracelogging.h
│ │ ├── _version.txt
│ │ ├── com.h
│ │ ├── com_apartment_variable.h
│ │ ├── common.h
│ │ ├── coroutine.h
│ │ ├── cppwinrt.h
│ │ ├── cppwinrt_authoring.h
│ │ ├── cppwinrt_helpers.h
│ │ ├── cppwinrt_notifiable_module_lock.h
│ │ ├── cppwinrt_register_com_server.h
│ │ ├── cppwinrt_wrl.h
│ │ ├── filesystem.h
│ │ ├── nt_result_macros.h
│ │ ├── registry.h
│ │ ├── registry_helpers.h
│ │ ├── resource.h
│ │ ├── result.h
│ │ ├── result_macros.h
│ │ ├── result_originate.h
│ │ ├── rpc_helpers.h
│ │ ├── safecast.h
│ │ ├── stl.h
│ │ ├── token_helpers.h
│ │ ├── traceloggingconfig.h
│ │ ├── win32_helpers.h
│ │ ├── win32_result_macros.h
│ │ ├── windowing.h
│ │ ├── winrt.h
│ │ ├── wistd_config.h
│ │ ├── wistd_functional.h
│ │ ├── wistd_memory.h
│ │ ├── wistd_type_traits.h
│ │ └── wrl.h
│ ├── logger_base.cpp
│ ├── logger_base.h
│ ├── portable_settings.cpp
│ ├── portable_settings.h
│ └── version.h
└── windhawk.sln
Copy disabled (too large)
Download .txt
Showing preview only (47,377K chars total). Download the full file to get everything.
SYMBOL INDEX (8403 symbols across 244 files)
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/src/support/commands.ts
type Chainable (line 14) | interface Chainable<Subject> {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/app.tsx
function WhenTranslationIsReady (line 17) | function WhenTranslationIsReady(
function App (line 26) | function App() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/appUISettings.ts
type AppUISettingsContextType (line 4) | type AppUISettingsContextType = Partial<AppUISettings>;
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/components/EllipsisText.tsx
type Props (line 5) | interface Props extends React.PropsWithChildren {
function EllipsisText (line 16) | function EllipsisText(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/components/InputWithContextMenu.tsx
function useItems (line 18) | function useItems() {
function onClick (line 49) | function onClick(
function onOpenChange (line 61) | function onOpenChange(open: boolean) {
function SelectModal (line 184) | function SelectModal({ children, ...rest }: SelectProps) {
function PopconfirmModal (line 204) | function PopconfirmModal({ children, ...rest }: PopconfirmProps) {
function DropdownModal (line 224) | function DropdownModal({ children, ...rest }: DropdownProps) {
function dropdownModalDismissed (line 244) | function dropdownModalDismissed() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/components/ReactMarkdownCustom.tsx
type Props (line 41) | interface Props {
function ReactMarkdownCustom (line 48) | function ReactMarkdownCustom({ markdown, components, allowHtml = false, ...
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/i18n.ts
function i18nInitialize (line 8) | function i18nInitialize(language: string) {
function setLanguage (line 40) | function setLanguage(language?: string) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/About.tsx
function About (line 48) | function About() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/AppHeader.tsx
type HeaderButton (line 54) | type HeaderButton = {
function AppHeader (line 64) | function AppHeader() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ChangelogModal.tsx
constant CHANGELOG_URL (line 8) | const CHANGELOG_URL = 'https://ramensoftware.com/downloads/windhawk_setu...
type Props (line 23) | interface Props {
function ChangelogModal (line 28) | function ChangelogModal(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/CreateNewModButton.tsx
function CreateNewModButton (line 32) | function CreateNewModButton() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/DevModeAction.tsx
type Props (line 17) | interface Props {
function DevModeAction (line 24) | function DevModeAction(props: React.PropsWithChildren<Props>) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModCard.tsx
type Props (line 140) | interface Props {
function ModCard (line 166) | function ModCard(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetails.tsx
type InstalledModDetails (line 49) | type InstalledModDetails = {
type RepositoryModDetails (line 55) | type RepositoryModDetails = {
type ModSourceData (line 60) | type ModSourceData = {
type TabKey (line 67) | type TabKey = 'details' | 'settings' | 'code' | 'changelog' | 'advanced'...
type ViewMode (line 68) | type ViewMode = 'installed' | 'repository' | 'custom';
type ModVersionSelectorProps (line 70) | interface ModVersionSelectorProps {
function ModVersionSelector (line 89) | function ModVersionSelector(props: ModVersionSelectorProps) {
type ModDetailsTabContentProps (line 148) | interface ModDetailsTabContentProps {
function ModDetailsTabContent (line 170) | function ModDetailsTabContent(props: ModDetailsTabContentProps) {
type Props (line 293) | interface Props {
function ModDetails (line 310) | function ModDetails(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsAdvanced.tsx
function engineArrayToProcessList (line 33) | function engineArrayToProcessList(processArray: string[]) {
function engineProcessListToArray (line 37) | function engineProcessListToArray(processList: string) {
type Props (line 44) | interface Props {
function ModDetailsAdvanced (line 48) | function ModDetailsAdvanced({ modId }: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsChangelog.tsx
type Props (line 13) | interface Props {
function ModDetailsChangelog (line 18) | function ModDetailsChangelog({ modId, loadingNode }: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsHeader.tsx
type ModStatus (line 122) | type ModStatus =
function VerifiedLabel (line 128) | function VerifiedLabel() {
function ModInstallationDetailsGrid (line 149) | function ModInstallationDetailsGrid(props: { modMetadata: ModMetadata }) {
type Props (line 211) | interface Props {
function ModDetailsHeader (line 237) | function ModDetailsHeader(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsReadme.tsx
type Props (line 5) | interface Props {
function ModDetailsReadme (line 10) | function ModDetailsReadme({ markdown, isLocalMod }: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSettings.spec.ts
type ModSettings (line 51) | type ModSettings = typesForTesting["ModSettings"];
type InitialSettings (line 52) | type InitialSettings = typesForTesting["InitialSettings"]
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSettings.tsx
type ModSettings (line 115) | type ModSettings = Record<string, string | number>;
type NestedValue (line 117) | type NestedValue = string | number | NestedSettings | (string | number |...
type NestedSettings (line 119) | interface NestedSettings {
type InitialSettingItemExtra (line 123) | type InitialSettingItemExtra = {
type SettingType (line 127) | enum SettingType {
type BooleanDescriptor (line 137) | type BooleanDescriptor = {
type NumberDescriptor (line 143) | type NumberDescriptor = {
type StringDescriptor (line 149) | type StringDescriptor = {
type NestedDescriptor (line 155) | type NestedDescriptor = {
type NumberArrayDescriptor (line 161) | type NumberArrayDescriptor = {
type StringArrayDescriptor (line 167) | type StringArrayDescriptor = {
type ObjectArrayDescriptor (line 173) | type ObjectArrayDescriptor = {
type SettingDescriptor (line 179) | type SettingDescriptor =
function isInitialSettingItem (line 188) | function isInitialSettingItem(value: unknown): value is InitialSettingIt...
function isInitialSettingsArray (line 197) | function isInitialSettingsArray(value: unknown): value is InitialSettings {
function isInitialSettingsCollection (line 201) | function isInitialSettingsCollection(value: unknown[]): value is Initial...
function isNumberArrayValue (line 205) | function isNumberArrayValue(value: unknown[]): value is number[] {
function isStringArrayValue (line 209) | function isStringArrayValue(value: unknown[]): value is string[] {
function describeSetting (line 213) | function describeSetting(value: InitialSettingsValue): SettingDescriptor {
function parseIntLax (line 259) | function parseIntLax(value?: string | number | null) {
function formatYamlError (line 268) | function formatYamlError(error: string): React.ReactNode {
type TypeMismatchError (line 286) | interface TypeMismatchError {
function isPlainObject (line 295) | function isPlainObject(value: unknown): value is Record<string, unknown> {
function toNestedSettings (line 299) | function toNestedSettings(value: unknown): NestedSettings {
function naturalSort (line 307) | function naturalSort(a: string, b: string): number {
class YamlSchemaValidator (line 311) | class YamlSchemaValidator {
method constructor (line 315) | constructor(initialSettings: InitialSettings) {
method buildValidKeys (line 320) | private buildValidKeys(settings: InitialSettings, prefix = ''): Set<st...
method buildTypeSchema (line 338) | private buildTypeSchema(settings: InitialSettings, prefix = ''): Map<s...
method validateKeys (line 371) | validateKeys(nested: NestedSettings, prefix = ''): string | null {
method validateTypes (line 401) | validateTypes(nested: NestedSettings, prefix = ''): TypeMismatchError ...
method validateValue (line 428) | private validateValue(
method getActualType (line 456) | private getActualType(value: NestedValue): string {
method validateArrayElements (line 461) | private validateArrayElements(
class YamlConverter (line 492) | class YamlConverter {
method flatToNested (line 493) | static flatToNested(flatSettings: ModSettings, initialSettings: Initia...
method keyMatchesSchemaStructure (line 513) | private static keyMatchesSchemaStructure(key: string, initialSettings:...
method setNestedValue (line 552) | private static setNestedValue(nested: NestedSettings, key: string, val...
method parseKeyPath (line 592) | private static parseKeyPath(key: string): Array<{ part: string; index?...
method normalizeWithSchema (line 620) | private static normalizeWithSchema(target: NestedSettings, schema: Ini...
method highestDefinedIndex (line 662) | private static highestDefinedIndex(array: unknown[]): number {
method normalizeNestedObject (line 671) | private static normalizeNestedObject(value: NestedValue | undefined, s...
method normalizeObjectArray (line 675) | private static normalizeObjectArray(value: NestedValue | undefined, sc...
method normalizePrimitiveArray (line 687) | private static normalizePrimitiveArray<T extends string | number>(
method isNumberValue (line 704) | private static isNumberValue(value: unknown): value is number {
method isStringValue (line 708) | private static isStringValue(value: unknown): value is string {
method normalizePrimitiveValue (line 712) | private static normalizePrimitiveValue(
method normalizeBooleanValue (line 727) | private static normalizeBooleanValue(
method normalizeNumberValue (line 746) | private static normalizeNumberValue(
method normalizeStringValue (line 765) | private static normalizeStringValue(
method nestedToFlat (line 784) | static nestedToFlat(nested: NestedValue, prefix = ''): ModSettings {
method removeEmptyValues (line 818) | static removeEmptyValues(value: NestedValue): NestedValue {
method cleanArray (line 830) | private static cleanArray(array: (string | number | NestedSettings)[])...
method cleanObject (line 860) | private static cleanObject(obj: NestedSettings): NestedSettings {
method isEmptyValue (line 867) | private static isEmptyValue(value: NestedValue): boolean {
method toYaml (line 879) | static toYaml(settings: ModSettings, initialSettings: InitialSettings)...
method fromYaml (line 896) | static fromYaml(
type BooleanSettingProps (line 951) | interface BooleanSettingProps {
function BooleanSetting (line 956) | function BooleanSetting({ checked, onChange }: BooleanSettingProps) {
type StringSettingProps (line 960) | interface StringSettingProps {
function StringSetting (line 966) | function StringSetting({ value, sampleValue, onChange }: StringSettingPr...
type SelectSettingProps (line 982) | interface SelectSettingProps {
function SelectSetting (line 991) | function SelectSetting({ value, selectItems, onChange }: SelectSettingPr...
type NumberSettingProps (line 1023) | interface NumberSettingProps {
function NumberSetting (line 1028) | function NumberSetting({ value, onChange }: NumberSettingProps) {
type SettingsTreeProps (line 1039) | interface SettingsTreeProps {
type SingleSettingProps (line 1047) | interface SingleSettingProps {
function SingleSetting (line 1054) | function SingleSetting({
type ArraySettingsProps (line 1126) | interface ArraySettingsProps {
function ArraySettings (line 1133) | function ArraySettings({
type ObjectSettingsProps (line 1217) | interface ObjectSettingsProps {
function ObjectSettings (line 1223) | function ObjectSettings({
type YamlEditorProps (line 1251) | interface YamlEditorProps {
function YamlEditor (line 1256) | function YamlEditor({ yamlText, onYamlTextChange }: YamlEditorProps) {
type Props (line 1451) | interface Props {
function ModDetailsSettings (line 1457) | function ModDetailsSettings({ modId, initialSettings, onCanNavigateAwayC...
type typesForTesting (line 1791) | type typesForTesting = {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSource.tsx
function collapseSource (line 42) | function collapseSource(source: string) {
function fallbackCopyTextToClipboard (line 65) | function fallbackCopyTextToClipboard(text: string) {
type Props (line 89) | interface Props {
function ModDetailsSource (line 93) | function ModDetailsSource({ source }: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSourceDiff.tsx
constant ICON_TYPE_MAPPING (line 53) | const ICON_TYPE_MAPPING = {
type HastText (line 188) | interface HastText {
type HastElement (line 193) | interface HastElement {
type HastNode (line 202) | type HastNode = HastText | HastElement;
type Props (line 272) | interface Props {
function ModDetailsSource (line 277) | function ModDetailsSource(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModMetadataLine.tsx
type TranslationFunction (line 17) | type TranslationFunction = ReturnType<typeof useTranslation>['t'];
type MetadataItem (line 99) | interface MetadataItem {
type CustomProcesses (line 107) | interface CustomProcesses {
function createVersionItem (line 114) | function createVersionItem(
function createAuthorTooltip (line 151) | function createAuthorTooltip(
function createAuthorItem (line 204) | function createAuthorItem(
function createProcessesItem (line 217) | function createProcessesItem(
function buildMetadataItems (line 330) | function buildMetadataItems(
constant PROCESSES_MIN_WIDTH (line 355) | const PROCESSES_MIN_WIDTH = 50;
type ItemWidths (line 357) | interface ItemWidths {
function calculateItemWidths (line 367) | function calculateItemWidths(
type Props (line 404) | interface Props {
function ModMetadataLine (line 411) | function ModMetadataLine(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModPreview.tsx
type ModDetailsType (line 25) | type ModDetailsType = {
type Props (line 32) | interface Props {
function ModPreview (line 38) | function ModPreview({ ContentWrapper }: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModsBrowserLocal.tsx
type ModDetailsType (line 116) | type ModDetailsType = {
type FeaturedModDetailsType (line 123) | type FeaturedModDetailsType = {
type Props (line 128) | interface Props {
function ModsBrowserLocal (line 134) | function ModsBrowserLocal({ ContentWrapper }: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModsBrowserOnline.tsx
type FilterItemLabelProps (line 97) | interface FilterItemLabelProps {
type ModDetailsType (line 122) | type ModDetailsType = {
type Props (line 291) | interface Props {
function ModsBrowserOnline (line 297) | function ModsBrowserOnline({ ContentWrapper }: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/Panel.tsx
function ContentWrapper (line 41) | function ContentWrapper({
function ContentWrapperWithOutlet (line 52) | function ContentWrapperWithOutlet() {
function KeyboardNavigationHandler (line 60) | function KeyboardNavigationHandler() {
function Layout (line 84) | function Layout() {
function Panel (line 167) | function Panel() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/SafeModeIndicator.tsx
function SafeModeIndicator (line 20) | function SafeModeIndicator() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/Settings.tsx
function parseIntLax (line 82) | function parseIntLax(value?: string | number | null) {
function engineArrayToProcessList (line 87) | function engineArrayToProcessList(processArray: string[]) {
function engineProcessListToArray (line 91) | function engineProcessListToArray(processList: string) {
function Settings (line 98) | function Settings() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/UpdateModal.tsx
type UpdateStatus (line 30) | type UpdateStatus = 'idle' | 'downloading' | 'installing' | 'failed';
type Props (line 32) | interface Props {
function UpdateModal (line 37) | function UpdateModal(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/VersionSelectorModal.tsx
type ModVersionInfo (line 8) | type ModVersionInfo = {
type Props (line 60) | interface Props {
function VersionSelectorModal (line 68) | function VersionSelectorModal(props: Props) {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/sidebar/EditorModeControls.tsx
type ModDetailsCommon (line 89) | type ModDetailsCommon = {
type ModDetailsNotCompiled (line 94) | type ModDetailsNotCompiled = ModDetailsCommon & {
type ModDetailsCompiled (line 98) | type ModDetailsCompiled = ModDetailsCommon & {
type ModDetails (line 105) | type ModDetails = ModDetailsNotCompiled | ModDetailsCompiled;
type Props (line 107) | interface Props {
function EditorModeControls (line 112) | function EditorModeControls({ initialModDetails, onExitEditorMode }: Pro...
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/sidebar/Sidebar.tsx
function Sidebar (line 9) | function Sidebar() {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/utils.ts
function sanitizeUrl (line 8) | function sanitizeUrl(url: string | undefined): string | undefined {
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/webviewIPC.ts
type MessageType (line 64) | type MessageType = 'message' | 'messageWithReply' | 'reply' | 'event';
type CommonMessageBase (line 66) | type CommonMessageBase = {
type MessageRegular (line 72) | type MessageRegular = CommonMessageBase & {
type MessageWithReply (line 78) | type MessageWithReply = CommonMessageBase & {
type Reply (line 85) | type Reply = CommonMessageBase & {
type Event (line 92) | type Event = CommonMessageBase & {
type MessageAny (line 98) | type MessageAny = MessageRegular | MessageWithReply | Reply | Event;
function createNewMod (line 103) | function createNewMod() {
function editMod (line 112) | function editMod(data: EditModData) {
function forkMod (line 121) | function forkMod(data: ForkModData) {
function showAdvancedDebugLogOutput (line 130) | function showAdvancedDebugLogOutput() {
function showLogOutput (line 139) | function showLogOutput() {
function getInitialSidebarParams (line 148) | function getInitialSidebarParams() {
function stopCompileEditedMod (line 157) | function stopCompileEditedMod() {
function previewEditedMod (line 166) | function previewEditedMod() {
function usePostMessageWithReplyWithHandler (line 180) | function usePostMessageWithReplyWithHandler<
function useGetInitialAppSettings (line 236) | function useGetInitialAppSettings<
function useInstallMod (line 251) | function useInstallMod<TContext extends Record<string, unknown>>(
function useCompileMod (line 266) | function useCompileMod<TContext extends Record<string, unknown>>(
function useEnableMod (line 281) | function useEnableMod<TContext extends Record<string, unknown>>(
function useDeleteMod (line 296) | function useDeleteMod<TContext extends Record<string, unknown>>(
function useUpdateModRating (line 311) | function useUpdateModRating<TContext extends Record<string, unknown>>(
function useGetInstalledMods (line 326) | function useGetInstalledMods<TContext extends Record<string, unknown>>(
function useGetFeaturedMods (line 341) | function useGetFeaturedMods<TContext extends Record<string, unknown>>(
function useGetModSourceData (line 356) | function useGetModSourceData<TContext extends Record<string, unknown>>(
function useGetRepositoryModSourceData (line 371) | function useGetRepositoryModSourceData<
function useGetModVersions (line 391) | function useGetModVersions<TContext extends Record<string, unknown>>(
function useGetAppSettings (line 406) | function useGetAppSettings<TContext extends Record<string, unknown>>(
function useUpdateAppSettings (line 421) | function useUpdateAppSettings<TContext extends Record<string, unknown>>(
function useGetModSettings (line 436) | function useGetModSettings<TContext extends Record<string, unknown>>(
function useSetModSettings (line 451) | function useSetModSettings<TContext extends Record<string, unknown>>(
function useGetModConfig (line 466) | function useGetModConfig<TContext extends Record<string, unknown>>(
function useUpdateModConfig (line 481) | function useUpdateModConfig<TContext extends Record<string, unknown>>(
function useGetRepositoryMods (line 496) | function useGetRepositoryMods<TContext extends Record<string, unknown>>(
function useStartUpdate (line 511) | function useStartUpdate<TContext extends Record<string, unknown>>(
function useCancelUpdate (line 526) | function useCancelUpdate<TContext extends Record<string, unknown>>(
function useEnableEditedMod (line 541) | function useEnableEditedMod<TContext extends Record<string, unknown>>(
function useEnableEditedModLogging (line 556) | function useEnableEditedModLogging<
function useCompileEditedMod (line 573) | function useCompileEditedMod<TContext extends Record<string, unknown>>(
function useExitEditorMode (line 588) | function useExitEditorMode<TContext extends Record<string, unknown>>(
function useEventMessageWithHandler (line 606) | function useEventMessageWithHandler<T>(
function useSetNewAppSettings (line 624) | function useSetNewAppSettings(
function useUpdateDownloadProgress (line 633) | function useUpdateDownloadProgress(
function useUpdateInstalling (line 642) | function useUpdateInstalling(
function useUpdateInstalledModsDetails (line 651) | function useUpdateInstalledModsDetails(
function useSetNewModConfig (line 660) | function useSetNewModConfig(
function useSetEditedModId (line 669) | function useSetEditedModId(handler: (data: SetEditedModIdData) => void) {
function useCompileEditedModStart (line 673) | function useCompileEditedModStart(handler: (data: NoData) => void) {
function useEditedModWasModified (line 677) | function useEditedModWasModified(handler: (data: NoData) => void) {
function useSetEditedModDetails (line 681) | function useSetEditedModDetails(
FILE: src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/webviewIPCMessages.ts
type webviewIPCMessageType (line 6) | type webviewIPCMessageType =
type webviewIPCMessageCommon (line 12) | type webviewIPCMessageCommon = {
type webviewIPCMessage (line 18) | type webviewIPCMessage = webviewIPCMessageCommon & {
type webviewIPCMessageWithReply (line 24) | type webviewIPCMessageWithReply = webviewIPCMessageCommon & {
type webviewIPCReply (line 31) | type webviewIPCReply = webviewIPCMessageCommon & {
type webviewIPCEvent (line 38) | type webviewIPCEvent = webviewIPCMessageCommon & {
type webviewIPCMessageAny (line 44) | type webviewIPCMessageAny =
type NoData (line 53) | type NoData = Record<string, unknown>;
type ModConfig (line 55) | type ModConfig = {
type AppSettings (line 70) | type AppSettings = {
type ModMetadata (line 92) | type ModMetadata = Partial<{
type RepositoryDetails (line 109) | type RepositoryDetails = {
type AppUISettings (line 119) | type AppUISettings = {
type InitialSettingsValue (line 128) | type InitialSettingsValue =
type InitialSettingsArrayValue (line 135) | type InitialSettingsArrayValue = number[] | string[] | InitialSettings[];
type InitialSettingItem (line 137) | type InitialSettingItem = {
type InitialSettings (line 145) | type InitialSettings = InitialSettingItem[];
type EditModData (line 150) | type EditModData = {
type ForkModData (line 154) | type ForkModData = {
type GetInitialAppSettingsReplyData (line 162) | type GetInitialAppSettingsReplyData = {
type InstallModData (line 166) | type InstallModData = {
type InstallModReplyData (line 172) | type InstallModReplyData = {
type CompileModData (line 180) | type CompileModData = {
type CompileModReplyData (line 185) | type CompileModReplyData = {
type EnableModData (line 193) | type EnableModData = {
type EnableModReplyData (line 198) | type EnableModReplyData = {
type DeleteModData (line 204) | type DeleteModData = {
type DeleteModReplyData (line 208) | type DeleteModReplyData = {
type UpdateModRatingData (line 213) | type UpdateModRatingData = {
type UpdateModRatingReplyData (line 218) | type UpdateModRatingReplyData = {
type GetInstalledModsReplyData (line 224) | type GetInstalledModsReplyData = {
type GetFeaturedModsReplyData (line 236) | type GetFeaturedModsReplyData = {
type GetModSourceDataData (line 246) | type GetModSourceDataData = {
type GetModSourceDataReplyData (line 250) | type GetModSourceDataReplyData = {
type GetRepositoryModSourceDataData (line 260) | type GetRepositoryModSourceDataData = {
type GetRepositoryModSourceDataReplyData (line 265) | type GetRepositoryModSourceDataReplyData = {
type GetModVersionsData (line 276) | type GetModVersionsData = {
type GetModVersionsReplyData (line 280) | type GetModVersionsReplyData = {
type GetAppSettingsReplyData (line 289) | type GetAppSettingsReplyData = {
type UpdateAppSettingsData (line 293) | type UpdateAppSettingsData = {
type UpdateAppSettingsReplyData (line 297) | type UpdateAppSettingsReplyData = {
type GetModSettingsData (line 302) | type GetModSettingsData = {
type GetModSettingsReplyData (line 306) | type GetModSettingsReplyData = {
type SetModSettingsData (line 311) | type SetModSettingsData = {
type SetModSettingsReplyData (line 316) | type SetModSettingsReplyData = {
type GetModConfigData (line 321) | type GetModConfigData = {
type GetModConfigReplyData (line 325) | type GetModConfigReplyData = {
type UpdateModConfigData (line 330) | type UpdateModConfigData = {
type UpdateModConfigReplyData (line 335) | type UpdateModConfigReplyData = {
type GetRepositoryModsReplyData (line 340) | type GetRepositoryModsReplyData = {
type StartUpdateReplyData (line 358) | type StartUpdateReplyData = {
type CancelUpdateReplyData (line 363) | type CancelUpdateReplyData = {
type EnableEditedModData (line 367) | type EnableEditedModData = {
type EnableEditedModReplyData (line 371) | type EnableEditedModReplyData = {
type EnableEditedModLoggingData (line 376) | type EnableEditedModLoggingData = {
type EnableEditedModLoggingReplyData (line 380) | type EnableEditedModLoggingReplyData = {
type CompileEditedModData (line 385) | type CompileEditedModData = {
type CompileEditedModReplyData (line 390) | type CompileEditedModReplyData = {
type ExitEditorModeData (line 395) | type ExitEditorModeData = {
type ExitEditorModeReplyData (line 399) | type ExitEditorModeReplyData = {
type SetNewAppSettingsData (line 406) | type SetNewAppSettingsData = {
type UpdateDownloadProgressEventData (line 410) | type UpdateDownloadProgressEventData = {
type UpdateInstallingEventData (line 414) | type UpdateInstallingEventData = NoData;
type UpdateInstalledModsDetailsData (line 416) | type UpdateInstalledModsDetailsData = {
type SetNewModConfigData (line 426) | type SetNewModConfigData = {
type SetEditedModIdData (line 431) | type SetEditedModIdData = {
type SetEditedModDetailsData (line 435) | type SetEditedModDetailsData = {
FILE: src/vscode-windhawk/files/mod_template.wh.cpp
function GpStatus (line 75) | GpStatus WINAPI GdipSetSolidFillColor_Hook(GpSolidFill* brush, ARGB colo...
function BOOL (line 90) | BOOL WINAPI GetOpenFileNameW_Hook(LPOPENFILENAMEW params) {
function LoadSettings (line 104) | void LoadSettings() {
function BOOL (line 113) | BOOL Wh_ModInit() {
function Wh_ModUninit (line 134) | void Wh_ModUninit() {
function Wh_ModSettingsChanged (line 139) | void Wh_ModSettingsChanged() {
FILE: src/vscode-windhawk/helper_scripts/disable_default_keybindings.py
function main (line 1280) | def main():
FILE: src/vscode-windhawk/src/extension.ts
type AppUtils (line 54) | type AppUtils = {
function activate (line 77) | function activate(context: vscode.ExtensionContext) {
type RepositoryModsType (line 169) | type RepositoryModsType = Record<string, any>;
type WindhawkPanelCallbacks (line 171) | type WindhawkPanelCallbacks = {
type WindhawkPanelParams (line 176) | type WindhawkPanelParams = {
type WindhawkPanelOptions (line 180) | type WindhawkPanelOptions = {
class WindhawkPanel (line 189) | class WindhawkPanel {
method createOrShow (line 208) | public static createOrShow(
method refreshIfExists (line 249) | public static refreshIfExists(title: string, params?: WindhawkPanelPar...
method constructor (line 253) | private constructor(
method refresh (line 288) | public refresh(title: string, params?: WindhawkPanelParams) {
method userProfileChanged (line 296) | public static userProfileChanged() {
method dispose (line 305) | public dispose() {
method _getHtmlForWebview (line 319) | private _getHtmlForWebview(webview: vscode.Webview, params?: WindhawkP...
method _getAppUISettings (line 348) | private _getAppUISettings(appSettings: AppSettings, userProfile?: User...
method _userProfileChanged (line 373) | private _userProfileChanged() {
method _handleMessage (line 1174) | private _handleMessage(message: any) {
method _fetchRepositoryMods (line 1179) | private async _fetchRepositoryMods(language: string) {
method _updateUserProfileJson (line 1203) | private _updateUserProfileJson(data: any) {
class WindhawkViewProvider (line 1230) | class WindhawkViewProvider implements vscode.WebviewViewProvider {
method constructor (line 1244) | constructor(
method resolveWebviewView (line 1254) | public resolveWebviewView(
method _getHtmlForWebview (line 1295) | private _getHtmlForWebview(webview: vscode.Webview) {
method fileWasModified (line 1322) | public fileWasModified(doc: vscode.TextDocument) {
method compileMod (line 1338) | public compileMod() {
method _postEditedModDetails (line 1343) | private _postEditedModDetails() {
method setEditedMod (line 1355) | public setEditedMod(modId: string, modWasModified: boolean) {
method appSettingsUpdated (line 1362) | public appSettingsUpdated() {
method _handleMessage (line 1651) | private _handleMessage(message: any) {
function reportException (line 1657) | function reportException(e: any) {
function reportCompilerException (line 1662) | function reportCompilerException(e: any, treatCompilationErrorAsExceptio...
function escapeHtml (line 1711) | function escapeHtml(unsafe: string) {
FILE: src/vscode-windhawk/src/ini.ts
type iniValue (line 5) | type iniValue = {
function fromFile (line 11) | function fromFile(filePath: string) {
function fromFileOrDefault (line 40) | function fromFileOrDefault(filePath: string, defaultValue: iniValue = {}) {
function toFile (line 52) | function toFile(filePath: string, value: iniValue) {
FILE: src/vscode-windhawk/src/logOutputChannel.ts
class WindhawkLogOutput (line 4) | class WindhawkLogOutput {
method constructor (line 11) | constructor(logOutputProcessPath: string) {
method createOrShow (line 15) | public createOrShow(preserveFocus?: boolean) {
method dispose (line 65) | public dispose() {
function incompleteUTF8Index (line 79) | function incompleteUTF8Index(buf: Buffer) {
FILE: src/vscode-windhawk/src/storagePaths.ts
type FileSystemPaths (line 7) | type FileSystemPaths = {
type StoragePathsPortable (line 15) | type StoragePathsPortable = {
type StoragePathsNonPortable (line 20) | type StoragePathsNonPortable = {
type StoragePaths (line 27) | type StoragePaths =
function getAppRootPath (line 31) | function getAppRootPath() {
function getStorageConfig (line 41) | function getStorageConfig(appRootPath: string) {
function expandEnvironmentVariables (line 46) | function expandEnvironmentVariables(path: string) {
function getStoragePaths (line 53) | function getStoragePaths(): StoragePaths {
FILE: src/vscode-windhawk/src/utils/appSettingsUtils.ts
type FieldDescriptor (line 11) | type FieldDescriptor = {
constant APP_SETTINGS_FIELDS (line 21) | const APP_SETTINGS_FIELDS = [
type StorageFieldName (line 41) | type StorageFieldName = typeof APP_SETTINGS_FIELDS[number]['storageName'];
type StorageLocation (line 42) | type StorageLocation = typeof APP_SETTINGS_FIELDS[number]['location'];
type FieldTypeMap (line 45) | type FieldTypeMap = {
type AppFieldsDescriptor (line 53) | type AppFieldsDescriptor = Extract<typeof APP_SETTINGS_FIELDS[number], {...
type EngineFieldsDescriptor (line 54) | type EngineFieldsDescriptor = Extract<typeof APP_SETTINGS_FIELDS[number]...
type AppSettings (line 56) | type AppSettings = {
type AppSettingsUtils (line 64) | interface AppSettingsUtils {
type AppSettingsBackend (line 75) | interface AppSettingsBackend {
function splitPipeDelimited (line 84) | function splitPipeDelimited(value: string): string[] {
function getDefaultValue (line 88) | function getDefaultValue(field: FieldDescriptor): any {
class AppSettingsCodec (line 108) | class AppSettingsCodec {
method parse (line 109) | static parse(backend: AppSettingsBackend): AppSettings {
method serialize (line 148) | static serialize(backend: AppSettingsBackend, appSettings: Partial<App...
class IniAppSettingsBackend (line 194) | class IniAppSettingsBackend implements AppSettingsBackend {
method constructor (line 198) | constructor(appDataPath: string) {
method readAllFields (line 203) | readAllFields(location: StorageLocation): Partial<Record<StorageFieldN...
method writeAllFields (line 242) | writeAllFields(location: StorageLocation, fields: Partial<Record<Stora...
class RegistryAppSettingsBackend (line 259) | class RegistryAppSettingsBackend implements AppSettingsBackend {
method constructor (line 264) | constructor(regKey: reg.HKEY, regSubKey: string) {
method readAllFields (line 270) | readAllFields(location: StorageLocation): Partial<Record<StorageFieldN...
method writeAllFields (line 308) | writeAllFields(location: StorageLocation, fields: Partial<Record<Stora...
class AppSettingsUtilsBase (line 329) | class AppSettingsUtilsBase implements AppSettingsUtils {
method constructor (line 332) | protected constructor(backend: AppSettingsBackend) {
method getAppSettings (line 336) | public getAppSettings(): AppSettings {
method updateAppSettings (line 340) | public updateAppSettings(appSettings: Partial<AppSettings>): void {
method shouldRestartApp (line 344) | public shouldRestartApp(appSettings: Partial<AppSettings>): boolean {
method shouldNotifyTrayProgram (line 350) | public shouldNotifyTrayProgram(appSettings: Partial<AppSettings>): boo...
class AppSettingsUtilsPortable (line 363) | class AppSettingsUtilsPortable extends AppSettingsUtilsBase {
method constructor (line 364) | public constructor(appDataPath: string) {
method updateAppSettings (line 368) | public updateAppSettings(appSettings: Partial<AppSettings>): void {
class AppSettingsUtilsNonPortable (line 381) | class AppSettingsUtilsNonPortable extends AppSettingsUtilsBase {
method constructor (line 382) | public constructor(regKey: reg.HKEY, regSubKey: string) {
method updateAppSettings (line 386) | public updateAppSettings(appSettings: Partial<AppSettings>): void {
method setInstallerLanguage (line 405) | private setInstallerLanguage(language: string) {
method enableScheduledTask (line 664) | private enableScheduledTask(taskName: string, enable: boolean) {
FILE: src/vscode-windhawk/src/utils/compilerUtils.ts
type CompilationTarget (line 6) | type CompilationTarget =
type CompilationResult (line 11) | type CompilationResult = {
class CompilerError (line 17) | class CompilerError extends Error {
method constructor (line 22) | constructor(target: CompilationTarget, result: number | null, stdout: ...
class CompilerKilled (line 46) | class CompilerKilled extends Error {
method constructor (line 47) | constructor() {
class CompilerUtils (line 52) | class CompilerUtils {
method constructor (line 61) | public constructor(compilerPath: string, enginePath: string, appDataPa...
method subfolderFromCompilationTarget (line 86) | private subfolderFromCompilationTarget(target: CompilationTarget) {
method compilationTargetsFromArchitecture (line 99) | private compilationTargetsFromArchitecture(architectures: string[], mo...
method doesCompiledModExist (line 159) | private doesCompiledModExist(fileName: string, target: CompilationTarg...
method makePrecompiledHeaders (line 164) | private async makePrecompiledHeaders(
method compileModInternal (line 235) | private async compileModInternal(
method copyCompilerLibs (line 357) | private copyCompilerLibs(target: CompilationTarget) {
method compileMod (line 418) | public async compileMod(
method cancelCompilation (line 506) | public cancelCompilation() {
function randomIntFromInterval (line 527) | function randomIntFromInterval(min: number, max: number) {
function splitargs (line 532) | function splitargs(input: string, sep?: RegExp, keepQuotes?: boolean) {
FILE: src/vscode-windhawk/src/utils/editorWorkspaceUtils.ts
class EditorWorkspaceUtils (line 7) | class EditorWorkspaceUtils {
method constructor (line 10) | public constructor() {
method getFilePath (line 20) | public getFilePath(fileName: string) {
method getWorkspaceFolder (line 24) | public getWorkspaceFolder() {
method getModSourcePath (line 28) | public getModSourcePath() {
method getDraftsPath (line 32) | public getDraftsPath() {
method initializeEditorSettings (line 36) | private initializeEditorSettings() {
method initializeFromModSource (line 86) | public initializeFromModSource(modSource: string, modSourceFromDrafts?...
method saveModToDrafts (line 108) | public saveModToDrafts(modId: string) {
method loadModFromDrafts (line 114) | public loadModFromDrafts(modId: string) {
method deleteModFromDrafts (line 124) | public deleteModFromDrafts(modId: string) {
method toggleMinimalLayout (line 137) | private async toggleMinimalLayout(minimal: boolean) {
method enterEditorMode (line 153) | public async enterEditorMode(modId: string, modWasModified = false) {
method exitEditorMode (line 175) | public async exitEditorMode() {
method restoreEditorMode (line 192) | public async restoreEditorMode() {
method setEditorModeModId (line 212) | public async setEditorModeModId(modId: string) {
method markEditorModeModAsModified (line 217) | public async markEditorModeModAsModified(modified: boolean) {
FILE: src/vscode-windhawk/src/utils/modConfigUtils.ts
type ModSettings (line 6) | type ModSettings = Record<string, string | number>;
type ModSettingsConfig (line 8) | type ModSettingsConfig = {
type FieldType (line 14) | type FieldType = 'string' | 'boolean' | 'string-array';
type FieldDescriptor (line 16) | interface FieldDescriptor {
constant CONFIG_FIELDS (line 22) | const CONFIG_FIELDS = [
type FieldTypeToTSType (line 38) | type FieldTypeToTSType<T extends FieldType> =
type ModConfig (line 45) | type ModConfig = {
type StorageFieldName (line 50) | type StorageFieldName = typeof CONFIG_FIELDS[number]['storageName'];
type ModStorageBackend (line 53) | interface ModStorageBackend {
class ModConfigCodec (line 73) | class ModConfigCodec {
method parse (line 74) | static parse(backend: ModStorageBackend, modId: string): ModConfig | n...
method serialize (line 109) | static serialize(backend: ModStorageBackend, modId: string, config: Pa...
function getSettingsChangeTime (line 140) | function getSettingsChangeTime() {
function splitPipeDelimited (line 145) | function splitPipeDelimited(value: string): string[] {
function mergeModSettings (line 149) | function mergeModSettings(existingSettings: ModSettings, newSettings: Mo...
function getModStoragePath (line 176) | function getModStoragePath(engineModsWritablePath: string, modId: string) {
function deleteModStoragePath (line 180) | function deleteModStoragePath(engineModsWritablePath: string, modId: str...
class IniStorageBackend (line 190) | class IniStorageBackend implements ModStorageBackend {
method constructor (line 194) | constructor(appDataPath: string) {
method getModIniPath (line 199) | private getModIniPath(modId: string) {
method getModWritableIniPath (line 203) | private getModWritableIniPath(modId: string) {
method readAllConfigFields (line 207) | readAllConfigFields(modId: string): Partial<Record<StorageFieldName, s...
method writeAllConfigFields (line 231) | writeAllConfigFields(modId: string, fields: Partial<Record<StorageFiel...
method writeConfigField (line 244) | writeConfigField(modId: string, field: StorageFieldName, value: string...
method configExists (line 248) | configExists(modId: string): boolean {
method readAllSettings (line 254) | readAllSettings(modId: string): Record<string, string | number> {
method writeAllSettings (line 260) | writeAllSettings(modId: string, settings: Record<string, string | numb...
method deleteConfig (line 277) | deleteConfig(modId: string): void {
method renameConfig (line 299) | renameConfig(fromId: string, toId: string): void {
method getConfigOfInstalled (line 321) | getConfigOfInstalled(): Record<string, ModConfig> {
class RegistryStorageBackend (line 354) | class RegistryStorageBackend implements ModStorageBackend {
method constructor (line 360) | constructor(regKey: reg.HKEY, regSubKey: string, appDataPath: string) {
method readAllConfigFields (line 367) | readAllConfigFields(modId: string): Partial<Record<StorageFieldName, s...
method writeAllConfigFields (line 397) | writeAllConfigFields(modId: string, fields: Partial<Record<StorageFiel...
method writeConfigField (line 413) | writeConfigField(modId: string, field: StorageFieldName, value: string...
method configExists (line 417) | configExists(modId: string): boolean {
method readAllSettings (line 431) | readAllSettings(modId: string): Record<string, string | number> {
method writeAllSettings (line 459) | writeAllSettings(modId: string, settings: Record<string, string | numb...
method deleteConfig (line 487) | deleteConfig(modId: string): void {
method renameConfig (line 505) | renameConfig(fromId: string, toId: string): void {
method getConfigOfInstalled (line 519) | getConfigOfInstalled(): Record<string, ModConfig> {
type ModConfigUtils (line 541) | interface ModConfigUtils {
class ModConfigUtilsBase (line 555) | class ModConfigUtilsBase implements ModConfigUtils {
method constructor (line 558) | protected constructor(backend: ModStorageBackend) {
method getConfigOfInstalled (line 562) | public getConfigOfInstalled() {
method doesConfigExist (line 566) | public doesConfigExist(modId: string) {
method getModConfig (line 570) | public getModConfig(modId: string) {
method setModConfig (line 574) | public setModConfig(modId: string, config: Partial<ModConfig>, setting...
method getModSettings (line 595) | public getModSettings(modId: string) {
method setModSettings (line 599) | public setModSettings(modId: string, settings: ModSettings) {
method enableMod (line 603) | public enableMod(modId: string, enable: boolean) {
method enableLogging (line 607) | public enableLogging(modId: string, enable: boolean) {
method deleteMod (line 611) | public deleteMod(modId: string) {
method changeModId (line 615) | public changeModId(modIdFrom: string, modIdTo: string) {
class ModConfigUtilsPortable (line 620) | class ModConfigUtilsPortable extends ModConfigUtilsBase {
method constructor (line 621) | public constructor(appDataPath: string) {
class ModConfigUtilsNonPortable (line 626) | class ModConfigUtilsNonPortable extends ModConfigUtilsBase {
method constructor (line 627) | public constructor(regKey: reg.HKEY, regSubKey: string, appDataPath: s...
FILE: src/vscode-windhawk/src/utils/modFilesUtils.ts
type ArchitectureSubfolder (line 7) | type ArchitectureSubfolder = '32' | '64' | 'arm64';
class ModFilesUtils (line 9) | class ModFilesUtils {
method constructor (line 14) | public constructor(appDataPath: string, arm64Enabled: boolean, current...
method subfoldersFromArchitectures (line 24) | private subfoldersFromArchitectures(architectures: string[]): Set<Arch...
method deleteOldModFilesInFolder (line 62) | private deleteOldModFilesInFolder(modId: string, subfolder: Architectu...
method deleteOldModFiles (line 110) | public deleteOldModFiles(modId: string, architectures: string[], curre...
method downloadPrecompiledMod (line 118) | public async downloadPrecompiledMod(
method deleteModFiles (line 209) | public deleteModFiles(modId: string) {
function randomIntFromInterval (line 224) | function randomIntFromInterval(min: number, max: number) {
FILE: src/vscode-windhawk/src/utils/modSourceUtils.ts
type ModMetadataParamsSingleValue (line 30) | type ModMetadataParamsSingleValue = typeof modMetadataParams.singleValue...
type ModMetadataParamsSingleValueLocalizable (line 31) | type ModMetadataParamsSingleValueLocalizable = typeof modMetadataParams....
type ModMetadataParamsMultiValue (line 32) | type ModMetadataParamsMultiValue = typeof modMetadataParams.multiValue[n...
function isModMetadataParamsSingleValue (line 34) | function isModMetadataParamsSingleValue(k: string): k is ModMetadataPara...
function isModMetadataParamsSingleValueLocalizable (line 37) | function isModMetadataParamsSingleValueLocalizable(k: string): k is ModM...
function isModMetadataParamsMultiValue (line 40) | function isModMetadataParamsMultiValue(k: string): k is ModMetadataParam...
type ModMetadata (line 44) | type ModMetadata = Partial<
class ModSourceUtils (line 50) | class ModSourceUtils {
method constructor (line 53) | public constructor(appDataPath: string) {
method getModSourcePath (line 57) | private getModSourcePath(modId: string) {
method getBestLanguageMatch (line 61) | private getBestLanguageMatch(matchLanguage: string, candidates: {
method extractMetadataRaw (line 100) | private extractMetadataRaw(modSource: string) {
method validateMetadata (line 139) | private validateMetadata(metadata: ModMetadata) {
method extractMetadata (line 174) | public extractMetadata(modSource: string, language: string) {
method appendToIdAndName (line 228) | public appendToIdAndName(modSource: string, appendToId?: string, appen...
method getMetadataOfInstalled (line 248) | public getMetadataOfInstalled(language: string, onLoadError: (modId: s...
method getSource (line 283) | public getSource(modId: string) {
method setSource (line 288) | public setSource(modId: string, modSource: string) {
method doesSourceExist (line 294) | public doesSourceExist(modId: string) {
method extractReadme (line 299) | public extractReadme(modSource: string) {
method extractInitialSettingsRaw (line 308) | private extractInitialSettingsRaw(modSource: string) {
method extractInitialSettings (line 375) | public extractInitialSettings(modSource: string, language: string): In...
method extractInitialSettingsForEngine (line 434) | public extractInitialSettingsForEngine(modSource: string) {
method deleteSource (line 495) | public deleteSource(modId: string) {
FILE: src/vscode-windhawk/src/utils/trayProgramUtils.ts
class TrayProgramUtils (line 5) | class TrayProgramUtils {
method constructor (line 8) | public constructor(appRootPath: string) {
method getCleanProcessEnv (line 12) | private getCleanProcessEnv() {
method runTrayProgramWithArgs (line 29) | private runTrayProgramWithArgs(args: string[]) {
method postAppRestartBg (line 54) | public postAppRestartBg() {
method postNewUpdatesFound (line 60) | public postNewUpdatesFound() {
method postAppSettingsChanged (line 66) | public postAppSettingsChanged() {
FILE: src/vscode-windhawk/src/utils/updateUtils.ts
type UpdateProgress (line 8) | interface UpdateProgress {
type UpdateCallbacks (line 12) | interface UpdateCallbacks {
type UpdateResult (line 17) | interface UpdateResult {
class UpdateUtils (line 22) | class UpdateUtils {
method constructor (line 28) | constructor(
method isUpdating (line 33) | public isUpdating(): boolean {
method startUpdate (line 37) | public async startUpdate(callbacks: UpdateCallbacks): Promise<UpdateRe...
method cancelUpdate (line 64) | public cancelUpdate(): boolean {
method _downloadInstaller (line 74) | private async _downloadInstaller(callbacks: UpdateCallbacks): Promise<...
method _installUpdate (line 147) | private async _installUpdate(): Promise<void> {
method _cleanup (line 185) | private _cleanup(): void {
FILE: src/vscode-windhawk/src/utils/userProfileUtils.ts
type UserProfileType (line 4) | type UserProfileType = {
type onFileModified (line 19) | type onFileModified = (mtimeMs: number) => void;
class UserProfile (line 21) | class UserProfile {
method constructor (line 26) | public constructor(userProfilePath: string, onFileModified?: onFileMod...
method getAppLatestVersion (line 55) | public getAppLatestVersion() {
method getModRating (line 59) | public getModRating(modId: string) {
method getModLatestVersion (line 63) | public getModLatestVersion(modId: string) {
method setModVersion (line 67) | public setModVersion(modId: string, version: string, resetLatestVersio...
method setModDisabled (line 78) | public setModDisabled(modId: string, disabled: boolean) {
method setModRating (line 88) | public setModRating(modId: string, rating: number) {
method deleteMod (line 98) | public deleteMod(modId: string) {
method isModDeleted (line 108) | private isModDeleted(modId: string) {
method updateModDetails (line 114) | public updateModDetails(modId: string, version: string, disabled: bool...
method cleanupRemovedMods (line 132) | public cleanupRemovedMods(currentModIds: Set<string>) {
method updateLatestVersions (line 145) | public updateLatestVersions(appLatestVersion?: string, modLatestVersio...
method write (line 168) | public write(asExternalUpdate = false) {
class UserProfileUtils (line 176) | class UserProfileUtils {
method constructor (line 180) | public constructor(appDataPath: string) {
method getFilePath (line 184) | public getFilePath() {
method read (line 188) | public read() {
method getLastModifiedByUserMtimeMs (line 194) | public getLastModifiedByUserMtimeMs() {
FILE: src/vscode-windhawk/src/webviewIPC.ts
type MessageType (line 41) | type MessageType = 'message' | 'messageWithReply' | 'reply' | 'event';
type CommonMessageBase (line 43) | type CommonMessageBase = {
type Reply (line 62) | type Reply = CommonMessageBase & {
type Event (line 69) | type Event = CommonMessageBase & {
function setNewAppSettings (line 78) | function setNewAppSettings(webview: vscode.Webview | undefined, data: Se...
function updateInstalledModsDetails (line 88) | function updateInstalledModsDetails(webview: vscode.Webview | undefined,...
function setNewModConfig (line 98) | function setNewModConfig(webview: vscode.Webview | undefined, data: SetN...
function editedModWasModified (line 108) | function editedModWasModified(webview: vscode.Webview | undefined) {
function compileEditedModStart (line 118) | function compileEditedModStart(webview: vscode.Webview | undefined) {
function setEditedModDetails (line 128) | function setEditedModDetails(webview: vscode.Webview | undefined, data: ...
function setEditedModId (line 138) | function setEditedModId(webview: vscode.Webview | undefined, data: SetEd...
function updateDownloadProgress (line 148) | function updateDownloadProgress(webview: vscode.Webview | undefined, dat...
function updateInstalling (line 158) | function updateInstalling(webview: vscode.Webview | undefined, data: Upd...
function getInitialAppSettingsReply (line 171) | function getInitialAppSettingsReply(
function getInstalledModsReply (line 186) | function getInstalledModsReply(
function getFeaturedModsReply (line 201) | function getFeaturedModsReply(
function getRepositoryModsReply (line 216) | function getRepositoryModsReply(
function getModSourceDataReply (line 231) | function getModSourceDataReply(
function getRepositoryModSourceDataReply (line 246) | function getRepositoryModSourceDataReply(
function getModVersionsReply (line 261) | function getModVersionsReply(
function getModSettingsReply (line 276) | function getModSettingsReply(
function setModSettingsReply (line 291) | function setModSettingsReply(
function getModConfigReply (line 306) | function getModConfigReply(
function updateModConfigReply (line 321) | function updateModConfigReply(
function installModReply (line 336) | function installModReply(
function compileModReply (line 351) | function compileModReply(
function enableModReply (line 366) | function enableModReply(
function deleteModReply (line 381) | function deleteModReply(
function updateModRatingReply (line 396) | function updateModRatingReply(
function getAppSettingsReply (line 411) | function getAppSettingsReply(
function updateAppSettingsReply (line 426) | function updateAppSettingsReply(
function enableEditedModReply (line 441) | function enableEditedModReply(
function enableEditedModLoggingReply (line 456) | function enableEditedModLoggingReply(
function compileEditedModReply (line 471) | function compileEditedModReply(
function exitEditorModeReply (line 486) | function exitEditorModeReply(
function startUpdateReply (line 501) | function startUpdateReply(
function cancelUpdateReply (line 516) | function cancelUpdateReply(
FILE: src/vscode-windhawk/src/webviewIPCMessages.ts
type webviewIPCMessageType (line 6) | type webviewIPCMessageType =
type webviewIPCMessageCommon (line 12) | type webviewIPCMessageCommon = {
type webviewIPCMessage (line 18) | type webviewIPCMessage = webviewIPCMessageCommon & {
type webviewIPCMessageWithReply (line 24) | type webviewIPCMessageWithReply = webviewIPCMessageCommon & {
type webviewIPCReply (line 31) | type webviewIPCReply = webviewIPCMessageCommon & {
type webviewIPCEvent (line 38) | type webviewIPCEvent = webviewIPCMessageCommon & {
type webviewIPCMessageAny (line 44) | type webviewIPCMessageAny =
type NoData (line 53) | type NoData = Record<string, unknown>;
type ModConfig (line 55) | type ModConfig = {
type AppSettings (line 70) | type AppSettings = {
type ModMetadata (line 92) | type ModMetadata = Partial<{
type RepositoryDetails (line 109) | type RepositoryDetails = {
type AppUISettings (line 119) | type AppUISettings = {
type InitialSettingsValue (line 128) | type InitialSettingsValue =
type InitialSettingsArrayValue (line 135) | type InitialSettingsArrayValue = number[] | string[] | InitialSettings[];
type InitialSettingItem (line 137) | type InitialSettingItem = {
type InitialSettings (line 145) | type InitialSettings = InitialSettingItem[];
type EditModData (line 150) | type EditModData = {
type ForkModData (line 154) | type ForkModData = {
type GetInitialAppSettingsReplyData (line 162) | type GetInitialAppSettingsReplyData = {
type InstallModData (line 166) | type InstallModData = {
type InstallModReplyData (line 172) | type InstallModReplyData = {
type CompileModData (line 180) | type CompileModData = {
type CompileModReplyData (line 185) | type CompileModReplyData = {
type EnableModData (line 193) | type EnableModData = {
type EnableModReplyData (line 198) | type EnableModReplyData = {
type DeleteModData (line 204) | type DeleteModData = {
type DeleteModReplyData (line 208) | type DeleteModReplyData = {
type UpdateModRatingData (line 213) | type UpdateModRatingData = {
type UpdateModRatingReplyData (line 218) | type UpdateModRatingReplyData = {
type GetInstalledModsReplyData (line 224) | type GetInstalledModsReplyData = {
type GetFeaturedModsReplyData (line 236) | type GetFeaturedModsReplyData = {
type GetModSourceDataData (line 246) | type GetModSourceDataData = {
type GetModSourceDataReplyData (line 250) | type GetModSourceDataReplyData = {
type GetRepositoryModSourceDataData (line 260) | type GetRepositoryModSourceDataData = {
type GetRepositoryModSourceDataReplyData (line 265) | type GetRepositoryModSourceDataReplyData = {
type GetModVersionsData (line 276) | type GetModVersionsData = {
type GetModVersionsReplyData (line 280) | type GetModVersionsReplyData = {
type GetAppSettingsReplyData (line 289) | type GetAppSettingsReplyData = {
type UpdateAppSettingsData (line 293) | type UpdateAppSettingsData = {
type UpdateAppSettingsReplyData (line 297) | type UpdateAppSettingsReplyData = {
type GetModSettingsData (line 302) | type GetModSettingsData = {
type GetModSettingsReplyData (line 306) | type GetModSettingsReplyData = {
type SetModSettingsData (line 311) | type SetModSettingsData = {
type SetModSettingsReplyData (line 316) | type SetModSettingsReplyData = {
type GetModConfigData (line 321) | type GetModConfigData = {
type GetModConfigReplyData (line 325) | type GetModConfigReplyData = {
type UpdateModConfigData (line 330) | type UpdateModConfigData = {
type UpdateModConfigReplyData (line 335) | type UpdateModConfigReplyData = {
type GetRepositoryModsReplyData (line 340) | type GetRepositoryModsReplyData = {
type StartUpdateReplyData (line 358) | type StartUpdateReplyData = {
type CancelUpdateReplyData (line 363) | type CancelUpdateReplyData = {
type EnableEditedModData (line 367) | type EnableEditedModData = {
type EnableEditedModReplyData (line 371) | type EnableEditedModReplyData = {
type EnableEditedModLoggingData (line 376) | type EnableEditedModLoggingData = {
type EnableEditedModLoggingReplyData (line 380) | type EnableEditedModLoggingReplyData = {
type CompileEditedModData (line 385) | type CompileEditedModData = {
type CompileEditedModReplyData (line 390) | type CompileEditedModReplyData = {
type ExitEditorModeData (line 395) | type ExitEditorModeData = {
type ExitEditorModeReplyData (line 399) | type ExitEditorModeReplyData = {
type SetNewAppSettingsData (line 406) | type SetNewAppSettingsData = {
type UpdateDownloadProgressEventData (line 410) | type UpdateDownloadProgressEventData = {
type UpdateInstallingEventData (line 414) | type UpdateInstallingEventData = NoData;
type UpdateInstalledModsDetailsData (line 416) | type UpdateInstalledModsDetailsData = {
type SetNewModConfigData (line 426) | type SetNewModConfigData = {
type SetEditedModIdData (line 431) | type SetEditedModIdData = {
type SetEditedModDetailsData (line 435) | type SetEditedModDetailsData = {
FILE: src/windhawk/app/app.cpp
type Action (line 15) | enum class Action {
function wWinMain (line 55) | int WINAPI wWinMain(_In_ HINSTANCE hInstance,
function Initialize (line 136) | void Initialize() {
function Run (line 142) | void Run(Action action) {
function RunDaemon (line 239) | void RunDaemon() {
function CheckForUpdates (line 326) | void CheckForUpdates() {
function NotifyNewUpdatesFound (line 339) | void NotifyNewUpdatesFound() {
function NotifyAppSettingsChanged (line 344) | void NotifyAppSettingsChanged() {
function ExitApp (line 354) | void ExitApp(bool wait, DWORD timeout) {
function RestartApp (line 367) | void RestartApp(DWORD timeout, bool trayOnly) {
function RestartAppBg (line 389) | void RestartAppBg(DWORD timeout) {
function EnableSafeMode (line 420) | void EnableSafeMode() {
function WaitForRunningProcessesToTerminate (line 426) | void WaitForRunningProcessesToTerminate(DWORD timeout, bool windhawkBgOn...
function RunAsNewProcess (line 538) | void RunAsNewProcess(PCWSTR parameters) {
function RunAsAdmin (line 555) | bool RunAsAdmin(PCWSTR parameters) {
function PostCommandToPortableRunningDaemon (line 567) | bool PostCommandToPortableRunningDaemon(
function SetNamedEventForAllSessions (line 582) | void SetNamedEventForAllSessions(PCWSTR eventNamePrefix) {
function SetNamedEvent (line 607) | bool SetNamedEvent(PCWSTR eventName) {
function DoesParamExist (line 619) | bool DoesParamExist(PCWSTR param) {
function GetIntParam (line 629) | int GetIntParam(PCWSTR param) {
FILE: src/windhawk/app/engine_control.cpp
function BOOL (line 42) | BOOL EngineControl::HandleNewProcesses() {
FILE: src/windhawk/app/engine_control.h
function class (line 3) | class EngineControl {
FILE: src/windhawk/app/event_viewer_crash_monitor.cpp
function HANDLE (line 34) | HANDLE EventViewerCrashMonitor::GetEventHandle() const {
FILE: src/windhawk/app/event_viewer_crash_monitor.h
function class (line 3) | class EventViewerCrashMonitor {
FILE: src/windhawk/app/functions.cpp
type Functions (line 5) | namespace Functions {
type _UNICODE_STRING (line 9) | struct _UNICODE_STRING {
type _COUNTED_REASON_CONTEXT (line 16) | struct _COUNTED_REASON_CONTEXT {
type _UNICODE_STRING64 (line 32) | struct _UNICODE_STRING64 {
type _COUNTED_REASON_CONTEXT64 (line 38) | struct _COUNTED_REASON_CONTEXT64 {
type _POWER_REQUEST_TYPE_INTERNAL (line 55) | enum _POWER_REQUEST_TYPE_INTERNAL {
type _POWER_REQUEST_ACTION (line 69) | struct _POWER_REQUEST_ACTION {
function NTSTATUS (line 83) | NTSTATUS NtPowerInformation(_In_ POWER_INFORMATION_LEVEL InformationLe...
function BOOL (line 118) | BOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePr...
function BOOL (line 141) | BOOL SetDebugPrivilege(BOOL bEnablePrivilege) {
function HANDLE (line 151) | HANDLE CreateEventForMediumIntegrity(PCWSTR eventName, BOOL manualRese...
function BOOL (line 181) | BOOL IsRunAsAdmin() {
function PCWSTR (line 208) | PCWSTR LoadStrFromRsrc(UINT uStrId) {
function SplitString (line 217) | std::vector<std::wstring> SplitString(std::wstring_view s, WCHAR delim) {
function SplitStringToViews (line 226) | std::vector<std::wstring_view> SplitStringToViews(std::wstring_view s,
function ReplaceAll (line 237) | std::wstring ReplaceAll(std::wstring_view source,
function UINT (line 281) | UINT GetDpiForWindowWithFallback(HWND hWnd) {
function GetSystemMetricsForDpiWithFallback (line 306) | int GetSystemMetricsForDpiWithFallback(int nIndex, UINT dpi) {
function GetSystemMetricsForWindow (line 325) | int GetSystemMetricsForWindow(HWND hWnd, int nIndex) {
function HRESULT (line 330) | HRESULT SetThreadDescriptionIfAvailable(HANDLE hThread,
function IsProcessFrozen (line 350) | bool IsProcessFrozen(HANDLE hProcess) {
function GetNtVersionNumbers (line 410) | void GetNtVersionNumbers(ULONG* pNtMajorVersion,
function IsWindowsVersionOrGreaterWithBuildNumber (line 452) | bool IsWindowsVersionOrGreaterWithBuildNumber(WORD wMajorVersion,
function NTSTATUS (line 486) | NTSTATUS CreateExecutionRequiredRequest(_In_ HANDLE ProcessHandle,
FILE: src/windhawk/app/functions.h
function namespace (line 3) | namespace Functions {
FILE: src/windhawk/app/libraries/nlohmann/json.hpp
type nlohmann (line 81) | namespace nlohmann
type detail (line 83) | namespace detail
type position_t (line 86) | struct position_t
class exception (line 2352) | class exception : public std::exception
method JSON_HEDLEY_RETURNS_NON_NULL (line 2356) | JSON_HEDLEY_RETURNS_NON_NULL
method JSON_HEDLEY_NON_NULL (line 2366) | JSON_HEDLEY_NON_NULL(3)
method name (line 2369) | static std::string name(const std::string& ename, int id_)
class parse_error (line 2424) | class parse_error : public exception
method parse_error (line 2436) | static parse_error create(int id_, const position_t& pos, const st...
method parse_error (line 2443) | static parse_error create(int id_, std::size_t byte_, const std::s...
method parse_error (line 2463) | parse_error(int id_, std::size_t byte_, const char* what_arg)
method position_string (line 2466) | static std::string position_string(const position_t& pos)
class invalid_iterator (line 2510) | class invalid_iterator : public exception
method invalid_iterator (line 2513) | static invalid_iterator create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2520) | JSON_HEDLEY_NON_NULL(3)
class type_error (line 2564) | class type_error : public exception
method type_error (line 2567) | static type_error create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2574) | JSON_HEDLEY_NON_NULL(3)
class out_of_range (line 2611) | class out_of_range : public exception
method out_of_range (line 2614) | static out_of_range create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2621) | JSON_HEDLEY_NON_NULL(3)
class other_error (line 2649) | class other_error : public exception
method other_error (line 2652) | static other_error create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2659) | JSON_HEDLEY_NON_NULL(3)
type index_sequence (line 2687) | struct index_sequence
method size (line 2691) | static constexpr std::size_t size() noexcept
type merge_and_renumber (line 2698) | struct merge_and_renumber
type make_index_sequence (line 2705) | struct make_index_sequence
type make_index_sequence<0> (line 2709) | struct make_index_sequence<0> : index_sequence<> {}
type make_index_sequence<1> (line 2710) | struct make_index_sequence<1> : index_sequence<0> {}
type priority_tag (line 2716) | struct priority_tag : priority_tag < N - 1 > {}
type priority_tag<0> (line 2717) | struct priority_tag<0> {}
type static_const (line 2721) | struct static_const
type make_void (line 2750) | struct make_void
type iterator_types (line 2766) | struct iterator_types {}
type iterator_types <
It,
void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
typename It::reference, typename It::iterator_category >> (line 2769) | struct iterator_types <
type iterator_traits (line 2784) | struct iterator_traits
type iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >> (line 2789) | struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
type iterator_traits<T*, enable_if_t<std::is_object<T>::value>> (line 2795) | struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>>
type nonesuch (line 2823) | struct nonesuch
method nonesuch (line 2825) | nonesuch() = delete;
method nonesuch (line 2827) | nonesuch(nonesuch const&) = delete;
method nonesuch (line 2828) | nonesuch(nonesuch const&&) = delete;
type detector (line 2837) | struct detector
type is_basic_json (line 2977) | struct is_basic_json : std::false_type {}
class json_ref (line 2987) | class json_ref
method json_ref (line 12532) | json_ref(value_type&& value)
method json_ref (line 12538) | json_ref(const value_type& value)
method json_ref (line 12543) | json_ref(std::initializer_list<json_ref> init)
method json_ref (line 12552) | json_ref(Args && ... args)
method json_ref (line 12559) | json_ref(json_ref&&) = default;
method json_ref (line 12560) | json_ref(const json_ref&) = delete;
method json_ref (line 12561) | json_ref& operator=(const json_ref&) = delete;
method json_ref (line 12562) | json_ref& operator=(json_ref&&) = delete;
method value_type (line 12565) | value_type moved_or_copied() const
method value_type (line 12574) | value_type const& operator*() const
method value_type (line 12579) | value_type const* operator->() const
type is_json_ref (line 2990) | struct is_json_ref : std::false_type {}
type is_json_ref<json_ref<T>> (line 2993) | struct is_json_ref<json_ref<T>> : std::true_type {}
type has_from_json (line 3034) | struct has_from_json : std::false_type {}
type is_getable (line 3041) | struct is_getable
type has_from_json < BasicJsonType, T,
enable_if_t < !is_basic_json<T>::value >> (line 3047) | struct has_from_json < BasicJsonType, T,
type has_non_default_from_json (line 3060) | struct has_non_default_from_json : std::false_type {}
type has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >> (line 3063) | struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !...
type has_to_json (line 3075) | struct has_to_json : std::false_type {}
type has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >> (line 3078) | struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json<...
type is_iterator_traits (line 3093) | struct is_iterator_traits : std::false_type {}
type is_iterator_traits<iterator_traits<T>> (line 3096) | struct is_iterator_traits<iterator_traits<T>>
type is_complete_type (line 3113) | struct is_complete_type : std::false_type {}
type is_complete_type<T, decltype(void(sizeof(T)))> (line 3116) | struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_ty...
type is_compatible_object_type_impl (line 3120) | struct is_compatible_object_type_impl : std::false_type {}
type is_compatible_object_type_impl <
BasicJsonType, CompatibleObjectType,
enable_if_t < is_detected<mapped_type_t, CompatibleObjectType>::value&&
is_detected<key_type_t, CompatibleObjectType>::value >> (line 3123) | struct is_compatible_object_type_impl <
type is_compatible_object_type (line 3140) | struct is_compatible_object_type
type is_constructible_object_type_impl (line 3145) | struct is_constructible_object_type_impl : std::false_type {}
type is_constructible_object_type_impl <
BasicJsonType, ConstructibleObjectType,
enable_if_t < is_detected<mapped_type_t, ConstructibleObjectType>::value&&
is_detected<key_type_t, ConstructibleObjectType>::value >> (line 3148) | struct is_constructible_object_type_impl <
type is_constructible_object_type (line 3172) | struct is_constructible_object_type
type is_compatible_string_type_impl (line 3178) | struct is_compatible_string_type_impl : std::false_type {}
type is_compatible_string_type_impl <
BasicJsonType, CompatibleStringType,
enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
value_type_t, CompatibleStringType>::value >> (line 3181) | struct is_compatible_string_type_impl <
type is_compatible_string_type (line 3191) | struct is_compatible_string_type
type is_constructible_string_type_impl (line 3196) | struct is_constructible_string_type_impl : std::false_type {}
type is_constructible_string_type_impl <
BasicJsonType, ConstructibleStringType,
enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
value_type_t, ConstructibleStringType>::value >> (line 3199) | struct is_constructible_string_type_impl <
type is_constructible_string_type (line 3210) | struct is_constructible_string_type
type is_compatible_array_type_impl (line 3214) | struct is_compatible_array_type_impl : std::false_type {}
type is_compatible_array_type (line 3233) | struct is_compatible_array_type
type is_constructible_array_type_impl (line 3237) | struct is_constructible_array_type_impl : std::false_type {}
type is_constructible_array_type_impl <
BasicJsonType, ConstructibleArrayType,
enable_if_t<std::is_same<ConstructibleArrayType,
typename BasicJsonType::value_type>::value >> (line 3240) | struct is_constructible_array_type_impl <
type is_constructible_array_type_impl <
BasicJsonType, ConstructibleArrayType,
enable_if_t < !std::is_same<ConstructibleArrayType,
typename BasicJsonType::value_type>::value&&
std::is_default_constructible<ConstructibleArrayType>::value&&
(std::is_move_assignable<ConstructibleArrayType>::value ||
std::is_copy_assignable<ConstructibleArrayType>::value)&&
is_detected<value_type_t, ConstructibleArrayType>::value&&
is_detected<iterator_t, ConstructibleArrayType>::value&&
is_complete_type <
detected_t<value_type_t, ConstructibleArrayType >>::value >> (line 3247) | struct is_constructible_array_type_impl <
type is_constructible_array_type (line 3276) | struct is_constructible_array_type
type is_compatible_integer_type_impl (line 3281) | struct is_compatible_integer_type_impl : std::false_type {}
type is_compatible_integer_type_impl <
RealIntegerType, CompatibleNumberIntegerType,
enable_if_t < std::is_integral<RealIntegerType>::value&&
std::is_integral<CompatibleNumberIntegerType>::value&&
!std::is_same<bool, CompatibleNumberIntegerType>::value >> (line 3284) | struct is_compatible_integer_type_impl <
type is_compatible_integer_type (line 3302) | struct is_compatible_integer_type
type is_compatible_type_impl (line 3307) | struct is_compatible_type_impl: std::false_type {}
type is_compatible_type_impl <
BasicJsonType, CompatibleType,
enable_if_t<is_complete_type<CompatibleType>::value >> (line 3310) | struct is_compatible_type_impl <
type is_compatible_type (line 3319) | struct is_compatible_type
type conjunction (line 3323) | struct conjunction : std::true_type { }
type conjunction<B1> (line 3324) | struct conjunction<B1> : B1 { }
type is_constructible_tuple (line 3330) | struct is_constructible_tuple : std::false_type {}
type value_t (line 3377) | enum class value_t : std::uint8_t
function from_json (line 3426) | void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
function get_arithmetic_value (line 3440) | void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 3466) | void from_json(const BasicJsonType& j, typename BasicJsonType::boole...
function from_json (line 3476) | void from_json(const BasicJsonType& j, typename BasicJsonType::strin...
function from_json (line 3492) | void from_json(const BasicJsonType& j, ConstructibleStringType& s)
function from_json (line 3503) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3509) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3515) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3522) | void from_json(const BasicJsonType& j, EnumType& e)
function from_json (line 3532) | void from_json(const BasicJsonType& j, std::forward_list<T, Allocato...
function from_json (line 3549) | void from_json(const BasicJsonType& j, std::valarray<T>& l)
function from_json (line 3564) | auto from_json(const BasicJsonType& j, T (&arr)[N])
function from_json_array_impl (line 3574) | void from_json_array_impl(const BasicJsonType& j, typename BasicJson...
function from_json_array_impl (line 3580) | auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& ...
function from_json_array_impl (line 3591) | auto from_json_array_impl(const BasicJsonType& j, ConstructibleArray...
function from_json_array_impl (line 3612) | void from_json_array_impl(const BasicJsonType& j, ConstructibleArray...
function from_json (line 3637) | auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
function from_json (line 3652) | void from_json(const BasicJsonType& j, typename BasicJsonType::binar...
function from_json (line 3664) | void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
function from_json (line 3696) | void from_json(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 3727) | void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
function from_json_tuple_impl (line 3733) | void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_se...
function from_json (line 3739) | void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
function from_json (line 3747) | void from_json(const BasicJsonType& j, std::map<Key, Value, Compare,...
function from_json (line 3767) | void from_json(const BasicJsonType& j, std::unordered_map<Key, Value...
type from_json_fn (line 3784) | struct from_json_fn
function int_to_string (line 3835) | void int_to_string( string_type& target, std::size_t value )
class iteration_proxy_value (line 3841) | class iteration_proxy_value
method iteration_proxy_value (line 3864) | explicit iteration_proxy_value(IteratorType it) noexcept : anchor(...
method iteration_proxy_value (line 3867) | iteration_proxy_value& operator*()
method iteration_proxy_value (line 3873) | iteration_proxy_value& operator++()
method string_type (line 3894) | const string_type& key() const
method value (line 3922) | typename IteratorType::reference value() const
class iteration_proxy (line 3929) | class iteration_proxy
method iteration_proxy (line 3937) | explicit iteration_proxy(typename IteratorType::reference cont) no...
method begin (line 3941) | iteration_proxy_value<IteratorType> begin() noexcept
method end (line 3947) | iteration_proxy_value<IteratorType> end() noexcept
function get (line 3956) | auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>...
function get (line 3964) | auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>...
type external_constructor (line 4014) | struct external_constructor
type external_constructor<value_t::boolean> (line 4017) | struct external_constructor<value_t::boolean>
method construct (line 4020) | static void construct(BasicJsonType& j, typename BasicJsonType::bo...
type external_constructor<value_t::string> (line 4029) | struct external_constructor<value_t::string>
method construct (line 4032) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4040) | static void construct(BasicJsonType& j, typename BasicJsonType::st...
method construct (line 4050) | static void construct(BasicJsonType& j, const CompatibleStringType...
type external_constructor<value_t::binary> (line 4059) | struct external_constructor<value_t::binary>
method construct (line 4062) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4071) | static void construct(BasicJsonType& j, typename BasicJsonType::bi...
type external_constructor<value_t::number_float> (line 4081) | struct external_constructor<value_t::number_float>
method construct (line 4084) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_unsigned> (line 4093) | struct external_constructor<value_t::number_unsigned>
method construct (line 4096) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_integer> (line 4105) | struct external_constructor<value_t::number_integer>
method construct (line 4108) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::array> (line 4117) | struct external_constructor<value_t::array>
method construct (line 4120) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4128) | static void construct(BasicJsonType& j, typename BasicJsonType::ar...
method construct (line 4138) | static void construct(BasicJsonType& j, const CompatibleArrayType&...
method construct (line 4148) | static void construct(BasicJsonType& j, const std::vector<bool>& arr)
method construct (line 4162) | static void construct(BasicJsonType& j, const std::valarray<T>& arr)
type external_constructor<value_t::object> (line 4176) | struct external_constructor<value_t::object>
method construct (line 4179) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4187) | static void construct(BasicJsonType& j, typename BasicJsonType::ob...
method construct (line 4196) | static void construct(BasicJsonType& j, const CompatibleObjectType...
function to_json (line 4213) | void to_json(BasicJsonType& j, T b) noexcept
function to_json (line 4220) | void to_json(BasicJsonType& j, const CompatibleString& s)
function to_json (line 4226) | void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
function to_json (line 4233) | void to_json(BasicJsonType& j, FloatType val) noexcept
function to_json (line 4240) | void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noe...
function to_json (line 4247) | void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noex...
function to_json (line 4254) | void to_json(BasicJsonType& j, EnumType e) noexcept
function to_json (line 4261) | void to_json(BasicJsonType& j, const std::vector<bool>& e)
function to_json (line 4274) | void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
function to_json (line 4280) | void to_json(BasicJsonType& j, const typename BasicJsonType::binary_...
function to_json (line 4287) | void to_json(BasicJsonType& j, const std::valarray<T>& arr)
function to_json (line 4293) | void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
function to_json (line 4300) | void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
function to_json (line 4306) | void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
function to_json (line 4316) | void to_json(BasicJsonType& j, const T(&arr)[N])
function to_json (line 4322) | void to_json(BasicJsonType& j, const std::pair<T1, T2>& p)
function to_json (line 4330) | void to_json(BasicJsonType& j, const T& b)
function to_json_tuple_impl (line 4336) | void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequ...
function to_json (line 4342) | void to_json(BasicJsonType& j, const T& t)
type to_json_fn (line 4347) | struct to_json_fn
function combine (line 4595) | inline std::size_t combine(std::size_t seed, std::size_t h) noexcept
function hash (line 4613) | std::size_t hash(const BasicJsonType& j)
type input_format_t (line 4744) | enum class input_format_t { json, cbor, msgpack, ubjson, bson }
class file_input_adapter (line 4754) | class file_input_adapter
method file_input_adapter (line 4760) | explicit file_input_adapter(std::FILE* f) noexcept
method file_input_adapter (line 4765) | file_input_adapter(const file_input_adapter&) = delete;
method file_input_adapter (line 4766) | file_input_adapter(file_input_adapter&&) = default;
method file_input_adapter (line 4767) | file_input_adapter& operator=(const file_input_adapter&) = delete;
method file_input_adapter (line 4768) | file_input_adapter& operator=(file_input_adapter&&) = delete;
method get_character (line 4770) | std::char_traits<char>::int_type get_character() noexcept
class input_stream_adapter (line 4790) | class input_stream_adapter
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
class iterator_input_adapter (line 4843) | class iterator_input_adapter
method iterator_input_adapter (line 4848) | iterator_input_adapter(IteratorType first, IteratorType last)
method get_character (line 4851) | typename std::char_traits<char_type>::int_type get_character()
method empty (line 4872) | bool empty() const
type wide_string_input_helper (line 4881) | struct wide_string_input_helper
type wide_string_input_helper<BaseInputAdapter, 4> (line 4884) | struct wide_string_input_helper<BaseInputAdapter, 4>
method fill_buffer (line 4887) | static void fill_buffer(BaseInputAdapter& input,
type wide_string_input_helper<BaseInputAdapter, 2> (line 4942) | struct wide_string_input_helper<BaseInputAdapter, 2>
method fill_buffer (line 4945) | static void fill_buffer(BaseInputAdapter& input,
class wide_string_input_adapter (line 5005) | class wide_string_input_adapter
method wide_string_input_adapter (line 5010) | wide_string_input_adapter(BaseInputAdapter base)
method get_character (line 5013) | typename std::char_traits<char>::int_type get_character() noexcept
method fill_buffer (line 5034) | void fill_buffer()
type iterator_input_adapter_factory (line 5050) | struct iterator_input_adapter_factory
method adapter_type (line 5056) | static adapter_type create(IteratorType first, IteratorType last)
type is_iterator_of_multibyte (line 5063) | struct is_iterator_of_multibyte
type iterator_input_adapter_factory<IteratorType, enable_if_t<is_iterator_of_multibyte<IteratorType>::value>> (line 5073) | struct iterator_input_adapter_factory<IteratorType, enable_if_t<is_i...
method adapter_type (line 5080) | static adapter_type create(IteratorType first, IteratorType last)
function input_adapter (line 5088) | typename iterator_input_adapter_factory<IteratorType>::adapter_type ...
function input_adapter (line 5096) | auto input_adapter(const ContainerType& container) -> decltype(input...
function file_input_adapter (line 5106) | inline file_input_adapter input_adapter(std::FILE* file)
method file_input_adapter (line 4760) | explicit file_input_adapter(std::FILE* f) noexcept
method file_input_adapter (line 4765) | file_input_adapter(const file_input_adapter&) = delete;
method file_input_adapter (line 4766) | file_input_adapter(file_input_adapter&&) = default;
method file_input_adapter (line 4767) | file_input_adapter& operator=(const file_input_adapter&) = delete;
method file_input_adapter (line 4768) | file_input_adapter& operator=(file_input_adapter&&) = delete;
method get_character (line 4770) | std::char_traits<char>::int_type get_character() noexcept
function input_stream_adapter (line 5111) | inline input_stream_adapter input_adapter(std::istream& stream)
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
function input_stream_adapter (line 5116) | inline input_stream_adapter input_adapter(std::istream&& stream)
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
function contiguous_bytes_input_adapter (line 5131) | contiguous_bytes_input_adapter input_adapter(CharT b)
function input_adapter (line 5139) | auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, a...
class span_input_adapter (line 5147) | class span_input_adapter
method span_input_adapter (line 5156) | span_input_adapter(CharT b, std::size_t l)
method span_input_adapter (line 5163) | span_input_adapter(IteratorType first, IteratorType last)
method contiguous_bytes_input_adapter (line 5166) | contiguous_bytes_input_adapter&& get()
class json_sax_dom_parser (line 5328) | class json_sax_dom_parser
method json_sax_dom_parser (line 5342) | explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_ex...
method json_sax_dom_parser (line 5347) | json_sax_dom_parser(const json_sax_dom_parser&) = delete;
method json_sax_dom_parser (line 5348) | json_sax_dom_parser(json_sax_dom_parser&&) = default;
method json_sax_dom_parser (line 5349) | json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete;
method json_sax_dom_parser (line 5350) | json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default;
method null (line 5353) | bool null()
method boolean (line 5359) | bool boolean(bool val)
method number_integer (line 5365) | bool number_integer(number_integer_t val)
method number_unsigned (line 5371) | bool number_unsigned(number_unsigned_t val)
method number_float (line 5377) | bool number_float(number_float_t val, const string_t& /*unused*/)
method string (line 5383) | bool string(string_t& val)
method binary (line 5389) | bool binary(binary_t& val)
method start_object (line 5395) | bool start_object(std::size_t len)
method key (line 5408) | bool key(string_t& val)
method end_object (line 5415) | bool end_object()
method start_array (line 5421) | bool start_array(std::size_t len)
method end_array (line 5434) | bool end_array()
method parse_error (line 5441) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
method is_errored (line 5453) | constexpr bool is_errored() const
method JSON_HEDLEY_RETURNS_NON_NULL (line 5466) | JSON_HEDLEY_RETURNS_NON_NULL
class json_sax_dom_callback_parser (line 5502) | class json_sax_dom_callback_parser
method json_sax_dom_callback_parser (line 5513) | json_sax_dom_callback_parser(BasicJsonType& r,
method json_sax_dom_callback_parser (line 5522) | json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) ...
method json_sax_dom_callback_parser (line 5523) | json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = def...
method json_sax_dom_callback_parser (line 5524) | json_sax_dom_callback_parser& operator=(const json_sax_dom_callbac...
method json_sax_dom_callback_parser (line 5525) | json_sax_dom_callback_parser& operator=(json_sax_dom_callback_pars...
method null (line 5528) | bool null()
method boolean (line 5534) | bool boolean(bool val)
method number_integer (line 5540) | bool number_integer(number_integer_t val)
method number_unsigned (line 5546) | bool number_unsigned(number_unsigned_t val)
method number_float (line 5552) | bool number_float(number_float_t val, const string_t& /*unused*/)
method string (line 5558) | bool string(string_t& val)
method binary (line 5564) | bool binary(binary_t& val)
method start_object (line 5570) | bool start_object(std::size_t len)
method key (line 5588) | bool key(string_t& val)
method end_object (line 5605) | bool end_object()
method start_array (line 5634) | bool start_array(std::size_t len)
method end_array (line 5651) | bool end_array()
method parse_error (line 5680) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
method is_errored (line 5692) | constexpr bool is_errored() const
method handle_value (line 5714) | std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool...
class json_sax_acceptor (line 5798) | class json_sax_acceptor
method null (line 5807) | bool null()
method boolean (line 5812) | bool boolean(bool /*unused*/)
method number_integer (line 5817) | bool number_integer(number_integer_t /*unused*/)
method number_unsigned (line 5822) | bool number_unsigned(number_unsigned_t /*unused*/)
method number_float (line 5827) | bool number_float(number_float_t /*unused*/, const string_t& /*unu...
method string (line 5832) | bool string(string_t& /*unused*/)
method binary (line 5837) | bool binary(binary_t& /*unused*/)
method start_object (line 5842) | bool start_object(std::size_t /*unused*/ = std::size_t(-1))
method key (line 5847) | bool key(string_t& /*unused*/)
method end_object (line 5852) | bool end_object()
method start_array (line 5857) | bool start_array(std::size_t /*unused*/ = std::size_t(-1))
method end_array (line 5862) | bool end_array()
method parse_error (line 5867) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
class lexer_base (line 5905) | class lexer_base
type token_type (line 5909) | enum class token_type
class lexer (line 5982) | class lexer : public lexer_base<BasicJsonType>
method lexer (line 5994) | explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ =...
method lexer (line 6001) | lexer(const lexer&) = delete;
method lexer (line 6002) | lexer(lexer&&) = default;
method lexer (line 6003) | lexer& operator=(lexer&) = delete;
method lexer (line 6004) | lexer& operator=(lexer&&) = default;
method JSON_HEDLEY_PURE (line 6013) | JSON_HEDLEY_PURE
method get_codepoint (line 6040) | int get_codepoint()
method next_byte_in_range (line 6088) | bool next_byte_in_range(std::initializer_list<char_int_type> ranges)
method token_type (line 6125) | token_type scan_string()
method scan_comment (line 6715) | bool scan_comment()
method strtof (line 6783) | static void strtof(float& f, const char* str, char** endptr) noexcept
method strtof (line 6789) | static void strtof(double& f, const char* str, char** endptr) noex...
method strtof (line 6795) | static void strtof(long double& f, const char* str, char** endptr)...
method token_type (line 6840) | token_type scan_number() // lgtm [cpp/use-of-goto]
type is_sax (line 7573) | struct is_sax
type is_sax_static_asserts (line 7604) | struct is_sax_static_asserts
type cbor_tag_handler_t (line 7668) | enum class cbor_tag_handler_t
function little_endianess (line 7681) | static inline bool little_endianess(int num = 1) noexcept
class binary_reader (line 7695) | class binary_reader
method binary_reader (line 7712) | explicit binary_reader(InputAdapterType&& adapter) : ia(std::move(...
method binary_reader (line 7718) | binary_reader(const binary_reader&) = delete;
method binary_reader (line 7719) | binary_reader(binary_reader&&) = default;
method binary_reader (line 7720) | binary_reader& operator=(const binary_reader&) = delete;
method binary_reader (line 7721) | binary_reader& operator=(binary_reader&&) = default;
method JSON_HEDLEY_NON_NULL (line 7732) | JSON_HEDLEY_NON_NULL(3)
method parse_bson_internal (line 7794) | bool parse_bson_internal()
method get_bson_cstr (line 7819) | bool get_bson_cstr(string_t& result)
method get_bson_string (line 7849) | bool get_bson_string(const NumberType len, string_t& result)
method get_bson_binary (line 7870) | bool get_bson_binary(const NumberType len, binary_t& result)
method parse_bson_element_internal (line 7896) | bool parse_bson_element_internal(const char_int_type element_type,
method parse_bson_element_list (line 7974) | bool parse_bson_element_list(const bool is_array)
method parse_bson_array (line 8012) | bool parse_bson_array()
method parse_cbor_internal (line 8042) | bool parse_cbor_internal(const bool get_char,
method get_cbor_string (line 8487) | bool get_cbor_string(string_t& result)
method get_cbor_binary (line 8582) | bool get_cbor_binary(binary_t& result)
method get_cbor_array (line 8676) | bool get_cbor_array(const std::size_t len,
method get_cbor_object (line 8714) | bool get_cbor_object(const std::size_t len,
method parse_msgpack_internal (line 8767) | bool parse_msgpack_internal()
method get_msgpack_string (line 9147) | bool get_msgpack_string(string_t& result)
method get_msgpack_binary (line 9229) | bool get_msgpack_binary(binary_t& result)
method get_msgpack_array (line 9340) | bool get_msgpack_array(const std::size_t len)
method get_msgpack_object (line 9362) | bool get_msgpack_object(const std::size_t len)
method parse_ubjson_internal (line 9399) | bool parse_ubjson_internal(const bool get_char = true)
method get_ubjson_string (line 9418) | bool get_ubjson_string(string_t& result, const bool get_char = true)
method get_ubjson_size_value (line 9472) | bool get_ubjson_size_value(std::size_t& result)
method get_ubjson_size_type (line 9549) | bool get_ubjson_size_type(std::pair<std::size_t, char_int_type>& r...
method get_ubjson_value (line 9590) | bool get_ubjson_value(const char_int_type prefix)
method get_ubjson_array (line 9691) | bool get_ubjson_array()
method get_ubjson_object (line 9753) | bool get_ubjson_object()
method get_ubjson_high_precision_number (line 9828) | bool get_ubjson_high_precision_number()
method char_int_type (line 9890) | char_int_type get()
method char_int_type (line 9899) | char_int_type get_ignore_noop()
method get_number (line 9924) | bool get_number(const input_format_t format, NumberType& result)
method get_string (line 9967) | bool get_string(const input_format_t format,
method get_binary (line 10000) | bool get_binary(const input_format_t format,
method JSON_HEDLEY_NON_NULL (line 10023) | JSON_HEDLEY_NON_NULL(3)
method get_token_string (line 10037) | std::string get_token_string() const
method exception_message (line 10050) | std::string exception_message(const input_format_t format,
type parse_event_t (line 10137) | enum class parse_event_t : uint8_t
class parser (line 10163) | class parser
method parser (line 10174) | explicit parser(InputAdapterType&& adapter,
method parse (line 10196) | void parse(const bool strict, BasicJsonType& result)
method accept (line 10257) | bool accept(const bool strict = true)
method sax_parse (line 10265) | bool sax_parse(SAX* sax, const bool strict = true)
method sax_parse_internal (line 10285) | bool sax_parse_internal(SAX* sax)
method token_type (line 10567) | token_type get_token()
method exception_message (line 10572) | std::string exception_message(const token_type expected, const std...
class primitive_iterator_t (line 10636) | class primitive_iterator_t
method difference_type (line 10647) | constexpr difference_type get_value() const noexcept
method set_begin (line 10653) | void set_begin() noexcept
method set_end (line 10659) | void set_end() noexcept
method is_begin (line 10665) | constexpr bool is_begin() const noexcept
method is_end (line 10671) | constexpr bool is_end() const noexcept
method primitive_iterator_t (line 10686) | primitive_iterator_t operator+(difference_type n) noexcept
method difference_type (line 10693) | constexpr difference_type operator-(primitive_iterator_t lhs, prim...
method primitive_iterator_t (line 10698) | primitive_iterator_t& operator++() noexcept
method primitive_iterator_t (line 10704) | primitive_iterator_t const operator++(int) noexcept
method primitive_iterator_t (line 10711) | primitive_iterator_t& operator--() noexcept
method primitive_iterator_t (line 10717) | primitive_iterator_t const operator--(int) noexcept
method primitive_iterator_t (line 10724) | primitive_iterator_t& operator+=(difference_type n) noexcept
method primitive_iterator_t (line 10730) | primitive_iterator_t& operator-=(difference_type n) noexcept
type internal_iterator (line 10750) | struct internal_iterator
class iteration_proxy (line 10788) | class iteration_proxy
method iteration_proxy (line 3937) | explicit iteration_proxy(typename IteratorType::reference cont) no...
method begin (line 3941) | iteration_proxy_value<IteratorType> begin() noexcept
method end (line 3947) | iteration_proxy_value<IteratorType> end() noexcept
class iteration_proxy_value (line 10789) | class iteration_proxy_value
method iteration_proxy_value (line 3864) | explicit iteration_proxy_value(IteratorType it) noexcept : anchor(...
method iteration_proxy_value (line 3867) | iteration_proxy_value& operator*()
method iteration_proxy_value (line 3873) | iteration_proxy_value& operator++()
method string_type (line 3894) | const string_type& key() const
method value (line 3922) | typename IteratorType::reference value() const
class iter_impl (line 10808) | class iter_impl
method iter_impl (line 10846) | iter_impl() = default;
method iter_impl (line 10854) | explicit iter_impl(pointer object) noexcept : m_object(object)
method iter_impl (line 10896) | iter_impl(const iter_impl<const BasicJsonType>& other) noexcept
method iter_impl (line 10906) | iter_impl& operator=(const iter_impl<const BasicJsonType>& other) ...
method iter_impl (line 10918) | iter_impl(const iter_impl<typename std::remove_const<BasicJsonType...
method iter_impl (line 10928) | iter_impl& operator=(const iter_impl<typename std::remove_const<Ba...
method set_begin (line 10940) | void set_begin() noexcept
method set_end (line 10977) | void set_end() noexcept
method reference (line 11008) | reference operator*() const
method pointer (line 11045) | pointer operator->() const
method iter_impl (line 11079) | iter_impl const operator++(int)
method iter_impl (line 11090) | iter_impl& operator++()
method iter_impl (line 11122) | iter_impl const operator--(int)
method iter_impl (line 11133) | iter_impl& operator--()
method iter_impl (line 11255) | iter_impl& operator+=(difference_type i)
method iter_impl (line 11284) | iter_impl& operator-=(difference_type i)
method iter_impl (line 11293) | iter_impl operator+(difference_type i) const
method iter_impl (line 11304) | iter_impl operator+(difference_type i, const iter_impl& it)
method iter_impl (line 11315) | iter_impl operator-(difference_type i) const
method difference_type (line 11326) | difference_type operator-(const iter_impl& other) const
method reference (line 11347) | reference operator[](difference_type n) const
method reference (line 11394) | reference value() const
class json_reverse_iterator (line 11444) | class json_reverse_iterator : public std::reverse_iterator<Base>
method json_reverse_iterator (line 11454) | explicit json_reverse_iterator(const typename base_iterator::itera...
method json_reverse_iterator (line 11458) | explicit json_reverse_iterator(const base_iterator& it) noexcept :...
method json_reverse_iterator (line 11461) | json_reverse_iterator const operator++(int)
method json_reverse_iterator (line 11467) | json_reverse_iterator& operator++()
method json_reverse_iterator (line 11473) | json_reverse_iterator const operator--(int)
method json_reverse_iterator (line 11479) | json_reverse_iterator& operator--()
method json_reverse_iterator (line 11485) | json_reverse_iterator& operator+=(difference_type i)
method json_reverse_iterator (line 11491) | json_reverse_iterator operator+(difference_type i) const
method json_reverse_iterator (line 11497) | json_reverse_iterator operator-(difference_type i) const
method difference_type (line 11503) | difference_type operator-(const json_reverse_iterator& other) const
method reference (line 11509) | reference operator[](difference_type n) const
method key (line 11515) | auto key() const -> decltype(std::declval<Base>().key())
method reference (line 11522) | reference value() const
class json_ref (line 12527) | class json_ref
method json_ref (line 12532) | json_ref(value_type&& value)
method json_ref (line 12538) | json_ref(const value_type& value)
method json_ref (line 12543) | json_ref(std::initializer_list<json_ref> init)
method json_ref (line 12552) | json_ref(Args && ... args)
method json_ref (line 12559) | json_ref(json_ref&&) = default;
method json_ref (line 12560) | json_ref(const json_ref&) = delete;
method json_ref (line 12561) | json_ref& operator=(const json_ref&) = delete;
method json_ref (line 12562) | json_ref& operator=(json_ref&&) = delete;
method value_type (line 12565) | value_type moved_or_copied() const
method value_type (line 12574) | value_type const& operator*() const
method value_type (line 12579) | value_type const* operator->() const
type output_adapter_protocol (line 12632) | struct output_adapter_protocol
class output_vector_adapter (line 12645) | class output_vector_adapter : public output_adapter_protocol<CharType>
method output_vector_adapter (line 12648) | explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
method write_character (line 12652) | void write_character(CharType c) override
method JSON_HEDLEY_NON_NULL (line 12657) | JSON_HEDLEY_NON_NULL(2)
class output_stream_adapter (line 12669) | class output_stream_adapter : public output_adapter_protocol<CharType>
method output_stream_adapter (line 12672) | explicit output_stream_adapter(std::basic_ostream<CharType>& s) no...
method write_character (line 12676) | void write_character(CharType c) override
method JSON_HEDLEY_NON_NULL (line 12681) | JSON_HEDLEY_NON_NULL(2)
class output_string_adapter (line 12693) | class output_string_adapter : public output_adapter_protocol<CharType>
method output_string_adapter (line 12696) | explicit output_string_adapter(StringType& s) noexcept
method write_character (line 12700) | void write_character(CharType c) override
method JSON_HEDLEY_NON_NULL (line 12705) | JSON_HEDLEY_NON_NULL(2)
class output_adapter (line 12716) | class output_adapter
method output_adapter (line 12719) | output_adapter(std::vector<CharType>& vec)
method output_adapter (line 12722) | output_adapter(std::basic_ostream<CharType>& s)
method output_adapter (line 12725) | output_adapter(StringType& s)
class binary_writer (line 12752) | class binary_writer
method binary_writer (line 12764) | explicit binary_writer(output_adapter_t<CharType> adapter) : oa(ad...
method write_bson (line 12773) | void write_bson(const BasicJsonType& j)
method write_cbor (line 12793) | void write_cbor(const BasicJsonType& j)
method write_msgpack (line 13098) | void write_msgpack(const BasicJsonType& j)
method write_ubjson (line 13422) | void write_ubjson(const BasicJsonType& j, const bool use_count,
method calc_bson_entry_header_size (line 13629) | static std::size_t calc_bson_entry_header_size(const string_t& name)
method write_bson_entry_header (line 13644) | void write_bson_entry_header(const string_t& name,
method write_bson_boolean (line 13656) | void write_bson_boolean(const string_t& name,
method write_bson_double (line 13666) | void write_bson_double(const string_t& name,
method calc_bson_string_size (line 13676) | static std::size_t calc_bson_string_size(const string_t& value)
method write_bson_string (line 13684) | void write_bson_string(const string_t& name,
method write_bson_null (line 13698) | void write_bson_null(const string_t& name)
method calc_bson_integer_size (line 13706) | static std::size_t calc_bson_integer_size(const std::int64_t value)
method write_bson_integer (line 13716) | void write_bson_integer(const string_t& name,
method calc_bson_unsigned_size (line 13734) | static constexpr std::size_t calc_bson_unsigned_size(const std::ui...
method write_bson_unsigned (line 13744) | void write_bson_unsigned(const string_t& name,
method write_bson_object_entry (line 13766) | void write_bson_object_entry(const string_t& name,
method calc_bson_array_size (line 13776) | static std::size_t calc_bson_array_size(const typename BasicJsonTy...
method calc_bson_binary_size (line 13791) | static std::size_t calc_bson_binary_size(const typename BasicJsonT...
method write_bson_array (line 13799) | void write_bson_array(const string_t& name,
method write_bson_binary (line 13818) | void write_bson_binary(const string_t& name,
method calc_bson_element_size (line 13833) | static std::size_t calc_bson_element_size(const string_t& name,
method write_bson_element (line 13881) | void write_bson_element(const string_t& name,
method calc_bson_object_size (line 13927) | static std::size_t calc_bson_object_size(const typename BasicJsonT...
method write_bson_object (line 13942) | void write_bson_object(const typename BasicJsonType::object_t& value)
method CharType (line 13958) | static constexpr CharType get_cbor_float_prefix(float /*unused*/)
method CharType (line 13963) | static constexpr CharType get_cbor_float_prefix(double /*unused*/)
method CharType (line 13972) | static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
method CharType (line 13977) | static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
method write_number_with_ubjson_prefix (line 13989) | void write_number_with_ubjson_prefix(const NumberType n,
method write_number_with_ubjson_prefix (line 14002) | void write_number_with_ubjson_prefix(const NumberType n,
method write_number_with_ubjson_prefix (line 14065) | void write_number_with_ubjson_prefix(const NumberType n,
method CharType (line 14129) | CharType ubjson_prefix(const BasicJsonType& j) const noexcept
method CharType (line 14209) | static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
method CharType (line 14214) | static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
method write_number (line 14235) | void write_number(const NumberType n)
method write_compact_float (line 14251) | void write_compact_float(const number_float_t n, detail::input_for...
method CharType (line 14278) | static constexpr CharType to_char_type(std::uint8_t x) noexcept
method CharType (line 14285) | static CharType to_char_type(std::uint8_t x) noexcept
method CharType (line 14296) | static constexpr CharType to_char_type(std::uint8_t x) noexcept
method CharType (line 14307) | static constexpr CharType to_char_type(InputCharType x) noexcept
type dtoa_impl (line 14376) | namespace dtoa_impl
function Target (line 14380) | Target reinterpret_bits(const Source source)
type diyfp (line 14389) | struct diyfp // f * 2^e
method diyfp (line 14396) | constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_...
method diyfp (line 14402) | static diyfp sub(const diyfp& x, const diyfp& y) noexcept
method diyfp (line 14414) | static diyfp mul(const diyfp& x, const diyfp& y) noexcept
method diyfp (line 14479) | static diyfp normalize(diyfp x) noexcept
method diyfp (line 14496) | static diyfp normalize_to(const diyfp& x, const int target_expon...
type boundaries (line 14507) | struct boundaries
function boundaries (line 14521) | boundaries compute_boundaries(FloatType value)
type cached_power (line 14646) | struct cached_power // c = f * 2^e ~= 10^k
function cached_power (line 14660) | inline cached_power get_cached_power_for_binary_exponent(int e)
function find_largest_pow10 (line 14824) | inline int find_largest_pow10(const std::uint32_t n, std::uint32_t...
function grisu2_round (line 14880) | inline void grisu2_round(char* buf, int len, std::uint64_t dist, s...
function grisu2_digit_gen (line 14921) | inline void grisu2_digit_gen(char* buffer, int& length, int& decim...
function grisu2 (line 15162) | inline void grisu2(char* buf, int& len, int& decimal_exponent,
function JSON_HEDLEY_NON_NULL (line 15221) | JSON_HEDLEY_NON_NULL(1)
type error_handler_t (line 15469) | enum class error_handler_t
class serializer (line 15477) | class serializer
method serializer (line 15493) | serializer(output_adapter_t<char> s, const char ichar,
method serializer (line 15505) | serializer(const serializer&) = delete;
method serializer (line 15506) | serializer& operator=(const serializer&) = delete;
method serializer (line 15507) | serializer(serializer&&) = delete;
method serializer (line 15508) | serializer& operator=(serializer&&) = delete;
method dump (line 15533) | void dump(const BasicJsonType& val,
method dump_escaped (line 15817) | void dump_escaped(const string_t& s, const bool ensure_ascii)
method count_digits (line 16073) | inline unsigned int count_digits(number_unsigned_t x) noexcept
method dump_integer (line 16113) | void dump_integer(NumberType x)
method dump_float (line 16199) | void dump_float(number_float_t x)
method dump_float (line 16220) | void dump_float(number_float_t x, std::true_type /*is_ieee_single_...
method dump_float (line 16228) | void dump_float(number_float_t x, std::false_type /*is_ieee_single...
method decode (line 16298) | static std::uint8_t decode(std::uint8_t& state, std::uint32_t& cod...
method number_unsigned_t (line 16337) | number_unsigned_t remove_sign(number_unsigned_t x)
method number_unsigned_t (line 16352) | inline number_unsigned_t remove_sign(number_integer_t x) noexcept
type detail (line 2318) | namespace detail
type position_t (line 86) | struct position_t
class exception (line 2352) | class exception : public std::exception
method JSON_HEDLEY_RETURNS_NON_NULL (line 2356) | JSON_HEDLEY_RETURNS_NON_NULL
method JSON_HEDLEY_NON_NULL (line 2366) | JSON_HEDLEY_NON_NULL(3)
method name (line 2369) | static std::string name(const std::string& ename, int id_)
class parse_error (line 2424) | class parse_error : public exception
method parse_error (line 2436) | static parse_error create(int id_, const position_t& pos, const st...
method parse_error (line 2443) | static parse_error create(int id_, std::size_t byte_, const std::s...
method parse_error (line 2463) | parse_error(int id_, std::size_t byte_, const char* what_arg)
method position_string (line 2466) | static std::string position_string(const position_t& pos)
class invalid_iterator (line 2510) | class invalid_iterator : public exception
method invalid_iterator (line 2513) | static invalid_iterator create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2520) | JSON_HEDLEY_NON_NULL(3)
class type_error (line 2564) | class type_error : public exception
method type_error (line 2567) | static type_error create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2574) | JSON_HEDLEY_NON_NULL(3)
class out_of_range (line 2611) | class out_of_range : public exception
method out_of_range (line 2614) | static out_of_range create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2621) | JSON_HEDLEY_NON_NULL(3)
class other_error (line 2649) | class other_error : public exception
method other_error (line 2652) | static other_error create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2659) | JSON_HEDLEY_NON_NULL(3)
type index_sequence (line 2687) | struct index_sequence
method size (line 2691) | static constexpr std::size_t size() noexcept
type merge_and_renumber (line 2698) | struct merge_and_renumber
type make_index_sequence (line 2705) | struct make_index_sequence
type make_index_sequence<0> (line 2709) | struct make_index_sequence<0> : index_sequence<> {}
type make_index_sequence<1> (line 2710) | struct make_index_sequence<1> : index_sequence<0> {}
type priority_tag (line 2716) | struct priority_tag : priority_tag < N - 1 > {}
type priority_tag<0> (line 2717) | struct priority_tag<0> {}
type static_const (line 2721) | struct static_const
type make_void (line 2750) | struct make_void
type iterator_types (line 2766) | struct iterator_types {}
type iterator_types <
It,
void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
typename It::reference, typename It::iterator_category >> (line 2769) | struct iterator_types <
type iterator_traits (line 2784) | struct iterator_traits
type iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >> (line 2789) | struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
type iterator_traits<T*, enable_if_t<std::is_object<T>::value>> (line 2795) | struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>>
type nonesuch (line 2823) | struct nonesuch
method nonesuch (line 2825) | nonesuch() = delete;
method nonesuch (line 2827) | nonesuch(nonesuch const&) = delete;
method nonesuch (line 2828) | nonesuch(nonesuch const&&) = delete;
type detector (line 2837) | struct detector
type is_basic_json (line 2977) | struct is_basic_json : std::false_type {}
class json_ref (line 2987) | class json_ref
method json_ref (line 12532) | json_ref(value_type&& value)
method json_ref (line 12538) | json_ref(const value_type& value)
method json_ref (line 12543) | json_ref(std::initializer_list<json_ref> init)
method json_ref (line 12552) | json_ref(Args && ... args)
method json_ref (line 12559) | json_ref(json_ref&&) = default;
method json_ref (line 12560) | json_ref(const json_ref&) = delete;
method json_ref (line 12561) | json_ref& operator=(const json_ref&) = delete;
method json_ref (line 12562) | json_ref& operator=(json_ref&&) = delete;
method value_type (line 12565) | value_type moved_or_copied() const
method value_type (line 12574) | value_type const& operator*() const
method value_type (line 12579) | value_type const* operator->() const
type is_json_ref (line 2990) | struct is_json_ref : std::false_type {}
type is_json_ref<json_ref<T>> (line 2993) | struct is_json_ref<json_ref<T>> : std::true_type {}
type has_from_json (line 3034) | struct has_from_json : std::false_type {}
type is_getable (line 3041) | struct is_getable
type has_from_json < BasicJsonType, T,
enable_if_t < !is_basic_json<T>::value >> (line 3047) | struct has_from_json < BasicJsonType, T,
type has_non_default_from_json (line 3060) | struct has_non_default_from_json : std::false_type {}
type has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >> (line 3063) | struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !...
type has_to_json (line 3075) | struct has_to_json : std::false_type {}
type has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >> (line 3078) | struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json<...
type is_iterator_traits (line 3093) | struct is_iterator_traits : std::false_type {}
type is_iterator_traits<iterator_traits<T>> (line 3096) | struct is_iterator_traits<iterator_traits<T>>
type is_complete_type (line 3113) | struct is_complete_type : std::false_type {}
type is_complete_type<T, decltype(void(sizeof(T)))> (line 3116) | struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_ty...
type is_compatible_object_type_impl (line 3120) | struct is_compatible_object_type_impl : std::false_type {}
type is_compatible_object_type_impl <
BasicJsonType, CompatibleObjectType,
enable_if_t < is_detected<mapped_type_t, CompatibleObjectType>::value&&
is_detected<key_type_t, CompatibleObjectType>::value >> (line 3123) | struct is_compatible_object_type_impl <
type is_compatible_object_type (line 3140) | struct is_compatible_object_type
type is_constructible_object_type_impl (line 3145) | struct is_constructible_object_type_impl : std::false_type {}
type is_constructible_object_type_impl <
BasicJsonType, ConstructibleObjectType,
enable_if_t < is_detected<mapped_type_t, ConstructibleObjectType>::value&&
is_detected<key_type_t, ConstructibleObjectType>::value >> (line 3148) | struct is_constructible_object_type_impl <
type is_constructible_object_type (line 3172) | struct is_constructible_object_type
type is_compatible_string_type_impl (line 3178) | struct is_compatible_string_type_impl : std::false_type {}
type is_compatible_string_type_impl <
BasicJsonType, CompatibleStringType,
enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
value_type_t, CompatibleStringType>::value >> (line 3181) | struct is_compatible_string_type_impl <
type is_compatible_string_type (line 3191) | struct is_compatible_string_type
type is_constructible_string_type_impl (line 3196) | struct is_constructible_string_type_impl : std::false_type {}
type is_constructible_string_type_impl <
BasicJsonType, ConstructibleStringType,
enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
value_type_t, ConstructibleStringType>::value >> (line 3199) | struct is_constructible_string_type_impl <
type is_constructible_string_type (line 3210) | struct is_constructible_string_type
type is_compatible_array_type_impl (line 3214) | struct is_compatible_array_type_impl : std::false_type {}
type is_compatible_array_type (line 3233) | struct is_compatible_array_type
type is_constructible_array_type_impl (line 3237) | struct is_constructible_array_type_impl : std::false_type {}
type is_constructible_array_type_impl <
BasicJsonType, ConstructibleArrayType,
enable_if_t<std::is_same<ConstructibleArrayType,
typename BasicJsonType::value_type>::value >> (line 3240) | struct is_constructible_array_type_impl <
type is_constructible_array_type_impl <
BasicJsonType, ConstructibleArrayType,
enable_if_t < !std::is_same<ConstructibleArrayType,
typename BasicJsonType::value_type>::value&&
std::is_default_constructible<ConstructibleArrayType>::value&&
(std::is_move_assignable<ConstructibleArrayType>::value ||
std::is_copy_assignable<ConstructibleArrayType>::value)&&
is_detected<value_type_t, ConstructibleArrayType>::value&&
is_detected<iterator_t, ConstructibleArrayType>::value&&
is_complete_type <
detected_t<value_type_t, ConstructibleArrayType >>::value >> (line 3247) | struct is_constructible_array_type_impl <
type is_constructible_array_type (line 3276) | struct is_constructible_array_type
type is_compatible_integer_type_impl (line 3281) | struct is_compatible_integer_type_impl : std::false_type {}
type is_compatible_integer_type_impl <
RealIntegerType, CompatibleNumberIntegerType,
enable_if_t < std::is_integral<RealIntegerType>::value&&
std::is_integral<CompatibleNumberIntegerType>::value&&
!std::is_same<bool, CompatibleNumberIntegerType>::value >> (line 3284) | struct is_compatible_integer_type_impl <
type is_compatible_integer_type (line 3302) | struct is_compatible_integer_type
type is_compatible_type_impl (line 3307) | struct is_compatible_type_impl: std::false_type {}
type is_compatible_type_impl <
BasicJsonType, CompatibleType,
enable_if_t<is_complete_type<CompatibleType>::value >> (line 3310) | struct is_compatible_type_impl <
type is_compatible_type (line 3319) | struct is_compatible_type
type conjunction (line 3323) | struct conjunction : std::true_type { }
type conjunction<B1> (line 3324) | struct conjunction<B1> : B1 { }
type is_constructible_tuple (line 3330) | struct is_constructible_tuple : std::false_type {}
type value_t (line 3377) | enum class value_t : std::uint8_t
function from_json (line 3426) | void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
function get_arithmetic_value (line 3440) | void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 3466) | void from_json(const BasicJsonType& j, typename BasicJsonType::boole...
function from_json (line 3476) | void from_json(const BasicJsonType& j, typename BasicJsonType::strin...
function from_json (line 3492) | void from_json(const BasicJsonType& j, ConstructibleStringType& s)
function from_json (line 3503) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3509) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3515) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3522) | void from_json(const BasicJsonType& j, EnumType& e)
function from_json (line 3532) | void from_json(const BasicJsonType& j, std::forward_list<T, Allocato...
function from_json (line 3549) | void from_json(const BasicJsonType& j, std::valarray<T>& l)
function from_json (line 3564) | auto from_json(const BasicJsonType& j, T (&arr)[N])
function from_json_array_impl (line 3574) | void from_json_array_impl(const BasicJsonType& j, typename BasicJson...
function from_json_array_impl (line 3580) | auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& ...
function from_json_array_impl (line 3591) | auto from_json_array_impl(const BasicJsonType& j, ConstructibleArray...
function from_json_array_impl (line 3612) | void from_json_array_impl(const BasicJsonType& j, ConstructibleArray...
function from_json (line 3637) | auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
function from_json (line 3652) | void from_json(const BasicJsonType& j, typename BasicJsonType::binar...
function from_json (line 3664) | void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
function from_json (line 3696) | void from_json(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 3727) | void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
function from_json_tuple_impl (line 3733) | void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_se...
function from_json (line 3739) | void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
function from_json (line 3747) | void from_json(const BasicJsonType& j, std::map<Key, Value, Compare,...
function from_json (line 3767) | void from_json(const BasicJsonType& j, std::unordered_map<Key, Value...
type from_json_fn (line 3784) | struct from_json_fn
function int_to_string (line 3835) | void int_to_string( string_type& target, std::size_t value )
class iteration_proxy_value (line 3841) | class iteration_proxy_value
method iteration_proxy_value (line 3864) | explicit iteration_proxy_value(IteratorType it) noexcept : anchor(...
method iteration_proxy_value (line 3867) | iteration_proxy_value& operator*()
method iteration_proxy_value (line 3873) | iteration_proxy_value& operator++()
method string_type (line 3894) | const string_type& key() const
method value (line 3922) | typename IteratorType::reference value() const
class iteration_proxy (line 3929) | class iteration_proxy
method iteration_proxy (line 3937) | explicit iteration_proxy(typename IteratorType::reference cont) no...
method begin (line 3941) | iteration_proxy_value<IteratorType> begin() noexcept
method end (line 3947) | iteration_proxy_value<IteratorType> end() noexcept
function get (line 3956) | auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>...
function get (line 3964) | auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>...
type external_constructor (line 4014) | struct external_constructor
type external_constructor<value_t::boolean> (line 4017) | struct external_constructor<value_t::boolean>
method construct (line 4020) | static void construct(BasicJsonType& j, typename BasicJsonType::bo...
type external_constructor<value_t::string> (line 4029) | struct external_constructor<value_t::string>
method construct (line 4032) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4040) | static void construct(BasicJsonType& j, typename BasicJsonType::st...
method construct (line 4050) | static void construct(BasicJsonType& j, const CompatibleStringType...
type external_constructor<value_t::binary> (line 4059) | struct external_constructor<value_t::binary>
method construct (line 4062) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4071) | static void construct(BasicJsonType& j, typename BasicJsonType::bi...
type external_constructor<value_t::number_float> (line 4081) | struct external_constructor<value_t::number_float>
method construct (line 4084) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_unsigned> (line 4093) | struct external_constructor<value_t::number_unsigned>
method construct (line 4096) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_integer> (line 4105) | struct external_constructor<value_t::number_integer>
method construct (line 4108) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::array> (line 4117) | struct external_constructor<value_t::array>
method construct (line 4120) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4128) | static void construct(BasicJsonType& j, typename BasicJsonType::ar...
method construct (line 4138) | static void construct(BasicJsonType& j, const CompatibleArrayType&...
method construct (line 4148) | static void construct(BasicJsonType& j, const std::vector<bool>& arr)
method construct (line 4162) | static void construct(BasicJsonType& j, const std::valarray<T>& arr)
type external_constructor<value_t::object> (line 4176) | struct external_constructor<value_t::object>
method construct (line 4179) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4187) | static void construct(BasicJsonType& j, typename BasicJsonType::ob...
method construct (line 4196) | static void construct(BasicJsonType& j, const CompatibleObjectType...
function to_json (line 4213) | void to_json(BasicJsonType& j, T b) noexcept
function to_json (line 4220) | void to_json(BasicJsonType& j, const CompatibleString& s)
function to_json (line 4226) | void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
function to_json (line 4233) | void to_json(BasicJsonType& j, FloatType val) noexcept
function to_json (line 4240) | void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noe...
function to_json (line 4247) | void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noex...
function to_json (line 4254) | void to_json(BasicJsonType& j, EnumType e) noexcept
function to_json (line 4261) | void to_json(BasicJsonType& j, const std::vector<bool>& e)
function to_json (line 4274) | void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
function to_json (line 4280) | void to_json(BasicJsonType& j, const typename BasicJsonType::binary_...
function to_json (line 4287) | void to_json(BasicJsonType& j, const std::valarray<T>& arr)
function to_json (line 4293) | void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
function to_json (line 4300) | void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
function to_json (line 4306) | void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
function to_json (line 4316) | void to_json(BasicJsonType& j, const T(&arr)[N])
function to_json (line 4322) | void to_json(BasicJsonType& j, const std::pair<T1, T2>& p)
function to_json (line 4330) | void to_json(BasicJsonType& j, const T& b)
function to_json_tuple_impl (line 4336) | void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequ...
function to_json (line 4342) | void to_json(BasicJsonType& j, const T& t)
type to_json_fn (line 4347) | struct to_json_fn
function combine (line 4595) | inline std::size_t combine(std::size_t seed, std::size_t h) noexcept
function hash (line 4613) | std::size_t hash(const BasicJsonType& j)
type input_format_t (line 4744) | enum class input_format_t { json, cbor, msgpack, ubjson, bson }
class file_input_adapter (line 4754) | class file_input_adapter
method file_input_adapter (line 4760) | explicit file_input_adapter(std::FILE* f) noexcept
method file_input_adapter (line 4765) | file_input_adapter(const file_input_adapter&) = delete;
method file_input_adapter (line 4766) | file_input_adapter(file_input_adapter&&) = default;
method file_input_adapter (line 4767) | file_input_adapter& operator=(const file_input_adapter&) = delete;
method file_input_adapter (line 4768) | file_input_adapter& operator=(file_input_adapter&&) = delete;
method get_character (line 4770) | std::char_traits<char>::int_type get_character() noexcept
class input_stream_adapter (line 4790) | class input_stream_adapter
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
class iterator_input_adapter (line 4843) | class iterator_input_adapter
method iterator_input_adapter (line 4848) | iterator_input_adapter(IteratorType first, IteratorType last)
method get_character (line 4851) | typename std::char_traits<char_type>::int_type get_character()
method empty (line 4872) | bool empty() const
type wide_string_input_helper (line 4881) | struct wide_string_input_helper
type wide_string_input_helper<BaseInputAdapter, 4> (line 4884) | struct wide_string_input_helper<BaseInputAdapter, 4>
method fill_buffer (line 4887) | static void fill_buffer(BaseInputAdapter& input,
type wide_string_input_helper<BaseInputAdapter, 2> (line 4942) | struct wide_string_input_helper<BaseInputAdapter, 2>
method fill_buffer (line 4945) | static void fill_buffer(BaseInputAdapter& input,
class wide_string_input_adapter (line 5005) | class wide_string_input_adapter
method wide_string_input_adapter (line 5010) | wide_string_input_adapter(BaseInputAdapter base)
method get_character (line 5013) | typename std::char_traits<char>::int_type get_character() noexcept
method fill_buffer (line 5034) | void fill_buffer()
type iterator_input_adapter_factory (line 5050) | struct iterator_input_adapter_factory
method adapter_type (line 5056) | static adapter_type create(IteratorType first, IteratorType last)
type is_iterator_of_multibyte (line 5063) | struct is_iterator_of_multibyte
type iterator_input_adapter_factory<IteratorType, enable_if_t<is_iterator_of_multibyte<IteratorType>::value>> (line 5073) | struct iterator_input_adapter_factory<IteratorType, enable_if_t<is_i...
method adapter_type (line 5080) | static adapter_type create(IteratorType first, IteratorType last)
function input_adapter (line 5088) | typename iterator_input_adapter_factory<IteratorType>::adapter_type ...
function input_adapter (line 5096) | auto input_adapter(const ContainerType& container) -> decltype(input...
function file_input_adapter (line 5106) | inline file_input_adapter input_adapter(std::FILE* file)
method file_input_adapter (line 4760) | explicit file_input_adapter(std::FILE* f) noexcept
method file_input_adapter (line 4765) | file_input_adapter(const file_input_adapter&) = delete;
method file_input_adapter (line 4766) | file_input_adapter(file_input_adapter&&) = default;
method file_input_adapter (line 4767) | file_input_adapter& operator=(const file_input_adapter&) = delete;
method file_input_adapter (line 4768) | file_input_adapter& operator=(file_input_adapter&&) = delete;
method get_character (line 4770) | std::char_traits<char>::int_type get_character() noexcept
function input_stream_adapter (line 5111) | inline input_stream_adapter input_adapter(std::istream& stream)
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
function input_stream_adapter (line 5116) | inline input_stream_adapter input_adapter(std::istream&& stream)
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
function contiguous_bytes_input_adapter (line 5131) | contiguous_bytes_input_adapter input_adapter(CharT b)
function input_adapter (line 5139) | auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, a...
class span_input_adapter (line 5147) | class span_input_adapter
method span_input_adapter (line 5156) | span_input_adapter(CharT b, std::size_t l)
method span_input_adapter (line 5163) | span_input_adapter(IteratorType first, IteratorType last)
method contiguous_bytes_input_adapter (line 5166) | contiguous_bytes_input_adapter&& get()
class json_sax_dom_parser (line 5328) | class json_sax_dom_parser
method json_sax_dom_parser (line 5342) | explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_ex...
method json_sax_dom_parser (line 5347) | json_sax_dom_parser(const json_sax_dom_parser&) = delete;
method json_sax_dom_parser (line 5348) | json_sax_dom_parser(json_sax_dom_parser&&) = default;
method json_sax_dom_parser (line 5349) | json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete;
method json_sax_dom_parser (line 5350) | json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default;
method null (line 5353) | bool null()
method boolean (line 5359) | bool boolean(bool val)
method number_integer (line 5365) | bool number_integer(number_integer_t val)
method number_unsigned (line 5371) | bool number_unsigned(number_unsigned_t val)
method number_float (line 5377) | bool number_float(number_float_t val, const string_t& /*unused*/)
method string (line 5383) | bool string(string_t& val)
method binary (line 5389) | bool binary(binary_t& val)
method start_object (line 5395) | bool start_object(std::size_t len)
method key (line 5408) | bool key(string_t& val)
method end_object (line 5415) | bool end_object()
method start_array (line 5421) | bool start_array(std::size_t len)
method end_array (line 5434) | bool end_array()
method parse_error (line 5441) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
method is_errored (line 5453) | constexpr bool is_errored() const
method JSON_HEDLEY_RETURNS_NON_NULL (line 5466) | JSON_HEDLEY_RETURNS_NON_NULL
class json_sax_dom_callback_parser (line 5502) | class json_sax_dom_callback_parser
method json_sax_dom_callback_parser (line 5513) | json_sax_dom_callback_parser(BasicJsonType& r,
method json_sax_dom_callback_parser (line 5522) | json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) ...
method json_sax_dom_callback_parser (line 5523) | json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = def...
method json_sax_dom_callback_parser (line 5524) | json_sax_dom_callback_parser& operator=(const json_sax_dom_callbac...
method json_sax_dom_callback_parser (line 5525) | json_sax_dom_callback_parser& operator=(json_sax_dom_callback_pars...
method null (line 5528) | bool null()
method boolean (line 5534) | bool boolean(bool val)
method number_integer (line 5540) | bool number_integer(number_integer_t val)
method number_unsigned (line 5546) | bool number_unsigned(number_unsigned_t val)
method number_float (line 5552) | bool number_float(number_float_t val, const string_t& /*unused*/)
method string (line 5558) | bool string(string_t& val)
method binary (line 5564) | bool binary(binary_t& val)
method start_object (line 5570) | bool start_object(std::size_t len)
method key (line 5588) | bool key(string_t& val)
method end_object (line 5605) | bool end_object()
method start_array (line 5634) | bool start_array(std::size_t len)
method end_array (line 5651) | bool end_array()
method parse_error (line 5680) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
method is_errored (line 5692) | constexpr bool is_errored() const
method handle_value (line 5714) | std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool...
class json_sax_acceptor (line 5798) | class json_sax_acceptor
method null (line 5807) | bool null()
method boolean (line 5812) | bool boolean(bool /*unused*/)
method number_integer (line 5817) | bool number_integer(number_integer_t /*unused*/)
method number_unsigned (line 5822) | bool number_unsigned(number_unsigned_t /*unused*/)
method number_float (line 5827) | bool number_float(number_float_t /*unused*/, const string_t& /*unu...
method string (line 5832) | bool string(string_t& /*unused*/)
method binary (line 5837) | bool binary(binary_t& /*unused*/)
method start_object (line 5842) | bool start_object(std::size_t /*unused*/ = std::size_t(-1))
method key (line 5847) | bool key(string_t& /*unused*/)
method end_object (line 5852) | bool end_object()
method start_array (line 5857) | bool start_array(std::size_t /*unused*/ = std::size_t(-1))
method end_array (line 5862) | bool end_array()
method parse_error (line 5867) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
class lexer_base (line 5905) | class lexer_base
type token_type (line 5909) | enum class token_type
class lexer (line 5982) | class lexer : public lexer_base<BasicJsonType>
method lexer (line 5994) | explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ =...
method lexer (line 6001) | lexer(const lexer&) = delete;
method lexer (line 6002) | lexer(lexer&&) = default;
method lexer (line 6003) | lexer& operator=(lexer&) = delete;
method lexer (line 6004) | lexer& operator=(lexer&&) = default;
method JSON_HEDLEY_PURE (line 6013) | JSON_HEDLEY_PURE
method get_codepoint (line 6040) | int get_codepoint()
method next_byte_in_range (line 6088) | bool next_byte_in_range(std::initializer_list<char_int_type> ranges)
method token_type (line 6125) | token_type scan_string()
method scan_comment (line 6715) | bool scan_comment()
method strtof (line 6783) | static void strtof(float& f, const char* str, char** endptr) noexcept
method strtof (line 6789) | static void strtof(double& f, const char* str, char** endptr) noex...
method strtof (line 6795) | static void strtof(long double& f, const char* str, char** endptr)...
method token_type (line 6840) | token_type scan_number() // lgtm [cpp/use-of-goto]
type is_sax (line 7573) | struct is_sax
type is_sax_static_asserts (line 7604) | struct is_sax_static_asserts
type cbor_tag_handler_t (line 7668) | enum class cbor_tag_handler_t
function little_endianess (line 7681) | static inline bool little_endianess(int num = 1) noexcept
class binary_reader (line 7695) | class binary_reader
method binary_reader (line 7712) | explicit binary_reader(InputAdapterType&& adapter) : ia(std::move(...
method binary_reader (line 7718) | binary_reader(const binary_reader&) = delete;
method binary_reader (line 7719) | binary_reader(binary_reader&&) = default;
method binary_reader (line 7720) | binary_reader& operator=(const binary_reader&) = delete;
method binary_reader (line 7721) | binary_reader& operator=(binary_reader&&) = default;
method JSON_HEDLEY_NON_NULL (line 7732) | JSON_HEDLEY_NON_NULL(3)
method parse_bson_internal (line 7794) | bool parse_bson_internal()
method get_bson_cstr (line 7819) | bool get_bson_cstr(string_t& result)
method get_bson_string (line 7849) | bool get_bson_string(const NumberType len, string_t& result)
method get_bson_binary (line 7870) | bool get_bson_binary(const NumberType len, binary_t& result)
method parse_bson_element_internal (line 7896) | bool parse_bson_element_internal(const char_int_type element_type,
method parse_bson_element_list (line 7974) | bool parse_bson_element_list(const bool is_array)
method parse_bson_array (line 8012) | bool parse_bson_array()
method parse_cbor_internal (line 8042) | bool parse_cbor_internal(const bool get_char,
method get_cbor_string (line 8487) | bool get_cbor_string(string_t& result)
method get_cbor_binary (line 8582) | bool get_cbor_binary(binary_t& result)
method get_cbor_array (line 8676) | bool get_cbor_array(const std::size_t len,
method get_cbor_object (line 8714) | bool get_cbor_object(const std::size_t len,
method parse_msgpack_internal (line 8767) | bool parse_msgpack_internal()
method get_msgpack_string (line 9147) | bool get_msgpack_string(string_t& result)
method get_msgpack_binary (line 9229) | bool get_msgpack_binary(binary_t& result)
method get_msgpack_array (line 9340) | bool get_msgpack_array(const std::size_t len)
method get_msgpack_object (line 9362) | bool get_msgpack_object(const std::size_t len)
method parse_ubjson_internal (line 9399) | bool parse_ubjson_internal(const bool get_char = true)
method get_ubjson_string (line 9418) | bool get_ubjson_string(string_t& result, const bool get_char = true)
method get_ubjson_size_value (line 9472) | bool get_ubjson_size_value(std::size_t& result)
method get_ubjson_size_type (line 9549) | bool get_ubjson_size_type(std::pair<std::size_t, char_int_type>& r...
method get_ubjson_value (line 9590) | bool get_ubjson_value(const char_int_type prefix)
method get_ubjson_array (line 9691) | bool get_ubjson_array()
method get_ubjson_object (line 9753) | bool get_ubjson_object()
method get_ubjson_high_precision_number (line 9828) | bool get_ubjson_high_precision_number()
method char_int_type (line 9890) | char_int_type get()
method char_int_type (line 9899) | char_int_type get_ignore_noop()
method get_number (line 9924) | bool get_number(const input_format_t format, NumberType& result)
method get_string (line 9967) | bool get_string(const input_format_t format,
method get_binary (line 10000) | bool get_binary(const input_format_t format,
method JSON_HEDLEY_NON_NULL (line 10023) | JSON_HEDLEY_NON_NULL(3)
method get_token_string (line 10037) | std::string get_token_string() const
method exception_message (line 10050) | std::string exception_message(const input_format_t format,
type parse_event_t (line 10137) | enum class parse_event_t : uint8_t
class parser (line 10163) | class parser
method parser (line 10174) | explicit parser(InputAdapterType&& adapter,
method parse (line 10196) | void parse(const bool strict, BasicJsonType& result)
method accept (line 10257) | bool accept(const bool strict = true)
method sax_parse (line 10265) | bool sax_parse(SAX* sax, const bool strict = true)
method sax_parse_internal (line 10285) | bool sax_parse_internal(SAX* sax)
method token_type (line 10567) | token_type get_token()
method exception_message (line 10572) | std::string exception_message(const token_type expected, const std...
class primitive_iterator_t (line 10636) | class primitive_iterator_t
method difference_type (line 10647) | constexpr difference_type get_value() const noexcept
method set_begin (line 10653) | void set_begin() noexcept
method set_end (line 10659) | void set_end() noexcept
method is_begin (line 10665) | constexpr bool is_begin() const noexcept
method is_end (line 10671) | constexpr bool is_end() const noexcept
method primitive_iterator_t (line 10686) | primitive_iterator_t operator+(difference_type n) noexcept
method difference_type (line 10693) | constexpr difference_type operator-(primitive_iterator_t lhs, prim...
method primitive_iterator_t (line 10698) | primitive_iterator_t& operator++() noexcept
method primitive_iterator_t (line 10704) | primitive_iterator_t const operator++(int) noexcept
method primitive_iterator_t (line 10711) | primitive_iterator_t& operator--() noexcept
method primitive_iterator_t (line 10717) | primitive_iterator_t const operator--(int) noexcept
method primitive_iterator_t (line 10724) | primitive_iterator_t& operator+=(difference_type n) noexcept
method primitive_iterator_t (line 10730) | primitive_iterator_t& operator-=(difference_type n) noexcept
type internal_iterator (line 10750) | struct internal_iterator
class iteration_proxy (line 10788) | class iteration_proxy
method iteration_proxy (line 3937) | explicit iteration_proxy(typename IteratorType::reference cont) no...
method begin (line 3941) | iteration_proxy_value<IteratorType> begin() noexcept
method end (line 3947) | iteration_proxy_value<IteratorType> end() noexcept
class iteration_proxy_value (line 10789) | class iteration_proxy_value
method iteration_proxy_value (line 3864) | explicit iteration_proxy_value(IteratorType it) noexcept : anchor(...
method iteration_proxy_value (line 3867) | iteration_proxy_value& operator*()
method iteration_proxy_value (line 3873) | iteration_proxy_value& operator++()
method string_type (line 3894) | const string_type& key() const
method value (line 3922) | typename IteratorType::reference value() const
class iter_impl (line 10808) | class iter_impl
method iter_impl (line 10846) | iter_impl() = default;
method iter_impl (line 10854) | explicit iter_impl(pointer object) noexcept : m_object(object)
method iter_impl (line 10896) | iter_impl(const iter_impl<const BasicJsonType>& other) noexcept
method iter_impl (line 10906) | iter_impl& operator=(const iter_impl<const BasicJsonType>& other) ...
method iter_impl (line 10918) | iter_impl(const iter_impl<typename std::remove_const<BasicJsonType...
method iter_impl (line 10928) | iter_impl& operator=(const iter_impl<typename std::remove_const<Ba...
method set_begin (line 10940) | void set_begin() noexcept
method set_end (line 10977) | void set_end() noexcept
method reference (line 11008) | reference operator*() const
method pointer (line 11045) | pointer operator->() const
method iter_impl (line 11079) | iter_impl const operator++(int)
method iter_impl (line 11090) | iter_impl& operator++()
method iter_impl (line 11122) | iter_impl const operator--(int)
method iter_impl (line 11133) | iter_impl& operator--()
method iter_impl (line 11255) | iter_impl& operator+=(difference_type i)
method iter_impl (line 11284) | iter_impl& operator-=(difference_type i)
method iter_impl (line 11293) | iter_impl operator+(difference_type i) const
method iter_impl (line 11304) | iter_impl operator+(difference_type i, const iter_impl& it)
method iter_impl (line 11315) | iter_impl operator-(difference_type i) const
method difference_type (line 11326) | difference_type operator-(const iter_impl& other) const
method reference (line 11347) | reference operator[](difference_type n) const
method reference (line 11394) | reference value() const
class json_reverse_iterator (line 11444) | class json_reverse_iterator : public std::reverse_iterator<Base>
method json_reverse_iterator (line 11454) | explicit json_reverse_iterator(const typename base_iterator::itera...
method json_reverse_iterator (line 11458) | explicit json_reverse_iterator(const base_iterator& it) noexcept :...
method json_reverse_iterator (line 11461) | json_reverse_iterator const operator++(int)
method json_reverse_iterator (line 11467) | json_reverse_iterator& operator++()
method json_reverse_iterator (line 11473) | json_reverse_iterator const operator--(int)
method json_reverse_iterator (line 11479) | json_reverse_iterator& operator--()
method json_reverse_iterator (line 11485) | json_reverse_iterator& operator+=(difference_type i)
method json_reverse_iterator (line 11491) | json_reverse_iterator operator+(difference_type i) const
method json_reverse_iterator (line 11497) | json_reverse_iterator operator-(difference_type i) const
method difference_type (line 11503) | difference_type operator-(const json_reverse_iterator& other) const
method reference (line 11509) | reference operator[](difference_type n) const
method key (line 11515) | auto key() const -> decltype(std::declval<Base>().key())
method reference (line 11522) | reference value() const
class json_ref (line 12527) | class json_ref
method json_ref (line 12532) | json_ref(value_type&& value)
method json_ref (line 12538) | json_ref(const value_type& value)
method json_ref (line 12543) | json_ref(std::initializer_list<json_ref> init)
method json_ref (line 12552) | json_ref(Args && ... args)
method json_ref (line 12559) | json_ref(json_ref&&) = default;
method json_ref (line 12560) | json_ref(const json_ref&) = delete;
method json_ref (line 12561) | json_ref& operator=(const json_ref&) = delete;
method json_ref (line 12562) | json_ref& operator=(json_ref&&) = delete;
method value_type (line 12565) | value_type moved_or_copied() const
method value_type (line 12574) | value_type const& operator*() const
method value_type (line 12579) | value_type const* operator->() const
type output_adapter_protocol (line 12632) | struct output_adapter_protocol
class output_vector_adapter (line 12645) | class output_vector_adapter : public output_adapter_protocol<CharType>
method output_vector_adapter (line 12648) | explicit output_vector_adapter(std::vector<CharType>& vec) noexcept
method write_character (line 12652) | void write_character(CharType c) override
method JSON_HEDLEY_NON_NULL (line 12657) | JSON_HEDLEY_NON_NULL(2)
class output_stream_adapter (line 12669) | class output_stream_adapter : public output_adapter_protocol<CharType>
method output_stream_adapter (line 12672) | explicit output_stream_adapter(std::basic_ostream<CharType>& s) no...
method write_character (line 12676) | void write_character(CharType c) override
method JSON_HEDLEY_NON_NULL (line 12681) | JSON_HEDLEY_NON_NULL(2)
class output_string_adapter (line 12693) | class output_string_adapter : public output_adapter_protocol<CharType>
method output_string_adapter (line 12696) | explicit output_string_adapter(StringType& s) noexcept
method write_character (line 12700) | void write_character(CharType c) override
method JSON_HEDLEY_NON_NULL (line 12705) | JSON_HEDLEY_NON_NULL(2)
class output_adapter (line 12716) | class output_adapter
method output_adapter (line 12719) | output_adapter(std::vector<CharType>& vec)
method output_adapter (line 12722) | output_adapter(std::basic_ostream<CharType>& s)
method output_adapter (line 12725) | output_adapter(StringType& s)
class binary_writer (line 12752) | class binary_writer
method binary_writer (line 12764) | explicit binary_writer(output_adapter_t<CharType> adapter) : oa(ad...
method write_bson (line 12773) | void write_bson(const BasicJsonType& j)
method write_cbor (line 12793) | void write_cbor(const BasicJsonType& j)
method write_msgpack (line 13098) | void write_msgpack(const BasicJsonType& j)
method write_ubjson (line 13422) | void write_ubjson(const BasicJsonType& j, const bool use_count,
method calc_bson_entry_header_size (line 13629) | static std::size_t calc_bson_entry_header_size(const string_t& name)
method write_bson_entry_header (line 13644) | void write_bson_entry_header(const string_t& name,
method write_bson_boolean (line 13656) | void write_bson_boolean(const string_t& name,
method write_bson_double (line 13666) | void write_bson_double(const string_t& name,
method calc_bson_string_size (line 13676) | static std::size_t calc_bson_string_size(const string_t& value)
method write_bson_string (line 13684) | void write_bson_string(const string_t& name,
method write_bson_null (line 13698) | void write_bson_null(const string_t& name)
method calc_bson_integer_size (line 13706) | static std::size_t calc_bson_integer_size(const std::int64_t value)
method write_bson_integer (line 13716) | void write_bson_integer(const string_t& name,
method calc_bson_unsigned_size (line 13734) | static constexpr std::size_t calc_bson_unsigned_size(const std::ui...
method write_bson_unsigned (line 13744) | void write_bson_unsigned(const string_t& name,
method write_bson_object_entry (line 13766) | void write_bson_object_entry(const string_t& name,
method calc_bson_array_size (line 13776) | static std::size_t calc_bson_array_size(const typename BasicJsonTy...
method calc_bson_binary_size (line 13791) | static std::size_t calc_bson_binary_size(const typename BasicJsonT...
method write_bson_array (line 13799) | void write_bson_array(const string_t& name,
method write_bson_binary (line 13818) | void write_bson_binary(const string_t& name,
method calc_bson_element_size (line 13833) | static std::size_t calc_bson_element_size(const string_t& name,
method write_bson_element (line 13881) | void write_bson_element(const string_t& name,
method calc_bson_object_size (line 13927) | static std::size_t calc_bson_object_size(const typename BasicJsonT...
method write_bson_object (line 13942) | void write_bson_object(const typename BasicJsonType::object_t& value)
method CharType (line 13958) | static constexpr CharType get_cbor_float_prefix(float /*unused*/)
method CharType (line 13963) | static constexpr CharType get_cbor_float_prefix(double /*unused*/)
method CharType (line 13972) | static constexpr CharType get_msgpack_float_prefix(float /*unused*/)
method CharType (line 13977) | static constexpr CharType get_msgpack_float_prefix(double /*unused*/)
method write_number_with_ubjson_prefix (line 13989) | void write_number_with_ubjson_prefix(const NumberType n,
method write_number_with_ubjson_prefix (line 14002) | void write_number_with_ubjson_prefix(const NumberType n,
method write_number_with_ubjson_prefix (line 14065) | void write_number_with_ubjson_prefix(const NumberType n,
method CharType (line 14129) | CharType ubjson_prefix(const BasicJsonType& j) const noexcept
method CharType (line 14209) | static constexpr CharType get_ubjson_float_prefix(float /*unused*/)
method CharType (line 14214) | static constexpr CharType get_ubjson_float_prefix(double /*unused*/)
method write_number (line 14235) | void write_number(const NumberType n)
method write_compact_float (line 14251) | void write_compact_float(const number_float_t n, detail::input_for...
method CharType (line 14278) | static constexpr CharType to_char_type(std::uint8_t x) noexcept
method CharType (line 14285) | static CharType to_char_type(std::uint8_t x) noexcept
method CharType (line 14296) | static constexpr CharType to_char_type(std::uint8_t x) noexcept
method CharType (line 14307) | static constexpr CharType to_char_type(InputCharType x) noexcept
type dtoa_impl (line 14376) | namespace dtoa_impl
function Target (line 14380) | Target reinterpret_bits(const Source source)
type diyfp (line 14389) | struct diyfp // f * 2^e
method diyfp (line 14396) | constexpr diyfp(std::uint64_t f_, int e_) noexcept : f(f_), e(e_...
method diyfp (line 14402) | static diyfp sub(const diyfp& x, const diyfp& y) noexcept
method diyfp (line 14414) | static diyfp mul(const diyfp& x, const diyfp& y) noexcept
method diyfp (line 14479) | static diyfp normalize(diyfp x) noexcept
method diyfp (line 14496) | static diyfp normalize_to(const diyfp& x, const int target_expon...
type boundaries (line 14507) | struct boundaries
function boundaries (line 14521) | boundaries compute_boundaries(FloatType value)
type cached_power (line 14646) | struct cached_power // c = f * 2^e ~= 10^k
function cached_power (line 14660) | inline cached_power get_cached_power_for_binary_exponent(int e)
function find_largest_pow10 (line 14824) | inline int find_largest_pow10(const std::uint32_t n, std::uint32_t...
function grisu2_round (line 14880) | inline void grisu2_round(char* buf, int len, std::uint64_t dist, s...
function grisu2_digit_gen (line 14921) | inline void grisu2_digit_gen(char* buffer, int& length, int& decim...
function grisu2 (line 15162) | inline void grisu2(char* buf, int& len, int& decimal_exponent,
function JSON_HEDLEY_NON_NULL (line 15221) | JSON_HEDLEY_NON_NULL(1)
type error_handler_t (line 15469) | enum class error_handler_t
class serializer (line 15477) | class serializer
method serializer (line 15493) | serializer(output_adapter_t<char> s, const char ichar,
method serializer (line 15505) | serializer(const serializer&) = delete;
method serializer (line 15506) | serializer& operator=(const serializer&) = delete;
method serializer (line 15507) | serializer(serializer&&) = delete;
method serializer (line 15508) | serializer& operator=(serializer&&) = delete;
method dump (line 15533) | void dump(const BasicJsonType& val,
method dump_escaped (line 15817) | void dump_escaped(const string_t& s, const bool ensure_ascii)
method count_digits (line 16073) | inline unsigned int count_digits(number_unsigned_t x) noexcept
method dump_integer (line 16113) | void dump_integer(NumberType x)
method dump_float (line 16199) | void dump_float(number_float_t x)
method dump_float (line 16220) | void dump_float(number_float_t x, std::true_type /*is_ieee_single_...
method dump_float (line 16228) | void dump_float(number_float_t x, std::false_type /*is_ieee_single...
method decode (line 16298) | static std::uint8_t decode(std::uint8_t& state, std::uint32_t& cod...
method number_unsigned_t (line 16337) | number_unsigned_t remove_sign(number_unsigned_t x)
method number_unsigned_t (line 16352) | inline number_unsigned_t remove_sign(number_integer_t x) noexcept
type detail (line 2675) | namespace detail
type position_t (line 86) | struct position_t
class exception (line 2352) | class exception : public std::exception
method JSON_HEDLEY_RETURNS_NON_NULL (line 2356) | JSON_HEDLEY_RETURNS_NON_NULL
method JSON_HEDLEY_NON_NULL (line 2366) | JSON_HEDLEY_NON_NULL(3)
method name (line 2369) | static std::string name(const std::string& ename, int id_)
class parse_error (line 2424) | class parse_error : public exception
method parse_error (line 2436) | static parse_error create(int id_, const position_t& pos, const st...
method parse_error (line 2443) | static parse_error create(int id_, std::size_t byte_, const std::s...
method parse_error (line 2463) | parse_error(int id_, std::size_t byte_, const char* what_arg)
method position_string (line 2466) | static std::string position_string(const position_t& pos)
class invalid_iterator (line 2510) | class invalid_iterator : public exception
method invalid_iterator (line 2513) | static invalid_iterator create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2520) | JSON_HEDLEY_NON_NULL(3)
class type_error (line 2564) | class type_error : public exception
method type_error (line 2567) | static type_error create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2574) | JSON_HEDLEY_NON_NULL(3)
class out_of_range (line 2611) | class out_of_range : public exception
method out_of_range (line 2614) | static out_of_range create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2621) | JSON_HEDLEY_NON_NULL(3)
class other_error (line 2649) | class other_error : public exception
method other_error (line 2652) | static other_error create(int id_, const std::string& what_arg)
method JSON_HEDLEY_NON_NULL (line 2659) | JSON_HEDLEY_NON_NULL(3)
type index_sequence (line 2687) | struct index_sequence
method size (line 2691) | static constexpr std::size_t size() noexcept
type merge_and_renumber (line 2698) | struct merge_and_renumber
type make_index_sequence (line 2705) | struct make_index_sequence
type make_index_sequence<0> (line 2709) | struct make_index_sequence<0> : index_sequence<> {}
type make_index_sequence<1> (line 2710) | struct make_index_sequence<1> : index_sequence<0> {}
type priority_tag (line 2716) | struct priority_tag : priority_tag < N - 1 > {}
type priority_tag<0> (line 2717) | struct priority_tag<0> {}
type static_const (line 2721) | struct static_const
type make_void (line 2750) | struct make_void
type iterator_types (line 2766) | struct iterator_types {}
type iterator_types <
It,
void_t<typename It::difference_type, typename It::value_type, typename It::pointer,
typename It::reference, typename It::iterator_category >> (line 2769) | struct iterator_types <
type iterator_traits (line 2784) | struct iterator_traits
type iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >> (line 2789) | struct iterator_traits < T, enable_if_t < !std::is_pointer<T>::value >>
type iterator_traits<T*, enable_if_t<std::is_object<T>::value>> (line 2795) | struct iterator_traits<T*, enable_if_t<std::is_object<T>::value>>
type nonesuch (line 2823) | struct nonesuch
method nonesuch (line 2825) | nonesuch() = delete;
method nonesuch (line 2827) | nonesuch(nonesuch const&) = delete;
method nonesuch (line 2828) | nonesuch(nonesuch const&&) = delete;
type detector (line 2837) | struct detector
type is_basic_json (line 2977) | struct is_basic_json : std::false_type {}
class json_ref (line 2987) | class json_ref
method json_ref (line 12532) | json_ref(value_type&& value)
method json_ref (line 12538) | json_ref(const value_type& value)
method json_ref (line 12543) | json_ref(std::initializer_list<json_ref> init)
method json_ref (line 12552) | json_ref(Args && ... args)
method json_ref (line 12559) | json_ref(json_ref&&) = default;
method json_ref (line 12560) | json_ref(const json_ref&) = delete;
method json_ref (line 12561) | json_ref& operator=(const json_ref&) = delete;
method json_ref (line 12562) | json_ref& operator=(json_ref&&) = delete;
method value_type (line 12565) | value_type moved_or_copied() const
method value_type (line 12574) | value_type const& operator*() const
method value_type (line 12579) | value_type const* operator->() const
type is_json_ref (line 2990) | struct is_json_ref : std::false_type {}
type is_json_ref<json_ref<T>> (line 2993) | struct is_json_ref<json_ref<T>> : std::true_type {}
type has_from_json (line 3034) | struct has_from_json : std::false_type {}
type is_getable (line 3041) | struct is_getable
type has_from_json < BasicJsonType, T,
enable_if_t < !is_basic_json<T>::value >> (line 3047) | struct has_from_json < BasicJsonType, T,
type has_non_default_from_json (line 3060) | struct has_non_default_from_json : std::false_type {}
type has_non_default_from_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >> (line 3063) | struct has_non_default_from_json < BasicJsonType, T, enable_if_t < !...
type has_to_json (line 3075) | struct has_to_json : std::false_type {}
type has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json<T>::value >> (line 3078) | struct has_to_json < BasicJsonType, T, enable_if_t < !is_basic_json<...
type is_iterator_traits (line 3093) | struct is_iterator_traits : std::false_type {}
type is_iterator_traits<iterator_traits<T>> (line 3096) | struct is_iterator_traits<iterator_traits<T>>
type is_complete_type (line 3113) | struct is_complete_type : std::false_type {}
type is_complete_type<T, decltype(void(sizeof(T)))> (line 3116) | struct is_complete_type<T, decltype(void(sizeof(T)))> : std::true_ty...
type is_compatible_object_type_impl (line 3120) | struct is_compatible_object_type_impl : std::false_type {}
type is_compatible_object_type_impl <
BasicJsonType, CompatibleObjectType,
enable_if_t < is_detected<mapped_type_t, CompatibleObjectType>::value&&
is_detected<key_type_t, CompatibleObjectType>::value >> (line 3123) | struct is_compatible_object_type_impl <
type is_compatible_object_type (line 3140) | struct is_compatible_object_type
type is_constructible_object_type_impl (line 3145) | struct is_constructible_object_type_impl : std::false_type {}
type is_constructible_object_type_impl <
BasicJsonType, ConstructibleObjectType,
enable_if_t < is_detected<mapped_type_t, ConstructibleObjectType>::value&&
is_detected<key_type_t, ConstructibleObjectType>::value >> (line 3148) | struct is_constructible_object_type_impl <
type is_constructible_object_type (line 3172) | struct is_constructible_object_type
type is_compatible_string_type_impl (line 3178) | struct is_compatible_string_type_impl : std::false_type {}
type is_compatible_string_type_impl <
BasicJsonType, CompatibleStringType,
enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
value_type_t, CompatibleStringType>::value >> (line 3181) | struct is_compatible_string_type_impl <
type is_compatible_string_type (line 3191) | struct is_compatible_string_type
type is_constructible_string_type_impl (line 3196) | struct is_constructible_string_type_impl : std::false_type {}
type is_constructible_string_type_impl <
BasicJsonType, ConstructibleStringType,
enable_if_t<is_detected_exact<typename BasicJsonType::string_t::value_type,
value_type_t, ConstructibleStringType>::value >> (line 3199) | struct is_constructible_string_type_impl <
type is_constructible_string_type (line 3210) | struct is_constructible_string_type
type is_compatible_array_type_impl (line 3214) | struct is_compatible_array_type_impl : std::false_type {}
type is_compatible_array_type (line 3233) | struct is_compatible_array_type
type is_constructible_array_type_impl (line 3237) | struct is_constructible_array_type_impl : std::false_type {}
type is_constructible_array_type_impl <
BasicJsonType, ConstructibleArrayType,
enable_if_t<std::is_same<ConstructibleArrayType,
typename BasicJsonType::value_type>::value >> (line 3240) | struct is_constructible_array_type_impl <
type is_constructible_array_type_impl <
BasicJsonType, ConstructibleArrayType,
enable_if_t < !std::is_same<ConstructibleArrayType,
typename BasicJsonType::value_type>::value&&
std::is_default_constructible<ConstructibleArrayType>::value&&
(std::is_move_assignable<ConstructibleArrayType>::value ||
std::is_copy_assignable<ConstructibleArrayType>::value)&&
is_detected<value_type_t, ConstructibleArrayType>::value&&
is_detected<iterator_t, ConstructibleArrayType>::value&&
is_complete_type <
detected_t<value_type_t, ConstructibleArrayType >>::value >> (line 3247) | struct is_constructible_array_type_impl <
type is_constructible_array_type (line 3276) | struct is_constructible_array_type
type is_compatible_integer_type_impl (line 3281) | struct is_compatible_integer_type_impl : std::false_type {}
type is_compatible_integer_type_impl <
RealIntegerType, CompatibleNumberIntegerType,
enable_if_t < std::is_integral<RealIntegerType>::value&&
std::is_integral<CompatibleNumberIntegerType>::value&&
!std::is_same<bool, CompatibleNumberIntegerType>::value >> (line 3284) | struct is_compatible_integer_type_impl <
type is_compatible_integer_type (line 3302) | struct is_compatible_integer_type
type is_compatible_type_impl (line 3307) | struct is_compatible_type_impl: std::false_type {}
type is_compatible_type_impl <
BasicJsonType, CompatibleType,
enable_if_t<is_complete_type<CompatibleType>::value >> (line 3310) | struct is_compatible_type_impl <
type is_compatible_type (line 3319) | struct is_compatible_type
type conjunction (line 3323) | struct conjunction : std::true_type { }
type conjunction<B1> (line 3324) | struct conjunction<B1> : B1 { }
type is_constructible_tuple (line 3330) | struct is_constructible_tuple : std::false_type {}
type value_t (line 3377) | enum class value_t : std::uint8_t
function from_json (line 3426) | void from_json(const BasicJsonType& j, typename std::nullptr_t& n)
function get_arithmetic_value (line 3440) | void get_arithmetic_value(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 3466) | void from_json(const BasicJsonType& j, typename BasicJsonType::boole...
function from_json (line 3476) | void from_json(const BasicJsonType& j, typename BasicJsonType::strin...
function from_json (line 3492) | void from_json(const BasicJsonType& j, ConstructibleStringType& s)
function from_json (line 3503) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3509) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3515) | void from_json(const BasicJsonType& j, typename BasicJsonType::numbe...
function from_json (line 3522) | void from_json(const BasicJsonType& j, EnumType& e)
function from_json (line 3532) | void from_json(const BasicJsonType& j, std::forward_list<T, Allocato...
function from_json (line 3549) | void from_json(const BasicJsonType& j, std::valarray<T>& l)
function from_json (line 3564) | auto from_json(const BasicJsonType& j, T (&arr)[N])
function from_json_array_impl (line 3574) | void from_json_array_impl(const BasicJsonType& j, typename BasicJson...
function from_json_array_impl (line 3580) | auto from_json_array_impl(const BasicJsonType& j, std::array<T, N>& ...
function from_json_array_impl (line 3591) | auto from_json_array_impl(const BasicJsonType& j, ConstructibleArray...
function from_json_array_impl (line 3612) | void from_json_array_impl(const BasicJsonType& j, ConstructibleArray...
function from_json (line 3637) | auto from_json(const BasicJsonType& j, ConstructibleArrayType& arr)
function from_json (line 3652) | void from_json(const BasicJsonType& j, typename BasicJsonType::binar...
function from_json (line 3664) | void from_json(const BasicJsonType& j, ConstructibleObjectType& obj)
function from_json (line 3696) | void from_json(const BasicJsonType& j, ArithmeticType& val)
function from_json (line 3727) | void from_json(const BasicJsonType& j, std::pair<A1, A2>& p)
function from_json_tuple_impl (line 3733) | void from_json_tuple_impl(const BasicJsonType& j, Tuple& t, index_se...
function from_json (line 3739) | void from_json(const BasicJsonType& j, std::tuple<Args...>& t)
function from_json (line 3747) | void from_json(const BasicJsonType& j, std::map<Key, Value, Compare,...
function from_json (line 3767) | void from_json(const BasicJsonType& j, std::unordered_map<Key, Value...
type from_json_fn (line 3784) | struct from_json_fn
function int_to_string (line 3835) | void int_to_string( string_type& target, std::size_t value )
class iteration_proxy_value (line 3841) | class iteration_proxy_value
method iteration_proxy_value (line 3864) | explicit iteration_proxy_value(IteratorType it) noexcept : anchor(...
method iteration_proxy_value (line 3867) | iteration_proxy_value& operator*()
method iteration_proxy_value (line 3873) | iteration_proxy_value& operator++()
method string_type (line 3894) | const string_type& key() const
method value (line 3922) | typename IteratorType::reference value() const
class iteration_proxy (line 3929) | class iteration_proxy
method iteration_proxy (line 3937) | explicit iteration_proxy(typename IteratorType::reference cont) no...
method begin (line 3941) | iteration_proxy_value<IteratorType> begin() noexcept
method end (line 3947) | iteration_proxy_value<IteratorType> end() noexcept
function get (line 3956) | auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>...
function get (line 3964) | auto get(const nlohmann::detail::iteration_proxy_value<IteratorType>...
type external_constructor (line 4014) | struct external_constructor
type external_constructor<value_t::boolean> (line 4017) | struct external_constructor<value_t::boolean>
method construct (line 4020) | static void construct(BasicJsonType& j, typename BasicJsonType::bo...
type external_constructor<value_t::string> (line 4029) | struct external_constructor<value_t::string>
method construct (line 4032) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4040) | static void construct(BasicJsonType& j, typename BasicJsonType::st...
method construct (line 4050) | static void construct(BasicJsonType& j, const CompatibleStringType...
type external_constructor<value_t::binary> (line 4059) | struct external_constructor<value_t::binary>
method construct (line 4062) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4071) | static void construct(BasicJsonType& j, typename BasicJsonType::bi...
type external_constructor<value_t::number_float> (line 4081) | struct external_constructor<value_t::number_float>
method construct (line 4084) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_unsigned> (line 4093) | struct external_constructor<value_t::number_unsigned>
method construct (line 4096) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::number_integer> (line 4105) | struct external_constructor<value_t::number_integer>
method construct (line 4108) | static void construct(BasicJsonType& j, typename BasicJsonType::nu...
type external_constructor<value_t::array> (line 4117) | struct external_constructor<value_t::array>
method construct (line 4120) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4128) | static void construct(BasicJsonType& j, typename BasicJsonType::ar...
method construct (line 4138) | static void construct(BasicJsonType& j, const CompatibleArrayType&...
method construct (line 4148) | static void construct(BasicJsonType& j, const std::vector<bool>& arr)
method construct (line 4162) | static void construct(BasicJsonType& j, const std::valarray<T>& arr)
type external_constructor<value_t::object> (line 4176) | struct external_constructor<value_t::object>
method construct (line 4179) | static void construct(BasicJsonType& j, const typename BasicJsonTy...
method construct (line 4187) | static void construct(BasicJsonType& j, typename BasicJsonType::ob...
method construct (line 4196) | static void construct(BasicJsonType& j, const CompatibleObjectType...
function to_json (line 4213) | void to_json(BasicJsonType& j, T b) noexcept
function to_json (line 4220) | void to_json(BasicJsonType& j, const CompatibleString& s)
function to_json (line 4226) | void to_json(BasicJsonType& j, typename BasicJsonType::string_t&& s)
function to_json (line 4233) | void to_json(BasicJsonType& j, FloatType val) noexcept
function to_json (line 4240) | void to_json(BasicJsonType& j, CompatibleNumberUnsignedType val) noe...
function to_json (line 4247) | void to_json(BasicJsonType& j, CompatibleNumberIntegerType val) noex...
function to_json (line 4254) | void to_json(BasicJsonType& j, EnumType e) noexcept
function to_json (line 4261) | void to_json(BasicJsonType& j, const std::vector<bool>& e)
function to_json (line 4274) | void to_json(BasicJsonType& j, const CompatibleArrayType& arr)
function to_json (line 4280) | void to_json(BasicJsonType& j, const typename BasicJsonType::binary_...
function to_json (line 4287) | void to_json(BasicJsonType& j, const std::valarray<T>& arr)
function to_json (line 4293) | void to_json(BasicJsonType& j, typename BasicJsonType::array_t&& arr)
function to_json (line 4300) | void to_json(BasicJsonType& j, const CompatibleObjectType& obj)
function to_json (line 4306) | void to_json(BasicJsonType& j, typename BasicJsonType::object_t&& obj)
function to_json (line 4316) | void to_json(BasicJsonType& j, const T(&arr)[N])
function to_json (line 4322) | void to_json(BasicJsonType& j, const std::pair<T1, T2>& p)
function to_json (line 4330) | void to_json(BasicJsonType& j, const T& b)
function to_json_tuple_impl (line 4336) | void to_json_tuple_impl(BasicJsonType& j, const Tuple& t, index_sequ...
function to_json (line 4342) | void to_json(BasicJsonType& j, const T& t)
type to_json_fn (line 4347) | struct to_json_fn
function combine (line 4595) | inline std::size_t combine(std::size_t seed, std::size_t h) noexcept
function hash (line 4613) | std::size_t hash(const BasicJsonType& j)
type input_format_t (line 4744) | enum class input_format_t { json, cbor, msgpack, ubjson, bson }
class file_input_adapter (line 4754) | class file_input_adapter
method file_input_adapter (line 4760) | explicit file_input_adapter(std::FILE* f) noexcept
method file_input_adapter (line 4765) | file_input_adapter(const file_input_adapter&) = delete;
method file_input_adapter (line 4766) | file_input_adapter(file_input_adapter&&) = default;
method file_input_adapter (line 4767) | file_input_adapter& operator=(const file_input_adapter&) = delete;
method file_input_adapter (line 4768) | file_input_adapter& operator=(file_input_adapter&&) = delete;
method get_character (line 4770) | std::char_traits<char>::int_type get_character() noexcept
class input_stream_adapter (line 4790) | class input_stream_adapter
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
class iterator_input_adapter (line 4843) | class iterator_input_adapter
method iterator_input_adapter (line 4848) | iterator_input_adapter(IteratorType first, IteratorType last)
method get_character (line 4851) | typename std::char_traits<char_type>::int_type get_character()
method empty (line 4872) | bool empty() const
type wide_string_input_helper (line 4881) | struct wide_string_input_helper
type wide_string_input_helper<BaseInputAdapter, 4> (line 4884) | struct wide_string_input_helper<BaseInputAdapter, 4>
method fill_buffer (line 4887) | static void fill_buffer(BaseInputAdapter& input,
type wide_string_input_helper<BaseInputAdapter, 2> (line 4942) | struct wide_string_input_helper<BaseInputAdapter, 2>
method fill_buffer (line 4945) | static void fill_buffer(BaseInputAdapter& input,
class wide_string_input_adapter (line 5005) | class wide_string_input_adapter
method wide_string_input_adapter (line 5010) | wide_string_input_adapter(BaseInputAdapter base)
method get_character (line 5013) | typename std::char_traits<char>::int_type get_character() noexcept
method fill_buffer (line 5034) | void fill_buffer()
type iterator_input_adapter_factory (line 5050) | struct iterator_input_adapter_factory
method adapter_type (line 5056) | static adapter_type create(IteratorType first, IteratorType last)
type is_iterator_of_multibyte (line 5063) | struct is_iterator_of_multibyte
type iterator_input_adapter_factory<IteratorType, enable_if_t<is_iterator_of_multibyte<IteratorType>::value>> (line 5073) | struct iterator_input_adapter_factory<IteratorType, enable_if_t<is_i...
method adapter_type (line 5080) | static adapter_type create(IteratorType first, IteratorType last)
function input_adapter (line 5088) | typename iterator_input_adapter_factory<IteratorType>::adapter_type ...
function input_adapter (line 5096) | auto input_adapter(const ContainerType& container) -> decltype(input...
function file_input_adapter (line 5106) | inline file_input_adapter input_adapter(std::FILE* file)
method file_input_adapter (line 4760) | explicit file_input_adapter(std::FILE* f) noexcept
method file_input_adapter (line 4765) | file_input_adapter(const file_input_adapter&) = delete;
method file_input_adapter (line 4766) | file_input_adapter(file_input_adapter&&) = default;
method file_input_adapter (line 4767) | file_input_adapter& operator=(const file_input_adapter&) = delete;
method file_input_adapter (line 4768) | file_input_adapter& operator=(file_input_adapter&&) = delete;
method get_character (line 4770) | std::char_traits<char>::int_type get_character() noexcept
function input_stream_adapter (line 5111) | inline input_stream_adapter input_adapter(std::istream& stream)
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
function input_stream_adapter (line 5116) | inline input_stream_adapter input_adapter(std::istream&& stream)
method input_stream_adapter (line 4805) | explicit input_stream_adapter(std::istream& i)
method input_stream_adapter (line 4810) | input_stream_adapter(const input_stream_adapter&) = delete;
method input_stream_adapter (line 4811) | input_stream_adapter& operator=(input_stream_adapter&) = delete;
method input_stream_adapter (line 4812) | input_stream_adapter& operator=(input_stream_adapter&& rhs) = delete;
method input_stream_adapter (line 4814) | input_stream_adapter(input_stream_adapter&& rhs) noexcept : is(rhs...
method get_character (line 4823) | std::char_traits<char>::int_type get_character()
function contiguous_bytes_input_adapter (line 5131) | contiguous_bytes_input_adapter input_adapter(CharT b)
function input_adapter (line 5139) | auto input_adapter(T (&array)[N]) -> decltype(input_adapter(array, a...
class span_input_adapter (line 5147) | class span_input_adapter
method span_input_adapter (line 5156) | span_input_adapter(CharT b, std::size_t l)
method span_input_adapter (line 5163) | span_input_adapter(IteratorType first, IteratorType last)
method contiguous_bytes_input_adapter (line 5166) | contiguous_bytes_input_adapter&& get()
class json_sax_dom_parser (line 5328) | class json_sax_dom_parser
method json_sax_dom_parser (line 5342) | explicit json_sax_dom_parser(BasicJsonType& r, const bool allow_ex...
method json_sax_dom_parser (line 5347) | json_sax_dom_parser(const json_sax_dom_parser&) = delete;
method json_sax_dom_parser (line 5348) | json_sax_dom_parser(json_sax_dom_parser&&) = default;
method json_sax_dom_parser (line 5349) | json_sax_dom_parser& operator=(const json_sax_dom_parser&) = delete;
method json_sax_dom_parser (line 5350) | json_sax_dom_parser& operator=(json_sax_dom_parser&&) = default;
method null (line 5353) | bool null()
method boolean (line 5359) | bool boolean(bool val)
method number_integer (line 5365) | bool number_integer(number_integer_t val)
method number_unsigned (line 5371) | bool number_unsigned(number_unsigned_t val)
method number_float (line 5377) | bool number_float(number_float_t val, const string_t& /*unused*/)
method string (line 5383) | bool string(string_t& val)
method binary (line 5389) | bool binary(binary_t& val)
method start_object (line 5395) | bool start_object(std::size_t len)
method key (line 5408) | bool key(string_t& val)
method end_object (line 5415) | bool end_object()
method start_array (line 5421) | bool start_array(std::size_t len)
method end_array (line 5434) | bool end_array()
method parse_error (line 5441) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
method is_errored (line 5453) | constexpr bool is_errored() const
method JSON_HEDLEY_RETURNS_NON_NULL (line 5466) | JSON_HEDLEY_RETURNS_NON_NULL
class json_sax_dom_callback_parser (line 5502) | class json_sax_dom_callback_parser
method json_sax_dom_callback_parser (line 5513) | json_sax_dom_callback_parser(BasicJsonType& r,
method json_sax_dom_callback_parser (line 5522) | json_sax_dom_callback_parser(const json_sax_dom_callback_parser&) ...
method json_sax_dom_callback_parser (line 5523) | json_sax_dom_callback_parser(json_sax_dom_callback_parser&&) = def...
method json_sax_dom_callback_parser (line 5524) | json_sax_dom_callback_parser& operator=(const json_sax_dom_callbac...
method json_sax_dom_callback_parser (line 5525) | json_sax_dom_callback_parser& operator=(json_sax_dom_callback_pars...
method null (line 5528) | bool null()
method boolean (line 5534) | bool boolean(bool val)
method number_integer (line 5540) | bool number_integer(number_integer_t val)
method number_unsigned (line 5546) | bool number_unsigned(number_unsigned_t val)
method number_float (line 5552) | bool number_float(number_float_t val, const string_t& /*unused*/)
method string (line 5558) | bool string(string_t& val)
method binary (line 5564) | bool binary(binary_t& val)
method start_object (line 5570) | bool start_object(std::size_t len)
method key (line 5588) | bool key(string_t& val)
method end_object (line 5605) | bool end_object()
method start_array (line 5634) | bool start_array(std::size_t len)
method end_array (line 5651) | bool end_array()
method parse_error (line 5680) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
method is_errored (line 5692) | constexpr bool is_errored() const
method handle_value (line 5714) | std::pair<bool, BasicJsonType*> handle_value(Value&& v, const bool...
class json_sax_acceptor (line 5798) | class json_sax_acceptor
method null (line 5807) | bool null()
method boolean (line 5812) | bool boolean(bool /*unused*/)
method number_integer (line 5817) | bool number_integer(number_integer_t /*unused*/)
method number_unsigned (line 5822) | bool number_unsigned(number_unsigned_t /*unused*/)
method number_float (line 5827) | bool number_float(number_float_t /*unused*/, const string_t& /*unu...
method string (line 5832) | bool string(string_t& /*unused*/)
method binary (line 5837) | bool binary(binary_t& /*unused*/)
method start_object (line 5842) | bool start_object(std::size_t /*unused*/ = std::size_t(-1))
method key (line 5847) | bool key(string_t& /*unused*/)
method end_object (line 5852) | bool end_object()
method start_array (line 5857) | bool start_array(std::size_t /*unused*/ = std::size_t(-1))
method end_array (line 5862) | bool end_array()
method parse_error (line 5867) | bool parse_error(std::size_t /*unused*/, const std::string& /*unus...
class lexer_base (line 5905) | class lexer_base
type token_type (line 5909) | enum class token_type
class lexer (line 5982) | class lexer : public lexer_base<BasicJsonType>
method lexer (line 5994) | explicit lexer(InputAdapterType&& adapter, bool ignore_comments_ =...
method lexer (line 6001) | lexer(const lexer&) = delete;
method lexer (line 6002) | lexer(lexer&&) = default;
method lexer (line 6003) | lexer& operator=(lexer&) = delete;
method lexer (line 6004) | lexer& operator=(lexer&&) = default;
method JSON_HEDLEY_PURE (line 6013) | JSON_HEDLEY_PURE
method get_codepoint (line 6040) | int get_codepoint()
method next_byte_in_range (line 6088) | bool next_byte_in_range(std::initializer_list<char_int_type> ranges)
method token_type (line 6125) | token_type scan_string()
method scan_comment (line 6715) | bool scan_comment()
method strtof (line 6783) | static void strtof(float& f, const char* str, char** endptr) noexcept
method strtof (line 6789) | static void strtof(double& f, const char* str, char** endptr) noex...
method strtof (line 6795) | static void strtof(long double& f, const char* str, char** endptr)...
method token_type (line 6840) | token_type scan_number() // lgtm [cpp/use-of-goto]
type is_sax (line 757
Copy disabled (too large)
Download .json
Condensed preview — 429 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (14,686K chars).
[
{
"path": ".gitattributes",
"chars": 282,
"preview": "# Apply override to all files and directories in the directory\n# https://github.com/github-linguist/linguist/blob/master"
},
{
"path": ".github/FUNDING.yml",
"chars": 676,
"preview": "# These are supported funding model platforms\n\ngithub: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [u"
},
{
"path": ".github/ISSUE_TEMPLATE/bug_report.md",
"chars": 358,
"preview": "---\nname: Bug report\nabout: Report a bug in Windhawk\ntitle: ''\nlabels: bug\nassignees: ''\n\n---\n\n<!--\nFor reporting a bug "
},
{
"path": ".github/ISSUE_TEMPLATE/feature_request.md",
"chars": 269,
"preview": "---\nname: Feature request\nabout: Suggest an idea for Windhawk\ntitle: ''\nlabels: enhancement\nassignees: ''\n\n---\n\n<!--\nFor"
},
{
"path": "LICENSE",
"chars": 35132,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "README.md",
"chars": 1918,
"preview": "# Windhawk\n\n\n\nWindhawk aims to make it easier to customize Windows programs. For more detai"
},
{
"path": "src/vscode-windhawk/.eslintrc.js",
"chars": 507,
"preview": "/**@type {import('eslint').Linter.Config} */\n// eslint-disable-next-line no-undef\nmodule.exports = {\n\troot: true,\n\tparse"
},
{
"path": "src/vscode-windhawk/.gitignore",
"chars": 60,
"preview": "node_modules/\nout/\nwebview/\nprebuilds/\ndist/\nwindhawk*.vsix\n"
},
{
"path": "src/vscode-windhawk/.prettierrc",
"chars": 26,
"preview": "{\n \"singleQuote\": true\n}\n"
},
{
"path": "src/vscode-windhawk/.vscode/extensions.json",
"chars": 311,
"preview": "{\n\t// See https://go.microsoft.com/fwlink/?LinkId=827846 to learn about workspace recommendations.\n\t// Extension identif"
},
{
"path": "src/vscode-windhawk/.vscode/launch.json",
"chars": 624,
"preview": "// A launch configuration that compiles the extension and then opens it inside a new window\n// Use IntelliSense to learn"
},
{
"path": "src/vscode-windhawk/.vscode/settings.json",
"chars": 272,
"preview": "{\n \"editor.insertSpaces\": false,\n \"cSpell.words\": [\n \"DUNICODE\",\n \"DWORD\",\n \"HKCU\",\n \""
},
{
"path": "src/vscode-windhawk/.vscode/tasks.json",
"chars": 366,
"preview": "// See https://go.microsoft.com/fwlink/?LinkId=733558\n// for the documentation about the tasks.json format\n{\n\t\"version\":"
},
{
"path": "src/vscode-windhawk/.vscodeignore",
"chars": 111,
"preview": ".vscode/**\nhelper_scripts/**\nsrc/**\nout/**\nnode_modules/**\n.claude/**\ntsconfig.json\n.gitignore\nCLAUDE.local.md\n"
},
{
"path": "src/vscode-windhawk/LICENSE",
"chars": 35143,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n\n Copyright (C) 2007 Free "
},
{
"path": "src/vscode-windhawk/README.md",
"chars": 101,
"preview": "# Windhawk VSCode extension\n\nPart of the Windhawk Windows customization tool.\n\nhttps://windhawk.net/\n"
},
{
"path": "src/vscode-windhawk/files/mod_template.wh.cpp",
"chars": 4739,
"preview": "// ==WindhawkMod==\n// @id new-mod\n// @name Your Awesome Mod\n// @description The best mod eve"
},
{
"path": "src/vscode-windhawk/helper_scripts/disable_default_keybindings.py",
"chars": 109344,
"preview": "import json\n\n\n# How to get these keybindings:\n# * Create Windhawk bundle.\n# * Remove Windhawk extension from UI.\n# * Run"
},
{
"path": "src/vscode-windhawk/package.json",
"chars": 15598,
"preview": "{\n\t\"name\": \"windhawk\",\n\t\"displayName\": \"Windhawk\",\n\t\"description\": \"Part of the Windhawk Windows customization tool\",\n\t\""
},
{
"path": "src/vscode-windhawk/package.nls.json",
"chars": 113,
"preview": "{\n\t\"extensionName\": \"Windhawk\",\n\t\"commands.category\": \"Windhawk\",\n\t\"commands.start.title\": \"Open Windhawk Tab\"\n}\n"
},
{
"path": "src/vscode-windhawk/src/config.ts",
"chars": 657,
"preview": "// https://stackoverflow.com/a/45074641\ndeclare const v8debug: any;\nconst debug = typeof v8debug === 'object'\n "
},
{
"path": "src/vscode-windhawk/src/extension.ts",
"chars": 50458,
"preview": "import * as fs from 'fs';\nimport fetch from 'node-fetch';\nimport * as path from 'path';\nimport * as semver from 'semver'"
},
{
"path": "src/vscode-windhawk/src/ini.ts",
"chars": 1372,
"preview": "import * as fs from 'fs';\nimport * as fsExt from 'fs-ext';\nimport * as ini from 'ini-win';\n\nexport type iniValue = {\n\t[k"
},
{
"path": "src/vscode-windhawk/src/logOutputChannel.ts",
"chars": 3182,
"preview": "import * as child_process from 'child_process';\nimport * as vscode from 'vscode';\n\nexport class WindhawkLogOutput {\n\tpri"
},
{
"path": "src/vscode-windhawk/src/storagePaths.ts",
"chars": 2607,
"preview": "import * as reg from 'native-reg';\nimport * as path from 'path';\nimport * as vscode from 'vscode';\nimport config from '."
},
{
"path": "src/vscode-windhawk/src/utils/appSettingsUtils.ts",
"chars": 21459,
"preview": "import * as child_process from 'child_process';\nimport * as reg from 'native-reg';\nimport * as path from 'path';\nimport "
},
{
"path": "src/vscode-windhawk/src/utils/compilerUtils.ts",
"chars": 15072,
"preview": "import * as child_process from 'child_process';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as vsco"
},
{
"path": "src/vscode-windhawk/src/utils/editorWorkspaceUtils.ts",
"chars": 6877,
"preview": "import * as fs from 'fs';\nimport * as path from 'path';\nimport * as child_process from 'child_process';\nimport * as vsco"
},
{
"path": "src/vscode-windhawk/src/utils/modConfigUtils.ts",
"chars": 19177,
"preview": "import * as fs from 'fs';\nimport * as reg from 'native-reg';\nimport * as path from 'path';\nimport * as ini from '../ini'"
},
{
"path": "src/vscode-windhawk/src/utils/modFilesUtils.ts",
"chars": 7078,
"preview": "import * as fs from 'fs';\nimport * as https from 'https';\nimport fetch from 'node-fetch';\nimport * as path from 'path';\n"
},
{
"path": "src/vscode-windhawk/src/utils/modSourceUtils.ts",
"chars": 14527,
"preview": "import * as fs from 'fs';\nimport * as yaml from 'js-yaml';\nimport * as jsonschema from 'jsonschema';\nimport * as path fr"
},
{
"path": "src/vscode-windhawk/src/utils/trayProgramUtils.ts",
"chars": 1840,
"preview": "import * as child_process from 'child_process';\nimport * as path from 'path';\nimport * as vscode from 'vscode';\n\nexport "
},
{
"path": "src/vscode-windhawk/src/utils/updateUtils.ts",
"chars": 5418,
"preview": "import { spawn } from 'child_process';\nimport * as crypto from 'crypto';\nimport * as fs from 'fs';\nimport fetch from 'no"
},
{
"path": "src/vscode-windhawk/src/utils/userProfileUtils.ts",
"chars": 4786,
"preview": "import * as fs from 'fs';\nimport * as path from 'path';\n\ntype UserProfileType = {\n\tid?: string,\n\tos?: string,\n\tapp: Part"
},
{
"path": "src/vscode-windhawk/src/webviewIPC.ts",
"chars": 11363,
"preview": "import * as vscode from 'vscode';\nimport {\n CancelUpdateReplyData,\n CompileEditedModReplyData,\n CompileModReplyData,\n"
},
{
"path": "src/vscode-windhawk/src/webviewIPCMessages.ts",
"chars": 8682,
"preview": "// Message types:\n// * 'message' is a message from the webview to the extension.\n// * 'messageWithReply' is a message fr"
},
{
"path": "src/vscode-windhawk/syntaxes/cpp.injection.json",
"chars": 3995,
"preview": "{\n \"scopeName\": \"source.cpp.windhawk\",\n \"injectionSelector\": \"L:source.cpp\",\n \"patterns\": [\n {\n "
},
{
"path": "src/vscode-windhawk/tsconfig.json",
"chars": 348,
"preview": "{\n\t\"compilerOptions\": {\n\t\t\"module\": \"commonjs\",\n\t\t\"target\": \"es2019\",\n\t\t\"lib\": [\"ES2019\"],\n\t\t\"outDir\": \"out\",\n\t\t\"sourceM"
},
{
"path": "src/vscode-windhawk/webpack.config.js",
"chars": 2378,
"preview": "/*---------------------------------------------------------------------------------------------\n * Copyright (c) Micros"
},
{
"path": "src/vscode-windhawk-ui/.editorconfig",
"chars": 245,
"preview": "# Editor configuration, see http://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = "
},
{
"path": "src/vscode-windhawk-ui/.eslintrc.json",
"chars": 900,
"preview": "{\n \"root\": true,\n \"ignorePatterns\": [\"**/*\"],\n \"plugins\": [\"@nrwl/nx\"],\n \"overrides\": [\n {\n \"files\": [\"*.ts\""
},
{
"path": "src/vscode-windhawk-ui/.gitignore",
"chars": 530,
"preview": "# See http://help.github.com/ignore-files/ for more about ignoring files.\n\n# compiled output\ndist\ntmp\n/out-tsc\n\n# depend"
},
{
"path": "src/vscode-windhawk-ui/.prettierignore",
"chars": 74,
"preview": "# Add files here to ignore them from prettier formatting\n\n/dist\n/coverage\n"
},
{
"path": "src/vscode-windhawk-ui/.prettierrc",
"chars": 26,
"preview": "{\n \"singleQuote\": true\n}\n"
},
{
"path": "src/vscode-windhawk-ui/.vscode/extensions.json",
"chars": 154,
"preview": "{\n \"recommendations\": [\n \"nrwl.angular-console\",\n \"esbenp.prettier-vscode\",\n \"firsttris.vscode-jest-runner\",\n "
},
{
"path": "src/vscode-windhawk-ui/apps/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/.babelrc",
"chars": 178,
"preview": "{\n \"presets\": [\n [\n \"@nrwl/react/babel\",\n {\n \"runtime\": \"automatic\"\n }\n ]\n ],\n \"plugins\":"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/.browserslistrc",
"chars": 562,
"preview": "# This file is used by:\n# 1. autoprefixer to adjust CSS to support the below specified browsers\n# 2. babel preset-env to"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/.eslintrc.json",
"chars": 331,
"preview": "{\n \"extends\": [\"plugin:@nrwl/nx/react\", \"../../.eslintrc.json\"],\n \"ignorePatterns\": [\"!**/*\"],\n \"overrides\": [\n {\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/jest.config.ts",
"chars": 392,
"preview": "/* eslint-disable */\nexport default {\n displayName: 'vscode-windhawk-ui',\n preset: '../../jest.preset.js',\n transform"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/project.json",
"chars": 2669,
"preview": "{\n \"name\": \"vscode-windhawk-ui\",\n \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n \"sourceRoot\": \"app"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/app.css",
"chars": 683000,
"preview": "/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */\n/* stylelint-disable no-du"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/app.less",
"chars": 2446,
"preview": "@import 'antd/dist/antd.dark.less';\n\n@font-face {\n font-family: 'Oxanium';\n src: local('Oxanium'), url(./fonts/Oxanium"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/app.tsx",
"chars": 2850,
"preview": "import { ConfigProvider } from 'antd';\nimport 'prism-themes/themes/prism-vsc-dark-plus.css';\nimport { useCallback, useEf"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/appUISettings.ts",
"chars": 235,
"preview": "import React from 'react';\nimport { AppUISettings } from './webviewIPCMessages';\n\nexport type AppUISettingsContextType ="
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/components/EllipsisText.tsx",
"chars": 1800,
"preview": "import { Typography } from 'antd';\nimport { TooltipPlacement } from 'antd/lib/tooltip';\nimport { useEffect, useRef, useS"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/components/InputWithContextMenu.tsx",
"chars": 5863,
"preview": "import {\n Dropdown,\n DropdownProps,\n Input,\n InputNumber,\n InputNumberProps,\n MenuProps,\n Popconfirm,\n Popconfir"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/components/ReactMarkdownCustom.tsx",
"chars": 2864,
"preview": "import type { Components } from 'react-markdown';\nimport ReactMarkdown from 'react-markdown';\nimport rehypeRaw from 'reh"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/i18n.ts",
"chars": 1290,
"preview": "import i18n from 'i18next';\nimport Backend from 'i18next-http-backend';\nimport { initReactI18next } from 'react-i18next'"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/About.tsx",
"chars": 4198,
"preview": "import { Alert, Button } from 'antd';\nimport { useContext, useState } from 'react';\nimport { Trans, useTranslation } fro"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/AppHeader.tsx",
"chars": 2906,
"preview": "import {\n faCog,\n faHome,\n faInfo,\n faList,\n IconDefinition,\n} from '@fortawesome/free-solid-svg-icons';\nimport { F"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ChangelogModal.tsx",
"chars": 2766,
"preview": "import { ConfigProvider, Modal, Result, Spin } from 'antd';\nimport { useEffect, useRef, useState } from 'react';\nimport "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/CreateNewModButton.tsx",
"chars": 1395,
"preview": "import { faPen } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontaweso"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/DevModeAction.tsx",
"chars": 2349,
"preview": "import { Checkbox } from 'antd';\nimport { TooltipPlacement } from 'antd/lib/tooltip';\nimport React, { JSX, useContext, u"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModCard.tsx",
"chars": 8649,
"preview": "import { faUser } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawes"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetails.tsx",
"chars": 20299,
"preview": "import { Badge, Button, Card, Radio, Result, Spin, Tooltip } from 'antd';\nimport { useCallback, useEffect, useMemo, useR"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsAdvanced.tsx",
"chars": 12248,
"preview": "import { Alert, Button, Dropdown, List, message, Select, Space, Switch } from 'antd';\nimport { useCallback, useEffect, u"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsChangelog.tsx",
"chars": 1239,
"preview": "import { ConfigProvider } from 'antd';\nimport { Trans, useTranslation } from 'react-i18next';\nimport styled from 'styled"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsHeader.tsx",
"chars": 14789,
"preview": "import { faGithubAlt } from '@fortawesome/free-brands-svg-icons';\nimport {\n faArrowLeft,\n faArrowRight,\n faHeart,\n f"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsReadme.tsx",
"chars": 1538,
"preview": "import { ConfigProvider } from 'antd';\nimport type { Components } from 'react-markdown';\nimport ReactMarkdownCustom from"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSettings.spec.ts",
"chars": 69522,
"preview": "/**\n * Tests for YamlSchemaValidator and YamlConverter\n * \n * These tests ensure:\n * 1. Round-trip conversion (settings "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSettings.tsx",
"chars": 53577,
"preview": "import { faCaretDown } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fon"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSource.tsx",
"chars": 3904,
"preview": "import { ConfigProvider, Switch } from 'antd';\nimport 'prism-themes/themes/prism-vsc-dark-plus.css';\nimport Prism from '"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModDetailsSourceDiff.tsx",
"chars": 8961,
"preview": "// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck: ignore TS errors due to lack of types for "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModMetadataLine.tsx",
"chars": 16235,
"preview": "import { faGithubAlt } from '@fortawesome/free-brands-svg-icons';\nimport {\n faBullhorn,\n faCrosshairs,\n faHome,\n faU"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModPreview.tsx",
"chars": 3188,
"preview": "import { Empty, message } from 'antd';\nimport { produce } from 'immer';\nimport { useCallback, useEffect, useLayoutEffect"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModsBrowserLocal.tsx",
"chars": 33470,
"preview": "import { faCaretDown, faFilter, faGripVertical, faHdd, faList, faSearch, faStar } from '@fortawesome/free-solid-svg-icon"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/ModsBrowserOnline.tsx",
"chars": 28439,
"preview": "import { faFilter, faSearch, faSort } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortaw"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/Panel.tsx",
"chars": 4163,
"preview": "import React, { useEffect } from 'react';\nimport { createHashRouter, Outlet, RouterProvider, useNavigate } from 'react-r"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/SafeModeIndicator.tsx",
"chars": 1714,
"preview": "import { Alert, Button } from 'antd';\nimport { useCallback, useContext } from 'react';\nimport { useTranslation } from 'r"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/Settings.tsx",
"chars": 19387,
"preview": "import { Alert, Badge, Button, Checkbox, Collapse, List, Modal, Select, Space, Switch, Tooltip } from 'antd';\nimport { u"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/UpdateModal.tsx",
"chars": 3832,
"preview": "import { Button, Modal, Progress, Result } from 'antd';\nimport { useCallback, useEffect, useState } from 'react';\nimport"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/VersionSelectorModal.tsx",
"chars": 4837,
"preview": "import { Badge, Menu, Modal, Spin } from 'antd';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimpo"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/panel/mockData.ts",
"chars": 6925,
"preview": "import vsCodeApi from '../vsCodeApi';\n\nexport const useMockData = !vsCodeApi;\n\nexport const mockAppUISettings = !useMock"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/sidebar/EditorModeControls.tsx",
"chars": 8128,
"preview": "import { Badge, Button, Dropdown, Switch, Tooltip } from 'antd';\nimport { useCallback, useState } from 'react';\nimport {"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/sidebar/Sidebar.tsx",
"chars": 1331,
"preview": "import { useCallback, useEffect, useState } from 'react';\nimport {\n getInitialSidebarParams,\n useSetEditedModDetails,\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/sidebar/mockData.ts",
"chars": 317,
"preview": "import vsCodeApi from '../vsCodeApi';\n\nexport const useMockData = !vsCodeApi;\n\nexport const mockSidebarModDetails = !use"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/swrHelpers.ts",
"chars": 123,
"preview": "export const fetchText = (input: RequestInfo | URL, init?: RequestInit) =>\n fetch(input, init).then((res) => res.text()"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/utils.spec.ts",
"chars": 1718,
"preview": "import { sanitizeUrl } from './utils';\n\ndescribe('sanitizeUrl', () => {\n it('should allow http URLs', () => {\n expec"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/utils.ts",
"chars": 777,
"preview": "/**\n * Sanitizes a URL to only allow http:// or https:// protocols.\n * Returns undefined if the URL is invalid or uses a"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/vsCodeApi.ts",
"chars": 338,
"preview": "// https://github.com/microsoft/vscode/issues/96221#issuecomment-735408921\ndeclare function acquireVsCodeApi<T = unknown"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/webviewIPC.ts",
"chars": 18484,
"preview": "import { useCallback, useState } from 'react';\nimport { useEventListener } from 'usehooks-ts';\n\nimport vsCodeApi from '."
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/app/webviewIPCMessages.ts",
"chars": 8682,
"preview": "// Message types:\n// * 'message' is a message from the webview to the extension.\n// * 'messageWithReply' is a message fr"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/environments/environment.prod.ts",
"chars": 52,
"preview": "export const environment = {\n production: true,\n};\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/environments/environment.ts",
"chars": 218,
"preview": "// This file can be replaced during build by using the `fileReplacements` array.\n// When building for production, this f"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/index.html",
"chars": 549,
"preview": "<!DOCTYPE html>\n<html lang=\"en\">\n <head>\n <meta charset=\"utf-8\" />\n <title>Windhawk</title>\n <meta name=\"viewp"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ar/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ar/translation.json",
"chars": 12364,
"preview": "{\n \"general\": {\n \"loading\": \"جار التحميل...\",\n \"loadingFailed\": \"فشل التحميل، يرجى التحقق من اتصال الإنترنت\",\n "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/cs/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/cs/translation.json",
"chars": 13286,
"preview": "{\n \"general\": {\n \"loading\": \"Načítání...\",\n \"loadingFailed\": \"Stahování se nezdařilo, zkontrolujte prosím své při"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/da/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/da/translation.json",
"chars": 12685,
"preview": "{\n \"general\": {\n \"loading\": \"Indlæser...\",\n \"loadingFailed\": \"Indlæsning fejlede, tjek din internetforbindelse\",\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/de/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/de/translation.json",
"chars": 14404,
"preview": "{\n \"general\": {\n \"loading\": \"Lade...\",\n \"loadingFailed\": \"Laden nicht erfolgreich. Bitte überprüfen Sie Ihre Inte"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/el/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/el/translation.json",
"chars": 14678,
"preview": "{\n \"general\": {\n \"loading\": \"Φόρτωση...\",\n \"loadingFailed\": \"Η φόρτωση απέτυχε, ελέγξτε τη σύνδεσή σας στο Διαδίκ"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/en/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/en/translation.json",
"chars": 15680,
"preview": "{\n \"general\": {\n \"loading\": \"Loading...\",\n \"loadingFailed\": \"Loading failed, please check your internet connectio"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/es/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/es/translation.json",
"chars": 14222,
"preview": "{\n \"general\": {\n \"loading\": \"Cargando...\",\n \"loadingFailed\": \"La carga falló, verifique su conexión a Internet\",\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/fr/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/fr/translation.json",
"chars": 13493,
"preview": "{\n \"general\": {\n \"loading\": \"Chargement...\",\n \"loadingFailed\": \"Le chargement a échoué, vérifiez votre connexion "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/hi/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/hi/translation.json",
"chars": 13370,
"preview": "{\n \"general\": {\n \"loading\": \"लोड हो रहा है...\",\n \"loadingFailed\": \"लोडिंग विफल, कृपया अपना इंटरनेट कनेक्शन जांचें"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/hr/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/hr/translation.json",
"chars": 13378,
"preview": "{\n \"general\": {\n \"loading\": \"Učitavam...\",\n \"loadingFailed\": \"Učitavanje nije uspjelo, provjerite internetsku vez"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/hu/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/hu/translation.json",
"chars": 11701,
"preview": "{\n \"general\": {\n \"loading\": \"Betöltés...\",\n \"loadingFailed\": \"Betöltés sikertelen, kérjük, ellenőrizze az interne"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/id/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/id/translation.json",
"chars": 12363,
"preview": "{\n \"general\": {\n \"loading\": \"Memuat...\",\n \"loadingFailed\": \"Gagal dimuat, silahkan periksa koneksi internet anda\""
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/it/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/it/translation.json",
"chars": 12126,
"preview": "{\n \"general\": {\n \"loading\": \"Caricamento...\",\n \"loadingFailed\": \"Caricamento fallito, per favore controlla la tua"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ja/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ja/translation.json",
"chars": 9856,
"preview": "{\n \"general\": {\n \"loading\": \"読み込み中...\",\n \"loadingFailed\": \"読み込みに失敗しました。インターネット接続を確認してください。\",\n \"loadingFailedTi"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ko/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ko/translation.json",
"chars": 11781,
"preview": "{\n \"general\": {\n \"loading\": \"불러오는 중...\",\n \"loadingFailed\": \"불러오는 데 실패했습니다, 인터넷 연결을 확인해주세요\",\n \"loadingFailedTit"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/nl/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/nl/translation.json",
"chars": 13909,
"preview": "{\n \"general\": {\n \"loading\": \"Bezig met laden…\",\n \"loadingFailed\": \"Laden mislukt, controleer je internetverbindin"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/pl/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/pl/translation.json",
"chars": 13068,
"preview": "{\n \"general\": {\n \"loading\": \"Ładowanie...\",\n \"loadingFailed\": \"Ładowanie zakończyło się niepowodzeniem, sprawdź s"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/pt-BR/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/pt-BR/translation.json",
"chars": 12899,
"preview": "{\n \"general\": {\n \"loading\": \"Carregando...\",\n \"loadingFailed\": \"Falha ao carregar, verifique sua conexão\",\n \"l"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ro/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ro/translation.json",
"chars": 14244,
"preview": "{\n \"general\": {\n \"loading\": \"Se încarcă...\",\n \"loadingFailed\": \"Nu s-a putut încărca, verifică-ți conexiunea la i"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ru/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ru/translation.json",
"chars": 12887,
"preview": "{\n \"general\": {\n \"loading\": \"Загрузка...\",\n \"loadingFailed\": \"Загрузка не удалась, пожалуйста, проверьте ваше сое"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/sv/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/sv/translation.json",
"chars": 12460,
"preview": "{\n \"general\": {\n \"loading\": \"Laddar...\",\n \"loadingFailed\": \"Det gick inte att ladda, kontrollera din internetansl"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ta/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/ta/translation.json",
"chars": 13507,
"preview": "{\n \"general\": {\n \"loading\": \"ஏற்றுகிறது...\",\n \"loadingFailed\": \"ஏற்றல் தோல்வியடைந்தது, உங்கள் இணைய இணைப்பைச் சரிப"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/th/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/th/translation.json",
"chars": 12951,
"preview": "{\n \"general\": {\n \"loading\": \"กำลังโหลด...\",\n \"loadingFailed\": \"ไม่สามารถโหลดได้ โปรดตรวจสอบการเชื่อมต่ออินเทอร์เน"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/tr/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/tr/translation.json",
"chars": 11866,
"preview": "{\n \"general\": {\n \"loading\": \"Yükleniyor...\",\n \"loadingFailed\": \"Yükleme başarısız, lütfen internet bağlantınızı k"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/uk/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/uk/translation.json",
"chars": 12521,
"preview": "{\n \"general\": {\n \"loading\": \"Завантаження...\",\n \"loadingFailed\": \"Помилка завантаження, будь ласка, перевірте сво"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/vi/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/vi/translation.json",
"chars": 13091,
"preview": "{\n \"general\": {\n \"loading\": \"Đang tải...\",\n \"loadingFailed\": \"Tải thất bại, vui lòng kiểm tra kết nối internet củ"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/zh-CN/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/zh-CN/translation.json",
"chars": 8579,
"preview": "{\n \"general\": {\n \"loading\": \"加载中...\",\n \"loadingFailed\": \"加载失败,请检查您的网络连接\",\n \"loadingFailedTitle\": \"加载失败\",\n \""
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/zh-TW/DO_NOT_EDIT.txt",
"chars": 172,
"preview": "The files in this folder are generated automatically.\n\nTo submit a translation update, please refer to this repository:\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/locales/zh-TW/translation.json",
"chars": 7884,
"preview": "{\n \"general\": {\n \"loading\": \"正在載入...\",\n \"loadingFailed\": \"載入失敗,請檢查您的網路連線\",\n \"loadingFailedTitle\": \"載入失敗\",\n "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/main.css",
"chars": 214,
"preview": "body {\n /* remove padding set by vscode */\n padding: 0;\n\n margin: 0;\n\n /* scrollbars sometimes show up because of An"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/main.tsx",
"chars": 278,
"preview": "import { StrictMode } from 'react';\nimport * as ReactDOM from 'react-dom/client';\nimport App from './app/app';\nimport '."
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/src/polyfills.ts",
"chars": 218,
"preview": "/**\n * Polyfill stable language features. These imports will be optimized by `@babel/preset-env`.\n *\n * See: https://git"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/tsconfig.app.json",
"chars": 522,
"preview": "{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"types\": [\"node\"]\n },\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/tsconfig.json",
"chars": 557,
"preview": "{\n \"extends\": \"../../tsconfig.base.json\",\n \"compilerOptions\": {\n \"jsx\": \"react-jsx\",\n \"allowJs\": true,\n \"esMo"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/tsconfig.spec.json",
"chars": 512,
"preview": "{\n \"extends\": \"./tsconfig.json\",\n \"compilerOptions\": {\n \"outDir\": \"../../dist/out-tsc\",\n \"module\": \"commonjs\",\n "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui/webpack.config.js",
"chars": 814,
"preview": "// Reference:\n// https://github.com/ideafast/ideafast-portal/blob/59fb91104db81a86fc282491ac936d49fb4ef0e8/packages/itma"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/.eslintrc.json",
"chars": 364,
"preview": "{\n \"extends\": [\"plugin:cypress/recommended\", \"../../.eslintrc.json\"],\n \"ignorePatterns\": [\"!**/*\"],\n \"overrides\": [\n "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/cypress.config.ts",
"chars": 174,
"preview": "import { defineConfig } from 'cypress';\nimport { nxE2EPreset } from '@nrwl/cypress/plugins/cypress-preset';\n\nexport defa"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/project.json",
"chars": 864,
"preview": "{\n \"name\": \"vscode-windhawk-ui-e2e\",\n \"$schema\": \"../../node_modules/nx/schemas/project-schema.json\",\n \"sourceRoot\": "
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/src/e2e/app.cy.ts",
"chars": 424,
"preview": "import { getGreeting } from '../support/app.po';\n\ndescribe('vscode-windhawk-ui', () => {\n beforeEach(() => cy.visit('/'"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/src/fixtures/example.json",
"chars": 80,
"preview": "{\n \"name\": \"Using fixtures to represent data\",\n \"email\": \"hello@cypress.io\"\n}\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/src/support/app.po.ts",
"chars": 47,
"preview": "export const getGreeting = () => cy.get('h1');\n"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/src/support/commands.ts",
"chars": 1133,
"preview": "// ***********************************************\n// This example commands.js shows you how to\n// create various custom"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/src/support/e2e.ts",
"chars": 599,
"preview": "// ***********************************************************\n// This example support/index.js is processed and\n// load"
},
{
"path": "src/vscode-windhawk-ui/apps/vscode-windhawk-ui-e2e/tsconfig.json",
"chars": 252,
"preview": "{\n \"extends\": \"../../tsconfig.base.json\",\n \"compilerOptions\": {\n \"sourceMap\": false,\n \"outDir\": \"../../dist/out-"
},
{
"path": "src/vscode-windhawk-ui/babel.config.json",
"chars": 28,
"preview": "{\n \"babelrcRoots\": [\"*\"]\n}\n"
},
{
"path": "src/vscode-windhawk-ui/jest.config.ts",
"chars": 98,
"preview": "import { getJestProjects } from '@nrwl/jest';\n\nexport default {\n projects: getJestProjects(),\n};\n"
},
{
"path": "src/vscode-windhawk-ui/jest.preset.js",
"chars": 90,
"preview": "const nxPreset = require('@nrwl/jest/preset').default;\n\nmodule.exports = { ...nxPreset };\n"
},
{
"path": "src/vscode-windhawk-ui/libs/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "src/vscode-windhawk-ui/nx.json",
"chars": 1564,
"preview": "{\n \"$schema\": \"./node_modules/nx/schemas/nx-schema.json\",\n \"npmScope\": \"vscode-windhawk-ui-nx\",\n \"affected\": {\n \"d"
},
{
"path": "src/vscode-windhawk-ui/package.json",
"chars": 3281,
"preview": "{\n \"name\": \"vscode-windhawk-ui-nx\",\n \"version\": \"1.7.3\",\n \"scripts\": {\n \"start\": \"nx serve\",\n \"watch\": \"nx buil"
},
{
"path": "src/vscode-windhawk-ui/tools/generators/.gitkeep",
"chars": 0,
"preview": ""
},
{
"path": "src/vscode-windhawk-ui/tools/tsconfig.tools.json",
"chars": 251,
"preview": "{\n \"extends\": \"../tsconfig.base.json\",\n \"compilerOptions\": {\n \"outDir\": \"../dist/out-tsc/tools\",\n \"rootDir\": \".\""
},
{
"path": "src/vscode-windhawk-ui/tsconfig.base.json",
"chars": 467,
"preview": "{\n \"compileOnSave\": false,\n \"compilerOptions\": {\n \"rootDir\": \".\",\n \"sourceMap\": true,\n \"declaration\": false,\n"
},
{
"path": "src/windhawk/.clang-format",
"chars": 431,
"preview": "BasedOnStyle: Chromium\nIndentWidth: 4\n\n# Reference: https://github.com/chromium/chromium/blob/3d90e395a5e87e305e567c097c"
},
{
"path": "src/windhawk/.gitattributes",
"chars": 2518,
"preview": "###############################################################################\n# Set default behavior to automatically "
},
{
"path": "src/windhawk/.gitignore",
"chars": 4306,
"preview": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n# User"
},
{
"path": "src/windhawk/_typos.toml",
"chars": 578,
"preview": "[files]\n# Files to exclude from spell checking.\nextend-exclude = [\n \"/app/libraries/\",\n \"/app/rsrc.rc\",\n \"/engi"
},
{
"path": "src/windhawk/app/app.cpp",
"chars": 19007,
"preview": "#include \"stdafx.h\"\n\n#include \"functions.h\"\n#include \"logger.h\"\n#include \"main_window.h\"\n#include \"resource.h\"\n#include "
},
{
"path": "src/windhawk/app/app.vcxproj",
"chars": 24311,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project DefaultTargets=\"Build\" xmlns=\"http://schemas.microsoft.com/developer/msb"
},
{
"path": "src/windhawk/app/app.vcxproj.filters",
"chars": 4790,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<Project ToolsVersion=\"4.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuil"
},
{
"path": "src/windhawk/app/engine_control.cpp",
"chars": 1567,
"preview": "#include \"stdafx.h\"\n\n#include \"engine_control.h\"\n\n#include \"storage_manager.h\"\n\nEngineControl::EngineControl() {\n aut"
},
{
"path": "src/windhawk/app/engine_control.h",
"chars": 813,
"preview": "#pragma once\n\nclass EngineControl {\n public:\n EngineControl();\n ~EngineControl();\n\n EngineControl(const Engin"
},
{
"path": "src/windhawk/app/event_viewer_crash_monitor.cpp",
"chars": 4909,
"preview": "#include \"stdafx.h\"\n\n#include \"event_viewer_crash_monitor.h\"\n\n#include \"logger.h\"\n\n// Based on:\n// https://learn.microso"
},
{
"path": "src/windhawk/app/event_viewer_crash_monitor.h",
"chars": 435,
"preview": "#pragma once\n\nclass EventViewerCrashMonitor {\n public:\n EventViewerCrashMonitor(std::wstring_view targetAppPath);\n\n"
},
{
"path": "src/windhawk/app/functions.cpp",
"chars": 21503,
"preview": "#include \"stdafx.h\"\n\n#include \"functions.h\"\n\nnamespace Functions {\n\nnamespace {\n\ntypedef struct _UNICODE_STRING {\n US"
},
{
"path": "src/windhawk/app/functions.h",
"chars": 1770,
"preview": "#pragma once\n\nnamespace Functions {\n\nBOOL SetPrivilege(HANDLE hToken, LPCTSTR lpszPrivilege, BOOL bEnablePrivilege);\nBOO"
},
{
"path": "src/windhawk/app/libraries/nlohmann/json.hpp",
"chars": 926233,
"preview": "/*\n __ _____ _____ _____\n __| | __| | | | JSON for Modern C++\n| | |__ | | | | | | version 3.9.1\n|___"
},
{
"path": "src/windhawk/app/libraries/winhttpwrappers/WinHTTPWrappers.h",
"chars": 90264,
"preview": "/*\nModule : WinHTTPWrappers.h\nPurpose: Defines the interface for a set of C++ class which encapsulate WinHTTP.\nThe class"
},
{
"path": "src/windhawk/app/logger.cpp",
"chars": 1042,
"preview": "#include \"stdafx.h\"\n\n#include \"logger.h\"\n\n#include \"storage_manager.h\"\n\nnamespace {\n\nLogger::Verbosity GetVerbosityFromC"
},
{
"path": "src/windhawk/app/logger.h",
"chars": 882,
"preview": "#pragma once\n\n#include \"logger_base.h\"\n\nclass Logger : public LoggerBase {\n public:\n Logger(Verbosity initialVerbos"
},
{
"path": "src/windhawk/app/main_window.cpp",
"chars": 38664,
"preview": "#include \"stdafx.h\"\n\n#include \"main_window.h\"\n\n#include \"functions.h\"\n#include \"logger.h\"\n#include \"resource.h\"\n#include"
},
{
"path": "src/windhawk/app/main_window.h",
"chars": 4884,
"preview": "#pragma once\n\n#include \"engine_control.h\"\n#include \"event_viewer_crash_monitor.h\"\n#include \"service_common.h\"\n#include \""
},
{
"path": "src/windhawk/app/packages.config",
"chars": 131,
"preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n <package id=\"wtl\" version=\"10.0.10320\" targetFramework=\"native\" />\n"
},
{
"path": "src/windhawk/app/resource.h",
"chars": 2754,
"preview": "//{{NO_DEPENDENCIES}}\n// Microsoft Visual C++ generated include file.\n// Used by rsrc.rc\n//\n#define IDR_MAINFRAME "
},
{
"path": "src/windhawk/app/rsrc/compatibility.manifest",
"chars": 1205,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<assembly xmlns=\"urn:schemas-microsoft-com:asm.v1\" manifestVersi"
}
]
// ... and 229 more files (download for full content)
About this extraction
This page contains the full source code of the ramensoftware/windhawk GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 429 files (24.7 MB), approximately 3.5M tokens, and a symbol index with 8403 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.