Files
mm/docs/tutorial/vscode.md
T
Derek Hensley 471d86f530 Build Sync (#1600)
* Rename outputs

* Makefile target renames

* Add run target

* yeet z64compress

* venv

* baserom_uncompressed -> baserom-decompressed

* input rom name to baserom.z64

* Add BUILD_DIR makefile variable

* Move built roms to build dir

* Move baserom to baseroms folder

* Add version to map file name

* Makefile cleanup

* Rename ldscript to include version

* Multiversion build

* n64-us version name

* Remove venv as dependency of setup

* Readme wording

* extract_baserom.py suggestion

* Readd checksums

* Make .venv work with windows

* missed an endif

* Cleaner windows venv implementation

* Remove duplciate process

* Build process steps

* Move make_options back

* Fix schedule build directory

* Fix schedule includes

* Makefile NON_MATCHING check -> != 0

* OOT 1704 changes

* Small cleanups

* Missed 1 thing

* UNSET -> SYMS

* Update extract_baserom.py

* dmadata.py

* Small cleanup

* dmadata_start

* Format

* dmadata files

* Fix makefile comment

* Jenkins report fix

* extracted dir

* Python dependencies order in readme
2024-04-06 11:07:58 -07:00

3.1 KiB

VSCode

A lot of people on this project use VSCode as their coding environment.

Extensions

There are a number of useful extensions available to make work more efficient:

  • C/C++ IntelliSense
  • Clang-Format
  • HexInspector (hover on numbers for float and other info)
  • NumberMonger (convert hex to decimal and vice versa)
  • bracket pair colorizer 2 (now obsolete due to VSCode's built-in bracket colouring)
  • Better MIPS Support

Useful stuff to know

  • Ctrl + Alt + Up/Down (on Windows, on Linux it's Ctrl + Shift + Up/Down or Shift + Alt + Up/Down) gives multicursors across consecutive lines. If you want several cursors in a more diverse arrangement, middle clicking works, at least on Windows.

  • Alt + Up/Down moves lines up/down.

  • Shift + Alt + Up/Down (Linux: Ctrl + Shift + Alt + Up/Down) copies lines up/down.

  • Ctrl + P offers a box to use to search for and open files.

  • Ctrl + Shift + P offers a box for commands like editing settings or reloading the window.

  • Make use of VSCode's search/search-and-replace features.

    • Ctrl + Click goes to a definition.
    • Ctrl + F for search in current file
    • Ctrl + H for replace in current file
    • Ctrl + Shift + F for search in all files
    • Ctrl + Shift + H for replace in all files
    • F2 for Rename symbol

Many of VS Code's other shortcuts can be found on its getting started page, which also has links to OS-specific PDFs.

C/C++ configuration

You can create a .vscode/c_cpp_properties.json file with C/C++: Edit Configurations (JSON) in the command box to customise how IntelliSense reads the repository (stuff like where to look for includes, flags, compiler defines, etc.) to make VSCode's IntelliSense plugin better able to understand the structure of the repository. This is a good default one to use for this project's repository:

{
    "configurations": [
        {
            "name": "n64-us",
            "compilerPath": "${default}", // Needs to not be "" for -m32 to work
            "compilerArgs": [
                "-m32" // Removes integer truncation warnings with gbi macros
            ],
            "intelliSenseMode": "${default}", // Shouldn't matter
            "includePath": [ // Matches makefile's includes
                "include",
                "src",
                "assets",
                "build/n64-us/",
                "${workspaceFolder}",
            ],
            "defines": [
                "_LANGUAGE_C" // For gbi.h
            ],
            "cStandard": "gnu89", // C89 + some GNU extensions from C99 like C++ comments
            "cppStandard": "${default}" // Only ZAPD uses C++, so doesn't really matter
        }
    ],
    "version": 4
}

Settings

Add the following to (or create) the .vscode/settings.json file for VSCode to search the gitignored asset and assembly files by default:

{
    "search.useIgnoreFiles": false,
    "search.exclude": {
        "**/.git": true,
        "baseroms/**": true,
        "build/**": true,
        "expected/**": true,
        "nonmatchings/**": true,
        ".venv/**": true
    },
}