Fix how the `character' custom type handles space chars.
authorChong Yidong <cyd@gnu.org>
Sun, 5 Feb 2012 15:33:30 +0000 (23:33 +0800)
committerChong Yidong <cyd@gnu.org>
Sun, 5 Feb 2012 15:33:30 +0000 (23:33 +0800)
* lisp/wid-edit.el (widget-field-value-get): New optional arg to
suppress trailing whitespace truncation.
(character): Use it.

Fixes: debbugs:2689

lisp/ChangeLog
lisp/wid-edit.el

index 6a31a20..93dd50b 100644 (file)
@@ -1,3 +1,9 @@
+2012-02-05  Chong Yidong  <cyd@gnu.org>
+
+       * wid-edit.el (widget-field-value-get): New optional arg to
+       suppress trailing whitespace truncation.
+       (character): Use it (Bug#2689).
+
 2012-02-05  Andreas Schwab  <schwab@linux-m68k.org>
 
        * progmodes/gud.el (gud-pv): Use pv instead of pv1.
index 2792232..61bb4db 100644 (file)
@@ -1987,10 +1987,14 @@ the earlier input."
     (when (overlayp overlay)
       (delete-overlay overlay))))
 
-(defun widget-field-value-get (widget)
-  "Return current text in editing field."
+(defun widget-field-value-get (widget &optional no-truncate)
+  "Return current text in editing field.
+Normally, trailing spaces within the editing field are truncated.
+But if NO-TRUNCATE is non-nil, include them."
   (let ((from (widget-field-start widget))
-       (to (widget-field-text-end widget))
+       (to   (if no-truncate
+                 (widget-field-end widget)
+               (widget-field-text-end widget)))
        (buffer (widget-field-buffer widget))
        (secret (widget-get widget :secret))
        (old (current-buffer)))
@@ -3407,6 +3411,7 @@ To use this type, you must define :match or :match-alternatives."
   :format "%{%t%}: %v\n"
   :valid-regexp "\\`.\\'"
   :error "This field should contain a single character"
+  :value-get (lambda (w) (widget-field-value-get w t))
   :value-to-internal (lambda (_widget value)
                       (if (stringp value)
                           value