Ordering of #includes, each block sorted:
- system headers
- Poppler and other library headers, with <>
  (for Motif, use Xm/XmAll.h with #define Object guard)
- xpopple headers, including config.h and corresponding .h for a .cc
- forward declarations

mungeURL worries me a bit -- especially that it allows & without escaping. It
would be better not to use system at all.
Make it check that the command has quotes around the string?

actionLaunch should check with the user when opening another file.
Ditto movie actions and other kinds of links.
evince (shell/ev-window.c) only supports launching other PDF files, although it
does follow these links without prompting.

actionLaunch can execute arbitrary commands without prompting if launchCommand
is set (e.g. if the params are "`foo`").

The same concerns apply to the run() command. A poster on emacs-tangents in
August 2025 gave some examples of using this for adding page bookmarks, which
is useful but currently unsafe:
> bind ctrl-c any endSelection "run(xpdf-capture-page.sh '%f' '%p')"

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=977182
- Release process?
- How to handle unrecognised config file options -- error or warn?

Things to add to README:
- General philosophy
- Supported Poppler versions
- Compiler requirement (C++11)
  - It's actually C++14 (for make_unique) at the moment...
  - ... and it could be C++17 (for optional) eventually

Check the formatting codes are correct (e.g. error() calls).

Maybe collapse XPDFCore and PDFCore together, since there are no other
subclasses.

XPDFViewer::cmdFullScreenMode and cmdWindowedMode are nearly identical and
could share a helper function.

Bind the back/forward mouse buttons as in web browsers.

Add "Copy selection" and, if over a link, "Copy URL" to the context menu.
(Suggested by jidanni in Debian #547090.)

Display an error dialog when opening a file fails, both from the command line
(if an option is given, e.g. when xpdf is being invoked from a web browser) and
from the Open dialog. (Suggested by Vincent Lefevre in Debian #931010.)

Rework PDFHistory: use std::vector rather than an array?

Rework XPDFTreeEntry: use std::vector or std::list rather than homebrew list?

Use checked multiplications where possible (goo/GooCheckedOps.h).

Debian bug #505932 - Support selectable checkboxes
  Unclear why this doesn't work. Poppler can render forms/annotations, but
  AnnotAppearanceBuilder::drawFormFieldButton isn't getting called on the
  buttons that have been ticked (!).

Convert tabs to spaces in the source.
