ScriptsGuide

The Problems tab

While you type, the editor collects everything that is wrong with the code before it runs — a name that does not exist, a type that does not fit, an import of a script that is not there, a package that would not install — and lists it in the Problems tab under the code. Each row says how serious it is, what is wrong, who found it and where; one click puts the cursor on the spot.

5 min readBefore this: Writing codeOpen in Waiso
What you will learn
  • Read a Problems row: severity, message, source and position
  • Jump from a row to the code and copy a message
  • Tell Problems (before a run) from the error block (after a run)

Before the run, not after

The bottom panel under the code always has Output and Logs. Problems joins them as a third tab only while there is something to report, with the count beside its name, and leaves again when the list is empty. If new problems arrive while you are on another tab, a dot appears on it — red when one of them is an error, amber otherwise.

broken.pyPlatform SDKImport library
1import json2import requests3 4def total(orders):5    return sum(o["amount"] for o in order)6 7def main():8    orders = [{"amount": 10}, {"amount": 5}]9    return {"total": total(orders)}
OutputLogs0Problems3ClearRun Ctrl ↵
"order" is not definedpyright5:37
"json" is imported but never usedruff F4011:8
Expected 2 blank lines, found 1ruff E3027:1
One row per problem: the severity icon, the message and, on the right, the source and line:column.

Read and fix a list

Paste one of these into a new script. Each has a name that does not exist and something unused; the TypeScript one also assigns text to a number.

greet.py
import json
def main(name: str = "Ana"):
    return {"greeting": f"Hello, {nme}"}
Expected outputThe Problems tab for the Python variant
✕ undefined name 'nme'                         pyflakes 3:35
⚠ 'json' imported but unused                    pyflakes 1:1
⚠ E302 expected 2 blank lines, found 0          pycodestyle 2:1
  1. Start with the errors

    A red ✕ is broken code — it will fail when it runs. Amber ⚠ warnings and blue info notes are about style or code that does nothing; the run still works.

  2. Jump to the line

    Click anywhere on a row: the editor scrolls and puts the cursor at that line and column. Hover the position on the right to read it in full — Line 3, Column 35.

  3. Copy the message

    The copy button on a row copies its message — handy to paste into the AI chat or a search.

  4. Fix and watch it clear

    Rows update as you type. Rename nme to name, remove the unused import, and the tab disappears.

Where problems come from

The source is printed before the position on every row. Problems from the editor’s own checks come first, then the language server’s.

SourceWhat it reports
installA package the editor could not install for an import, as name@version: message, on the import’s line
importsAn import of a project script that would fail — missing, other language, a cycle, too deep — in the words a run would use (see Import your own scripts)
pyflakes, pycodestylePython: undefined names, unused imports and variables, and style rules such as E302
typescriptTypeScript and JavaScript: type errors, unknown names, unused code
clangdC and C++: compile errors and warnings before the worker compiles

Severities

IconSeverityMeaning
✕ redErrorBroken code that will not run as written
⚠ amberWarningStyle issues and likely mistakes
ⓘ blueInfoNotes you may ignore
○ greyHintSuggestions such as unused code

Limits

  • Problems never block Save or Run: you decide. A run with an error in Problems will most likely fail.
  • Language-server rows need the server to be connected; with it disconnected, only the imports and install rows remain.
  • Messages come from each language’s tools and stay in English.