changeset 48276:3a5bc7e171a5

(occur-engine): Set buffer-file-coding-system of OUT-BUF to that of one of BUFFERS if they locally bind that variable.
author Kenichi Handa <handa@m17n.org>
date Wed, 13 Nov 2002 07:06:07 +0000
parents 481dbc5a687e
children a2b3ad4f6870
files lisp/replace.el
diffstat 1 files changed, 12 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/replace.el	Wed Nov 13 07:05:47 2002 +0000
+++ b/lisp/replace.el	Wed Nov 13 07:06:07 2002 +0000
@@ -773,7 +773,8 @@
 			    title-face prefix-face match-face keep-props)
   (with-current-buffer out-buf
     (setq buffer-read-only nil)
-    (let ((globalcount 0))
+    (let ((globalcount 0)
+	  (coding nil))
       ;; Map over all the buffers
       (dolist (buf buffers)
 	(when (buffer-live-p buf)
@@ -789,6 +790,11 @@
 		(headerpt (with-current-buffer out-buf (point))))
 	    (save-excursion
 	      (set-buffer buf)
+	      (or coding
+		  ;; Set CODING only if the current buffer locally
+		  ;; binds buffer-file-coding-system.
+		  (not (local-variable-p 'buffer-file-coding-system))
+		  (setq coding buffer-file-coding-system))
 	      (save-excursion
 		(goto-char (point-min)) ;; begin searching in the buffer
 		(while (not (eobp))
@@ -878,6 +884,11 @@
 					  `(font-lock-face ,title-face))
 					`(occur-title ,buf))))
 		(goto-char (point-min)))))))
+      (if coding
+	  ;; CODING is buffer-file-coding-system of the first buffer
+	  ;; that locally binds it.  Let's use it also for the output
+	  ;; buffer.
+	  (set-buffer-file-coding-system coding))
       ;; Return the number of matches
       globalcount)))