diff options
| author | Eli Zaretskii | 2013-09-05 11:01:04 +0300 |
|---|---|---|
| committer | Eli Zaretskii | 2013-09-05 11:01:04 +0300 |
| commit | 41306318777a942420bc4feadbfacf662ea179dc (patch) | |
| tree | 669e5cca02f95d6064ce73c0d3fbbf91b8c8b563 /src/casefiddle.c | |
| parent | 141f1ff7a40cda10f0558e891dd196a943a5082e (diff) | |
| parent | 257b3b03cb1cff917e0b3b7832ad3eab5b59f257 (diff) | |
| download | emacs-41306318777a942420bc4feadbfacf662ea179dc.tar.gz emacs-41306318777a942420bc4feadbfacf662ea179dc.zip | |
Merge from trunk after a lot of time.
Diffstat (limited to 'src/casefiddle.c')
| -rw-r--r-- | src/casefiddle.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/src/casefiddle.c b/src/casefiddle.c index 278806b3030..5a40790f87f 100644 --- a/src/casefiddle.c +++ b/src/casefiddle.c | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | /* GNU Emacs case conversion functions. | 1 | /* GNU Emacs case conversion functions. |
| 2 | 2 | ||
| 3 | Copyright (C) 1985, 1994, 1997-1999, 2001-2012 Free Software Foundation, Inc. | 3 | Copyright (C) 1985, 1994, 1997-1999, 2001-2013 Free Software Foundation, |
| 4 | Inc. | ||
| 4 | 5 | ||
| 5 | This file is part of GNU Emacs. | 6 | This file is part of GNU Emacs. |
| 6 | 7 | ||
| @@ -19,10 +20,10 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */ | |||
| 19 | 20 | ||
| 20 | 21 | ||
| 21 | #include <config.h> | 22 | #include <config.h> |
| 22 | #include <setjmp.h> | 23 | |
| 23 | #include "lisp.h" | 24 | #include "lisp.h" |
| 24 | #include "buffer.h" | ||
| 25 | #include "character.h" | 25 | #include "character.h" |
| 26 | #include "buffer.h" | ||
| 26 | #include "commands.h" | 27 | #include "commands.h" |
| 27 | #include "syntax.h" | 28 | #include "syntax.h" |
| 28 | #include "composite.h" | 29 | #include "composite.h" |
| @@ -35,8 +36,8 @@ Lisp_Object Qidentity; | |||
| 35 | static Lisp_Object | 36 | static Lisp_Object |
| 36 | casify_object (enum case_action flag, Lisp_Object obj) | 37 | casify_object (enum case_action flag, Lisp_Object obj) |
| 37 | { | 38 | { |
| 38 | register int c, c1; | 39 | int c, c1; |
| 39 | register int inword = flag == CASE_DOWN; | 40 | bool inword = flag == CASE_DOWN; |
| 40 | 41 | ||
| 41 | /* If the case table is flagged as modified, rescan it. */ | 42 | /* If the case table is flagged as modified, rescan it. */ |
| 42 | if (NILP (XCHAR_TABLE (BVAR (current_buffer, downcase_table))->extras[1])) | 43 | if (NILP (XCHAR_TABLE (BVAR (current_buffer, downcase_table))->extras[1])) |
| @@ -47,7 +48,8 @@ casify_object (enum case_action flag, Lisp_Object obj) | |||
| 47 | int flagbits = (CHAR_ALT | CHAR_SUPER | CHAR_HYPER | 48 | int flagbits = (CHAR_ALT | CHAR_SUPER | CHAR_HYPER |
| 48 | | CHAR_SHIFT | CHAR_CTL | CHAR_META); | 49 | | CHAR_SHIFT | CHAR_CTL | CHAR_META); |
| 49 | int flags = XINT (obj) & flagbits; | 50 | int flags = XINT (obj) & flagbits; |
| 50 | int multibyte = ! NILP (BVAR (current_buffer, enable_multibyte_characters)); | 51 | bool multibyte = ! NILP (BVAR (current_buffer, |
| 52 | enable_multibyte_characters)); | ||
| 51 | 53 | ||
| 52 | /* If the character has higher bits set | 54 | /* If the character has higher bits set |
| 53 | above the flags, return it unchanged. | 55 | above the flags, return it unchanged. |
| @@ -114,12 +116,11 @@ casify_object (enum case_action flag, Lisp_Object obj) | |||
| 114 | ptrdiff_t i, i_byte, size = SCHARS (obj); | 116 | ptrdiff_t i, i_byte, size = SCHARS (obj); |
| 115 | int len; | 117 | int len; |
| 116 | USE_SAFE_ALLOCA; | 118 | USE_SAFE_ALLOCA; |
| 117 | unsigned char *dst, *o; | ||
| 118 | ptrdiff_t o_size = (size < STRING_BYTES_BOUND / MAX_MULTIBYTE_LENGTH | 119 | ptrdiff_t o_size = (size < STRING_BYTES_BOUND / MAX_MULTIBYTE_LENGTH |
| 119 | ? size * MAX_MULTIBYTE_LENGTH | 120 | ? size * MAX_MULTIBYTE_LENGTH |
| 120 | : STRING_BYTES_BOUND); | 121 | : STRING_BYTES_BOUND); |
| 121 | SAFE_ALLOCA (dst, void *, o_size); | 122 | unsigned char *dst = SAFE_ALLOCA (o_size); |
| 122 | o = dst; | 123 | unsigned char *o = dst; |
| 123 | 124 | ||
| 124 | for (i = i_byte = 0; i < size; i++, i_byte += len) | 125 | for (i = i_byte = 0; i < size; i++, i_byte += len) |
| 125 | { | 126 | { |
| @@ -190,9 +191,9 @@ The argument object is not altered--the value is a copy. */) | |||
| 190 | static void | 191 | static void |
| 191 | casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e) | 192 | casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e) |
| 192 | { | 193 | { |
| 193 | register int c; | 194 | int c; |
| 194 | register int inword = flag == CASE_DOWN; | 195 | bool inword = flag == CASE_DOWN; |
| 195 | register int multibyte = !NILP (BVAR (current_buffer, enable_multibyte_characters)); | 196 | bool multibyte = !NILP (BVAR (current_buffer, enable_multibyte_characters)); |
| 196 | ptrdiff_t start, end; | 197 | ptrdiff_t start, end; |
| 197 | ptrdiff_t start_byte; | 198 | ptrdiff_t start_byte; |
| 198 | 199 | ||
| @@ -213,7 +214,7 @@ casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e) | |||
| 213 | validate_region (&b, &e); | 214 | validate_region (&b, &e); |
| 214 | start = XFASTINT (b); | 215 | start = XFASTINT (b); |
| 215 | end = XFASTINT (e); | 216 | end = XFASTINT (e); |
| 216 | modify_region (current_buffer, start, end, 0); | 217 | modify_text (start, end); |
| 217 | record_change (start, end - start); | 218 | record_change (start, end - start); |
| 218 | start_byte = CHAR_TO_BYTE (start); | 219 | start_byte = CHAR_TO_BYTE (start); |
| 219 | 220 | ||