emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] emacs/lisp ChangeLog htmlfontify.el


From: Stefan Monnier
Subject: [Emacs-diffs] emacs/lisp ChangeLog htmlfontify.el
Date: Thu, 26 Nov 2009 16:24:41 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Stefan Monnier <monnier>        09/11/26 16:24:40

Modified files:
        lisp           : ChangeLog htmlfontify.el 

Log message:
        Misc coding convention cleanups.
        * htmlfontify.el (hfy-init-kludge-hook): Rename from 
hfy-init-kludge-hooks.
        (hfy-etags-cmd, hfy-flatten-style, hfy-invisible-name, hfy-face-at)
        (hfy-fontify-buffer, hfy-prepare-index-i, hfy-subtract-maps)
        (hfy-save-kill-buffers, htmlfontify-copy-and-link-dir): Use dolist and 
push.
        (hfy-slant, hfy-weight): Use tables rather than code.
        (hfy-box-to-border-assoc, hfy-box-to-style, hfy-decor)
        (hfy-face-to-style-i, hfy-fontify-buffer): Use `case'.
        (hfy-face-attr-for-class): Initialize `face-spec' directly.
        (hfy-face-to-css): Remove `nconc' with single arg.
        (hfy-p-to-face-lennart): Use `or'.
        (hfy-face-at): Hoist common code.  Remove spurious quotes in `case'.
        (hfy-overlay-props-at, hfy-mark-tag-hrefs): Eta-reduce.
        (hfy-compile-stylesheet, hfy-merge-adjacent-spans)
        (hfy-compile-face-map, hfy-parse-tags-buffer): Use push.
        (hfy-force-fontification): Use run-hooks.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/ChangeLog?cvsroot=emacs&r1=1.16749&r2=1.16750
http://cvs.savannah.gnu.org/viewcvs/emacs/lisp/htmlfontify.el?cvsroot=emacs&r1=1.3&r2=1.4

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.16749
retrieving revision 1.16750
diff -u -b -r1.16749 -r1.16750
--- ChangeLog   26 Nov 2009 15:22:27 -0000      1.16749
+++ ChangeLog   26 Nov 2009 16:24:36 -0000      1.16750
@@ -1,3 +1,24 @@
+2009-11-26  Stefan Monnier  <address@hidden>
+
+       Misc coding convention cleanups.
+       * htmlfontify.el (hfy-init-kludge-hook): Rename from
+       hfy-init-kludge-hooks.
+       (hfy-etags-cmd, hfy-flatten-style, hfy-invisible-name, hfy-face-at)
+       (hfy-fontify-buffer, hfy-prepare-index-i, hfy-subtract-maps)
+       (hfy-save-kill-buffers, htmlfontify-copy-and-link-dir): Use dolist
+       and push.
+       (hfy-slant, hfy-weight): Use tables rather than code.
+       (hfy-box-to-border-assoc, hfy-box-to-style, hfy-decor)
+       (hfy-face-to-style-i, hfy-fontify-buffer): Use `case'.
+       (hfy-face-attr-for-class): Initialize `face-spec' directly.
+       (hfy-face-to-css): Remove `nconc' with single arg.
+       (hfy-p-to-face-lennart): Use `or'.
+       (hfy-face-at): Hoist common code.  Remove spurious quotes in `case'.
+       (hfy-overlay-props-at, hfy-mark-tag-hrefs): Eta-reduce.
+       (hfy-compile-stylesheet, hfy-merge-adjacent-spans)
+       (hfy-compile-face-map, hfy-parse-tags-buffer): Use push.
+       (hfy-force-fontification): Use run-hooks.
+
 2009-11-26  Vivek Dasmohapatra  <address@hidden>
 
        Various minor fixes.

