Rewrite GFM (GitHub Flavored Markdown) pipe tables so they fit a given character width. Cells that exceed their allocated column width are word-wrapped, producing multi-line rows that remain valid pipe-table syntax. The main entry point is `markdown-table-wrap': (markdown-table-wrap TABLE-TEXT WIDTH) (markdown-table-wrap TABLE-TEXT WIDTH MAX-CELL-HEIGHT) (markdown-table-wrap TABLE-TEXT WIDTH MAX-CELL-HEIGHT STRIP-MARKUP) (markdown-table-wrap TABLE-TEXT WIDTH MAX-CELL-HEIGHT STRIP-MARKUP COMPACT) For rendering the same table at multiple widths (e.g., during window resize), `markdown-table-wrap-batch' parses and measures once, then renders at each width: (markdown-table-wrap-batch TABLE-TEXT WIDTHS) To merge continuation rows back into logical rows (e.g., before re-wrapping at a new width), use `markdown-table-wrap-unwrap': (markdown-table-wrap (markdown-table-wrap-unwrap WRAPPED-TEXT) NEW-WIDTH) Features: - Markup-aware wrapping: bold, italic, links, images, code (single and double backtick), and strikethrough spans are kept intact across line breaks. - Graceful degradation: when a column is too narrow for markup overhead, markers are dropped and inner text is wrapped as plain text, preserving legibility over formatting. - Proportional column-width allocation based on content. - Alignment preservation (left, right, center). - Optional cell-height cap with ellipsis truncation. - Automatic row separators for visual breathing room when wrapping occurs (opt out with COMPACT). - Code-fence awareness: tables inside ``` or ~~~ blocks are left untouched. - Unicode-aware width: CJK, combining characters, and VS16 emoji measured correctly for terminal alignment. - Backtick parity guard: cells whose wrapping would produce odd backtick counts fall back to single-line, preventing font-lock leaking across rows. - Zero dependencies -- pure Elisp, no `markdown-mode' required. STRIP-MARKUP controls width measurement: nil (default) measures raw string width; non-nil strips inline markup first (for use when `markdown-hide-markup' is enabled). All public functions use the `markdown-table-wrap-' prefix. Internal helpers use `markdown-table-wrap--' (double dash). No `defcustom' is defined -- configuration is passed as parameters. The consuming package owns its own customization variables and passes values through.