Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>Last PLNew to Visual Studio Code? Get it now.
Last PL

Last PL

Moon Presence

|
7 installs
| (0) | Free
Entirely offline HTML, CSS, and JavaScript tooling inside Oracle PL/SQL.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

Last PL

HTML, CSS, and JavaScript tooling inside Oracle PL/SQL.

Last PL works entirely offline and adds highlighting, IntelliSense, diagnostics, Emmet, and formatting to embedded web code. It layers onto your existing PL/SQL grammar with no server, account, or build step.

Requirements

  • VS Code 1.101 or newer.
  • One PL/SQL grammar provider:
    • Oracle SQL Developer Extension for VS Code (oracle-sql), or
    • xyz.plsql-language (plsql).

If both providers claim the same files, disable one or configure files.associations. Last PL layers onto whichever provider owns the document.

Supported regions

PL/SQL construct Embedded language
HTP.*, HTF.*, OWA_UTIL.* strings HTML
APEX_JAVASCRIPT.ADD_INLINE_CODE / ADD_ONLOAD_CODE JavaScript
ADD_REQUIREJS_DEFINE expression argument JavaScript
ADD_LIBRARY.p_requirejs_js_expression JavaScript
APEX_CSS.ADD CSS
/*html*/, /*css*/, /*js*/ before a string Selected language

Names, paths, keys, and other non-code APEX arguments remain PL/SQL. Regular, national, paired q-quoted, symmetric, and Unicode-delimited literals are supported, including concatenated strings and multiline call heads.

htp.p('<main class="card">Hello</main>');

apex_css.add('.card { padding: 1rem; }');
apex_javascript.add_inline_code('console.log("ready");');

l_fragment := /*html*/ q'[<button type="button">Save</button>]';

Features

  • Accurate HTML/CSS/JavaScript highlighting without replacing the host PL/SQL grammar. JavaScript colors follow Oracle's runtime HTP.P/PRINT/PRN output, and bracket colors restart at the same depth as a regular HTML script.
  • Completion, hover, definitions, references, signature help, document symbols, folding, linked tag editing, color previews, and selection expansion.
  • HTMLHint, the VS Code CSS language service, and ESLint or Acorn diagnostics, with squiggles mapped back to the original PL/SQL.
  • Format Document support for PL/SQL and embedded HTML/CSS/JavaScript, with string and q-quote safety checks.
  • Emmet, HTML tag auto-close, and a status-bar region counter.

Configuration

Settings use the plsqlWebEmbedded prefix. Common options include:

  • detect.{htp,owaUtil,taggedComments}
  • diagnostics.{html,css,js,jsLinter}
  • diagnostics.{eslintRules,eslintGlobals,apexPreset}
  • formatter.{plsql,embedded,js}
  • autoCloseTags
  • normalizeBracketColors

Workspace ESLint and Prettier configuration is supported. JavaScript ESLint configs execute only in trusted workspaces.

HTML, CSS, and JavaScript linting can each be switched off independently. All three are enabled by default; JavaScript can use ESLint, Acorn, or no linter.

Commands

Command Purpose
PL/SQL: Show Embedded Regions List detected regions.
PL/SQL: Diagnose Setup Check the active language, host grammar, settings, and region count.
PL/SQL: Show Loaded Workspace ESLint Config Inspect resolved ESLint configuration.

Limitations

  • Detection is tokenizer-based, not a full PL/SQL parser. Raw strings inside ordinary helpers such as DECODE(...) are skipped; recognized HTP/HTF/OWA/APEX calls nested inside those helpers are still detected.
  • Bare string concatenations outside a recognized call need a language tag: /*html*/ '<a>' || value || '</a>'.
  • Runtime text produced by a variable or ordinary helper cannot be known until PL/SQL executes; static fragments on either side remain supported.
  • Browser-only virtual workspaces are not supported. Quoted/schema-qualified calls and database-link-qualified calls are supported.

Privacy

Works entirely offline. No telemetry, network service, or account is required. See CHANGELOG.md for release details.

Development

npm ci
npm run typecheck
npm run test:all
npm run test:integration
npm run check:oracle-web -- --require # optional local Oracle Docker check
npm run check:oracle-max -- --require # exhaustive Oracle byte differential
npm run check:oracle-ords             # optional real ORDS HTTP stress gate
npm run package

The max-vision check also reads Oracle's supported preprocessing and PL/Scope metadata. The ORDS gate temporarily deploys a locked-down test package to a configured development pool and verifies real HTTP output, failures, state reset, large responses, and concurrency. Oracle and ORDS are test-only; the extension remains entirely offline and has no runtime service dependency. Set security.maxEntries=0 on that test pool so allowlist changes are checked on every request, as Oracle recommends for mod_plsql-compatible validation.

License

MIT. Third-party notices are included in THIRD_PARTY_NOTICES.md.

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