Index: htmlfontify.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/htmlfontify.el,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -b -r1.3 -r1.4
--- htmlfontify.el      26 Nov 2009 15:22:30 -0000      1.3
+++ htmlfontify.el      26 Nov 2009 16:24:39 -0000      1.4
@@ -183,17 +183,19 @@
   :prefix "hfy-")
 
 (defcustom hfy-page-header 'hfy-default-header
-  "*Function called with two arguments \(the filename relative to the top
+  "Function called with two arguments \(the filename relative to the top
 level source directory being etag\'d and fontified), and a string containing
 the <style>...</style> text to embed in the document- the string returned will
 be used as the header for the htmlfontified version of the source file.\n
 See also: `hfy-page-footer'"
   :group 'htmlfontify
+  ;; FIXME: Why place such a :tag everywhere?  Isn't it imposing your
+  ;; own Custom preference on your users?  --Stef
   :tag   "page-header"
   :type  '(function))
 
 (defcustom hfy-split-index nil
-  "*Whether or not to split the index `hfy-index-file' alphabetically
+  "Whether or not to split the index `hfy-index-file' alphabetically
 on the first letter of each tag.  Useful when the index would otherwise
 be large and take a long time to render or be difficult to navigate."
   :group 'htmlfontify
@@ -201,32 +203,32 @@
   :type  '(boolean))
 
 (defcustom hfy-page-footer 'hfy-default-footer
-  "*As `hfy-page-header', but generates the output footer
+  "As `hfy-page-header', but generates the output footer
 \(and takes only 1 argument, the filename\)."
   :group 'htmlfontify
   :tag   "page-footer"
   :type  '(function))
 
 (defcustom hfy-extn        ".html"
-  "*File extension used for output files."
+  "File extension used for output files."
   :group 'htmlfontify
   :tag   "extension"
   :type  '(string))
 
 (defcustom hfy-src-doc-link-style "text-decoration: underline;"
-  "*String to add to the \'<style> a\' variant of an htmlfontify css class."
+  "String to add to the \'<style> a\' variant of an htmlfontify css class."
   :group 'htmlfontify
   :tag   "src-doc-link-style"
   :type  '(string))
 
 (defcustom hfy-src-doc-link-unstyle " text-decoration: none;"
-  "*Regex to remove from the <style> a variant of an htmlfontify css class."
+  "Regex to remove from the <style> a variant of an htmlfontify css class."
   :group 'htmlfontify
   :tag   "src-doc-link-unstyle"
   :type  '(string))
 
 (defcustom hfy-link-extn nil
-  "*File extension used for href links - Useful where the htmlfontify
+  "File extension used for href links - Useful where the htmlfontify
 output files are going to be processed again, with a resulting change
 in file extension.  If nil, then any code using this should fall back
 to `hfy-extn'."
@@ -235,7 +237,7 @@
   :type  '(choice string (const nil)))
 
 (defcustom hfy-link-style-fun 'hfy-link-style-string
-  "*Set this to a function, which will be called with one argument
+  "Set this to a function, which will be called with one argument
 \(a \"{ foo: bar; ...}\" css style-string\) - it should return a copy of
 its argument, altered so as to make any changes you want made for text which
 is a hyperlink, in addition to being in the class to which that style would
@@ -245,29 +247,31 @@
   :type  '(function))
 
 (defcustom hfy-index-file  "hfy-index"
-  "*Name \(sans extension\) of the tag definition index file produced during
+  "Name \(sans extension\) of the tag definition index file produced during
 fontification-and-hyperlinking."
   :group 'htmlfontify
   :tag   "index-file"
   :type  '(string))
 
 (defcustom hfy-instance-file  "hfy-instance"
-  "*Name \(sans extension\) of the tag usage index file produced during
+  "Name \(sans extension\) of the tag usage index file produced during
 fontification-and-hyperlinking."
   :group 'htmlfontify
   :tag   "instance-file"
   :type  '(string))
 
 (defcustom hfy-html-quote-regex "\\(<\\|\"\\|&\\|>\\)"
-  "*Regex to match \(with a single back-reference per match\) strings in HTML
+  "Regex to match \(with a single back-reference per match\) strings in HTML
 which should be quoted with `hfy-html-quote' \(and `hfy-html-quote-map'\)
 to make them safe."
   :group 'htmlfontify
   :tag   "html-quote-regex"
   :type  '(regexp))
 
-(defcustom hfy-init-kludge-hooks '(hfy-kludge-cperl-mode)
-  "*List of functions to call when starting htmlfontify-buffer to do any
+(define-obsolete-variable-alias 'hfy-init-kludge-hooks 'hfy-init-kludge-hook
+  "23.2")
+(defcustom hfy-init-kludge-hook '(hfy-kludge-cperl-mode)
+  "List of functions to call when starting htmlfontify-buffer to do any
 kludging necessary to get highlighting modes to bahave as you want, even
 when not running under a window system."
   :group 'htmlfontify
@@ -275,7 +279,7 @@
   :type  '(hook))
 
 (defcustom hfy-post-html-hooks nil
-  "*List of functions to call after creating and filling the html buffer.
+  "List of functions to call after creating and filling the html buffer.
 These functions will be called with the html buffer as the current buffer"
   :group   'htmlfontify
   :tag     "post-html-hooks"
@@ -283,7 +287,7 @@
   :type    '(hook))
 
 (defcustom hfy-default-face-def nil
-  "*Fallback `defface' specification for the face \'default, used when
+  "Fallback `defface' specification for the face \'default, used when
 `hfy-display-class' has been set \(the normal htmlfontify way of extracting
 potentially non-current face information doesn\'t necessarily work for
 \'default\).\n
@@ -298,7 +302,7 @@
                                   "\x01" "\\([0-9]+\\)"
                                   ","    "\\([0-9]+\\)$"
                                   "\\|"  ".*\x7f[0-9]+,[0-9]+$")
-  "*Regex used to parse an etags entry: must have 3 subexps, corresponding,
+  "Regex used to parse an etags entry: must have 3 subexps, corresponding,
 in order, to:\n
    1 - The tag
    2 - The line
@@ -311,7 +315,7 @@
                                 ("<"  "&lt;"  )
                                 ("&"  "&amp;" )
                                 (">"  "&gt;"  ))
-  "*Alist of char -> entity mappings used to make the text html-safe."
+  "Alist of char -> entity mappings used to make the text html-safe."
   :group 'htmlfontify
   :tag   "html-quote-map"
   :type  '(alist :key-type (string)))
@@ -353,14 +357,14 @@
 
   (defcustom hfy-etags-cmd-alist
     hfy-etags-cmd-alist-default
-    "*Alist of possible shell commands that will generate etags output that
+    "Alist of possible shell commands that will generate etags output that
 `htmlfontify' can use.  \'%s\' will be replaced by `hfy-etags-bin'."
     :group 'htmlfontify
     :tag   "etags-cmd-alist"
     :type  '(alist :key-type (string) :value-type (string)) ))
 
 (defcustom hfy-etags-bin "etags"
-  "*Location of etags binary (we begin by assuming it\'s in your path).\n
+  "Location of etags binary (we begin by assuming it\'s in your path).\n
 Note that if etags is not in your path, you will need to alter the shell
 commands in `hfy-etags-cmd-alist'."
   :group 'htmlfontify
@@ -368,7 +372,7 @@
   :type  '(file))
 
 (defcustom hfy-shell-file-name "/bin/sh"
-  "*Shell (bourne or compatible) to invoke for complex shell operations."
+  "Shell (bourne or compatible) to invoke for complex shell operations."
   :group 'htmlfontify
   :tag   "shell-file-name"
   :type  '(file))
@@ -381,7 +385,7 @@
 
 (defcustom hfy-etags-cmd
   (eval-and-compile (cdr (assoc (hfy-which-etags) hfy-etags-cmd-alist)))
-  "*The etags equivalent command to run in a source directory to generate a 
tags
+  "The etags equivalent command to run in a source directory to generate a tags
 file for the whole source tree from there on down.  The command should emit
 the etags output on stdout.\n
 Two canned commands are provided - they drive Emacs\' etags and
@@ -390,15 +394,12 @@
   :tag   "etags-command"
   :type (eval-and-compile
           (let ((clist (list '(string))))
-            (mapc
-             (lambda (C)
-               (setq clist
-                     (cons (list 'const :tag (car C) (cdr C)) clist)))
-             hfy-etags-cmd-alist)
+            (dolist (C hfy-etags-cmd-alist)
+              (push (list 'const :tag (car C) (cdr C)) clist))
             (cons 'choice clist)) ))
 
 (defcustom hfy-istext-command "file %s | sed -e 'address@hidden:]*:[ \t]*@@'"
-  "*Command to run with the name of a file, to see whether it is a text file
+  "Command to run with the name of a file, to see whether it is a text file
 or not.  The command should emit a string containing the word \'text\' if
 the file is a text file, and a string not containing \'text\' otherwise."
   :group 'htmlfontify
@@ -407,13 +408,13 @@
 
 (defcustom hfy-find-cmd
   "find . -type f \\! -name \\*~ \\! -name \\*.flc \\! -path \\*/CVS/\\*"
-  "*Find command used to harvest a list of files to attempt to fontify."
+  "Find command used to harvest a list of files to attempt to fontify."
   :group 'htmlfontify
   :tag   "find-command"
   :type  '(string))
 
 (defcustom hfy-display-class nil
-  "*Display class to use to determine which display class to use when
+  "Display class to use to determine which display class to use when
 calculating a face\'s attributes.  This is useful when, for example, you
 are running Emacs on a tty or in batch mode, and want htmlfontify to have
 access to the face spec you would use if you were connected to an X display.\n
@@ -451,7 +452,7 @@
                                  (const :tag "Bright"        light    ))) ))
 
 (defcustom hfy-optimisations (list 'keep-overlays)
-  "*Optimisations to turn on: So far, the following have been implemented:\n
+  "Optimisations to turn on: So far, the following have been implemented:\n
   merge-adjacent-tags: If two (or more) span tags are adjacent, identical and
                        separated by nothing more than whitespace, they will
                        be merged into one span.
@@ -583,8 +584,8 @@
 If a window system is unavailable, calls `hfy-fallback-colour-values'."
   (if (string-match hfy-triplet-regex colour)
       (mapcar
-       (lambda (x)
-         (* (string-to-number (match-string x colour) 16) 257)) '(1 2 3))
+       (lambda (x) (* (string-to-number (match-string x colour) 16) 257))
+       '(1 2 3))
     ;;(message ">> %s" colour)
     (if window-system
         (if (fboundp 'color-values)
@@ -756,7 +757,8 @@
         (apply 'format "#%02x%02x%02x"
                (mapcar (lambda (X)
                          (* (/ (nth X rgb16)
-                               (nth X white)) 255)) '(0 1 2))))) )
+                               (nth X white)) 255))
+                       '(0 1 2))))))
 
 (defun hfy-family (family) (list (cons "font-family"  family)))
 (defun hfy-bgcol  (colour) (list (cons "background"   (hfy-triplet colour))))
@@ -784,32 +786,34 @@
   "Derive a font-style css specifier from the Emacs :slant attribute SLANT:
 CSS does not define the reverse-* styles, so just maps those to the
 regular specifiers."
-  (list (cons "font-style" (cond ((eq 'italic          slant) "italic" )
-                                 ((eq 'reverse-italic  slant) "italic" )
-                                 ((eq 'oblique         slant) "oblique")
-                                 ((eq 'reverse-oblique slant) "oblique")
-                                 (t                           "normal" )))) )
+  (list (cons "font-style"
+              (or (cdr (assq slant '((italic          . "italic")
+                                     (reverse-italic  . "italic" )
+                                     (oblique         . "oblique")
+                                     (reverse-oblique . "oblique"))))
+                  "normal"))))
 
 (defun hfy-weight (weight)
   "Derive a font-weight css specifier from an Emacs weight spec symbol WEIGHT."
-  (list (cons "font-weight" (cond ((eq 'ultra-bold  weight) "900")
-                                  ((eq 'extra-bold  weight) "800")
-                                  ((eq 'bold        weight) "700")
-                                  ((eq 'semi-bold   weight) "600")
-                                  ((eq 'normal      weight) "500")
-                                  ((eq 'semi-light  weight) "400")
-                                  ((eq 'light       weight) "300")
-                                  ((eq 'extra-light weight) "200")
-                                  ((eq 'ultra-light weight) "100")))) )
+  (list (cons "font-weight" (cdr (assq weight '((ultra-bold  . "900")
+                                                (extra-bold  . "800")
+                                                (bold        . "700")
+                                                (semi-bold   . "600")
+                                                (normal      . "500")
+                                                (semi-light  . "400")
+                                                (light       . "300")
+                                                (extra-light . "200")
+                                                (ultra-light . "100")))))))
 
 (defun hfy-box-to-border-assoc (spec)
   (if spec
       (let ((tag (car  spec))
             (val (cadr spec)))
-        (cons (cond ((eq tag :color) (cons "colour" val))
-                    ((eq tag :width) (cons "width"  val))
-                    ((eq tag :style) (cons "style"  val)))
-              (hfy-box-to-border-assoc (cddr spec))))) )
+        (cons (case tag
+                (:color (cons "colour" val))
+                (:width (cons "width"  val))
+                (:style (cons "style"  val)))
+              (hfy-box-to-border-assoc (cddr spec))))))
 
 (defun hfy-box-to-style (spec)
   (let* ((css (hfy-box-to-border-assoc  spec))
@@ -818,9 +822,10 @@
     (list
      (if col (cons "border-color" (cdr (assoc "colour" css))))
      (cons "border-width" (format "%dpx" (or (cdr (assoc "width" css)) 1)))
-     (cons "border-style" (cond ((eq s 'released-button) "outset")
-                                ((eq s 'pressed-button ) "inset" )
-                                (t                       "solid" ))))) )
+     (cons "border-style" (case s
+                            (released-button "outset")
+                            (pressed-button  "inset" )
+                            (t               "solid" ))))))
 
 (defun hfy-box (box)
   "Derive CSS border-* attributes from the Emacs :box attribute BOX."
@@ -836,9 +841,10 @@
 VAL is ignored."
   (list
    ;; FIXME: Why not '("text-decoration" . "underline")?  --Stef
-   (cond ((eq tag :underline     ) (cons "text-decoration" "underline"   ))
-         ((eq tag :overline      ) (cons "text-decoration" "overline"    ))
-         ((eq tag :strike-through) (cons "text-decoration" "line-through")))))
+   (case tag
+     (:underline      (cons "text-decoration" "underline"   ))
+     (:overline       (cons "text-decoration" "overline"    ))
+     (:strike-through (cons "text-decoration" "line-through")))))
 
 (defun hfy-invisible (&optional val)
   "This text should be invisible.
@@ -871,9 +877,7 @@
 is magical in that Emacs' fonts behave as if they inherit implicitly from
 \'default, but no such behaviour exists in HTML/CSS \).\n
 See `hfy-display-class' for details of valid values for CLASS."
-  (let ((face-spec nil))
-    (setq
-     face-spec
+  (let ((face-spec
      (if class
          (let ((face-props (hfy-combined-face-spec face))
                (face-specn nil)
@@ -906,9 +910,10 @@
                        val  (cdr  cel)
                        val  (if (listp val) val (list val)))
                  (cond
-                  ((or (eq cel t) (memq face-class '(t default)));;default 
match
+                      ((or (eq cel t)
+                           (memq face-class '(t default))) ;Default match.
                    (setq score 0) (ignore "t match"))
-                  ((not (cdr (assq key face-class))) ;; neither good nor bad
+                      ((not (cdr (assq key face-class))) ;Neither good nor bad.
                    nil (ignore "non match, non collision"))
                   ((setq x (hfy-interq val (cdr (assq key face-class))))
                    (setq score (+ score (length x)))
@@ -923,7 +928,8 @@
                  (ignore "--- %d ---- (insufficient)" score)) ))
            ;; matched ? last attrs : nil
            (if face-match
-               (if (listp (car face-match)) (car face-match) face-match) nil))
+                   (if (listp (car face-match)) (car face-match) face-match)
+                 nil))
        ;; Unfortunately the default face returns a
        ;; :background. Fortunately we can remove it, but how do we do
        ;; that in a non-system specific way?
@@ -939,7 +945,7 @@
                             (string= b "SystemWindow"))
                  (setq new-spec (cons a (cons b new-spec)))))
              (setq spec (cddr spec)))
-           new-spec)) ))
+               new-spec)))))
     (if (or (memq :inherit face-spec) (eq 'default face))
         face-spec
       (nconc face-spec (list :inherit 'default))) ))
@@ -988,21 +994,21 @@
                    (hfy-face-to-style-i
                     (hfy-face-attr-for-class v hfy-display-class)) ))))
         (setq this
-              (if val (cond
-                       ((eq key :family        ) (hfy-family    val))
-                       ((eq key :width         ) (hfy-width     val))
-                       ((eq key :weight        ) (hfy-weight    val))
-                       ((eq key :slant         ) (hfy-slant     val))
-                       ((eq key :foreground    ) (hfy-colour    val))
-                       ((eq key :background    ) (hfy-bgcol     val))
-                       ((eq key :box           ) (hfy-box       val))
-                       ((eq key :height        ) (hfy-size      val))
-                       ((eq key :underline     ) (hfy-decor key val))
-                       ((eq key :overline      ) (hfy-decor key val))
-                       ((eq key :strike-through) (hfy-decor key val))
-                       ((eq key :invisible     ) (hfy-invisible val))
-                       ((eq key :bold          ) (hfy-weight  'bold))
-                       ((eq key :italic        ) (hfy-slant 'italic))))))
+              (if val (case key
+                       (:family         (hfy-family    val))
+                       (:width          (hfy-width     val))
+                       (:weight         (hfy-weight    val))
+                       (:slant          (hfy-slant     val))
+                       (:foreground     (hfy-colour    val))
+                       (:background     (hfy-bgcol     val))
+                       (:box            (hfy-box       val))
+                       (:height         (hfy-size      val))
+                       (:underline      (hfy-decor key val))
+                       (:overline       (hfy-decor key val))
+                       (:strike-through (hfy-decor key val))
+                       (:invisible      (hfy-invisible val))
+                       (:bold           (hfy-weight  'bold))
+                       (:italic         (hfy-slant 'italic))))))
       (setq that (hfy-face-to-style-i next))
       ;;(lwarn t :warning "%S => %S" fn (nconc this that parent))
       (nconc this that parent))) )
@@ -1032,13 +1038,12 @@
         (m (list 1))
         (x      nil)
         (r      nil))
-    (mapc
-     (lambda (css)
+    (dolist (css style)
        (if (string= (car css) "font-size")
            (progn
              (when (not x) (setq m (nconc m (hfy-size-to-int (cdr css)))))
              (when (string-match "pt" (cdr css)) (setq x t)))
-         (setq r (nconc r (list css))) )) style)
+        (setq r (nconc r (list css)))))
     ;;(message "r: %S" r)
     (setq  n (apply '* m))
     (nconc r (hfy-size (if x (round n) (* n 1.0)))) ))
@@ -1112,14 +1117,13 @@
     ;;(message "(hfy-face-to-style %S)" fn)
     (setq css-list (hfy-face-to-style fn))
     (setq css-text
-          (nconc
            (mapcar
             (lambda (E)
               (if (car E)
-                    (if (not (member (car E) seen))
-                        (progn
-                          (setq seen (cons (car E) seen))
-                          (format " %s: %s; " (car E) (cdr E)))))) css-list)))
+                 (unless (member (car E) seen)
+                   (push (car E) seen)
+                   (format " %s: %s; " (car E) (cdr E)))))
+           css-list))
     (cons (hfy-css-name fn) (format "{%s}" (apply 'concat css-text)))) )
 
 ;; extract a face from a list of char properties, if there is one:
@@ -1149,8 +1153,7 @@
           (let* ((category (plist-get props 'category))
                  (face (when category (plist-get (symbol-plist category) 
'face))))
             face)
-        (if font-lock-face
-            font-lock-face
+        (or font-lock-face
           face)))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1200,11 +1203,10 @@
 MAP is the invisibility map as returned by `hfy-find-invisible-ranges'."
   ;;(message "(hfy-invisible-name %S %S)" point map)
   (let (name)
-    (mapc
-     (lambda (range)
+    (dolist (range map)
        (when (and (>= point (car range))
                   (<  point (cdr range)))
-         (setq name (format "invisible-%S-%S" (car range) (cdr range))))) map)
+        (setq name (format "invisible-%S-%S" (car range) (cdr range)))))
     name))
 
 ;; Fix-me: This function needs some cleanup by someone who understand
@@ -1235,9 +1237,11 @@
         ;;(message "face-name is a list %S" face-name)
         ;;(setq text-props (cons 'face face-name))
         (dolist (f face-name)
-          (if (listp f) ;; for things like (variable-pitch (:foreground "red"))
-              (setq extra-props (cons f extra-props))
-            (setq extra-props (cons :inherit (cons f extra-props)))))
+        (setq extra-props (if (listp f)
+                              ;; for things like (variable-pitch
+                              ;; (:foreground "red"))
+                              (cons f extra-props)
+                            (cons :inherit (cons f extra-props)))))
         (setq base-face (car face-name)
               face-name nil))
       ;; text-properties-at => (face (:foreground "red" ...))
@@ -1256,15 +1260,14 @@
             (or face-name base-face)) ;; no overlays or extra properties
         ;; collect any face data and any overlay data for processing:
         (when text-props
-          (setq overlay-data (cons text-props overlay-data)))
+        (push text-props overlay-data))
         (setq overlay-data (nreverse overlay-data))
         ;;(message "- %d: %s; %S; %s; %s"
         ;;         p face-name extra-props text-props overlay-data)
         ;; remember the basic face name so we don't keep repeating its specs:
         (when face-name (setq base-face face-name))
-        (mapc
-         (lambda (P)
-           (let ((iprops (cadr (memq 'invisible P))))
+      (dolist (P overlay-data)
+        (let ((iprops (cadr (memq 'invisible P)))) ;FIXME: plist-get?
              ;;(message "(hfy-prop-invisible-p %S)" iprops)
              (when (and iprops (hfy-prop-invisible-p iprops))
                (setq extra-props
@@ -1321,24 +1324,23 @@
                                ;;
                                ;; Are these translations right?
                                ;; yes, they are -- v
-                               ('family           :family    )
-                               ('width            :width     )
-                               ('height           :height    )
-                               ('weight           :weight    )
-                               ('slant            :slant     )
-                               ('underline        :underline )
-                               ('overline         :overline  )
-                               ('strike-through   :strike-through)
-                               ('box              :box       )
-                               ('foreground-color :foreground)
-                               ('background-color :background)
-                               ('bold             :bold      )
-                               ('italic           :italic    )
+                            (family           :family    )
+                            (width            :width     )
+                            (height           :height    )
+                            (weight           :weight    )
+                            (slant            :slant     )
+                            (underline        :underline )
+                            (overline         :overline  )
+                            (strike-through   :strike-through)
+                            (box              :box       )
+                            (foreground-color :foreground)
+                            (background-color :background)
+                            (bold             :bold      )
+                            (italic           :italic    )
                                (t                 p)))
                      (if (memq p prop-seen) nil ;; noop
                        (setq prop-seen   (cons p prop-seen)
-                             extra-props (cons p (cons v extra-props)))) ))))))
-         overlay-data)
+                          extra-props (cons p (cons v extra-props))))))))))
         ;;(message "+ %d: %s; %S" p face-name extra-props)
         (if extra-props
             (if (listp face-name)
@@ -1349,9 +1351,9 @@
 (defun hfy-overlay-props-at (p)
   "Grab overlay properties at point P.
 The plists are returned in descending priority order."
-  (sort (mapcar (lambda (O) (overlay-properties O)) (overlays-at p))
-        (lambda (A B) (> (or (cadr (memq 'priority A)) 0)
-                         (or (cadr (memq 'priority B)) 0)) ) ) )
+  (sort (mapcar #'overlay-properties (overlays-at p))
+        (lambda (A B) (> (or (cadr (memq 'priority A)) 0) ;FIXME: plist-get?
+                    (or (cadr (memq 'priority B)) 0)))))
 
 ;; construct an assoc of (face-name . (css-name . "{ css-style }")) elements:
 (defun hfy-compile-stylesheet ()
@@ -1366,9 +1368,9 @@
       (goto-char pt)
       (while (< pt (point-max))
         (if (and (setq fn (hfy-face-at pt)) (not (assoc fn style)))
-            (setq style (cons (cons fn (hfy-face-to-css fn)) style)))
+            (push (cons fn (hfy-face-to-css fn)) style))
         (setq pt (next-char-property-change pt))) )
-    (setq style (cons (cons 'default (hfy-face-to-css 'default)) style))) )
+    (push (cons 'default (hfy-face-to-css 'default)) style)))
 
 (defun hfy-fontified-p ()
   "`font-lock' doesn't like to say it\'s been fontified when in batch
@@ -1410,8 +1412,8 @@
         (span-stop    nil)
         (span-start   nil)
         (reduced-map  nil))
-    ;;(setq reduced-map (cons (car  tmp-map) reduced-map))
-    ;;(setq reduced-map (cons (cadr tmp-map) reduced-map))
+    ;;(push (car  tmp-map) reduced-map)
+    ;;(push (cadr tmp-map) reduced-map)
     (while tmp-map
       (setq first-start (cadddr tmp-map)
             first-stop  (caddr  tmp-map)
@@ -1431,8 +1433,8 @@
               first-stop  (caddr  map-buf)
               last-start  (cadr   map-buf)
               last-stop   (car    map-buf)))
-      (setq reduced-map (cons span-stop  reduced-map))
-      (setq reduced-map (cons span-start reduced-map))
+      (push span-stop  reduced-map)
+      (push span-start reduced-map)
       (setq tmp-map (memq last-start tmp-map))
       (setq tmp-map (cdr tmp-map)))
     (setq reduced-map (nreverse reduced-map))))
@@ -1459,15 +1461,15 @@
       (goto-char pt)
       (while (< pt (point-max))
         (if (setq fn (hfy-face-at pt))
-            (progn (if prev-tag (setq map (cons (cons pt-narrow 'end) map)))
-                   (setq map (cons (cons pt-narrow fn) map))
+            (progn (if prev-tag (push (cons pt-narrow 'end) map))
+                   (push (cons pt-narrow fn) map)
                    (setq prev-tag t))
-          (if prev-tag (setq map (cons (cons pt-narrow 'end) map)))
+          (if prev-tag (push (cons pt-narrow 'end) map))
           (setq prev-tag nil))
         (setq pt (next-char-property-change pt))
         (setq pt-narrow (1+ (- pt (point-min)))))
       (if (and map (not (eq 'end (cdar map))))
-          (setq map (cons (cons (- (point-max) (point-min)) 'end) map))))
+          (push (cons (- (point-max) (point-min)) 'end) map)))
     (if (hfy-opt 'merge-adjacent-tags) (hfy-merge-adjacent-spans map) map)))
 
 (defun hfy-buffer ()
@@ -1514,7 +1516,8 @@
                      (format
                       "span.%s   %s\nspan.%s a %s\n"
                       (cadr style) (cddr style)
-                      (cadr style) (hfy-link-style (cddr style)))) css))
+                      (cadr style) (hfy-link-style (cddr style))))
+                   css))
            " --></style>\n"))
     (funcall hfy-page-header file stylesheet)))
 
@@ -1665,8 +1668,7 @@
     ;; property has already served its main purpose by this point.
     ;;(message "mapcar over the CSS-MAP")
     (message "invis-ranges:\n%S" invis-ranges)
-    (mapc
-     (lambda (point-face)
+    (dolist (point-face css-map)
        (let ((pt (car point-face))
              (fn (cdr point-face))
              (move-link       nil))
@@ -1695,8 +1697,7 @@
            (if (not move-link) nil
              ;;(message "removing prop2 @ %d" (point))
              (if (remove-text-properties (point) (1+ (point)) '(hfy-endl nil))
-                 (put-text-property pt (1+ pt) 'hfy-endl t))) )))
-     css-map)
+                (put-text-property pt (1+ pt) 'hfy-endl t))))))
     ;; #####################################################################
     ;; Invisibility
     ;; Maybe just make the text invisible in XHTML?
@@ -1724,13 +1725,13 @@
               (if (not (setq pr (get-text-property pt lp))) nil
                 (goto-char pt)
                 (remove-text-properties pt (1+ pt) (list lp nil))
-                (cond
-                 ((eq lp 'hfy-link)
+                (case lp
+                 (hfy-link
                   (if (setq rr (get-text-property pt 'hfy-inst))
                       (insert (format "<a name=\"%s\"></a>" rr)))
                   (insert (format "<a href=\"%s\">" pr))
                   (setq lp 'hfy-endl))
-                 ((eq lp 'hfy-endl)
+                 (hfy-endl
                   (insert "</a>") (setq lp 'hfy-link)) ))) ))
 
     ;; #####################################################################
@@ -1760,7 +1761,7 @@
 
 (defun hfy-force-fontification ()
   "Try to force font-locking even when it is optimised away."
-  (mapc (lambda (fun) (funcall fun)) hfy-init-kludge-hooks)
+  (run-hooks 'hfy-init-kludge-hook)
   (eval-and-compile (require 'font-lock))
   (if (boundp 'font-lock-cache-position)
       (or font-lock-cache-position
@@ -1811,6 +1812,7 @@
   "Return a list of files under DIRECTORY.
 Strips any leading \"./\" from each filename."
   ;;(message "hfy-list-files");;DBUG
+  ;; FIXME: this changes the dir of the currrent buffer.  Is that right??
   (cd directory)
   (mapcar (lambda (F) (if (string-match "^./\\(.*\\)" F) (match-string 1 F) F))
           (split-string (shell-command-to-string hfy-find-cmd))) )
@@ -1995,7 +1997,7 @@
                   (rmap-line        nil)
                   (tag-regex       (hfy-word-regex TAG))
                   (tag-map         (gethash TAG cache-hash))
-                  (tag-files       (mapcar (lambda (X) (car X))  tag-map)))
+                  (tag-files       (mapcar #'car tag-map)))
              ;; find instances of TAG and do what needs to be done:
              (goto-char (point-min))
              (while (search-forward TAG nil 'NOERROR)
@@ -2098,17 +2100,17 @@
                   (setq tag-point  (round (string-to-number (match-string 3))))
                   (setq hash-entry (gethash tag-string  cache-hash))
                   (setq new-entry  (list etags-file tag-line tag-point))
-                  (setq hash-entry (cons new-entry hash-entry))
+                  (push new-entry hash-entry)
                   ;;(message "HASH-ENTRY %s %S" tag-string new-entry)
                   (puthash tag-string hash-entry cache-hash)))) )))
 
     ;; cache a list of tags in descending length order:
-    (maphash (lambda (K V) (setq tags-list (cons K tags-list))) cache-hash)
+    (maphash (lambda (K V) (push K tags-list)) cache-hash)
     (setq tags-list (sort tags-list (lambda (A B) (< (length B) (length A)))))
 
     ;; put the tag list into the cache:
     (if tlist-cache (setcar (cdr tlist-cache) tags-list)
-      (setq hfy-tags-sortl (cons (list srcdir tags-list) hfy-tags-sortl)))
+      (push (list srcdir tags-list) hfy-tags-sortl))
 
     ;; return the number of tags found:
     (length tags-list) ))
@@ -2134,18 +2136,16 @@
                   (setq cache-hash (cadr cache-entry))
                   (setq index-buf  (get-buffer-create index-file))))
         nil ;; noop
-      (maphash (lambda (K V) (setq tag-list (cons K tag-list))) cache-hash)
+      (maphash (lambda (K V) (push K tag-list)) cache-hash)
       (setq tag-list (sort tag-list 'string<))
       (set-buffer index-buf)
       (erase-buffer)
       (insert (funcall hfy-page-header filename "<!-- CSS -->"))
       (insert "<table class=\"index\">\n")
 
-      (mapc
-       (lambda (TAG)
+      (dolist (TAG tag-list)
          (let ((tag-started nil))
-           (mapc
-            (lambda (DEF)
+          (dolist (DEF (gethash TAG cache-hash))
               (if (and stub (not (string-match (concat "^" stub) TAG)))
                   nil ;; we have a stub and it didn't match: NOOP
                 (let ((file (car  DEF))
@@ -2162,8 +2162,7 @@
                           (format "<a name=\"%s\">%s</a>" TAG TAG))
                         file (or hfy-link-extn hfy-extn) file
                         file (or hfy-link-extn hfy-extn) TAG line line))
-                  (setq tag-started TAG))))
-            (gethash TAG cache-hash)))) tag-list)
+                (setq tag-started TAG))))))
       (insert "</table>\n")
       (insert (funcall hfy-page-footer filename))
       (and dstdir (cd dstdir))
@@ -2237,20 +2236,15 @@
         (fwd-map (cadr (assoc srcdir hfy-tags-cache)))
         (rev-map (cadr (assoc srcdir hfy-tags-rmap )))
         (taglist (cadr (assoc srcdir hfy-tags-sortl))))
-    (mapc
-     (lambda (TAG)
+    (dolist (TAG taglist)
        (setq def-list (gethash TAG fwd-map)
              old-list (gethash TAG rev-map)
-             new-list  nil
-             exc-list  nil)
-       (mapc
-        (lambda (P)
-          (setq exc-list (cons (list (car P) (cadr P)) exc-list))) def-list)
-       (mapc
-        (lambda (P)
+            exc-list (mapcar (lambda (P) (list (car P) (cadr P))) def-list)
+            new-list  nil)
+      (dolist (P old-list)
           (or (member (list (car P) (cadr P)) exc-list)
-              (setq new-list (cons P new-list)))) old-list)
-       (puthash TAG new-list rev-map)) taglist) ))
+            (push P new-list)))
+      (puthash TAG new-list rev-map))))
 
 (defun htmlfontify-run-etags (srcdir)
   "Load the etags cache for SRCDIR.
@@ -2264,11 +2258,11 @@
 ;;  (message "foo: %S\nbar: %S" foo bar))
 
 (defun hfy-save-kill-buffers (buffer-list &optional dstdir)
-  (mapc (lambda (B)
+  (dolist (B buffer-list)
           (set-buffer B)
           (and dstdir (file-directory-p dstdir) (cd dstdir))
           (save-buffer)
-          (kill-buffer B)) buffer-list) )
+    (kill-buffer B)))
 
 (defun htmlfontify-copy-and-link-dir (srcdir dstdir &optional f-ext l-ext)
   "Trawl SRCDIR and write fontified-and-hyperlinked output in DSTDIR.
@@ -2291,8 +2285,8 @@
     (clrhash   (cadr tr-cache))
     (hfy-make-directory dstdir)
     (setq source-files (hfy-list-files srcdir))
-    (mapc (lambda (file)
-            (hfy-copy-and-fontify-file srcdir dstdir file)) source-files)
+    (dolist (file source-files)
+      (hfy-copy-and-fontify-file srcdir dstdir file))
     (hfy-subtract-maps srcdir)
     (hfy-save-kill-buffers (hfy-prepare-index   srcdir dstdir) dstdir)
     (hfy-save-kill-buffers (hfy-prepare-tag-map srcdir dstdir) dstdir) ))
@@ -2345,8 +2339,11 @@
       (custom-save-delete 'hfy-init-progn)
       (setq start-pos (point))
       (princ "(hfy-init-progn\n;;auto-generated, only one copy allowed\n")
+      ;; FIXME: This saving&restoring of global customization
+      ;; variables can interfere with other customization settings for
+      ;; those vars (in .emacs or in Customize).
       (mapc 'hfy-save-initvar
-            (list 'auto-mode-alist 'interpreter-mode-alist))
+            '(auto-mode-alist interpreter-mode-alist))
       (princ ")\n")
       (indent-region start-pos (point) nil))
     (custom-save-all) ))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]