Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>FBO EntityNew to Visual Studio Code? Get it now.
FBO Entity

FBO Entity

Dora

|
2 installs
| (1) | Free
Find missing/broken include files and jump to them instantly with Ctrl+Shift+F.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

FBO Entity

Helps you work with FBO source files (*.f / *.ent / *.xml): find missing/broken include files and jump to them instantly with Ctrl+Shift+F.

The extension recognizes declarations shaped like:

<!ENTITY % MultiViewGrid SYSTEM "..\Include\MultiViewGrid.ent">
<!ENTITY ScriptIrregular SYSTEM "..\Include\Javascript\Irregular.txt">

Applies to files with these extensions: .f, .ent, .xml, .txt, .dtd, .inc, .001… (or any file that starts with <!DOCTYPE / <!ENTITY).


Features

1. Highlight the declaration line in yellow when the included file is missing

Scans every <!ENTITY [%] Name SYSTEM "path"> line in the open file. The SYSTEM path is resolved relative to the folder of the open file (Windows-style \ separators are handled automatically). If the file cannot be found at the declared path → the whole line gets a yellow background, plus a yellow left border and a marker on the overview ruler.

2. Multi-level recursive check

Included files can be nested several levels deep. The extension follows the whole include chain: if a level-1 include exists but something it references (directly or several levels down) doesn't, the declaration line in the original file is still highlighted in yellow. The hover popup shows the broken chain: A → B → C => missing path.

  • Max recursion depth: fboFentity.maxDepth (default 30).
  • Protected against circular includes.

3. Preview included file content on hover

Hover over a declaration line <!ENTITY ... SYSTEM "..." or a reference %Name; / &Name; to see a popup with:

  • The file name and its fully resolved path.
  • A preview of the start of the file's content (30 lines by default), with syntax highlighting based on file type (javascript, sql, xml).
  • A warning if the file is missing or has a missing nested include.

Number of preview lines: fboFentity.previewLines (default 30).

4. Ctrl+Shift+F — open the included file in a new tab

Place the cursor on a declaration line or on a %Name; / &Name; reference, then press Ctrl+Shift+F to open the corresponding included file in a new tab.

  • If the cursor is on a %Name; reference, the extension automatically looks up the <!ENTITY Name SYSTEM …> declaration in the file and opens that file.
  • If the file doesn't exist → a warning with the path is shown.
  • Ctrl+Shift+F is only overridden while inside an entity file; in other files it stays VS Code's default Find in Files.

5. Auto-completion (IntelliSense) while typing

Based on the function catalog gathered in 02.Skill.md (a scan of every *.xml file under App_Data/Controllers):

  • Type f., g., z., w., df., v., h., y., c., d., o., ext., common., form., grid., sender., func., gridf. → suggests that object's API methods (getItem, getItemValue, request, ...), ranked by usage frequency, with the real parameter names shown right in the suggestion (e.g. getItemValue(fieldName)) and a snippet that fills them in as tab stops. Parameter names are inferred from each function's naming convention (not from official FBO documentation), since the usage catalog only records call counts, not signatures — the usage count is still shown in the suggestion's documentation panel.
  • Type on$ModuleName$ → suggests event names (Complete, Fail, OnProcessFailure, ResponseComplete, ExecuteCommand, ...).

Can be disabled with fboFentity.enableCompletion.

6. Auto-completion for JavaScript statements and the JS HTML DOM API

Only active while the cursor is inside a JavaScript context (inside a <![CDATA[ ... ]]> block in an XML file, or anywhere in a plain JS script file) — it never interferes with typing regular FBO XML tags:

  • Type a word (e.g. whi, swi, fun) → suggests common JavaScript statements as snippets: if, if...else, for, for...in, while, do...while, switch, try...catch, function, return, var, new, typeof, break, continue, true/false/null/undefined — together with JS HTML DOM members that apply to any element variable (innerHTML, innerText, appendChild, setAttribute, classList.add, style, addEventListener, ...).
  • Type document. or window. → suggests that object's DOM methods (getElementById, querySelector, createElement, addEventListener, setTimeout, alert, ...), grouped the same way as the familiar JS HTML DOM reference categories (Selecting Elements, Changing HTML, Changing CSS, Document Reference, DOM Animations, ...).

Shares the same fboFentity.enableCompletion setting as feature 5.

VS Code's built-in XML grammar tags <![CDATA[ ... ]]> content as a "string" scope, and editor.quickSuggestions.strings is false by default — this normally blocks the JS-keyword popup from appearing automatically while typing (though Ctrl+Space always works). The extension ships an [xml]-scoped default that turns strings suggestions back on, so typing alone is enough once the setting takes effect. Your own editor.quickSuggestions setting (user/workspace) always takes priority over this default.

7. Ctrl+Shift+K — Reformat indentation (Beautify)

Recomputes each line's leading whitespace based on nesting depth — it never rewrites or reorders tokens, so it's safe with legacy-style code (ES5, using framework objects like f., g., func., ...).

  • XML/entity files (<command>, <field>, <!ENTITY>, ...): re-indented by tag nesting depth. JS inside <![CDATA[ ... ]]> is also reformatted, one level deeper than its surrounding tag. Content inside <!-- --> is left completely untouched.
  • Plain JS script files (.txt/.js under a Javascript folder): re-indented by {}/()/[] nesting depth.
  • SQL files or unrecognized types: shows a message and does nothing.
  • Indentation follows the current editor's tab/space settings.
  • Ctrl+Shift+K is only overridden while inside an entity file (VS Code's default binding for this key is "delete line" — that default is preserved in every other file type).

8. Highlight in red the starting line of an unmatched tag/block

Automatically detects and highlights the starting line with a red background:

  • An XML tag with no matching closing tag (<a> missing </a>), or an extra closing tag that doesn't match any open tag.
  • A JS block with an unmatched {, (, or [ (including JS inside <![CDATA[ ... ]]> of an XML file).

Hover over a red-highlighted line to see the error details. Can be disabled with fboFentity.enableUnbalancedCheck.


Commands (Command Palette)

Command Description
FBO: Open Included File (ENTITY SYSTEM) in New Tab Open the included file at the cursor position
FBO: Rescan Missing Include Files Clear the cache and rescan everything
FBO: Format XML/JS (Beautify) Reformat indentation of the open file

Settings

Key Default Description
fboFentity.previewLines 30 Number of lines of included file content shown on hover
fboFentity.highlightColor rgba(255, 214, 0, 0.28) Background color for the whole line when an included file is missing
fboFentity.errorHighlightColor rgba(255, 0, 0, 0.25) Background color for the starting line of an unmatched tag/block
fboFentity.openInNewColumn false Open the included file in a split column beside the current one instead of a new tab
fboFentity.maxDepth 30 Maximum nesting depth when recursively resolving includes
fboFentity.enableCompletion true Auto-complete framework functions, event names, JS statements, and HTML tags while typing
fboFentity.enableUnbalancedCheck true Highlight in red the starting line of an unmatched tag/block

Author: THANGLV

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
  • Your Privacy Choices
  • Consumer Health Privacy
© 2026 Microsoft