Commit f0ecdfea authored by Kevin Ryde's avatar Kevin Ryde Committed by Chong Yidong

* woman.el (woman-strings): Fix double-quote handling.

(woman-decode-region): Replace escaped-escapes without destroying
bold or underline.

Fixes: debbugs:1151
parent ab4c47d3
2012-07-07 Kevin Ryde <user42@zip.com.au>
* woman.el (woman-strings): Fix double-quote handling (Bug#1151).
(woman-decode-region): Replace escaped-escapes without destroying
bold or underline (Bug#11552).
2012-07-07 Chong Yidong <cyd@gnu.org>
* simple.el (yank-pop-change-selection): Doc fix (Bug#11361).
......
......@@ -2385,20 +2385,20 @@ Currently set only from '\" t in the first line of the source file.")
(if woman-negative-vertical-space
(woman-negative-vertical-space from))
(if woman-preserve-ascii
;; Re-instate escaped escapes to just `\' and unpaddable
;; spaces to just `space', without inheriting any text
;; properties. This is not necessary, UNLESS the buffer is to
;; be saved as ASCII.
(progn
(goto-char from)
(while (search-forward woman-escaped-escape-string nil t)
(delete-char -1)
(insert ?\\))
(goto-char from)
(while (search-forward woman-unpadded-space-string nil t)
(delete-char -1)
(insert ?\s))))
(when woman-preserve-ascii
;; Re-instate escaped escapes to just `\' and unpaddable spaces
;; to just `space'. This is not necessary for display since
;; there are display table entries for the escaped chars, but it
;; is necessary if the buffer might be saved as ASCII.
;;
;; `subst-char-in-region' preserves text properties on the
;; characters, which is necessary for bold, underline, etc on
;; \e. There's usually no face on spaces, but if there is then
;; it's good to keep that too.
(subst-char-in-region from (point-max)
woman-escaped-escape-char ?\\)
(subst-char-in-region from (point-max)
woman-unpadded-space-char ?\s))
;; Must return the new end of file if used in format-alist.
(point-max)))
......@@ -2865,15 +2865,18 @@ interpolated by `\*x' and `\*(xx' escapes."
(re-search-forward "[^ \t\n]+")
(let ((string (match-string 0)))
(skip-chars-forward " \t")
; (setq string
; (cons string
; ;; hack (?) for CGI.man!
; (cond ((looking-at "\"\"") "\"")
; ((looking-at ".*") (match-string 0)))
; ))
;; Above hack causes trouble in arguments!
(looking-at ".*")
(setq string (cons string (match-string 0)))
(if (= ?\" (following-char))
;; Double-quote starts a string, eg.
;; .ds foo "blah...
;; is value blah... through to newline. There's no
;; closing " (per the groff manual), but rather any
;; further " is included literally in the string. Eg.
;; .ds foo ""
;; sets foo to a single " character.
(forward-char))
(setq string (cons string
(buffer-substring (point)
(line-end-position))))
;; This should be an update, but consing a new string
;; onto the front of the alist has the same effect:
(setq woman-string-alist (cons string woman-string-alist))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment