# VSCODE Configuration

- [VSCODE Configuration](#vscode-configuration)
  - [Debugpy Snippet](#debugpy-snippet)
  - [Fix Paste (if ctrl+v not working)](#fix-paste-if-ctrlv-not-working)
  - [Shell](#shell)
  - [Fonts](#fonts)
  - [Navigation](#navigation)
  - [Extensions](#extensions)
    - [Continue](#continue)
    - [Pylance Type Checking](#pylance-type-checking)

## Debugpy Snippet

Use this to add debugging to any project

```python
# Listens on 5678
# Only runs if ACTIVATE_DEBUGPY=true is set
if os.getenv("ACTIVATE_DEBUGPY", "").lower() == "true":
    try:
        import debugpy
        debugpy.listen(("0.0.0.0", 5678))
        print("Waiting for client on 5678...")
        debugpy.wait_for_client()
        print("Client connected")
    except Exception as e:
        print("DEBUG ERROR: " + str(e))
```

## Fix Paste (if ctrl+v not working)

Add to user keyboard settings (json)

```json
  {
    "key": "ctrl+v",
    "command": "-editor.action.clipboardPasteAction"
  },
```

## Shell

I would recommend using tmux as your default shell. VSCode automatically creates new
sessions when adding or splitting windows. The only small problem is closing out of
vscode and reopening it won't reattach the previous sessions. You'll need to run
`tmux switch-client -t #` to get back to each session you lost.

```json
"terminal.integrated.profiles.osx": {
  //...existing profiles...
  "tmux-shell": {
    "path": "tmux",
  }
}
```

```bash
{
    "terminal.integrated.defaultProfile.linux": "tmux",
}
```

## Fonts

Intel One Mono is designed to be easily readable for developers.

<https://github.com/intel/intel-one-mono>

Download and extract the ttf.zip

```bash
mkdir ~/.local/share/fonts
rsync -av /path/to/download/*.ttf ~/.local/share/fonts/
```

Edit settings.json

```json
{
    "editor.fontFamily": "Intel One Mono",
    "editor.fontLigatures": true,
    "terminal.integrated.fontFamily": "Intel One Mono",
}
```

## Navigation

The best navigation shortcut ever is alt+left and alt+right to move the cursor to it's
previous positions.

```json
[
    {
        "key": "alt+left",
        "command": "workbench.action.navigateBack",
        "when": ""
    },
    {
        "key": "alt+right",
        "command": "workbench.action.navigateForward",
        "when": ""
    }
]
```

## Extensions

To save a list of installed extensions run:

```bash
code --list-extensions >> vscode_extensions.txt
```

To install that list of extensions run:

```bash
cat vscode_extensions.txt | xargs -L 1 code --install-extension
```

### Continue

Continue -> Settings -> Help -> Quickstart

### Pylance Type Checking

Settings -> `python.analysis.typeChecking`