Smart file previews
Many file types get the same 3-mode preview (Editor / Split / Preview) as Markdown, turning raw data and config into something readable. Each is on by default, and each preview type has its own switch in the File previews card of Settings → Editor.
Whatever the file, the same two commands switch the view: view.togglePreview
flips between the editor and the full preview, and view.toggleSplitPreview
flips between the editor and a split editor-plus-preview. They act on whatever
the active file previews as, so there’s nothing per-type to remember. A floating
3-mode toggle also appears at the top right of any previewable file.
Structured data and API docs
.json,.yaml, and.tomlrender a collapsible, type-colored data tree..xml(xsd, xsl, fxml, wsdl, rss, and so on) renders a faithful DOM tree of tags, attributes, and text. Apom.xmlgets its own rendering instead.- A JSON or YAML file recognized as an OpenAPI 3 / Swagger 2 spec instead
renders as browsable API docs: endpoints with colored method badges,
params, responses, and schemas. Toggle between the tree and the docs with
structured.toggleView.
Maven poms
A pom.xml previews as a summary rather than as the generic XML tree, which
spreads every dependency over four nested rows. You get coordinates, parent,
URL and SCM, then modules, dependencies, managed dependencies, plugins, managed
plugins, reporting plugins, repositories, properties, and each profile’s own
set. The artifact name and its version are in aligned columns, so the versions
can be read down a column, and a name is never broken inside a word in a narrow
split. A repository row is tagged plugin repository where it is one, and
not Maven Central where its URL is somewhere else. A profile’s row says when
Maven activates it (activates when: jdk [17,), property env.CI) beside its
active by default mark.
The summary resolves the indirections that otherwise send you back up the file:
- A
${property}version is resolved, with the reference kept beside it (5.10.2 ${junit.version}), including properties defined in terms of other properties and theproject.*built-ins. - A blank version is filled in from the file’s own
<dependencyManagement>or<pluginManagement>and tagged managed (2.0.17 managed). - For a local file, the parent chain beside it is read too, through
<relativePath>(Maven’s default../pom.xml) or, when that misses, the parent’s pom in your local repository, and so are the BOMs the file imports, looked up in the local repository. A version they manage shows its number with its source: from reactor-parent 2.0.0, from junit-bom 5.11.0 (import). The parent line names the files it read.
Where the files cannot answer, the summary says so: a blank version under a
declared <parent> that was not found reads inherited, a dangling ${…}
reads unresolved, and a version a BOM probably manages but which the summary
cannot pin reads probably from that BOM. A remote (SFTP) file keeps the
one-file reading. The summary is still not an effective pom: profiles, BOMs
imported by a parent and <relativePath> rewrites through settings are not
followed.
The summary is a place to work from, not only to read. A row takes you to its element in the editor, a section title collapses its rows (Properties starts collapsed on a pom with more than twelve), and a Filter rows… field at the top narrows every section to the rows that mention the text. A pom that does not parse names the line and column of the error, and the message is a link to it.
Any file named pom.xml or *.pom qualifies, plus anything that sniffs as a
pom, so a pom-template.xml or an effective-pom.xml gets the same view.
pom.toggleView, or Show as XML tree in the preview’s right-click menu,
switches to the standard XML rendering and back. Settings → Editor → File
previews turns the summary off entirely.
Poms also carry a Maven submenu on their right-click menu.
Config files, decoded to plain English
- crontab (
crontab,*.cron,cron.d/*): each schedule in plain English (30 2 * * 1-5becomes “At 02:30, Monday through Friday”), the next fire times, and the@reboot/@dailymacros. Malformed lines are flagged with the field error. - fstab: each mount line decoded, the device spec (UUID / LABEL / path / CIFS / NFS), mount point, filesystem, and the options.
- systemd units (
.service/.timer/.socket/ …): each directive glossed, with a.timer’sOnCalendar=decoded to English plus its next triggers. - SSH config: a one-line connection summary per
Hostblock plus option glosses. - Dockerfile: a per-build-stage digest (base image, ports, workdir, user, entrypoint, health check).
- GitHub Actions workflows (detected by content): a plain-English digest of
the triggers (with
schedule:crons decoded) and each job’s runner and steps.
Viewers
.pdffiles open in a read-only page viewer (rasterized via PDFBox)..svgfiles stay editable XML but gain a live vector preview: it is drawn through JSVG’s JavaFX canvas and redrawn at whatever size it is shown at, so it stays sharp at any zoom rather than going soft past 200% the way a scaled bitmap does. Transparent files get a checkerboard behind them, so a white icon on a transparent background is visible instead of looking like an empty pane. Markdown badges and every export path (PDF, print, Word, ODF) still rasterize.- Binary files open as a read-only hex dump.
Every preview can export to PDF from its right-click menu, and File:
Print Rendered Preview… (preview.print) and File: Export Preview to
PDF… (preview.exportPdf) act on whatever the active file previews as. Tree
and summary previews break pages between rows, an OpenAPI file outputs its
documentation view when that is the one showing, and a file that does not parse
has nothing to export until the syntax error is fixed. A very long tree stops at
4,000 rows and says so. Image tabs print and export with File: Print… and
File: Export to PDF…. See Print & PDF export.