diff options
| author | Richard M. Stallman | 1997-07-08 11:37:32 +0000 |
|---|---|---|
| committer | Richard M. Stallman | 1997-07-08 11:37:32 +0000 |
| commit | 71312b68cf84689ecc8d2d1eaca314143e5b0205 (patch) | |
| tree | d44ca7fe7abbeea2af8b0601b95d28c20061ce6b /src | |
| parent | e2d8d746dec658fe4637182b86fb5c401bf89dd2 (diff) | |
| download | emacs-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.c | 9 |
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) |