From eb54c73a9d26325f691589a0dce561b124a50c70 Mon Sep 17 00:00:00 2001 From: Michal Nazarewicz Date: Thu, 5 Jun 2014 16:41:01 +0200 Subject: [PATCH] tildify.el: Better support for XML MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * 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 and includes only <, >, &, ' and " (meaning <, >, &, ' and " respectively). This is in contrast to HTML and even XHTML which defined a whole bunch of entities including “ â€. * 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. --- lisp/ChangeLog | 14 ++++++++++++++ lisp/textmodes/tildify.el | 7 ++++++- test/ChangeLog | 5 +++++ test/automated/tildify-tests.el | 15 ++++++++++++--- 4 files changed, 37 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f7f3d13d700..f8ed1dced82 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,19 @@ 2014-06-05 Michal Nazarewicz + * 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 + and includes only <, >, &, ' and " (meaning <, + >, &, ' and " respectively). This is in contrast to HTML and even + XHTML which defined a whole bunch of entities including “ â€. + * textmodes/tildify.el (tildify-pattern-alist) (tildify-string-alist, tildify-ignored-environments-alist): Improve defcustom's types by adding more tags explaining what each diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index d61998a56d1..6dd471d49ad 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el @@ -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 . " ") - (xml-mode . sgml-mode) (html-mode . sgml-mode) + (xml-mode . " ") ; XML does not define   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 diff --git a/test/ChangeLog b/test/ChangeLog index 93ef0980c9a..38a4feb528f 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,5 +1,10 @@ 2014-06-05 Michal Nazarewicz + * 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. diff --git a/test/automated/tildify-tests.el b/test/automated/tildify-tests.el index 6fee28b3862..dd404fcac22 100644 --- a/test/automated/tildify-tests.el +++ b/test/automated/tildify-tests.el @@ -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,
 tag is not treated specially."
   (let ((with-nbsp (or with-nbsp sentence)))
     (concat "

" with-nbsp "

\n" - "
" sentence "
\n" + "
" (if is-xml with-nbsp sentence) "
\n" "\n" "

" with-nbsp "

\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 " "))) + (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. -- 2.39.2