aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRichard M. Stallman1997-07-08 11:37:32 +0000
committerRichard M. Stallman1997-07-08 11:37:32 +0000
commit71312b68cf84689ecc8d2d1eaca314143e5b0205 (patch)
treed44ca7fe7abbeea2af8b0601b95d28c20061ce6b /src
parente2d8d746dec658fe4637182b86fb5c401bf89dd2 (diff)
downloademacs-71312b68cf84689ecc8d2d1eaca314143e5b0205.tar.gz
emacs-71312b68cf84689ecc8d2d1eaca314143e5b0205.zip
(Finsert_file_contents): Give up match-end only if
coding requires conversion. Adjust end of non-matching text area to multibyte character boundary if enable_multibyte_character is non-nil.
Diffstat (limited to 'src')
-rw-r--r--src/fileio.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/fileio.c b/src/fileio.c
index 1526015921a..5d9352ed754 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -3291,7 +3291,8 @@ This does code conversion according to the value of\n\
3291 we cannot use this method; giveup and try the other. */ 3291 we cannot use this method; giveup and try the other. */
3292 if (same_at_end > same_at_start 3292 if (same_at_end > same_at_start
3293 && FETCH_BYTE (same_at_end - 1) >= 0200 3293 && FETCH_BYTE (same_at_end - 1) >= 0200
3294 && ! NILP (current_buffer->enable_multibyte_characters)) 3294 && ! NILP (current_buffer->enable_multibyte_characters)
3295 && CODING_REQUIRE_CONVERSION (&coding))
3295 giveup_match_end = 1; 3296 giveup_match_end = 1;
3296 break; 3297 break;
3297 } 3298 }
@@ -3302,6 +3303,12 @@ This does code conversion according to the value of\n\
3302 { 3303 {
3303 /* We win! We can handle REPLACE the optimized way. */ 3304 /* We win! We can handle REPLACE the optimized way. */
3304 3305
3306 /* Extends the end of non-matching text area to multibyte
3307 character boundary. */
3308 if (! NILP (current_buffer->enable_multibyte_characters))
3309 while (same_at_end < ZV && ! CHAR_HEAD_P (POS_ADDR (same_at_end)))
3310 same_at_end++;
3311
3305 /* Don't try to reuse the same piece of text twice. */ 3312 /* Don't try to reuse the same piece of text twice. */
3306 overlap = same_at_start - BEGV - (same_at_end + st.st_size - ZV); 3313 overlap = same_at_start - BEGV - (same_at_end + st.st_size - ZV);
3307 if (overlap > 0) 3314 if (overlap > 0)