diff options
-rw-r--r-- | etc/NEWS | 3 | ||||
-rw-r--r-- | lisp/ChangeLog | 23 | ||||
-rw-r--r-- | lisp/nxml/nxml-mode.el | 10 | ||||
-rw-r--r-- | lisp/textmodes/sgml-mode.el | 9 | ||||
-rw-r--r-- | lisp/textmodes/tex-mode.el | 4 | ||||
-rw-r--r-- | lisp/textmodes/tildify.el | 38 | ||||
-rw-r--r-- | test/ChangeLog | 5 | ||||
-rw-r--r-- | test/automated/tildify-tests.el | 4 |
8 files changed, 81 insertions, 15 deletions
@@ -301,6 +301,9 @@ use PDF instead of DVI. By default, 32 spaces and four TABs are considered to be too much but `whitespace-big-indent-regexp' can be configured to change that. +** tildify: `tildify-space-string' variable has been added making +`tildify-string-alist' obsolete. + ** Obsolete packages --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 696b384c3f9..33d341f8351 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,26 @@ +2014-11-17 Michal Nazarewicz <mina86@mina86.com> + + * textmodes/tildify.el (tildify-space-string): New variable for + specifying representation of a hard space -- a no-break space by + default. Being a buffer-local variable it is much easier to + handle than `tildify-string-alist' that has been used so far. It + also works better with derived modes. + (tildify-string-alist): Mark as obsolete. + + * textmodes/tex-mode.el (tex-common-initialization): Set + `tildify-space-string' variable in all variants of TeX mode since + `tildify-string-alist' is now empty by default. + + * nxml/nxml-mode.el (nxml-mode): Ditto in `nxml-mode'. If + encoding supports it use no-break space instead of character + entity; this changes previous default which used a numeric + reference. + + * textmodes/sgml-mode.el (sgml-mode): ditto in `sgml-mode'. If + encoding does not support no-break space, use numeric reference; + this changes previous default which used named entity (? ?) + in HTML mode. + 2014-11-17 Ulf Jasper <ulf.jasper@web.de> Fix bug#5433. diff --git a/lisp/nxml/nxml-mode.el b/lisp/nxml/nxml-mode.el index 4859bbc7a77..47f806693df 100644 --- a/lisp/nxml/nxml-mode.el +++ b/lisp/nxml/nxml-mode.el @@ -449,6 +449,8 @@ reference.") (when rng-validate-mode (rng-validate-while-idle (current-buffer))))) +(defvar tildify-space-string) + ;;;###autoload (define-derived-mode nxml-mode text-mode "nXML" ;; We use C-c C-i instead of \\[nxml-balanced-close-start-tag-inline] @@ -505,6 +507,14 @@ be treated as a single markup item, set the variable Many aspects this mode can be customized using \\[customize-group] nxml RET." ;; (kill-all-local-variables) + ;; If encoding does not allow non-break space character, use reference. + ;; FIXME: This duplicates code from sgml-mode, perhaps derive from it? + ;; FIXME: Perhaps use if possible (e.g. XHTML)? + (setq-local tildify-space-string + (if (equal (decode-coding-string + (encode-coding-string " " buffer-file-coding-system) + buffer-file-coding-system) " ") + " " " ")) (set (make-local-variable 'mode-line-process) '((nxml-degraded "/degraded"))) ;; We'll determine the fill prefix ourselves (make-local-variable 'adaptive-fill-mode) diff --git a/lisp/textmodes/sgml-mode.el b/lisp/textmodes/sgml-mode.el index 39ac0621733..9d1cb0373fa 100644 --- a/lisp/textmodes/sgml-mode.el +++ b/lisp/textmodes/sgml-mode.el @@ -456,6 +456,8 @@ This function is designed for use in `fill-nobreak-predicate'. (skip-chars-backward "/?!") (eq (char-before) ?<)))) +(defvar tildify-space-string) + ;;;###autoload (define-derived-mode sgml-mode text-mode '(sgml-xml-mode "XML" "SGML") "Major mode for editing SGML documents. @@ -477,6 +479,13 @@ Do \\[describe-key] on the following bindings to discover what they do. \\{sgml-mode-map}" (make-local-variable 'sgml-saved-validate-command) (make-local-variable 'facemenu-end-add-face) + ;; If encoding does not allow non-break space character, use reference. + ;; FIXME: Perhaps use if possible (e.g. when we know its HTML)? + (setq-local tildify-space-string + (if (equal (decode-coding-string + (encode-coding-string " " buffer-file-coding-system) + buffer-file-coding-system) " ") + " " " ")) ;;(make-local-variable 'facemenu-remove-face-function) ;; A start or end tag by itself on a line separates a paragraph. ;; This is desirable because SGML discards a newline that appears diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index bc10eab0498..0cfc0cfe3dc 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -1203,9 +1203,13 @@ Entering SliTeX mode runs the hook `text-mode-hook', then the hook (setq tex-command slitex-run-command) (setq tex-start-of-header "\\\\documentstyle{slides}\\|\\\\documentclass{slides}")) +(defvar tildify-space-string) + (defun tex-common-initialization () ;; Regexp isearch should accept newline and formfeed as whitespace. (setq-local search-whitespace-regexp "[ \t\r\n\f]+") + ;; Use tilde as hard-space character in tildify package. + (setq-local tildify-space-string "~") ;; A line containing just $$ is treated as a paragraph separator. (setq-local paragraph-start "[ \t]*$\\|[\f\\\\%]\\|[ \t]*\\$\\$") ;; A line starting with $$ starts a paragraph, diff --git a/lisp/textmodes/tildify.el b/lisp/textmodes/tildify.el index 91f5a38ce0b..865dcecbecc 100644 --- a/lisp/textmodes/tildify.el +++ b/lisp/textmodes/tildify.el @@ -4,7 +4,7 @@ ;; Author: Milan Zamazal <pdm@zamazal.org> ;; Michal Nazarewicz <mina86@mina86.com> -;; Version: 4.5.4 +;; Version: 4.5.5 ;; Keywords: text, TeX, SGML, wp ;; This file is part of GNU Emacs. @@ -86,15 +86,24 @@ mode, the item for the mode SYMBOL is looked up in the alist instead." (integer :tag "Group ")) (symbol :tag "Like other"))))) -(defcustom tildify-string-alist - '((latex-mode . "~") - (tex-mode . latex-mode) - (plain-tex-mode . latex-mode) - (sgml-mode . " ") - (html-mode . sgml-mode) - (xml-mode . " ") ; XML does not define use numeric reference - (nxml-mode . xml-mode) - (t . " ")) +(defcustom tildify-space-string "\u00A0" + "Representation of a hard (a.k.a. no-break) space in current major mode. + +Used by `tildify-buffer' in places where space is required but line +cannot be broken. For example \"~\" for TeX or \" \" for SGML, +HTML and XML modes. A no-break space Unicode character (\"\\u00A0\") +might be used for other modes if compatible encoding is used. + +If nil, current major mode has no way to represent a hard space." + :version "25.1" + :group 'tildify + :type '(choice (const :tag "Space character (no hard-space representation)" + " ") + (const :tag "No-break space (U+00A0)" "\u00A0") + (string :tag "Custom string")) + :safe t) + +(defcustom tildify-string-alist () "Alist specifying what is a hard space in the current major mode. Each alist item is of the form (MAJOR-MODE . STRING) or @@ -118,6 +127,8 @@ mode, the item for the mode SYMBOL is looked up in the alist instead." (choice (const :tag "No-break space (U+00A0)" "\u00A0") (string :tag "String ") (symbol :tag "Like other"))))) +(make-obsolete-variable 'tildify-string-alist + 'tildify-space-string "25.1") (defcustom tildify-ignored-environments-alist `((latex-mode @@ -193,7 +204,7 @@ END-REGEX defines end of the corresponding text part and can be either: ;;;###autoload (defun tildify-region (beg end &optional dont-ask) "Add hard spaces in the region between BEG and END. -See variables `tildify-pattern-alist', `tildify-string-alist', and +See variables `tildify-pattern-alist', `tildify-space-string', and `tildify-ignored-environments-alist' for information about configuration parameters. This function performs no refilling of the changed text. @@ -214,7 +225,7 @@ won't be prompted for confirmation of each substitution." ;;;###autoload (defun tildify-buffer (&optional dont-ask) "Add hard spaces in the current buffer. -See variables `tildify-pattern-alist', `tildify-string-alist', and +See variables `tildify-pattern-alist', `tildify-space-string', and `tildify-ignored-environments-alist' for information about configuration parameters. This function performs no refilling of the changed text. @@ -303,7 +314,8 @@ replacements done and response is one of symbols: t (all right), nil (let* ((alist (tildify--pick-alist-entry tildify-pattern-alist)) (regexp (car alist)) (match-number (cadr alist)) - (tilde (tildify--pick-alist-entry tildify-string-alist)) + (tilde (or (tildify--pick-alist-entry tildify-string-alist) + tildify-space-string)) (end-marker (copy-marker end)) answer bad-answer diff --git a/test/ChangeLog b/test/ChangeLog index 2dfd5151f09..1c739d456ac 100644 --- a/test/ChangeLog +++ b/test/ChangeLog @@ -1,3 +1,8 @@ +2014-11-17 Michal Nazarewicz <mina86@mina86.com> + + * automated/tildify-tests.el (tildify-test-html, tildify-test-xml): + HTML and XML now use no-break space as hard space. Update tests. + 2014-11-17 Glenn Morris <rgm@gnu.org> * automated/occur-tests.el (occur-test-case, occur-test-create): diff --git a/test/automated/tildify-tests.el b/test/automated/tildify-tests.el index 53c2e620195..e532cf00686 100644 --- a/test/automated/tildify-tests.el +++ b/test/automated/tildify-tests.el @@ -73,7 +73,7 @@ after `tildify-buffer' is run." (ert-deftest tildify-test-html () "Tests tildification in an HTML document" (let* ((sentence (tildify-test--example-sentence " ")) - (with-nbsp (tildify-test--example-sentence " "))) + (with-nbsp (tildify-test--example-sentence " "))) (tildify-test--test '(html-mode sgml-mode) (tildify-test--example-html sentence sentence) (tildify-test--example-html sentence with-nbsp)))) @@ -81,7 +81,7 @@ after `tildify-buffer' is run." (ert-deftest tildify-test-xml () "Tests tildification in an XML document" (let* ((sentence (tildify-test--example-sentence " ")) - (with-nbsp (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)))) |