Subject: bug#12639: closed (Re: bug#12639: 24.1; woman.el points vs pica scaling)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 29 Oct 2012 10:35:02 +0000

Your bug report

#12639: 24.1; woman.el points vs pica scaling

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
12639: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=12639
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#12639: 24.1; woman.el points vs pica scaling
From: Chong Yidong <[email-masked]>
To: Kevin Ryde <[email-masked]>
Cc: [email-masked]
Date: Mon, 29 Oct 2012 18:31:27 +0800
List-Id: <debbugs-submit.debbugs.gnu.org>

Kevin Ryde <[email-masked]> writes:

> I can't tell if that's meant to be so.  There seems to be duelling
> `let's of case significance.  Ensuring it where it matters per diff
> below might be a good idea.
>
> 2012-10-14  Kevin Ryde  <[email-masked]>
>
> * woman.el (woman-parse-numeric-value): case-fold-search nil to ensure
> "p" points and "P" picas scaling are distinguished as intended.

Thanks.  I committed a more conservative version of the patch, binding
case-fold-search to nil only around (looking-at "P").

Subject: 24.1; woman.el points vs pica scaling
From: Kevin Ryde <[email-masked]>
To: [email-masked]
Date: Sun, 14 Oct 2012 11:11:03 +1100
List-Id: <debbugs-submit.debbugs.gnu.org>

The file picapoints.1 viewed with

    M-x woman-find-file picapoints.1

gives

    12 point spacing                      xxx
    12 picas spacing                      xxx

where I expected that "12p" points would be much less than "12P" picas,
something like maybe

     12 point spacing    xxx
     12 picas spacing                      xxx

It looks like case-fold-search is true in woman-parse-numeric-value
causing "p" points and "P" picas not to be distinguished.

I can't tell if that's meant to be so.  There seems to be duelling
`let's of case significance.  Ensuring it where it matters per diff
below might be a good idea.

2012-10-14  Kevin Ryde  <[email-masked]>

	* woman.el (woman-parse-numeric-value): case-fold-search nil to ensure
	"p" points and "P" picas scaling are distinguished as intended.

I struck this on output from recent perl pod2man where there's some
spacing to make "C++" look good, per cplusplus.1 below.  It's meant for
troff, but when woman wrongly takes it as 1 pica instead of 1 point the
movement forward and back doesn't add up and a space after the construct
is lost, so giving

    Blah C^++blah.

With case-significance fixed it becomes the intended

    Blah C^++ blah.

--- woman.el.orig	2012-10-14 10:41:57.000000000 +1100
+++ woman.el	2012-10-14 10:56:45.000000000 +1100
@@ -3627,16 +3627,17 @@
 	(goto-char (match-end 0))
 	;; Check for scale factor:
 	(if
-	    (cond
-	     ((looking-at "\\s ") nil)	; stay put!
-	     ((looking-at "[mnuv]"))	; ignore for now
-	     ((looking-at "i") (setq n (* n 10))) ; inch
-	     ((looking-at "c") (setq n (* n 3.9))) ; cm
-	     ((looking-at "P") (setq n (* n 1.7))) ; Pica
-	     ((looking-at "p") (setq n (* n 0.14))) ; point
-	     ;; NB: May be immediately followed by + or -, etc.,
-	     ;; in which case do nothing and return nil.
-	     )
+	    (let ((case-fold-search nil))
+	      (cond
+	       ((looking-at "\\s ") nil)	; stay put!
+	       ((looking-at "[mnuv]"))	; ignore for now
+	       ((looking-at "i") (setq n (* n 10))) ; inch
+	       ((looking-at "c") (setq n (* n 3.9))) ; cm
+	       ((looking-at "P") (setq n (* n 1.7))) ; Pica
+	       ((looking-at "p") (setq n (* n 0.14))) ; point
+	       ;; NB: May be immediately followed by + or -, etc.,
+	       ;; in which case do nothing and return nil.
+	       ))
 	    (goto-char (match-end 0)))
 	(if (numberp n) (round n) n)))))

In GNU Emacs 24.1.1 (i486-pc-linux-gnu, GTK+ Version 2.24.8)
 of 2012-08-07 on blah.blah, modified by Debian
Configured using:
 `configure '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu'
 '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
 '--localstatedir=/var/lib' '--infodir=/usr/share/info'
 '--mandir=/usr/share/man' '--with-pop=yes'
 '--enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1/site-lisp:/usr/share/emacs/site-lisp'
 '--with-crt-dir=/usr/lib/i386-linux-gnu' '--with-x=yes'
 '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars'
 'build_alias=i486-linux-gnu' 'CFLAGS=-g -O2 -fstack-protector
 --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall'
 'CPPFLAGS=-D_FORTIFY_SOURCE=2''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_AU
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default enable-multibyte-characters: t