tildify.el: Better support for XML

* lisp/textmodes/tildify.el  (tildify-string-alist)
(tildify-ignored-environments-alist): Add `nxml-mode' to the list of
supported modes since `xml-mode' is no longer a thing but just an
alias to the former.  Also include comments and insides of tags in
`tildify-ignored-environments-alist' for XML modes.  Finally, since
XML does not define “ ”[1], use a numeric reference for
a no-break space (namely “ ”)

[1] XML specification defines only a handful of predefined entities.
    The list is at <http://www.w3.org/TR/REC-xml/#sec-predefined-ent>
    and includes only &lt;, &gt;, &amp;, &apos; and &quot; (meaning <,
    >, &, ' and " respectively).  This is in contrast to HTML and even
    XHTML which defined a whole bunch of entities including “&nbsp;”.

* automated/tildify-tests.el (tildify-test--example-html): Add support
for generating XML code, so that…
(tildify-test-xml) …test can be added to check handling of XML
documents.
This commit is contained in:
Michal Nazarewicz 2014-06-05 16:41:01 +02:00
parent e01e361f93
commit eb54c73a9d
4 changed files with 37 additions and 4 deletions

View file

@ -1,5 +1,19 @@
2014-06-05 Michal Nazarewicz <mina86@mina86.com>
* textmodes/tildify.el (tildify-string-alist)
(tildify-ignored-environments-alist): Add `nxml-mode' to the list
of supported modes since `xml-mode' is no longer a thing but just
an alias to the former. Also include comments and insides of tags
in `tildify-ignored-environments-alist' for XML modes. Finally,
since XML does not define “&nbsp;”[1], use a numeric reference for
a no-break space (namely “&#160;”)
[1] XML specification defines only a handful of predefined entities.
The list is at <http://www.w3.org/TR/REC-xml/#sec-predefined-ent>
and includes only &lt;, &gt;, &amp;, &apos; and &quot; (meaning <,
>, &, ' and " respectively). This is in contrast to HTML and even
XHTML which defined a whole bunch of entities including “&nbsp;”.
* textmodes/tildify.el (tildify-pattern-alist)
(tildify-string-alist, tildify-ignored-environments-alist):
Improve defcustom's types by adding more tags explaining what each

View file

@ -90,8 +90,9 @@ mode, the item for the mode SYMBOL is looked up in the alist instead."
(tex-mode . latex-mode)
(plain-tex-mode . latex-mode)
(sgml-mode . "&nbsp;")
(xml-mode . sgml-mode)
(html-mode . sgml-mode)
(xml-mode . "&#160;") ; XML does not define &nbsp; use numeric reference
(nxml-mode . xml-mode)
(t . " "))
"Alist specifying what is a hard space in the current major mode.
@ -149,6 +150,10 @@ mode, the item for the mode SYMBOL is looked up in the alist instead."
("<! *--" . "-- *>")
("<" . ">"))
(sgml-mode . html-mode)
(xml-mode
("<! *--" . "-- *>")
("<" . ">"))
(nxml-mode . xml-mode)
(t nil))
"Alist specifying ignored structured text environments.
Parts of text defined in this alist are skipped without performing hard space

View file

@ -1,5 +1,10 @@
2014-06-05 Michal Nazarewicz <mina86@mina86.com>
* automated/tildify-tests.el (tildify-test--example-html): Add support
for generating XML code, so that…
(tildify-test-xml) …test can be added to check handling of XML
documents.
* automated/tildify-tests.el (tildify-test-find-env-group-index-bug):
New test checking end-regex building when multiple environment pairs
use integers to refer to capture groups.

View file

@ -36,14 +36,15 @@
"consectetur adipiscing elit."))
(defun tildify-test--example-html (sentence &optional with-nbsp)
(defun tildify-test--example-html (sentence &optional with-nbsp is-xml)
"Return an example HTML code.
SENTENCE is placed where spaces should not be replaced with hard spaces, and
WITH-NBSP is placed where spaces should be replaced with hard spaces. If the
latter is missing, SENTENCE will be used in all placeholder positions."
latter is missing, SENTENCE will be used in all placeholder positions.
If IS-XML is non-nil, <pre> tag is not treated specially."
(let ((with-nbsp (or with-nbsp sentence)))
(concat "<p>" with-nbsp "</p>\n"
"<pre>" sentence "</pre>\n"
"<pre>" (if is-xml with-nbsp sentence) "</pre>\n"
"<! -- " sentence " -- >\n"
"<p>" with-nbsp "</p>\n"
"<" sentence ">\n")))
@ -77,6 +78,14 @@ after `tildify-buffer' is run."
(tildify-test--example-html sentence sentence)
(tildify-test--example-html sentence with-nbsp))))
(ert-deftest tildify-test-xml ()
"Tests tildification in an XML document"
(let* ((sentence (tildify-test--example-sentence " "))
(with-nbsp (tildify-test--example-sentence "&#160;")))
(tildify-test--test '(nxml-mode)
(tildify-test--example-html sentence sentence t)
(tildify-test--example-html sentence with-nbsp t))))
(defun tildify-test--example-tex (sentence &optional with-nbsp)
"Return an example (La)Tex code.