Hello community,

here is the log from the commit of package tidy for openSUSE:Factory checked in 
at 2020-03-19 19:44:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/tidy (Old)
 and      /work/SRC/openSUSE:Factory/.tidy.new.3160 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "tidy"

Thu Mar 19 19:44:44 2020 rev:24 rq:785456 version:5.7.28

Changes:
--------
--- /work/SRC/openSUSE:Factory/tidy/tidy.changes        2018-06-05 
12:49:48.968441228 +0200
+++ /work/SRC/openSUSE:Factory/.tidy.new.3160/tidy.changes      2020-03-19 
19:48:28.968121610 +0100
@@ -1,0 +2,69 @@
+Mon Mar 16 07:07:28 UTC 2020 - Martin Pluskal <[email protected]>
+
+- Cleanup spec file with spec-cleaner
+- Fix previous changelog entry (missing patch removal)
+
+-------------------------------------------------------------------
+Sat Mar 14 11:24:27 UTC 2020 - Matej Cepl <[email protected]>
+
+- Update to the versoin 5.7.28:
+  - Change "tidyLocalMapItem" to "tidyLocaleMapItem"
+  - added OS __ANDROID__ to tidyplatform.h
+  - Is. #781, PR #782 - Bump to 5.7.24, for nl -h removal
+  - PR #769 - Dump to 5.7.23, add 'data' tag - closes #649
+  - Switch 32-bit build to 'next'
+  - Is #797 - use 'TidyRealloc' in place of raw 'realloc'
+  - Update BRANCHES.md
+  - Is. #746 PR #747 - fix other dup 'const' modifier
+  - PR #762 - bump to 5.7.19 for BUILD.md fix
+  - Is. #791 - free some allocations
+  - Is. #770 #780 maybe #790 - remove 'setlocal' from lib!
+  - Is. #783 - Fix language detection
+  - Is. #781 - Drop redundant blank lines in -help
+  - Issue#649: added <data> tag
+  - PHP >= 7.1.0 recognizes tidy-html5
+  - Is #752 - Replace _MSC_VER with _WIN32
+  - Is #752 - Slightly enhance the API doxy docs
+  - Is #752 - Chg TC_MAIN_ERROR_LOAD_CONFIG to 'problems'
+  - Is #752 - Try STRING_MUTING_TYPE to TidyInfo
+  - Is #741 - add RELEASE.md document
+  - Is #752 - Add windows tilde expansion
+  - Fix extra const modifier
+  - Is #726 #185 - HTML5 is case sensitive for anchors.
+  - Is #718 PR #727 - Update to CONTRIBUTING.md.2.txt
+  - Is #726 #185 - HTML5 is case sensitive for anchors.
+  - Is #719 - Set 'muted' before any callback
+  - Is #713 - show-filename to errout when no warnings
+  - PR #712 - Bump to 5.7.11 for this merge, and fix
+  - PR #712 - Only allow 'auto' on 'dir' for HTML5
+  - Is 697 PR #708 - Bump to 5.7.10 for this merge
+  - Is #721 - cast away some gcc warnings
+  - fix spelling mistake
+  - add --show-filename option to show the input filename on
+    output messages
+  - update --gnu-emacs option documentation
+  - Is #679 PR #695 - To 5.7.5 for this merge
+  - Is #684 - To 5.7.4 for this 'docs' change
+  - Update language_en.h
+  - jidanni and geoffmcl
+  - Is #709 - Improve message if 'implict'
+  - Make global attribute `dir` accept auto as well.
+  - Is #700 - change script parsing if in html5 mode
+  - Is #698 - Mention need for ':' in config file
+  - Is #697 - Add NOWRAP to print of pre tag
+  - Is #698 - Mention colon in 'man' text
+  - Is #686 - Add attr COLOR to W3CAttrsFor_LINK
+  - Is #679 - add 'priority-attributes' to -show-config
+  - Is #679 - some fixes for -export-config
+  - Is #663 - Reduce static alloc to as required
+  - Is #663 - Open context for gcc 2.95 port
+  - Is #663 - Add language limit for 'Haiku' gcc 2.95
+  - Is #663 - Add 'Haiku' port, '__HAIKU__'
+  - Is #663 - Remove UTF-8 BOM from 6 lang. headers
+  - Is #663 - Small change for MSVC10
+  - Issue #655 - Fix unsafe use of output buffer as input param
+  - Issue #656 - protect against NULL node set in loop
+- Drop no longer needed patch:
+  0001-Issue-656-protect-against-NULL-node-set-in-loop.diff
+
+-------------------------------------------------------------------

Old:
----
  0001-Issue-656-protect-against-NULL-node-set-in-loop.diff
  5.6.0.tar.gz
  97cf741.tar.gz
  tidy-html5-doxygen-c0d1cd1.tar.gz

New:
----
  00f1e38.tar.gz
  5.7.28.tar.gz
  tidy-html5-doxygen-0ed35c6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ tidy.spec ++++++
--- /var/tmp/diff_new_pack.K2glLo/_old  2020-03-19 19:48:30.356122354 +0100
+++ /var/tmp/diff_new_pack.K2glLo/_new  2020-03-19 19:48:30.376122364 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package tidy
 #
-# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2020 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,39 +12,36 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
-%define regression_tests 97cf741
-%define documentation    c0d1cd1
-
+%define regression_tests 00f1e38
+%define documentation    0ed35c6
 Name:           tidy
-Version:        5.6.0
+Version:        5.7.28
 Release:        0
 Summary:        Utility to Clean Up and Pretty-print HTML, XHTML or XML Markup
 License:        W3C
 Group:          Productivity/Publishing/HTML/Tools
-Url:            https://github.com/htacg/tidy-html5
+URL:            https://github.com/htacg/tidy-html5
 Source0:        https://github.com/htacg/tidy-html5/archive/%{version}.tar.gz
 # Latest version of unit tests
 Source1:        
https://github.com/htacg/tidy-html5-tests/archive/%{regression_tests}.tar.gz
 # Documentation generation files, extracted from
 #   
https://github.com/htacg/html-tidy.org.api.git/archive/%%{documentation}.tar.gz
-# using tidy_generate_documentation.sh
+# using tidy_fetch_docs.sh
 Source2:        tidy-html5-doxygen-%{documentation}.tar.gz
 Source10:       tidy_fetch_docs.sh
 Patch0:         dynamic_library_build.diff
 Patch1:         test_fixes.diff
 Patch2:         fix_doxygen_paths.diff
-Patch3:         0001-Issue-656-protect-against-NULL-node-set-in-loop.diff
 BuildRequires:  cmake
 BuildRequires:  doxygen
 BuildRequires:  gcc-c++
 BuildRequires:  libtool
 BuildRequires:  libxslt
-BuildRequires:  pkg-config
-BuildRoot:      %{_tmppath}/%{name}-%{version}-build
+BuildRequires:  pkgconfig
 
 %description
 Tidy is a commandline frontend to TidyLib which allows for cleaning up and
@@ -88,9 +85,9 @@
 Group:          Development/Libraries/C and C++
 Requires:       glibc-devel
 Requires:       libtidy5 = %{version}
-Obsoletes:      libtidy-0_99-0-devel
 Conflicts:      libtidy-0_99-0-devel
 Conflicts:      tidy-html5-devel
+Obsoletes:      libtidy-0_99-0-devel < %{version}
 
 %description -n libtidy-devel
 This package contains all necessary include files and libraries needed
@@ -99,41 +96,33 @@
 %prep
 %setup -q -a 1 -a 2 -n tidy-html5-%{version}
 mv tidy-html5-tests-* tests
-%patch0 -p1
-%patch1 -p1
-%patch2 -p1
-%patch3 -p1
+%autopatch -p1
 
 %build
 %cmake \
     -DCMAKE_SKIP_RPATH:BOOL=OFF \
     -DINCLUDE_INSTALL_DIR:PATH=include/%{name} \
     -DTIDY_COMPAT_HEADERS:BOOL=ON -DCMAKE_C_FLAGS_RELWITHDEBINFO="-O0 -ggdb3"
-make %{?_smp_mflags} VERBOSE=1
+%cmake_build
 ../tidy-html5-doxygen/build_docs.sh
 
 %install
 %cmake_install
 
 %post -n libtidy5 -p /sbin/ldconfig
-
 %postun -n libtidy5 -p /sbin/ldconfig
 
 %files
-%defattr(-, root, root)
 %{_bindir}/tidy
-%{_mandir}/man1/tidy.1*
+%{_mandir}/man1/tidy.1%{?ext_man}
 
 %files -n tidy-doc
-%defattr(-, root, root)
 %doc build/docs/api/
 
 %files -n libtidy5
-%defattr(-, root, root)
 %{_libdir}/libtidy*.so.*
 
 %files -n libtidy-devel
-%defattr(-, root, root)
 %dir %{_includedir}/%{name}
 %{_includedir}/%{name}/tidy.h
 %{_includedir}/%{name}/tidybuffio.h

++++++ 5.6.0.tar.gz -> 00f1e38.tar.gz ++++++
++++ 126730 lines of diff (skipped)

++++++ 5.6.0.tar.gz -> 5.7.28.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/README/BRANCHES.md 
new/tidy-html5-5.7.28/README/BRANCHES.md
--- old/tidy-html5-5.6.0/README/BRANCHES.md     2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/README/BRANCHES.md    2019-07-08 20:52:14.000000000 
+0200
@@ -6,7 +6,7 @@
 
 As described thoroughly in our [VERSION.md](VERSION.md) document, this means 
that **master** will always consist of an even-numbered minor version, and 
activity will remain relatively quiet unless we backport a critical bug fix 
from **next**.
 
-The **next** branch, then will host the majority of our development activity, 
and any contributions and PR’s should be again this branch. This means that 
**next** will always consist of an odd minor version number.
+The **next** branch, then will host the majority of our development activity, 
and any contributions and PR’s should be against this branch. This means that 
**next** will always consist of an odd minor version number.
 
 
 ## About Versioning
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/README/BUILD.md 
new/tidy-html5-5.7.28/README/BUILD.md
--- old/tidy-html5-5.6.0/README/BUILD.md        2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/README/BUILD.md       2019-07-08 20:52:14.000000000 
+0200
@@ -50,7 +50,7 @@
 
 ## Build PHP with the tidy-html5 library
 
-Due to API changes in the PHP source, `buffio.h` needs to be renamed to 
`tidybuffio.h` in the file `ext/tidy/tidy.c` in PHP's source.
+Before PHP 7.1, due to API changes in the PHP source, `buffio.h` needs to be 
renamed to `tidybuffio.h` in the file `ext/tidy/tidy.c` in PHP's source.
 
 That is - prior to configuring PHP run this in the PHP source directory:
 ~~~
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/README/CONTRIBUTING.md 
new/tidy-html5-5.7.28/README/CONTRIBUTING.md
--- old/tidy-html5-5.6.0/README/CONTRIBUTING.md 2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/README/CONTRIBUTING.md        2019-07-08 
20:52:14.000000000 +0200
@@ -6,16 +6,18 @@
 
 If you are having trouble running console `Tidy`, or using the `LibTidy` API 
