21.4.14 "Reasonable Discussion".
[chise/xemacs-chise.git.1] / lisp / bytecomp.el
index cf3e917..c1cc824 100644 (file)
@@ -1773,81 +1773,29 @@ With argument, insert value in current buffer after the form."
   ;; file if under Mule.  If there are any extended characters in the
   ;; input file, use `escape-quoted' to make sure that both binary and
   ;; extended characters are output properly and distinguished properly.
-  ;; Otherwise, use `binary' for maximum portability with non-Mule
+  ;; Otherwise, use `raw-text' for maximum portability with non-Mule
   ;; Emacsen.
   (when (featurep '(or mule file-coding))
     (defvar buffer-file-coding-system)
-    (let (ces)
-      (if (featurep 'mule)
-         (save-excursion
-           (set-buffer byte-compile-inbuffer)
-           (goto-char (point-min))
-           ;; mrb- There must be a better way than skip-chars-forward
-           (skip-chars-forward (concat (char-to-string 0) "-"
-                                       (char-to-string 255)))
-           (if (eq (point) (point-max))
-               (setq ces 'binary)
-             (goto-char (point-min))
-             (while (< (point)(point-max))
-               (cond ((and (eq (char-after) ?\;)
-                           (not (eq (char-after (1- (point))) ?\\)))
-                      (delete-region (point)(point-at-eol))
-                      (if (eq (char-after) ?\n)
-                          (delete-char 1)
-                        (forward-char))
-                      )
-                     ((eq (char-after) ?\?)
-                      (forward-char 2)
-                      )
-                     ((eq (char-after) ?\n)
-                      (forward-char)
-                      )
-                     ((eq (char-after) ?\")
-                      (forward-char)
-                      (while (and (< (point)(point-max))
-                                  (not (when (eq (char-after) ?\")
-                                         (forward-char)
-                                         t)))
-                        (if (eq (char-after) ?\\)
-                            (forward-char 2)
-                          (forward-char)))
-                      )
-                     (t
-                      (forward-char))))
+    (if (or (featurep '(not mule)) ;; Don't scan buffer if we are not muleized
+           (save-excursion
+             (set-buffer byte-compile-inbuffer)
              (goto-char (point-min))
+             ;; mrb- There must be a better way than skip-chars-forward
              (skip-chars-forward (concat (char-to-string 0) "-"
-                                         (char-to-string 255))))
-           (setq ces
-                 (if (eq (point) (point-max))
-                     (if (and (featurep 'utf-2000)
-                              (re-search-backward "\\\\u[0-9A-Fa-f]+" nil t))
-                         'utf-8-mcs-unix
-                       'binary)
-                   (when (featurep 'utf-2000)
-                     (goto-char (point-min))
-                     (if (re-search-forward "\\\\u[0-9A-Fa-f]+" nil t)
-                         'utf-8-mcs-unix)))))
-       (setq ces 'binary))
-      (if (eq ces 'binary)
-         (setq buffer-file-coding-system 'binary)
-       (cond ((eq ces 'utf-8-mcs-unix)
-              (insert
-               "(require 'mule)\n;;;###coding system: utf-8-mcs-unix\n")
-              (setq buffer-file-coding-system 'utf-8-mcs-unix)
-              )
-             (t
-              (insert "(require 'mule)\n;;;###coding system: escape-quoted\n")
-              (setq buffer-file-coding-system 'escape-quoted)
-              ))
-       ;; #### Lazy loading not yet implemented for MULE files
-       ;; mrb - Fix this someday.
-       (save-excursion
-         (set-buffer byte-compile-inbuffer)
-         (setq byte-compile-dynamic nil
-               byte-compile-dynamic-docstrings nil))
-        ;; (external-debugging-output
-        ;;  (prin1-to-string (buffer-local-variables)))
-       )))
+                                         (char-to-string 255)))
+             (eq (point) (point-max))))
+       (setq buffer-file-coding-system 'raw-text-unix)
+      (insert "(require 'mule)\n;;;###coding system: escape-quoted\n")
+      (setq buffer-file-coding-system 'escape-quoted)
+      ;; #### Lazy loading not yet implemented for MULE files
+      ;; mrb - Fix this someday.
+      (save-excursion
+       (set-buffer byte-compile-inbuffer)
+       (setq byte-compile-dynamic nil
+             byte-compile-dynamic-docstrings nil))
+      ;;(external-debugging-output (prin1-to-string (buffer-local-variables))))
+      ))
   )
 
 
@@ -2443,7 +2391,10 @@ If FORM is a lambda or a macro, byte-compile it as a function."
         (body (cdr (cdr fun)))
         (doc (if (stringp (car body))
                  (prog1 (car body)
-                   (setq body (cdr body)))))
+                   ;; Discard the doc string
+                   ;; only if it is not the only element of the body.
+                   (if (cdr body)
+                       (setq body (cdr body))))))
         (int (assq 'interactive body)))
     (dolist (arg arglist)
       (cond ((not (symbolp arg))