Word, Outlook & Office Formatting

What it does

Clips captured from Microsoft Word, PowerPoint, Outlook, Excel, browsers, and other “rich-content” apps now preserve their formatting end-to-end:

  • Capture — Word and PowerPoint copies (which used to be invisible to Blue Synergy) are now captured.
  • Paste-back — pasting a clip into Word / Excel / Outlook restores the original HTML / RTF formatting (bold, italic, colors, tables) instead of dropping to plain text.

This applies to every clipboard-write path: the workspace paste button, Ctrl+V, the 📋 Copy button, group-paste sequences, and triggers that insert a clip (;cliplast, ;clipnr, {clip:N} body, etc.).

What you get

Capture from Office apps

Before, copying selected text in Word produced no clip — Word’s clipboard publishes only via the Office-specific OLE channel (IDataObject), which Blue Synergy used to ignore. Now Blue Synergy detects the OLE-only signature and extracts:

  • Plain text (so it shows up in the clips list and in the overlay search).
  • HTML Format (so paste-back into Word / Excel / Outlook keeps formatting).
  • Rich Text Format (RTF) — same.
  • Bitmaps — when you copy a Word table “as image”, the picture is saved as a regular IMG clip.

PowerPoint slides, Outlook messages, and any other OLE-only Office source flow through the same path.

Paste-back preserves formatting

When you paste a clip:

  • Into Word / Outlook / OneNote → bold, italic, colors, lists, links survive.
  • Into Excel → tables paste as cell ranges, not as one long string.
  • Into Notepad / VS Code / terminals → the apps just take the plain text and ignore the rich payloads. No change for them.
  • Into anything else → the system picks whichever format the target understands. Worst case is plain text — never worse than before.

The 📋 Copy button on the workspace (copy without pasting) also re-publishes all stored formats, so a follow-up manual Ctrl+V lands formatted.

Group-paste sequences

When you paste a clip group (sequential paste of N clips), each clip’s formats are re-published as the clipboard cycles. The inter-clip delay was raised so Word / Excel finish committing the previous paste before the next clip lands — multi-clip pastes into rich-content targets no longer drop clips.

If a group has a transform applied (per-group separator, append text, text transformation), the rich formats are skipped for that group’s clips so the transform actually applies — otherwise the rich payload would override the modified text.

Triggers

Triggers whose body is a pure clip reference also carry the rich formats:

  • ;cliplast — pastes the most-recent clip with its original formatting.
  • ;clipnr — same for the clip you specify.
  • ,-1c,-5c glue-shortcuts — same.
  • Custom trigger bodies that are exactly {clip:N} — same.

Mixed-template trigger bodies like Pre {clip:last} post stay on the plain-text path: the rich formats wouldn’t fit the surrounding text, so the trigger pastes plain.

Secure (vault) clips inserted via {clip:N} triggers also now decrypt correctly — they used to land as an empty string when the vault was locked.

How it works internally

Blue Synergy stores rich-format payloads in a side table (clip_formats) keyed by the clip number. When a clip is written to the clipboard, a shared helper opens the clipboard once, writes CF_UNICODETEXT as a baseline (so plain-text targets get something), then re-registers and publishes each stored format alongside.

Per-format failures are logged but non-fatal — the plain-text baseline always lands even if a specific format (say, an exotic Office-internal blob) can’t be re-published.

Notes & limits

  • Round-trip from Word table → Word table — formatting survives byte-exact (HTML offset headers are preserved, RTF is byte-passed).
  • Paste into older apps — apps that don’t subscribe to HTML / RTF formats just see plain text. No regression vs. before.
  • Plain-text clips (clips with no rich formats stored — typed in by hand, captured from Notepad, etc.) take an unchanged fast path. No overhead.
  • What’s filteredCF_UNICODETEXT, CF_TEXT, CF_DIB and OLE-stub markers (DataObject, Object Descriptor) are filtered out of the re-publish loop, so the target sees only formats it actually consumes.