in your own project, then maybe the best places to get help is either via a 
comment in [Tidy Issues](https://github.com/htacg/tidy-html5/issues), or on the 
[Tidy Mail Archive](https://lists.w3.org/Archives/Public/html-tidy/) list.
 
+And please do a **search** using different **key** words - see 
[searching](https://help.github.com/articles/searching-issues-and-pull-requests/)
 - to make sure it is **not** a duplicate. If something similar has been 
discussed before, but you still feel this is **different**, then add that 
related reference in your post...
+
 In either place please start with a short subject to describe the issue. If it 
involves running Tidy on an html file, or if it’s an API question, make sure to 
include:
 
   - the version: `$ tidy -v`
   - what was the configuration used
   - a small sample input
   - the output
-  - the _expected_ output expected
+  - the _expected_ output
   - some sample code (if an API question).
   
-These data will make replication of your issue much simpler for us.
+This information will make replication of your issue much simpler for us.
 
 If you do add sample HTML input, then it can also be very helpful if that 
sample **passes** the W3C 
[validator](https://validator.w3.org/#validate_by_upload). Tidy attempts to 
follow all current W3C standards.
 
@@ -39,17 +41,25 @@
 
 ### Using Git appropriately
 
- 1. Fork the repository to your GitHub account.
- 2. Optionally create a **topical branch**, a branch whose name is succint but 
explains what you're doing, such as "feature/add-new-lines".
- 3. Make your changes, committing at logical breaks.
- 4. Push your work to your personal account.
- 5. [Create a pull 
request](https://help.github.com/articles/using-pull-requests).
- 6. Watch for comments or acceptance.
+ 1. Fork tidy to your own github account. Use top right `Fork` icon.
+ 2. Optional: Generate a SSH Key, and add it to your 
`https://github.com/<name>` settings, SSH and GPG keys
+ 3. Clone your own fork - `$ git clone [email protected]:<name>/tidy-html5.git 
[tidy-fork]` Or using `https`.
+ 4. Create a branch - `$ cd tidy-fork; $ git checkout -b <branch-name>`
+ 5. Edit, and commit your changes to this `branch` of your fork.
+ 6. Test your changes, and if appropriate run 
[regression](https://github.com/htacg/tidy-html5-tests/blob/next/README/RUNTESTS.md)
 tests.
+ 7. Publish the branch - `$ git push -u origin <branch-name.` - to your remote 
fork.
+ 8. Create a [Pull 
Request](https://help.github.com/articles/about-pull-requests/), a **PR**, here.
+ 9. Watch for comments, acceptance.
+
+Item 2., SSH Key, is optional, and only required if you want to use `clone 
[email protected]...`. And if you generate the ssh without a `passphrase`, things 
like `git push` can be done without a password. Just convenience. Alternatively 
you can use the `HTTPS` protocol...
+
+Concerning 5., editing and committing your changes, **generally** it is better 
to `commit` changes often, adding an appropriate commit message to each, like 
`$ git commit -m "Is. #NNN - reason for change" <file[s]>`. This also aids in 
the **PR** review. 
+
+But the situation varies. Like adding say an option, which can mean several 
files have to be edited, where it is likely appropriate to combine a 
considerable number of edits into one commit. There can be no hard and fast 
rules on this.
 
-Please note - if you want to change multiple things that don't depend on each
-other, it is better to use `branches`, and make sure you check the master 
branch back out before making more changes - that way we can take in each 
change seperately, otherwise Github has a tendancy to combine your requests 
into one.
+Please note, if you want to change **multiple** things that don't depend on 
each other, use **different** `branches`, and make sure you check the `next` 
branch back out, before making more changes in a **new** branch name. That way 
we can take in each **change** separately, otherwise Github will **combine** 
all your branch commits into one **PR**. 
 
-If you are a continuing contributor then you will need to `rebase` your fork, 
to htacg `next`, **before** doing any more work, and likewise branches, 
otherwise we may not be able to cleanly merge your PR. This is a simple process:
+See below on keeping your forks `next` fully in sync with here, called 
`upstream` - **this is important**.
 
 ```
 $ git remote add upstream [email protected]:htacg/tidy-html5.git # once only
@@ -62,8 +72,28 @@
 $ git push      # update the fork next
 ```
 
-This can be repeated for other branches, too.
+This has to be repeated for other branches, too. `$ git checkout 
<your-branch>`, `$ git rebase next`, fix conflict, if any, and `$ git push`, 
for **each** branch. It is **not** fun to keep multiple `branches` fully 
up-to-date with an active `upstream`...
+
+Of course, the **regression** tests, 6., are really only if you have made 
`code` changes, but it is a good habit to get into. As can be seen the `tests` 
are in a **separate** repo, so you must also clone that, or **fork** and clone 
that, to be able to present a **PR**. This is best done in the same `root` 
folder where where you cloned `tidy-html5`, and your `tidy-fork`. See 
[RUNTESTS.md](https://github.com/htacg/tidy-html5-tests/blob/next/README/RUNTESTS.md).
+
+In brief, for unix, to use your potentially **new** `tidy-fork` tidy 
executable -
+
+```
+$ git clone [email protected]:htacg/tidy-html5-tests.git
+$ cd tidy-html5-tests/tools-sh
+$ ./testall.sh ../../tidy-fork/build/cmake/tidy
+$ diff -u ../cases/testbase-expects ../cases/testbase-results
+```
+
+Use folder `tools-cmd` for windows. Run `alltest.bat --help`. 
+
+If the `tests` shows a different exit value, or there are differences between 
the `expects` and `results`, these **must** be studied, and checked, very 
carefully. There may be cases where the **new** `results` are correct, in which 
case a simultaneous **PR** for the forked `tests` **must** be created to match 
your forked source **PR**.
+
+Do **NOT** change either the root `version.txt` here, nor the 
`cases/_version.txt` in `tests`. This will be handled by the person that does 
the **PR** merge. To differentiate your modified `tidy` there is a cmake 
option, like `-DTIDY_RC_NUMBER=I123`, which will appear in `tidy -v` as 
`5.7.16.I123`. The number can be anything, but using the relevant issue value 
is a good choice.
+
+Add an `issue` if you need further **help**... thanks...
 
 ### Help Tidy Get Better
 
 It goes without saying **all help is appreciated**. We need to work together 
to make Tidy better!
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/README/RELEASE.md 
new/tidy-html5-5.7.28/README/RELEASE.md
--- old/tidy-html5-5.6.0/README/RELEASE.md      1970-01-01 01:00:00.000000000 
+0100
+++ new/tidy-html5-5.7.28/README/RELEASE.md     2019-07-08 20:52:14.000000000 
+0200
@@ -0,0 +1,46 @@
+# HTACG HTML Tidy
+
+The **Release Process** is made up of many little steps. These have been 
documented before in issues like 
[394-1](https://github.com/htacg/tidy-html5/issues/394#issuecomment-206952915), 
and 
[394-2](https://github.com/htacg/tidy-html5/issues/394#issuecomment-207814834), 
and others, but this is to further **document** the process...
+
+This assumes the current `next` branch is version 5.7.XXX. See VERSION.md for 
chosen version scheme.
+
+## Release Process for 5.8.0
+
+### Lead up:
+
+ - Create the next release milestone, 5.10, if not already done...
+ - Decide on PR's to include, bumping version.txt, accordingly...
+ - Decide on any show-stopper outstanding issues, and action...
+ - Change milestone of all excluded this time issues to the next 5.10 
milestone, or to indefinite...
+ - Decide target date for release...
+ 
+### The Release:
+ 
+ 1. Update version.txt to 5.8.0, and date... commit
+ 2. Create branch, `$ git checkout -b release/5.8`
+ 3. Update README/vershist.log... perl script... commit
+ 4. Add `$ git tag 5.8.0`
+ 5. Publish `$ git push -u origin release/5.8 --tags`
+ 6. Generate release 5.8.0.html... perl script... copy to...
+ 7. Create Github release v5.8.0 - becomes [Latest 
Release](https://github.com/htacg/tidy-html5/releases)
+ 8. Other things?
+    - Generate release binaries
+    - Add [binaries](http://binaries.html-tidy.org/)
+    - Add api [docs](http://api.html-tidy.org/#part_apiref)
+    - Update web pages [html-tidy.org](http://www.html-tidy.org/)
+
+### Post:
+
+ - Update `master` branch to `release`
+ - Update `next` version.txt to 5.9.0, open for new fixes...
+ - Add more binaries...
+
+## Notes on `Release Process`:
+ 
+This **HTACG HTML Tidy** `official` release process must be supplemented with 
distribution by others. 
+
+Of course, if possible, we recomend building tidy from the git source, it is 
easy, but also in some OS'es others offer distribution in various ways... 
+
+See [Get Tidy](http://www.html-tidy.org/#homepage19700601get_tidy) - This page 
really needs expanding. There are some suggestions pending, and more feedback 
welcome...
+
+; eof
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/build/cmake/build-me.bat 
new/tidy-html5-5.7.28/build/cmake/build-me.bat
--- old/tidy-html5-5.6.0/build/cmake/build-me.bat       2017-11-25 
14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/build/cmake/build-me.bat      2019-07-08 
20:52:14.000000000 +0200
@@ -23,7 +23,7 @@
 :GOTCMD
 
 @call chkmsvc %TMPPRJ%
-@call chkbranch master
+@call chkbranch next
 
 @echo Build %DATE% %TIME% > %TMPLOG%
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/console/tidy.c 
new/tidy-html5-5.7.28/console/tidy.c
--- old/tidy-html5-5.6.0/console/tidy.c 2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/console/tidy.c        2019-07-08 20:52:14.000000000 
+0200
@@ -845,7 +845,6 @@
     tmbstr temp_string = NULL;
     uint width = 78;
 
-    printf("\n");
     printf( tidyLocalizedString(TC_TXT_HELP_1), get_final_name(prog), 
tidyLibraryVersion() );
     printf("\n");
 
@@ -1445,6 +1444,24 @@
             }
         }
             break;
+        case TidyPriorityAttributes: /* Is #697 - This case seems missing */
+        {
+            TidyIterator itAttr = tidyOptGetPriorityAttrList(tdoc);
+            if (itAttr && (itAttr != (TidyIterator)-1))
+            {
+                while (itAttr)
+                {
+                    d->def = tidyOptGetNextPriorityAttr(tdoc, &itAttr);
+                    if (itAttr)
+                    {
+                        printf(fmt, d->name, d->type, d->def);
+                        d->name = "";
+                        d->type = "";
+                    }
+                }
+            }
+        }
+            break;
         default:
             break;
     }
@@ -1484,6 +1501,33 @@
  ** @{
  */
 
+/* Is #697 - specialised service to 'invert' a buffers content
+   split on a space character */
+static void invertBuffer(TidyBuffer *src, TidyBuffer *dst)
+{
+    uint len = src->size;
+    char *in = (char *)src->bp;
+    char *cp;
+    if (!in)
+        return;
+    while (len)
+    {
+        unsigned char uc;
+        len--;
+        uc = in[len];
+        if (uc == ' ')
+        {
+            in[len] = 0;
+            cp = &in[len + 1];
+            if (dst->size)
+                tidyBufAppend(dst, " ", 1);
+            tidyBufAppend(dst, cp, strlen(cp));
+        }
+    }
+    if (dst->size)
+        tidyBufAppend(dst, " ", 1);
+    tidyBufAppend(dst, in, strlen(in));
+}
 
 /** Prints the option value for a given option.
  */
@@ -1493,6 +1537,7 @@
                                     )
 {
     TidyOptionId optId = tidyOptGetId( topt );
+    TidyBuffer buf1, buf2;
 
     if ( tidyOptGetCategory(topt) == TidyInternalCategory )
         return;
@@ -1505,18 +1550,56 @@
         case TidyPreTags:
         {
             TidyIterator pos = tidyOptGetDeclTagList( tdoc );
-            while ( pos )
+            if ( pos )  /* Is #697 - one or more values */
             {
-                d->def = tidyOptGetNextDeclTag(tdoc, optId, &pos);
-                if ( pos )
+                tidyBufInit(&buf1);
+                tidyBufInit(&buf2);
+                while (pos)
                 {
-                    printf( "%s: %s\n", d->name, d->def );
-                    d->name = "";
-                    d->type = "";
+                    d->def = tidyOptGetNextDeclTag(tdoc, optId, &pos);
+                    if (d->def)
+                    {
+                        if (buf1.size)
+                            tidyBufAppend(&buf1, " ", 1);
+                        tidyBufAppend(&buf1, (void *)d->def, strlen(d->def));
+                    }
                 }
+                invertBuffer(&buf1, &buf2); /* Is #697 - specialised service 
to invert words */
+                tidyBufAppend(&buf2, (void *)"\0", 1); /* is this really 
required? */
+                printf("%s: %s\n", d->name, buf2.bp);
+                d->name = "";
+                d->type = "";
+                d->def = 0;
+                tidyBufFree(&buf1);
+                tidyBufFree(&buf2);
             }
         }
             break;
+        case TidyPriorityAttributes: /* Is #697 - This case seems missing */
+        {
+            TidyIterator itAttr = tidyOptGetPriorityAttrList(tdoc);
+            if (itAttr && (itAttr != (TidyIterator)-1))
+            {
+                tidyBufInit(&buf1);
+                while (itAttr)
+                {
+                    d->def = tidyOptGetNextPriorityAttr(tdoc, &itAttr);
+                    if (d->def)
+                    {
+                        if (buf1.size)
+                            tidyBufAppend(&buf1, " ", 1);
+                        tidyBufAppend(&buf1, (void *)d->def, strlen(d->def));
+                    }
+                }
+                tidyBufAppend(&buf1, (void *)"\0", 1); /* is this really 
required? */
+                printf("%s: %s\n", d->name, buf1.bp);
+                d->name = "";
+                d->type = "";
+                d->def = 0;
+                tidyBufFree(&buf1);
+            }
+        }
+        break;
         default:
             break;
     }
@@ -1657,6 +1740,10 @@
             free((tmbstr)localHit.name3);
             free(localName);
         }
+        if ( localHit.eqconfig ) /* Is. #791 */
+        {
+            free((tmbstr)localHit.eqconfig);
+        }
 
     }
     else
@@ -1803,6 +1890,7 @@
         if (localPos.name1) free((tmbstr)localPos.name1);
         if (localPos.name2) free((tmbstr)localPos.name2);
         if (localPos.name3) free((tmbstr)localPos.name3);
+        if (localPos.eqconfig) free((tmbstr)localPos.eqconfig); /* Is. #791 */
     }
 
     printf( "</cmdline>\n" );
@@ -2405,8 +2493,17 @@
         if ( argc > 1 )
         {
             htmlfil = argv[1];
-            DEBUG_LOG( SPRTF("Tidying '%s'\n", htmlfil) );
-            if ( tidyOptGetBool(tdoc, TidyEmacs) )
+#ifdef ENABLE_DEBUG_LOG
+            SPRTF("Tidy: '%s'\n", htmlfil);
+#else /* !ENABLE_DEBUG_LOG */
+            /* Is #713 - show-filename option */
+            if (tidyOptGetBool(tdoc, TidyShowFilename))
+            {
+                fprintf(errout, "Tidy: '%s'", htmlfil);
+                fprintf(errout, "\n");
+            }
+#endif /* ENABLE_DEBUG_LOG yes/no */
+            if ( tidyOptGetBool(tdoc, TidyEmacs) || tidyOptGetBool(tdoc, 
TidyShowFilename))
                 tidySetEmacsFile( tdoc, htmlfil );
             status = tidyParseFile( tdoc, htmlfil );
         }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/include/tidy.h 
new/tidy-html5-5.7.28/include/tidy.h
--- old/tidy-html5-5.6.0/include/tidy.h 2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/include/tidy.h        2019-07-08 20:52:14.000000000 
+0200
@@ -481,16 +481,16 @@
     
     
 /** Load an ASCII Tidy configuration file and set the configuration per its
- ** contents.
- ** @result Returns 0 upon success, or any other value if there was an error.
+ ** contents. Reports config option errors, which can be filtered.
+ ** @result Returns 0 upon success, or any other value if there was an option 
error.
  */
 TIDY_EXPORT int TIDY_CALL         tidyLoadConfig(TidyDoc tdoc,      /**< The 
TidyDoc to which to apply the configuration. */
                                                  ctmbstr configFile /**< The 
complete path to the file to load. */
                                                  );
 
 /** Load a Tidy configuration file with the specified character encoding, and
- ** set the configuration per its contents. 
- ** @result Returns 0 upon success, or any other value if there was an error.
+ ** set the configuration per its contents.  Reports config option errors, 
which can be filtered.
+ ** @result Returns 0 upon success, or any other value if there was an option 
error.
  */
 TIDY_EXPORT int TIDY_CALL         tidyLoadConfigEnc(TidyDoc tdoc,       /**< 
The TidyDoc to which to apply the configuration. */
                                                     ctmbstr configFile, /**< 
The complete path to the file to load. */
@@ -2053,7 +2053,7 @@
  ** @{
  */
 
-/** @struct tidyLocalMapItem
+/** @struct tidyLocaleMapItem
  ** Represents an opaque type we can use for tidyLocaleMapItem, which
  ** is used to iterate through the language list, and used to access
  ** the windowsName() and the posixName().
@@ -2088,17 +2088,17 @@
  */
 TIDY_EXPORT const tidyLocaleMapItem* TIDY_CALL getNextWindowsLanguage( 
TidyIterator* iter );
 
-/** Given a `tidyLocalMapItem`, return the Windows name.
- ** @param item An instance of tidyLocalMapItem to query.
+/** Given a `tidyLocaleMapItem`, return the Windows name.
+ ** @param item An instance of tidyLocaleMapItem to query.
  ** @result Returns a string with the Windows name of the mapping.
  */
-TIDY_EXPORT const ctmbstr TIDY_CALL TidyLangWindowsName( const 
tidyLocaleMapItem *item );
+TIDY_EXPORT ctmbstr TIDY_CALL TidyLangWindowsName( const tidyLocaleMapItem 
*item );
 
-/** Given a `tidyLocalMapItem`, return the POSIX name.
- ** @param item An instance of tidyLocalMapItem to query.
+/** Given a `tidyLocaleMapItem`, return the POSIX name.
+ ** @param item An instance of tidyLocaleMapItem to query.
  ** @result Returns a string with the POSIX name of the mapping.
  */
-TIDY_EXPORT const ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem 
*item );
+TIDY_EXPORT ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem *item 
);
 
 /** @}
  ** @name Getting Localized Strings
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/include/tidyenum.h 
new/tidy-html5-5.7.28/include/tidyenum.h
--- old/tidy-html5-5.6.0/include/tidyenum.h     2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/include/tidyenum.h    2019-07-08 20:52:14.000000000 
+0200
@@ -107,6 +107,7 @@
  */
 #define FOREACH_MSG_MISC(FN) \
 /** line %d column %d */                           FN(LINE_COLUMN_STRING)      
    \
+/** %s: line %d column %d */                       FN(FN_LINE_COLUMN_STRING)   
    \
 /** discarding */                                  FN(STRING_DISCARDING)       
    \
 /** error and errors */                            
FN(STRING_ERROR_COUNT_ERROR)    \
 /** warning and warnings */                        
FN(STRING_ERROR_COUNT_WARNING)  \
@@ -171,6 +172,7 @@
 #define FOREACH_REPORT_MSG(FN)        \
     FN(ADDED_MISSING_CHARSET)         \
     FN(ANCHOR_NOT_UNIQUE)             \
+    FN(ANCHOR_DUPLICATED)             \
     FN(APOS_UNDEFINED)                \
     FN(ATTR_VALUE_NOT_LCASE)          \
     FN(ATTRIBUTE_IS_NOT_ALLOWED)      \
@@ -635,6 +637,7 @@
     TidyQuoteNbsp,               /**< Output non-breaking space as entity */
     TidyReplaceColor,            /**< Replace hex color attribute values with 
names */
     TidyShowErrors,              /**< Number of errors to put out */
+    TidyShowFilename,            /**< If true, the input filename is displayed 
with the error messages */
     TidyShowInfo,                /**< If true, info-level messages are shown */
     TidyShowMarkup,              /**< If false, normal output is suppressed */
     TidyShowMetaChange,          /**< show when meta http-equiv content 
charset was changed - compatibility */
@@ -968,6 +971,7 @@
   TidyTag_BDI,           /**< BDI */
   TidyTag_CANVAS,        /**< CANVAS */
   TidyTag_COMMAND,       /**< COMMAND */
+  TidyTag_DATA,          /**< DATA */
   TidyTag_DATALIST,      /**< DATALIST */
   TidyTag_DETAILS,       /**< DETAILS */
   TidyTag_DIALOG,        /**< DIALOG */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/include/tidyplatform.h 
new/tidy-html5-5.7.28/include/tidyplatform.h
--- old/tidy-html5-5.6.0/include/tidyplatform.h 2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/include/tidyplatform.h        2019-07-08 
20:52:14.000000000 +0200
@@ -315,6 +315,15 @@
 #  endif
 #endif
 
+/* === Convenience defines for Haiku platforms === */
+
+#if defined(__HAIKU__)
+#  define HAIKU
+#  ifndef PLATFORM_NAME
+#    define PLATFORM_NAME "Haiku"
+#  endif
+#endif
+
 /* === Convenience defines for Cygwin platforms === */
 
 #if defined(__CYGWIN__)
@@ -428,7 +437,7 @@
 #if PRESERVE_FILE_TIMES
 
 #  ifndef HAS_FUTIME
-#    if defined(CYGWIN_OS) || defined(BE_OS) || defined(OS2_OS) || 
defined(HPUX_OS) || defined(SOLARIS_OS) || defined(LINUX_OS) || 
defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || 
defined(IRIX_OS) || defined(AIX_OS) || defined(__BORLANDC__) || 
defined(__GLIBC__)
+#    if defined(CYGWIN_OS) || defined(BE_OS) || defined(OS2_OS) || 
defined(HPUX_OS) || defined(SOLARIS_OS) || defined(LINUX_OS) || 
defined(BSD_BASED_OS) || defined(MAC_OS) || defined(__MSL__) || 
defined(IRIX_OS) || defined(AIX_OS) || defined(__BORLANDC__) || 
defined(__GLIBC__) || defined(__HAIKU__)
 #      define HAS_FUTIME 0
 #    else
 #      define HAS_FUTIME 1
@@ -456,6 +465,12 @@
 #    include <utime.h>
 #  endif
 
+#if defined(__HAIKU__)
+#ifndef va_copy
+#define va_copy(dest, src) (dest = src)
+#endif
+#endif
+
 /* MS Windows needs _ prefix for Unix file functions.
    Not required by Metrowerks Standard Library (MSL).
   
@@ -549,12 +564,12 @@
 #  include <sys/types.h>
 #endif
 
-#if !defined(HPUX_OS) && !defined(CYGWIN_OS) && !defined(MAC_OS_X) && 
!defined(BE_OS) && !defined(SOLARIS_OS) && !defined(BSD_BASED_OS) && 
!defined(OSF_OS) && !defined(IRIX_OS) && !defined(AIX_OS) && !defined(LINUX_OS)
+#if !defined(HPUX_OS) && !defined(CYGWIN_OS) && !defined(MAC_OS_X) && 
!defined(BE_OS) && !defined(SOLARIS_OS) && !defined(BSD_BASED_OS) && 
!defined(OSF_OS) && !defined(IRIX_OS) && !defined(AIX_OS) && !defined(LINUX_OS) 
&& !defined(__HAIKU__)
 #  undef uint
    typedef unsigned int uint;
 #endif
 
-#if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || 
defined(BSD_BASED_OS) || defined(_WIN32)
+#if defined(HPUX_OS) || defined(CYGWIN_OS) || defined(MAC_OS) || 
defined(BSD_BASED_OS) || defined(_WIN32) || defined(__ANDROID__)
 #  undef ulong
    typedef unsigned long ulong;
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/man/tidy1.xsl.in 
new/tidy-html5-5.7.28/man/tidy1.xsl.in
--- old/tidy-html5-5.6.0/man/tidy1.xsl.in       2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/man/tidy1.xsl.in      2019-07-08 20:52:14.000000000 
+0200
@@ -75,8 +75,9 @@
 \fIConfiguration\fR options, on the other hand, can either be passed
 on the command line, starting with two dashes \fB--\fR,
 or specified in a configuration file,
-using the option name without the starting dashes.  
-They are listed in the second part of this section.
+using the option name, followed by a colon \fB:\fR, plus the value, without 
+the starting dashes. They are listed in the second part of this section,
+with a sample config file.
 .LP
 For \fIcommand-line\fR options that expect a numerical argument,
 a default is assumed if no meaningful value can be found.  
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/attrdict.c 
new/tidy-html5-5.7.28/src/attrdict.c
--- old/tidy-html5-5.6.0/src/attrdict.c 2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/attrdict.c        2019-07-08 20:52:14.000000000 
+0200
@@ -1955,6 +1955,7 @@
   { TidyAttr_AS,                    
xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50 },
   { TidyAttr_CHARSET,               
xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10|xxxx|xxxx },
   { TidyAttr_CLASS,                 
xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10|HT50|XH50 }, 
/* CORE override */
+  { TidyAttr_COLOR,                 
xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50 }, 
/* Is #686 */
   { TidyAttr_CROSSORIGIN,           
xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50 },
   { TidyAttr_DIR,                   
xxxx|xxxx|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|xxxx|HT50|XH50 }, 
/* CORE override */
   { TidyAttr_HREF,                  
HT20|HT32|H40T|H41T|X10T|H40F|H41F|X10F|H40S|H41S|X10S|XH11|XB10|HT50|XH50 },
@@ -3391,6 +3392,17 @@
   INCLUDE_CORE_ATTRIBS
   INCLUDE_CORE_EVENTS
   INCLUDE_RDFA
+  { TidyAttr_UNKNOWN,               0                                          
                                },
+};
+
+const AttrVersion TY_(W3CAttrsFor_DATA)[] = 
+{
+  INCLUDE_ARIA
+  INCLUDE_MICRODATA
+  { TidyAttr_VALUE,              
xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50 },
+  INCLUDE_CORE_ATTRIBS
+  INCLUDE_CORE_EVENTS
+  INCLUDE_RDFA
   { TidyAttr_UNKNOWN,               0                                          
                                },
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/attrdict.h 
new/tidy-html5-5.7.28/src/attrdict.h
--- old/tidy-html5-5.6.0/src/attrdict.h 2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/attrdict.h        2019-07-08 20:52:14.000000000 
+0200
@@ -144,6 +144,7 @@
 extern const AttrVersion TY_(W3CAttrsFor_PROGRESS)[];
 extern const AttrVersion TY_(W3CAttrsFor_TEMPLATE)[];
 extern const AttrVersion TY_(W3CAttrsFor_TIME)[];
+extern const AttrVersion TY_(W3CAttrsFor_DATA)[];
 extern const AttrVersion TY_(W3CAttrsFor_DATALIST)[];
 extern const AttrVersion TY_(W3CAttrsFor_AUDIO)[];
 extern const AttrVersion TY_(W3CAttrsFor_VIDEO)[];
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/attrs.c 
new/tidy-html5-5.7.28/src/attrs.c
--- old/tidy-html5-5.6.0/src/attrs.c    2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/attrs.c   2019-07-08 20:52:14.000000000 +0200
@@ -144,7 +144,7 @@
   { TidyAttr_DATETIME,                "datetime",                CH_DATE      
}, /* INS, DEL */
   { TidyAttr_DECLARE,                 "declare",                 CH_BOOL      
}, /* OBJECT */
   { TidyAttr_DEFER,                   "defer",                   CH_BOOL      
}, /* SCRIPT */
-  { TidyAttr_DIR,                     "dir",                     CH_TEXTDIR   
}, /* ltr or rtl */
+  { TidyAttr_DIR,                     "dir",                     CH_TEXTDIR   
}, /* ltr, rtl or auto */
   { TidyAttr_DISABLED,                "disabled",                CH_BOOL      
}, /* form fields */
   { TidyAttr_DOWNLOAD,                "download",                CH_PCDATA    
}, /* anchor */
   { TidyAttr_ENCODING,                "encoding",                CH_PCDATA    
}, /* <?xml?> */
@@ -798,7 +798,7 @@
     if ( priorities->count >= priorities->capacity )
     {
         priorities->capacity = priorities->capacity * 2;
-        priorities->list = realloc( priorities->list, sizeof(tmbstr) * 
priorities->capacity + 1 );
+        priorities->list = TidyRealloc(doc->allocator, priorities->list, 
sizeof(tmbstr) * priorities->capacity + 1 );
     }
 
     priorities->list[priorities->count] = TY_(tmbstrdup)( doc->allocator, 
name);
@@ -997,13 +997,16 @@
     FreeAnchor( doc, delme );
 }
 
-/* initialize new anchor */
+/* initialize new anchor 
+   Is. #726 & #185 - HTML5 is case-sensitive
+*/
 static Anchor* NewAnchor( TidyDocImpl* doc, ctmbstr name, Node* node )
 {
     Anchor *a = (Anchor*) TidyDocAlloc( doc, sizeof(Anchor) );
 
     a->name = TY_(tmbstrdup)( doc->allocator, name );
-    a->name = TY_(tmbstrtolower)(a->name);
+    if (!TY_(IsHTML5Mode)(doc)) /* Is. #726 - if NOT HTML5, to lowercase */
+        a->name = TY_(tmbstrtolower)(a->name);
     a->node = node;
     a->next = NULL;
 
@@ -1659,7 +1662,10 @@
 
         if ((old = GetNodeByAnchor(doc, attval->value)) &&  old != node)
         {
-            TY_(ReportAttrError)( doc, node, attval, ANCHOR_NOT_UNIQUE);
+            if (node->implicit) /* Is #709 - improve warning text */
+                TY_(ReportAttrError)(doc, node, attval, ANCHOR_DUPLICATED);
+            else
+                TY_(ReportAttrError)( doc, node, attval, ANCHOR_NOT_UNIQUE);
         }
         else
             AddAnchor( doc, attval->value, node );
@@ -1687,7 +1693,10 @@
 
     if ((old = GetNodeByAnchor(doc, attval->value)) &&  old != node)
     {
-        TY_(ReportAttrError)( doc, node, attval, ANCHOR_NOT_UNIQUE);
+        if (node->implicit) /* Is #709 - improve warning text */
+            TY_(ReportAttrError)(doc, node, attval, ANCHOR_DUPLICATED);
+        else
+            TY_(ReportAttrError)( doc, node, attval, ANCHOR_NOT_UNIQUE);
     }
     else
         AddAnchor( doc, attval->value, node );
@@ -2015,8 +2024,11 @@
 /* checks dir attribute */
 void CheckTextDir( TidyDocImpl* doc, Node *node, AttVal *attval)
 {
-    ctmbstr const values[] = {"rtl", "ltr", NULL};
-    CheckAttrValidity( doc, node, attval, values );
+    ctmbstr const values4[] = { "rtl", "ltr", NULL };
+    /* PR #712 - add 'auto' for HTML5 - @doronbehar */
+    ctmbstr const values5[] = { "rtl", "ltr", "auto", NULL };
+    CheckAttrValidity(doc, node, attval,
+        (TY_(IsHTML5Mode)(doc) ? values5 : values4));
 }
 
 /* checks lang and xml:lang attributes */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/clean.c 
new/tidy-html5-5.7.28/src/clean.c
--- old/tidy-html5-5.6.0/src/clean.c    2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/clean.c   2019-07-08 20:52:14.000000000 +0200
@@ -2211,8 +2211,10 @@
     tidyBufAppend(&charsetString, "charset=", 8);
     tidyBufAppend(&charsetString, (char*)enc, TY_(tmbstrlen)(enc));
     tidyBufAppend(&charsetString, "\0", 1); /* zero terminate the buffer */
-                                            /* process the children of the 
head */
-    for (currentNode = head->content; currentNode; currentNode = 
currentNode->next)
+    /* process the children of the head */
+    /* Issue #656 - guard against 'currentNode' being set NULL in loop */
+    for (currentNode = head->content; currentNode; 
+        currentNode = (currentNode ? currentNode->next : NULL))
     {
         if (!nodeIsMETA(currentNode))
             continue;   /* not a meta node */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/config.c 
new/tidy-html5-5.7.28/src/config.c
--- old/tidy-html5-5.6.0/src/config.c   2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/config.c  2019-07-08 20:52:14.000000000 +0200
@@ -245,6 +245,7 @@
     { TidyQuoteNbsp,               ME, "quote-nbsp",                  BL, yes, 
            ParsePickList,     &boolPicks          },
     { TidyReplaceColor,            MX, "replace-color",               BL, no,  
            ParsePickList,     &boolPicks          },
     { TidyShowErrors,              DD, "show-errors",                 IN, 6,   
            ParseInt,          NULL                },
+    { TidyShowFilename,            DD, "show-filename",               BL, no,  
            ParsePickList,     &boolPicks          },
     { TidyShowInfo,                DD, "show-info",                   BL, yes, 
            ParsePickList,     &boolPicks          },
     { TidyShowMarkup,              DD, "markup",                      BL, yes, 
            ParsePickList,     &boolPicks          },
     { TidyShowMetaChange,          DG, "show-meta-change",            BL, no,  
            ParsePickList,     &boolPicks          }, /* 20170609 - Issue #456 
*/
@@ -303,6 +304,7 @@
 
 
 /* forward declarations */
+static void AdjustConfig( TidyDocImpl* doc );
 static Bool GetPickListValue( ctmbstr value, PickListItems* pickList, uint 
*result );
 
 
@@ -711,6 +713,7 @@
     const TidyOptionValue* value = &doc->config.value[ 0 ];
     TidyOptionValue* snap  = &doc->config.snapshot[ 0 ];
 
+    AdjustConfig( doc );  /* Make sure it's consistent */
     for ( ixVal=0; ixVal < N_TIDY_OPTIONS; ++option, ++ixVal )
     {
         assert( ixVal == (uint) option->id );
@@ -759,6 +762,7 @@
         }
         if ( needReparseTagsDecls )
             ReparseTagDecls( docTo, changedUserTags  );
+        AdjustConfig( docTo );  /* Make sure it's consistent */
     }
 }
 
@@ -873,8 +877,26 @@
     if (filename[1] == '/')
     {
         home_dir = getenv("HOME");
-        if ( home_dir )
+        if (home_dir) {
             ++filename;
+        }
+#ifdef _WIN32
+        else if (strlen(filename) >= 3) {   /* at least '~/+1' */
+            /* no HOME env in Windows - got for HOMEDRIVE=C: 
HOMEPATH=\Users\user */
+            char * hd = getenv("HOMEDRIVE");
+            char * hp = getenv("HOMEPATH");
+            if (hd && hp) {
+                ctmbstr s = TidyDocAlloc(doc, _MAX_PATH);
+                strcpy(s, hd);
+                strcat(s, hp);
+                strcat(s, "\\");
+                strcat(s, &filename[2]);
+                return s;
+            }
+
+        }
+#endif /* _WIN32 */
+
     }
 #ifdef SUPPORT_GETPWNAM
     else
@@ -1052,6 +1074,8 @@
     if ( fname != (tmbstr) file )
         TidyDocFree( doc, fname );
 
+    AdjustConfig( doc );
+
     /* any new config errors? If so, return warning status. */
     return (doc->optionErrors > opterrs ? 1 : 0); 
 }
@@ -1190,7 +1214,7 @@
 
 
 /* ensure that config is self consistent */
-void TY_(AdjustConfig)( TidyDocImpl* doc )
+static void AdjustConfig( TidyDocImpl* doc )
 {
     if ( cfgBool(doc, TidyEncloseBlockText) )
         TY_(SetOptionBool)( doc, TidyEncloseBodyText, yes );
@@ -1476,9 +1500,12 @@
         return no;
     }
 
+    buf[i] = 0; /* Is #697 - Do *not* add '-' */
+#if 0   /* Is #697 - Is this still required? KEEP HISTORY - DO NOT DELETE */
     buf[i++] = '-';  /* Make sure any escaped Unicode is terminated */
     buf[i] = 0;      /* so valid class names are generated after */
                      /* Tidy appends last digits. */
+#endif /* Is #697 - Is this still required? */
 
     SetOptionValue( doc, option->id, buf );
     return yes;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/config.h 
new/tidy-html5-5.7.28/src/config.h
--- old/tidy-html5-5.6.0/src/config.h   2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/config.h  2019-07-08 20:52:14.000000000 +0200
@@ -335,12 +335,6 @@
 Bool  TY_(AdjustCharEncoding)( TidyDocImpl* doc, int encoding );
 
 
-/** Ensure that the configuration options are self consistent.
- ** @param doc The Tidy document to adjust.
- */
-void TY_(AdjustConfig)( TidyDocImpl* doc );
-
-
 /** Indicates whether or not the current configuration is completely default.
  ** @param doc The Tidy document.
  ** @returns The result.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language.c 
new/tidy-html5-5.7.28/src/language.c
--- old/tidy-html5-5.6.0/src/language.c 2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/language.c        2019-07-08 20:52:14.000000000 
+0200
@@ -22,12 +22,13 @@
 
 /**
  *  This structure type provides universal access to all of Tidy's strings.
+ *  Note limit of 8, to be changed as more added...
  */
 typedef struct {
     Bool manually_set;
     languageDefinition *currentLanguage;
     languageDefinition *fallbackLanguage;
-    languageDefinition *languages[];
+    languageDefinition *languages[8];
 } tidyLanguagesType;
 
 
@@ -590,18 +591,18 @@
 
 
 /**
- *  Given a `tidyLocalMapItemImpl, return the Windows name.
+ *  Given a `tidyLocaleMapItemImpl, return the Windows name.
  */
-const ctmbstr TY_(TidyLangWindowsName)( const tidyLocaleMapItemImpl *item )
+ctmbstr TY_(TidyLangWindowsName)( const tidyLocaleMapItemImpl *item )
 {
     return item->winName;
 }
 
 
 /**
- *  Given a `tidyLocalMapItemImpl, return the POSIX name.
+ *  Given a `tidyLocaleMapItemImpl, return the POSIX name.
  */
-const ctmbstr TY_(TidyLangPosixName)( const tidyLocaleMapItemImpl *item )
+ctmbstr TY_(TidyLangPosixName)( const tidyLocaleMapItemImpl *item )
 {
     return item->POSIXName;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language.h 
new/tidy-html5-5.7.28/src/language.h
--- old/tidy-html5-5.6.0/src/language.h 2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/language.h        2019-07-08 20:52:14.000000000 
+0200
@@ -189,14 +189,14 @@
 const tidyLocaleMapItemImpl *TY_(getNextWindowsLanguage)( TidyIterator* iter );
 
 /**
- *  Given a `tidyLocalMapItemImpl, return the Windows name.
+ *  Given a `tidyLocaleMapItemImpl, return the Windows name.
  */
-const ctmbstr TY_(TidyLangWindowsName)( const tidyLocaleMapItemImpl *item );
+ctmbstr TY_(TidyLangWindowsName)( const tidyLocaleMapItemImpl *item );
 
 /**
- *  Given a `tidyLocalMapItemImpl, return the POSIX name.
+ *  Given a `tidyLocaleMapItemImpl, return the POSIX name.
  */
-const ctmbstr TY_(TidyLangPosixName)( const tidyLocaleMapItemImpl *item );
+ctmbstr TY_(TidyLangPosixName)( const tidyLocaleMapItemImpl *item );
 
 /**
  *  Initializes the TidyIterator to point to the first item
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language_en.h 
new/tidy-html5-5.7.28/src/language_en.h
--- old/tidy-html5-5.6.0/src/language_en.h      2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/language_en.h     2019-07-08 20:52:14.000000000 
+0200
@@ -363,8 +363,15 @@
       - The strings "Tidy" and "HTML Tidy" are the program name and must not
       be translated. */
         TidyEmacs,                    0,
-        "This option specifies if Tidy should change the format for reporting "
-        "errors and warnings to a format that is more easily parsed by GNU 
Emacs. "
+        "This option specifies that Tidy should change the format for 
reporting "
+        "errors and warnings to a format that is more easily parsed by GNU 
Emacs "
+        "or some other program.  It changes them from the default "
+        "<br/>"
+        "  line &lt;line number&gt; column &lt;column number&gt; - 
(Error|Warning): &lt;message&gt; "
+        "<br/>"
+        "to a form which includes the input filename: "
+        "<br/>"
+        "  &lt;filename&gt;:&lt;line number&gt;:&lt;column number&gt;: 
(Error|Warning): &lt;message&gt; "
     },
     {/* Important notes for translators:
       - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
@@ -533,7 +540,7 @@
       - The strings "Tidy" and "HTML Tidy" are the program name and must not
       be translated. */
         TidyHideComments,             0,
-        "This option specifies if Tidy should print out comments. "
+        "This option specifies if Tidy should not print out comments. "
     },
     {/* Important notes for translators:
       - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
@@ -1173,6 +1180,21 @@
       - It's very important that <br/> be self-closing!
       - The strings "Tidy" and "HTML Tidy" are the program name and must not
       be translated. */
+        TidyShowFilename,             0,
+        "This option specifies if Tidy should show the filename in messages. 
eg: "
+        "<br/>"
+        " tidy -q -e --show-filename yes index.html<br/>"
+        " index.html: line 43 column 3 - Warning: replacing invalid UTF-8 
bytes (char. code U+00A9) "
+    },
+
+    {/* Important notes for translators:
+      - Use only <code></code>, <var></var>, <em></em>, <strong></strong>, and
+      <br/>.
+      - Entities, tags, attributes, etc., should be enclosed in <code></code>.
+      - Option values should be enclosed in <var></var>.
+      - It's very important that <br/> be self-closing!
+      - The strings "Tidy" and "HTML Tidy" are the program name and must not
+      be translated. */
         TidyShowInfo,                 0,
         "This option specifies if Tidy should display info-level messages. "
     },
@@ -1681,6 +1703,7 @@
      ** @remark enum generator FOREACH_MSG_MISC
      ********************************************/
     { LINE_COLUMN_STRING,           0,   "line %d column %d - "                
                                    },
+    { FN_LINE_COLUMN_STRING,        0,   "%s: line %d column %d - "            
                                    },
     {/* For example, "discarding invalid UTF-16 surrogate pair" */
       STRING_DISCARDING,            0,   "discarding"
     },
@@ -1924,6 +1947,7 @@
      ********************************************/    
     { ADDED_MISSING_CHARSET,        0,   "Added appropriate missing <meta 
charset=...> to %s"                      },
     { ANCHOR_NOT_UNIQUE,            0,   "%s anchor \"%s\" already defined"    
                                    },
+    { ANCHOR_DUPLICATED,            0,   "Implicit %s anchor \"%s\" duplicated 
by Tidy."                           },
     { APOS_UNDEFINED,               0,   "named entity &apos; only defined in 
XML/XHTML"                           },
     { ATTR_VALUE_NOT_LCASE,         0,   "%s attribute value \"%s\" must be 
lower case for XHTML"                  },
     { ATTRIBUTE_IS_NOT_ALLOWED,     0,   "%s attribute \"is\" not allowed for 
autonomous custom tags."             },
@@ -2170,7 +2194,7 @@
     { TC_LABEL_LANG,                0,   "lang"                                
                                    },
     { TC_LABEL_LEVL,                0,   "level"                               
                                    },
     { TC_LABEL_OPT,                 0,   "option"                              
                                    },
-    { TC_MAIN_ERROR_LOAD_CONFIG,    0,   "Loading config file \"%s\" failed, 
err = %d"                             },
+    { TC_MAIN_ERROR_LOAD_CONFIG,    0,   "Loading config file \"%s\" problems, 
err = %d"                             },
     { TC_OPT_ACCESS,                0,
         "do additional accessibility checks (<level> = 0, 1, 2, 3). 0 is "
         "assumed if <level> is missing."
@@ -2287,7 +2311,6 @@
         - Second %s represents a version number, typically x.x.xx.
         - The strings "Tidy" and "HTML Tidy" are the program name and must not 
be translated. */
       TC_TXT_HELP_1,                0,
-        "\n"
         "%s [options...] [file...] [options...] [file...]\n"
         "Utility to clean up and pretty print HTML/XHTML/XML.\n"
         "\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language_en_gb.h 
new/tidy-html5-5.7.28/src/language_en_gb.h
--- old/tidy-html5-5.6.0/src/language_en_gb.h   2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/language_en_gb.h  2019-07-08 20:52:14.000000000 
+0200
@@ -1,4 +1,4 @@
-#ifndef language_en_gb_h
+#ifndef language_en_gb_h
 #define language_en_gb_h
 /*
  * language_en_gb.h
@@ -180,3 +180,4 @@
 
 
 #endif /* language_en_gb_h */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language_es.h 
new/tidy-html5-5.7.28/src/language_es.h
--- old/tidy-html5-5.6.0/src/language_es.h      2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/language_es.h     2019-07-08 20:52:14.000000000 
+0200
@@ -1,4 +1,4 @@
-#ifndef language_es_h
+#ifndef language_es_h
 #define language_es_h
 /*
  * language_es.h
@@ -131,3 +131,4 @@
 
 
 #endif /* language_es_h */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language_es_mx.h 
new/tidy-html5-5.7.28/src/language_es_mx.h
--- old/tidy-html5-5.6.0/src/language_es_mx.h   2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/language_es_mx.h  2019-07-08 20:52:14.000000000 
+0200
@@ -1,4 +1,4 @@
-#ifndef language_es_mx_h
+#ifndef language_es_mx_h
 #define language_es_mx_h
 /*
  * language_es_mx.h
@@ -76,3 +76,4 @@
 
 
 #endif /* language_es_mx_h */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language_fr.h 
new/tidy-html5-5.7.28/src/language_fr.h
--- old/tidy-html5-5.6.0/src/language_fr.h      2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/language_fr.h     2019-07-08 20:52:14.000000000 
+0200
@@ -1,4 +1,4 @@
-#ifndef language_fr_h
+#ifndef language_fr_h
 #define language_fr_h
 /*
  * language_fr.h
@@ -1172,3 +1172,4 @@
 
 
 #endif /* language_fr_h */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language_pt_br.h 
new/tidy-html5-5.7.28/src/language_pt_br.h
--- old/tidy-html5-5.6.0/src/language_pt_br.h   2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/language_pt_br.h  2019-07-08 20:52:14.000000000 
+0200
@@ -1,4 +1,4 @@
-#ifndef language_pt_br_h
+#ifndef language_pt_br_h
 #define language_pt_br_h
 /*
  * language_pt_br.h
@@ -1294,3 +1294,4 @@
 
 
 #endif /* language_pt_br_h */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/language_zh_cn.h 
new/tidy-html5-5.7.28/src/language_zh_cn.h
--- old/tidy-html5-5.6.0/src/language_zh_cn.h   2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/language_zh_cn.h  2019-07-08 20:52:14.000000000 
+0200
@@ -1,4 +1,4 @@
-#ifndef language_zh_cn_h
+#ifndef language_zh_cn_h
 #define language_zh_cn_h
 /*
  * language_zh_cn.h
@@ -78,3 +78,4 @@
 
 
 #endif /* language_zh_cn_h */
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/lexer.c 
new/tidy-html5-5.7.28/src/lexer.c
--- old/tidy-html5-5.6.0/src/lexer.c    2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/lexer.c   2019-07-08 20:52:14.000000000 +0200
@@ -2384,7 +2384,8 @@
                 /*\ if javascript insert backslash before / 
                  *  Issue #348 - Add option, escape-scripts, to skip
                 \*/
-                if ((TY_(IsJavaScript)(container)) && cfgBool(doc, 
TidyEscapeScripts))
+                if ((TY_(IsJavaScript)(container)) && cfgBool(doc, 
TidyEscapeScripts) &&
+                    !TY_(IsHTML5Mode)(doc) )    /* Is #700 - This only applies 
to legacy html4 mode */
                 {
                     /* Issue #281 - only warn if adding the escape! */
                     TY_(Report)(doc, NULL, NULL, BAD_CDATA_CONTENT);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/message.c 
new/tidy-html5-5.7.28/src/message.c
--- old/tidy-html5-5.6.0/src/message.c  2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/message.c 2019-07-08 20:52:14.000000000 +0200
@@ -261,6 +261,7 @@
 } dispatchTable[] = {
     { ADDED_MISSING_CHARSET,        TidyInfo,        formatStandard          },
     { ANCHOR_NOT_UNIQUE,            TidyWarning,     formatAttributeReport   },
+    { ANCHOR_DUPLICATED,            TidyWarning,     formatAttributeReport   },
     { APOS_UNDEFINED,               TidyWarning,     formatStandard          },
     { ATTR_VALUE_NOT_LCASE,         TidyWarning,     formatAttributeReport   },
     { ATTRIBUTE_VALUE_REPLACED,     TidyInfo,        formatAttributeReport   },
@@ -346,7 +347,7 @@
     { STRING_CONTENT_LOOKS,         TidyInfo,        formatStandard          
}, /* reportMarkupVersion() */
     { STRING_DOCTYPE_GIVEN,         TidyInfo,        formatStandard          
}, /* reportMarkupVersion() */
     { STRING_MISSING_MALFORMED,     TidyConfig,      formatStandard          },
-    { STRING_MUTING_TYPE,           TidyConfig,      formatStandard          },
+    { STRING_MUTING_TYPE,           TidyInfo,        formatStandard          },
     { STRING_NO_SYSID,              TidyInfo,        formatStandard          
}, /* reportMarkupVersion() */
     { STRING_UNKNOWN_OPTION,        TidyConfig,      formatStandard          },
     { SUSPECTED_MISSING_QUOTE,      TidyWarning,     formatStandard          },
@@ -583,6 +584,7 @@
             return TY_(tidyMessageCreateWithNode)(doc, node, code, level, 
tagdesc, name, HTMLVersion(doc));
 
         case ANCHOR_NOT_UNIQUE:
+        case ANCHOR_DUPLICATED:
         case ATTR_VALUE_NOT_LCASE:
         case PROPRIETARY_ATTR_VALUE:
         case XML_ID_SYNTAX:
@@ -1348,7 +1350,7 @@
     if ( list->count >= list->capacity )
     {
         list->capacity = list->capacity * 2;
-        list->list = realloc( list->list, sizeof(tidyStrings) * list->capacity 
+ 1 );
+        list->list = TidyRealloc(doc->allocator, list->list, 
sizeof(tidyStrings) * list->capacity + 1 );
     }
 
     list->list[list->count] = message;
@@ -1520,6 +1522,7 @@
 static const TidyOptionId TidyBlockTagsLinks[] =       { TidyEmptyTags, 
TidyInlineTags, TidyPreTags, TidyUseCustomTags, TidyUnknownOption };
 static const TidyOptionId TidyCharEncodingLinks[] =    { TidyInCharEncoding, 
TidyOutCharEncoding, TidyUnknownOption };
 static const TidyOptionId TidyDuplicateAttrsLinks[] =  { TidyJoinClasses, 
TidyJoinStyles, TidyUnknownOption };
+static const TidyOptionId TidyEmacsLinks[] =           { TidyShowFilename, 
TidyUnknownOption };
 static const TidyOptionId TidyEmptyTagsLinks[] =       { TidyBlockTags, 
TidyInlineTags, TidyPreTags, TidyUseCustomTags, TidyUnknownOption };
 static const TidyOptionId TidyErrFileLinks[] =         { TidyOutFile, 
TidyUnknownOption };
 static const TidyOptionId TidyInCharEncodingLinks[] =  { TidyCharEncoding, 
TidyUnknownOption };
@@ -1534,6 +1537,7 @@
 static const TidyOptionId TidyOutCharEncodingLinks[] = { TidyCharEncoding, 
TidyUnknownOption };
 static const TidyOptionId TidyOutFileLinks[] =         { TidyErrFile, 
TidyUnknownOption };
 static const TidyOptionId TidyPreTagsLinks[] =         { TidyBlockTags, 
TidyEmptyTags, TidyInlineTags, TidyUseCustomTags, TidyUnknownOption };
+static const TidyOptionId TidyShowFilenameLinks[] =    { TidyEmacs, 
TidyUnknownOption };
 static const TidyOptionId TidySortAttributesLinks[] =  { 
TidyPriorityAttributes, TidyUnknownOption };
 static const TidyOptionId TidyUseCustomTagsLinks[] =   { TidyBlockTags, 
TidyEmptyTags, TidyInlineTags, TidyPreTags, TidyUnknownOption };
 static const TidyOptionId TidyWrapAttValsLinks[] =     { TidyWrapScriptlets, 
TidyLiteralAttribs, TidyUnknownOption };
@@ -1550,6 +1554,7 @@
     { TidyBlockTags,       TidyBlockTagsLinks       },
     { TidyCharEncoding,    TidyCharEncodingLinks    },
     { TidyDuplicateAttrs,  TidyDuplicateAttrsLinks  },
+    { TidyEmacs,           TidyEmacsLinks           },
     { TidyEmptyTags,       TidyEmptyTagsLinks       },
     { TidyErrFile,         TidyErrFileLinks         },
     { TidyInCharEncoding,  TidyInCharEncodingLinks  },
@@ -1563,6 +1568,7 @@
     { TidyOutCharEncoding, TidyOutCharEncodingLinks },
     { TidyOutFile,         TidyOutFileLinks         },
     { TidyPreTags,         TidyPreTagsLinks         },
+    { TidyShowFilename,    TidyShowFilenameLinks    },
     { TidySortAttributes,  TidySortAttributesLinks  },
     { TidyMuteReports,     TidyMuteLinks            },
     { TidyUseCustomTags,   TidyUseCustomTagsLinks   },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/messageobj.c 
new/tidy-html5-5.7.28/src/messageobj.c
--- old/tidy-html5-5.6.0/src/messageobj.c       2017-11-25 14:54:41.000000000 
+0100
+++ new/tidy-html5-5.7.28/src/messageobj.c      2019-07-08 20:52:14.000000000 
+0200
@@ -96,6 +96,18 @@
     result->line = line;
     result->column = column;
     result->level = level;
+    /* Is #719 - set 'muted' before any callbacks. */
+    result->muted = no;
+    i = 0;
+    while ((doc->muted.list) && (doc->muted.list[i] != 0))
+    {
+        if (doc->muted.list[i] == code)
+        {
+            result->muted = yes;
+            break;
+        }
+        i++;
+    }
 
     /* Things we create... */
 
@@ -127,6 +139,14 @@
         TY_(tmbsnprintf)(result->messagePosDefault, sizeMessageBuf, "%s:%d:%d: 
", cfgStr(doc, TidyEmacsFile), line, column);
         TY_(tmbsnprintf)(result->messagePos, sizeMessageBuf, "%s:%d:%d: ", 
cfgStr(doc, TidyEmacsFile), line, column);
     }
+    else if ( cfgBool(doc, TidyShowFilename) && cfgStr(doc, TidyEmacsFile) )
+    {
+        /* Include filename in output */
+        TY_(tmbsnprintf)(result->messagePosDefault, sizeMessageBuf, 
tidyDefaultString(FN_LINE_COLUMN_STRING),
+            cfgStr(doc, TidyEmacsFile), line, column);
+        TY_(tmbsnprintf)(result->messagePos, sizeMessageBuf, 
tidyLocalizedString(FN_LINE_COLUMN_STRING),
+            cfgStr(doc, TidyEmacsFile), line, column);
+    }
     else
     {
         /* traditional format */
@@ -158,8 +178,17 @@
 
     if ( ( cfgBool(doc, TidyMuteShow) == yes ) && level <= TidyFatal )
     {
-        TY_(tmbsnprintf)(result->messageOutputDefault, sizeMessageBuf, "%s 
(%s)", result->messageOutputDefault, TY_(tidyErrorCodeAsKey)(code) );
-        TY_(tmbsnprintf)(result->messageOutput, sizeMessageBuf, "%s (%s)", 
result->messageOutput, TY_(tidyErrorCodeAsKey)(code) );
+        /*\ Issue #655 - Unsafe to use output buffer as one of the va_list
+         *  input parameters in some snprintf implmentations.
+        \*/
+        ctmbstr pc = TY_(tidyErrorCodeAsKey)(code);
+        i = TY_(tmbstrlen)(result->messageOutputDefault);
+        if (i < sizeMessageBuf)
+            TY_(tmbsnprintf)(result->messageOutputDefault + i, sizeMessageBuf 
- i, " (%s)", pc );
+        i = TY_(tmbstrlen)(result->messageOutput);
+        if (i < sizeMessageBuf)
+            TY_(tmbsnprintf)(result->messageOutput + i, sizeMessageBuf - i, " 
(%s)", pc );
+        i = 0;
     }
 
     result->allowMessage = yes;
@@ -191,19 +220,6 @@
         result->allowMessage = result->allowMessage & doc->messageCallback( 
tidyImplToMessage(result) );
     }
 
-    /* finally, check the document's configuration to determine whether
-       this message is muted. */
-    result->muted = no;
-    while ( ( doc->muted.list ) && ( doc->muted.list[i] != 0 ) )
-    {
-        if ( doc->muted.list[i] == code )
-        {
-            result->muted = yes;
-            break;
-        }
-        i++;
-    }
-
     return result;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/pprint.c 
new/tidy-html5-5.7.28/src/pprint.c
--- old/tidy-html5-5.6.0/src/pprint.c   2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/pprint.c  2019-07-08 20:52:14.000000000 +0200
@@ -2143,7 +2143,8 @@
                 TY_(PFlushLineSmart)( doc, indent );
             }
 
-            PPrintTag( doc, mode, indent, node );   /* add <pre> or <textarea> 
tag */
+            /* Issue #697 - Add NOWRAP to the mode */
+            PPrintTag( doc, (mode | NOWRAP), indent, node );   /* add <pre> or 
<textarea> tag */
 
             indent = 0;
             /* @camoy Fix #158 - remove inserted newlines in pre - 
TY_(PFlushLineSmart)( doc, indent ); */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/tags.c 
new/tidy-html5-5.7.28/src/tags.c
--- old/tidy-html5-5.6.0/src/tags.c     2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/tags.c    2019-07-08 20:52:14.000000000 +0200
@@ -133,6 +133,7 @@
 #define VERS_ELEM_CANVAS     
(xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50)
 #define VERS_ELEM_COMMAND    
(xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50)
 #define VERS_ELEM_DATALIST   
(xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50)
+#define VERS_ELEM_DATA       
(xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50)
 #define VERS_ELEM_DETAILS    
(xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50)
 #define VERS_ELEM_DIALOG     
(xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50)
 #define VERS_ELEM_EMBED      
(xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|xxxx|HT50|XH50)
@@ -302,6 +303,7 @@
   { TidyTag_COMMAND,     "command",      VERS_ELEM_COMMAND,     
&TY_(W3CAttrsFor_COMMAND)[0],     (CM_HEAD|CM_INLINE|CM_EMPTY),  
TY_(ParseEmpty),     NULL           },
   { TidyTag_DATALIST,    "datalist",     VERS_ELEM_DATALIST,    
&TY_(W3CAttrsFor_DATALIST)[0],    (CM_INLINE|CM_FIELD),          
TY_(ParseDatalist),  NULL           },
   /* { TidyTag_DATALIST,    "datalist",     VERS_ELEM_DATALIST,    
&TY_(W3CAttrsFor_DATALIST)[0],    (CM_FIELD),                   
TY_(ParseInline),    NULL           },*/
+  { TidyTag_DATA,        "data",         VERS_ELEM_DATA,        
&TY_(W3CAttrsFor_DATA)[0],        (CM_INLINE),                   
TY_(ParseInline),    NULL           },
   { TidyTag_DETAILS,     "details",      VERS_ELEM_DETAILS,     
&TY_(W3CAttrsFor_DETAILS)[0],     (CM_BLOCK),                    
TY_(ParseBlock),     NULL           },
   { TidyTag_DIALOG,      "dialog",       VERS_ELEM_DIALOG,      
&TY_(W3CAttrsFor_DIALOG)[0],      (CM_BLOCK),                    
TY_(ParseBlock),     NULL           },
   { TidyTag_EMBED,       "embed",        VERS_ELEM_EMBED,       
&TY_(W3CAttrsFor_EMBED)[0],       (CM_INLINE|CM_IMG|CM_EMPTY),   
TY_(ParseEmpty),     NULL           },
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/tags.h 
new/tidy-html5-5.7.28/src/tags.h
--- old/tidy-html5-5.6.0/src/tags.h     2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/tags.h    2019-07-08 20:52:14.000000000 +0200
@@ -454,6 +454,7 @@
 
 /* HTML5 */
 #define nodeIsDATALIST( node )   TagIsId( node, TidyTag_DATALIST )
+#define nodeIsDATA( node )       TagIsId( node, TidyTag_DATA )
 #define nodeIsMATHML( node )     TagIsId( node, TidyTag_MATHML ) /* #130 
MathML attr and entity fix! */
 
 /* NOT in HTML 5 */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/src/tidylib.c 
new/tidy-html5-5.7.28/src/tidylib.c
--- old/tidy-html5-5.6.0/src/tidylib.c  2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/src/tidylib.c 2019-07-08 20:52:14.000000000 +0200
@@ -36,6 +36,7 @@
 #include "attrs.h"
 #include "sprtf.h"
 #if SUPPORT_LOCALIZATIONS
+#  include "stdlib.h"
 #  include "locale.h"
 #endif
 
@@ -119,7 +120,17 @@
 #if SUPPORT_LOCALIZATIONS
     if ( TY_(tidyGetLanguageSetByUser)() == no )
     {
-        TY_(tidySetLanguage)( setlocale( LC_ALL, "") );
+        if( ! TY_(tidySetLanguage)( getenv( "LC_MESSAGES" ) ) )
+        {
+            if( ! TY_(tidySetLanguage)( getenv( "LANG" ) ) )
+            {
+                /*\
+                *  Is. #770 #783 #780 #790 and maybe others -
+                *  TY_(tidySetLanguage)( setlocale( LC_ALL, "" ) );
+                *  this seems a 'bad' choice!
+               \*/
+            }
+        }
     }
 #endif
 
@@ -1135,14 +1146,16 @@
     fin = fopen( filnam, "rb" );
 
 #if PRESERVE_FILE_TIMES
-    struct stat sbuf = {0};
-    /* get last modified time */
-    TidyClearMemory( &doc->filetimes, sizeof(doc->filetimes) );
-    if ( fin && cfgBool(doc,TidyKeepFileTimes) &&
-         fstat(fileno(fin), &sbuf) != -1 )
     {
-          doc->filetimes.actime  = sbuf.st_atime;
-          doc->filetimes.modtime = sbuf.st_mtime;
+        struct stat sbuf = { 0 };
+        /* get last modified time */
+        TidyClearMemory(&doc->filetimes, sizeof(doc->filetimes));
+        if (fin && cfgBool(doc, TidyKeepFileTimes) &&
+            fstat(fileno(fin), &sbuf) != -1)
+        {
+            doc->filetimes.actime = sbuf.st_atime;
+            doc->filetimes.modtime = sbuf.st_mtime;
+        }
     }
 #endif
 
@@ -1436,8 +1449,8 @@
     Bool xmlIn = cfgBool( doc, TidyXmlTags );
     TidyConfigChangeCallback callback = doc->pConfigChangeCallback;
     
-    doc->pConfigChangeCallback = NULL;
     int bomEnc;
+    doc->pConfigChangeCallback = NULL;
 
     assert( doc != NULL && in != NULL );
     assert( doc->docIn == NULL );
@@ -1445,7 +1458,6 @@
 
     TY_(ResetTags)(doc);    /* reset table to html5 mode */
     TY_(TakeConfigSnapshot)( doc );    /* Save config state */
-    TY_(AdjustConfig)( doc ); /* ensure config consistency */
     TY_(FreeAnchors)( doc );
 
     TY_(FreeNode)(doc, &doc->root);
@@ -2643,13 +2655,13 @@
 }
 
 
-const ctmbstr TIDY_CALL TidyLangWindowsName( const tidyLocaleMapItem *item )
+ctmbstr TIDY_CALL TidyLangWindowsName( const tidyLocaleMapItem *item )
 {
     return TY_(TidyLangWindowsName)( (tidyLocaleMapItemImpl*)(item) );
 }
 
 
-const ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem *item )
+ctmbstr TIDY_CALL TidyLangPosixName( const tidyLocaleMapItem *item )
 {
     return TY_(TidyLangPosixName)( (tidyLocaleMapItemImpl*)(item) );
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-5.6.0/version.txt 
new/tidy-html5-5.7.28/version.txt
--- old/tidy-html5-5.6.0/version.txt    2017-11-25 14:54:41.000000000 +0100
+++ new/tidy-html5-5.7.28/version.txt   2019-07-08 20:52:14.000000000 +0200
@@ -1,2 +1,2 @@
-5.6.0
-2017.11.25
+5.7.28
+2019.07.08

++++++ tidy-html5-doxygen-c0d1cd1.tar.gz -> tidy-html5-doxygen-0ed35c6.tar.gz 
++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-doxygen/DoxygenLayout.xml 
new/tidy-html5-doxygen/DoxygenLayout.xml
--- old/tidy-html5-doxygen/DoxygenLayout.xml    2017-04-04 20:13:01.000000000 
+0200
+++ new/tidy-html5-doxygen/DoxygenLayout.xml    2019-11-05 19:28:01.000000000 
+0100
@@ -9,17 +9,17 @@
       <tab type="namespacelist" visible="yes" title="" intro=""/>
       <tab type="namespacemembers" visible="yes" title="" intro=""/>
     </tab>
-    <tab type="classes" visible="yes" title="">
-      <tab type="classlist" visible="yes" title="" intro=""/>
+    <tab type="classes" visible="no" title="">
+      <tab type="classlist" visible="no" title="" intro=""/>
       <tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> 
-      <tab type="hierarchy" visible="yes" title="" intro=""/>
-      <tab type="classmembers" visible="yes" title="" intro=""/>
+      <tab type="hierarchy" visible="no" title="" intro=""/>
+      <tab type="classmembers" visible="no" title="" intro=""/>
     </tab>
-    <tab type="files" visible="yes" title="">
-      <tab type="filelist" visible="yes" title="" intro=""/>
-      <tab type="globals" visible="yes" title="" intro=""/>
+    <tab type="files" visible="no" title="">
+      <tab type="filelist" visible="no" title="" intro=""/>
+      <tab type="globals" visible="no" title="" intro=""/>
     </tab>
-    <tab type="examples" visible="yes" title="" intro=""/>
+    <tab type="examples" visible="no" title="" intro=""/>
   </navindex>
 
   <!-- Layout definition for a class page -->
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-doxygen/pages/main_page.md 
new/tidy-html5-doxygen/pages/main_page.md
--- old/tidy-html5-doxygen/pages/main_page.md   2017-04-04 20:13:01.000000000 
+0200
+++ new/tidy-html5-doxygen/pages/main_page.md   2019-11-05 19:28:01.000000000 
+0100
@@ -36,7 +36,7 @@
 via `man tidy` on Unix platforms.
 
 In addition to the automatically generated documentation from Tidy’s source
-code, these three major sections provide practical information about using 
Tidy,
+code, these four major sections provide practical information about using Tidy,
 how to contribute, and how LibTidy works:
 
 - \ref general
@@ -53,6 +53,20 @@
   - These articles detail how to work with the HTML Tidy source code. If you
     plan to work with HTACG and donate your own contributions, please have a
     look at these articles so that you have an easy transition to our team!
+    
+- <a class="el" href="modules.html">Modules</a>
+  - **External Public API** If you are a user of LibTidy, then this is all of
+    the documentation that is of use to you in order to implement LibTidy in
+    any language that can link to a C library.
+  - **Internal API** New developers of LibTidy may find browsing this section
+    useful in order to become more familiar with the organization of the source
+    code and the files. Note that this Doxygen project is _not_ a source code
+    viewer, this internal documentation is incomplete, and this is not meant to
+    be a substitute for examining the source code.
+  - **Tidy Console Application** We've also organized the console application 
as
+    its own Doxygen project. This can be useful to new console application
+    tinkers, and also provide insight on how to use LibTidy in your own
+    programs.
 
 # Components
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-doxygen/quickref.include.xsl 
new/tidy-html5-doxygen/quickref.include.xsl
--- old/tidy-html5-doxygen/quickref.include.xsl 2017-04-04 20:13:01.000000000 
+0200
+++ new/tidy-html5-doxygen/quickref.include.xsl 2019-11-05 19:28:01.000000000 
+0100
@@ -25,11 +25,17 @@
     <a name="qtop"></a>
     <h2 id="top">Option Groups</h2>
     <ul>
-        <li><a class="h3" href="#MarkupHeader">HTML, XHTML, XML</a></li>
+        <li><a class="h3" href="#DisplayHeader">Document Display</a></li>
+        <li><a class="h3" href="#DocumentIOHeader">Document In and Out</a></li>
+        <li><a class="h3" href="#FileIOHeader">File Input-Output</a></li>
         <li><a class="h3" href="#DiagnosticsHeader">Diagnostics</a></li>
+        <li><a class="h3" href="#EncodingHeader">Encoding</a></li>
+        <li><a class="h3" href="#MarkupCleanupHeader">Cleanup</a></li>
+        <li><a class="h3" href="#MarkupEntitiesHeader">Entities</a></li>
+        <li><a class="h3" href="#MarkupRepairHeader">Repair</a></li>
+        <li><a class="h3" href="#MarkupXFormHeader">Transformation</a></li>
+        <li><a class="h3" href="#MarkupTeachHeader">Teaching Tidy</a></li>
         <li><a class="h3" href="#PrettyPrintHeader">Pretty Print</a></li>
-        <li><a class="h3" href="#EncodingHeader">Character Encoding</a></li>
-        <li><a class="h3" href="#MiscellaneousHeader">Miscellaneous</a></li>
     </ul>
     <xsl:call-template name="link-section" />
 
@@ -49,29 +55,59 @@
       <col width="33%" />
     </colgroup>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">markup</xsl:with-param>
-      <xsl:with-param name="header">HTML, XHTML, XML</xsl:with-param>
-      <xsl:with-param name="headerID">MarkupHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyDisplay</xsl:with-param>
+      <xsl:with-param name="header">Document Display</xsl:with-param>
+      <xsl:with-param name="headerID">DisplayHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">diagnostics</xsl:with-param>
+      <xsl:with-param name="class">TidyDocumentIO</xsl:with-param>
+      <xsl:with-param name="header">Document In and Out</xsl:with-param>
+      <xsl:with-param name="headerID">DocumentIOHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyFileIO</xsl:with-param>
+      <xsl:with-param name="header">File Input-Output</xsl:with-param>
+      <xsl:with-param name="headerID">FileIOHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyDiagnostics</xsl:with-param>
       <xsl:with-param name="header">Diagnostics</xsl:with-param>
       <xsl:with-param name="headerID">DiagnosticsHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">print</xsl:with-param>
-      <xsl:with-param name="header">Pretty Print</xsl:with-param>
-      <xsl:with-param name="headerID">PrettyPrintHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyEncoding</xsl:with-param>
+      <xsl:with-param name="header">Encoding</xsl:with-param>
+      <xsl:with-param name="headerID">EncodingHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">encoding</xsl:with-param>
-      <xsl:with-param name="header">Character Encoding</xsl:with-param>
-      <xsl:with-param name="headerID">EncodingHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyMarkupCleanup</xsl:with-param>
+      <xsl:with-param name="header">Cleanup</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupCleanupHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyMarkupEntities</xsl:with-param>
+      <xsl:with-param name="header">Entities</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupEntitiesHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyMarkupRepair</xsl:with-param>
+      <xsl:with-param name="header">Repair</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupRepairHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyMarkupXForm</xsl:with-param>
+      <xsl:with-param name="header">Transformation</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupXFormHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">misc</xsl:with-param>
-      <xsl:with-param name="header">Miscellaneous</xsl:with-param>
-      <xsl:with-param name="headerID">MiscellaneousHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyMarkupTeach</xsl:with-param>
+      <xsl:with-param name="header">Teaching Tidy</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupTeachHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyPrettyPrint</xsl:with-param>
+      <xsl:with-param name="header">Pretty Print</xsl:with-param>
+      <xsl:with-param name="headerID">PrettyPrintHeader</xsl:with-param>
     </xsl:call-template>
   </table>
 </xsl:template>
@@ -81,29 +117,59 @@
   <table summary="Tidy Options Quick Reference Detail Section" border="0"
     cellpadding="3" cellspacing="0">
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">markup</xsl:with-param>
-      <xsl:with-param name="header">HTML, XHTML, XML</xsl:with-param>
-      <xsl:with-param name="headerID">MarkupReference</xsl:with-param>
+      <xsl:with-param name="class">TidyDisplay</xsl:with-param>
+      <xsl:with-param name="header">Document Display</xsl:with-param>
+      <xsl:with-param name="headerID">DisplayReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">diagnostics</xsl:with-param>
+      <xsl:with-param name="class">TidyDocumentIO</xsl:with-param>
+      <xsl:with-param name="header">Document In and Out</xsl:with-param>
+      <xsl:with-param name="headerID">DocumentIOReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyFileIO</xsl:with-param>
+      <xsl:with-param name="header">File Input-Output</xsl:with-param>
+      <xsl:with-param name="headerID">FileIOReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyDiagnostics</xsl:with-param>
       <xsl:with-param name="header">Diagnostics</xsl:with-param>
       <xsl:with-param name="headerID">DiagnosticsReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">print</xsl:with-param>
-      <xsl:with-param name="header">Pretty Print</xsl:with-param>
-      <xsl:with-param name="headerID">PrettyPrintReference</xsl:with-param>
+      <xsl:with-param name="class">TidyEncoding</xsl:with-param>
+      <xsl:with-param name="header">Encoding</xsl:with-param>
+      <xsl:with-param name="headerID">EncodingReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">encoding</xsl:with-param>
-      <xsl:with-param name="header">Character Encoding</xsl:with-param>
-      <xsl:with-param name="headerID">EncodingReference</xsl:with-param>
+      <xsl:with-param name="class">TidyMarkupCleanup</xsl:with-param>
+      <xsl:with-param name="header">Cleanup</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupCleanupReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyMarkupEntities</xsl:with-param>
+      <xsl:with-param name="header">Entities</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupEntitiesReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyMarkupRepair</xsl:with-param>
+      <xsl:with-param name="header">Repair</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupRepairReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyMarkupXForm</xsl:with-param>
+      <xsl:with-param name="header">Transformation</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupXFormReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">misc</xsl:with-param>
-      <xsl:with-param name="header">Miscellaneous</xsl:with-param>
-      <xsl:with-param name="headerID">MiscellaneousReference</xsl:with-param>
+      <xsl:with-param name="class">TidyMarkupTeach</xsl:with-param>
+      <xsl:with-param name="header">Teaching Tidy</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupTeachReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyPrettyPrint</xsl:with-param>
+      <xsl:with-param name="header">Pretty Print</xsl:with-param>
+      <xsl:with-param name="headerID">PrettyPrintReference</xsl:with-param>
     </xsl:call-template>
   </table>
 </xsl:template>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/tidy-html5-doxygen/quickref.xsl 
new/tidy-html5-doxygen/quickref.xsl
--- old/tidy-html5-doxygen/quickref.xsl 2017-04-04 20:13:01.000000000 +0200
+++ new/tidy-html5-doxygen/quickref.xsl 2019-11-05 19:28:01.000000000 +0100
@@ -33,11 +33,17 @@
 
     <h2>Option Groups</h2>
     <ul class="option_groups">
-        <li><a href="#MarkupHeader">HTML, XHTML, XML</a></li>
+        <li><a href="#DisplayHeader">Document Display</a></li>
+        <li><a href="#DocumentIOHeader">Document In and Out</a></li>
+        <li><a href="#FileIOHeader">File Input-Output</a></li>
         <li><a href="#DiagnosticsHeader">Diagnostics</a></li>
+        <li><a href="#EncodingHeader">Encoding</a></li>
+        <li><a href="#MarkupCleanupHeader">Cleanup</a></li>
+        <li><a href="#MarkupEntitiesHeader">Entities</a></li>
+        <li><a href="#MarkupRepairHeader">Repair</a></li>
+        <li><a href="#MarkupXFormHeader">Transformation</a></li>
+        <li><a href="#MarkupTeachHeader">Teaching Tidy</a></li>
         <li><a href="#PrettyPrintHeader">Pretty Print</a></li>
-        <li><a href="#EncodingHeader">Character Encoding</a></li>
-        <li><a href="#MiscellaneousHeader">Miscellaneous</a></li>
     </ul>
 
     <h2>Option Index</h2>
@@ -56,29 +62,59 @@
 <xsl:template name="link-section">
   <table summary="Options Quick Reference Index Section" class="index_table">
     <xsl:call-template name="links">
-      <xsl:with-param name="class">markup</xsl:with-param>
-      <xsl:with-param name="header">HTML, XHTML, XML</xsl:with-param>
-      <xsl:with-param name="headerID">MarkupHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyDisplay</xsl:with-param>
+      <xsl:with-param name="header">Document Display</xsl:with-param>
+      <xsl:with-param name="headerID">DisplayHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">diagnostics</xsl:with-param>
+      <xsl:with-param name="class">TidyDocumentIO</xsl:with-param>
+      <xsl:with-param name="header">Document In and Out</xsl:with-param>
+      <xsl:with-param name="headerID">DocumentIOHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyFileIO</xsl:with-param>
+      <xsl:with-param name="header">File Input-Output</xsl:with-param>
+      <xsl:with-param name="headerID">FileIOHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyDiagnostics</xsl:with-param>
       <xsl:with-param name="header">Diagnostics</xsl:with-param>
       <xsl:with-param name="headerID">DiagnosticsHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">print</xsl:with-param>
-      <xsl:with-param name="header">Pretty Print</xsl:with-param>
-      <xsl:with-param name="headerID">PrettyPrintHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyEncoding</xsl:with-param>
+      <xsl:with-param name="header">Encoding</xsl:with-param>
+      <xsl:with-param name="headerID">EncodingHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">encoding</xsl:with-param>
-      <xsl:with-param name="header">Character Encoding</xsl:with-param>
-      <xsl:with-param name="headerID">EncodingHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyMarkupCleanup</xsl:with-param>
+      <xsl:with-param name="header">Cleanup</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupCleanupHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyMarkupEntities</xsl:with-param>
+      <xsl:with-param name="header">Entities</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupEntitiesHeader</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="links">
-      <xsl:with-param name="class">misc</xsl:with-param>
-      <xsl:with-param name="header">Miscellaneous</xsl:with-param>
-      <xsl:with-param name="headerID">MiscellaneousHeader</xsl:with-param>
+      <xsl:with-param name="class">TidyMarkupRepair</xsl:with-param>
+      <xsl:with-param name="header">Repair</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupRepairHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyMarkupXForm</xsl:with-param>
+      <xsl:with-param name="header">Transformation</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupXFormHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyMarkupTeach</xsl:with-param>
+      <xsl:with-param name="header">Teaching Tidy</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupTeachHeader</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="links">
+      <xsl:with-param name="class">TidyPrettyPrint</xsl:with-param>
+      <xsl:with-param name="header">Pretty Print</xsl:with-param>
+      <xsl:with-param name="headerID">PrettyPrintHeader</xsl:with-param>
     </xsl:call-template>
   </table>
 </xsl:template>
@@ -87,29 +123,59 @@
 <xsl:template name="detail-section">
   <table summary="Options Quick Reference Detail Section" class="detail_table">
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">markup</xsl:with-param>
-      <xsl:with-param name="header">HTML, XHTML, XML</xsl:with-param>
-      <xsl:with-param name="headerID">MarkupReference</xsl:with-param>
+      <xsl:with-param name="class">TidyDisplay</xsl:with-param>
+      <xsl:with-param name="header">Document Display</xsl:with-param>
+      <xsl:with-param name="headerID">DisplayReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyDocumentIO</xsl:with-param>
+      <xsl:with-param name="header">Document In and Out</xsl:with-param>
+      <xsl:with-param name="headerID">DocumentIOReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyFileIO</xsl:with-param>
+      <xsl:with-param name="header">File Input-Output</xsl:with-param>
+      <xsl:with-param name="headerID">FileIOReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">diagnostics</xsl:with-param>
+      <xsl:with-param name="class">TidyDiagnostics</xsl:with-param>
       <xsl:with-param name="header">Diagnostics</xsl:with-param>
       <xsl:with-param name="headerID">DiagnosticsReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">print</xsl:with-param>
-      <xsl:with-param name="header">Pretty Print</xsl:with-param>
-      <xsl:with-param name="headerID">PrettyPrintReference</xsl:with-param>
+      <xsl:with-param name="class">TidyEncoding</xsl:with-param>
+      <xsl:with-param name="header">Encoding</xsl:with-param>
+      <xsl:with-param name="headerID">EncodingReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">encoding</xsl:with-param>
-      <xsl:with-param name="header">Character Encoding</xsl:with-param>
-      <xsl:with-param name="headerID">EncodingReference</xsl:with-param>
+      <xsl:with-param name="class">TidyMarkupCleanup</xsl:with-param>
+      <xsl:with-param name="header">Cleanup</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupCleanupReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyMarkupEntities</xsl:with-param>
+      <xsl:with-param name="header">Entities</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupEntitiesReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyMarkupRepair</xsl:with-param>
+      <xsl:with-param name="header">Repair</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupRepairReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyMarkupXForm</xsl:with-param>
+      <xsl:with-param name="header">Transformation</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupXFormReference</xsl:with-param>
+    </xsl:call-template>
+    <xsl:call-template name="reference">
+      <xsl:with-param name="class">TidyMarkupTeach</xsl:with-param>
+      <xsl:with-param name="header">Teaching Tidy</xsl:with-param>
+      <xsl:with-param name="headerID">MarkupTeachReference</xsl:with-param>
     </xsl:call-template>
     <xsl:call-template name="reference">
-      <xsl:with-param name="class">misc</xsl:with-param>
-      <xsl:with-param name="header">Miscellaneous</xsl:with-param>
-      <xsl:with-param name="headerID">MiscellaneousReference</xsl:with-param>
+      <xsl:with-param name="class">TidyPrettyPrint</xsl:with-param>
+      <xsl:with-param name="header">Pretty Print</xsl:with-param>
+      <xsl:with-param name="headerID">PrettyPrintReference</xsl:with-param>
     </xsl:call-template>
   </table>
 </xsl:template>
@@ -180,38 +246,39 @@
         <td>
           <xsl:choose>
             <xsl:when test="string-length(default) &gt; 0">
-              <xsl:apply-templates select="default" />
+              <var><xsl:apply-templates select="default" /></var>
             </xsl:when>
             <xsl:otherwise>
-              -
+              no default value
             </xsl:otherwise>
           </xsl:choose>        
         </td>
       </tr>
-      <tr>
-        <td>Example</td>
-        <td>
-          <xsl:choose>
-            <xsl:when test="string-length(example) &gt; 0">
-              <xsl:apply-templates select="example"/>
-            </xsl:when>
-            <xsl:otherwise>
-              -
-            </xsl:otherwise>
-          </xsl:choose>
-        </td>
-      </tr>
-      <tr>
-        <td>See also:</td>
-        <td>
-          <xsl:for-each select="seealso">
-            <a href="#{.}"><xsl:apply-templates select="." /></a>
-            <xsl:if test="position() != last()">
-              <xsl:text>, </xsl:text>
-            </xsl:if>
-          </xsl:for-each>
-        </td>
-      </tr>
+      <xsl:choose>
+        <xsl:when test="string-length(example) &gt; 0">
+          <tr>
+            <td>Values:</td>
+            <td>
+              <var><xsl:apply-templates select="example"/></var>
+            </td>
+          </tr>
+        </xsl:when>
+      </xsl:choose>
+      <xsl:choose>
+        <xsl:when test="count(seealso) &gt; 0" >
+          <tr>
+            <td>See also:</td>
+            <td>
+              <xsl:for-each select="seealso">
+                <a href="#{.}"><xsl:apply-templates select="." /></a>
+                <xsl:if test="position() != last()">
+                  <xsl:text>, </xsl:text>
+                </xsl:if>
+              </xsl:for-each>
+            </td>
+          </tr>
+        </xsl:when>
+      </xsl:choose>
       <tr>
         <td></td>
         <td class="qdescription"><xsl:apply-templates 
select="description"/></td>
@@ -354,7 +421,7 @@
             min-width: 6.0em;
         }
         
-        code, var
+        code
         {
             color: darkgreen;
             font-size: 1.3em;
@@ -362,7 +429,10 @@
         
         var
         {
-               font-weight: bold;
+            color: darkred;
+            font-size: 1.0em;
+            font-weight: 600;
+            font-style: normal;
         }
                
        </style>


Reply via email to