Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>LOOK LanguageNew to Visual Studio Code? Get it now.
LOOK Language

LOOK Language

Look Language

|
5 installs
| (0) | Free
Rich language support for LOOK - full built-in coverage, live error checking (syntax + undefined calls), local symbol completion, outline, IntelliSense, snippets, shortcuts and run commands. By Codlook Bilisim (codlook.com).
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

LOOK Language for VS Code

Official editor support for LOOK — the fast, zero-dependency web scripting language by Codlook Bilişim.

Syntax highlighting · IntelliSense · snippets · one-key run/serve. Files ending in .lk are detected automatically.


⌨️ Keyboard shortcuts

Shortcut Command What it does
Ctrl+Alt+R (⌘+⌥+R) LOOK: Run Current File Runs lk <file> in the terminal
Ctrl+Alt+Shift+R LOOK: Serve Current File (HTTP) Starts lk-fcgi --mode http on a port
▶ button (editor title & status bar) Run Current File One click to run
Command Palette → “LOOK:” all commands Run · Serve · Open REPL · Run Tests

The shortcuts only fire while a .lk file is focused, so they never clash with your other keybindings.

🧠 IntelliSense

Type a module name followed by :: and get its methods — each with a signature and a short description:

response::   →  json  text  html  error  header  status  redirect  cookie
db::         →  query  exec  first  begin  commit  rollback  transaction
request::    →  header  query  body  json  file  method  path  ip
  • Completion — modules, methods, global functions (route, env, jwt_sign…) and keywords. Selecting a function inserts the call and places your cursor inside the parentheses.
  • Hover — point at any built-in (db::query, jwt_sign, route…) to see its signature and docs.
  • Signature help — parameter hints appear as you type each argument.

Toggle it all with the look.suggest.enable setting.

🔎 Error checking (live)

Errors are underlined as you type — lk --check parses and statically analyses your file (parse only; your code is never executed, so no DB writes or emails fire) and reports the first problem with its line and column. It catches syntax errors and undefined function calls (e.g. echo("x") → “Undefined function: echo”). Fix it, and the squiggle clears.

Needs the lk binary (set look.path). Turn it off with look.check.enable: false.

✂️ Snippets

Start typing a prefix and press Tab:

Prefix Expands to
route-get GET route with an arrow handler
route-post POST route that parses JSON
route-param route with a {id} path parameter
route-ws / route-sse WebSocket / Server-Sent-Events route
route-404 404 fallback route
fn expression-bodied arrow fn() => …
function block function
struct struct with default values
if · foreach · for · switch · try control flow
db-query · db-transaction parameterised query / transaction
session · jwt · mail · parallel · use common tasks

No semicolons. LOOK doesn’t use statement-terminating ; — not even in for (…) loops. Snippets and completions never insert one.

🎨 Syntax highlighting

Keywords (fn, route, struct, use, parallel…), $variables, string interpolation "{$name}", module::method, the => arrow, function names, $row.col property access, numbers, operators and # comments.

⚙️ Settings

Setting Default Description
look.path lk Path to the lk executable (absolute if not on PATH).
look.serve.port 9000 Port used by Serve Current File.
look.serve.workers 4 Worker count used by Serve Current File.
look.suggest.enable true Enable completion / hover / signature help.

To use the run commands, install the lk runtime from GitHub Releases or codlook.com. Highlighting and IntelliSense work without it.


About LOOK

LOOK is a scripting language built for the web. Routing, databases, sessions, JWT, validation, caching, an SMTP + IMAP mail server, WebSockets and SSE all ship inside the language, compiled to a single dependency-free binary.

use jwt

route("GET", "/", fn() => response::json(["ok" => true, "app" => "LOOK"]))

route("GET", "/users/{id}", function($id) {
    $user = db::first(app::db(), "SELECT * FROM users WHERE id = ?", [$id])
    $user ? response::json($user) : response::error(404, "Not found")
})

# real-time + concurrency, no extra runtime
route("SSE", "/clock", function($conn) {
    timer::every(1000, fn() => $conn.send(json::encode(["t" => date::now()])))
})

route("404", fn() => response::error(404, "Not found"))
  • 🪶 Zero dependency — one static binary; copy to a VPS/Plesk/XAMPP and run.
  • ⚡ Fast — FastCGI warm start; ~10k req/s, 28 MB RAM steady over 1M requests.
  • 🔋 Batteries included — MySQL/PostgreSQL/SQLite, sessions, JWT, cache, queue, jobs, mail server, WebSocket & SSE — all embedded.
  • 🧩 Ergonomic — fn() => … arrows, $row.col access, module::method, no semicolons.

Made by Codlook Bilişim · Apache 2.0 · Docs · Packages · GitHub

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft