aboutsummaryrefslogtreecommitdiffstats
path: root/src/casefiddle.c
diff options
context:
space:
mode:
authorEli Zaretskii2013-09-05 11:01:04 +0300
committerEli Zaretskii2013-09-05 11:01:04 +0300
commit41306318777a942420bc4feadbfacf662ea179dc (patch)
tree669e5cca02f95d6064ce73c0d3fbbf91b8c8b563 /src/casefiddle.c
parent141f1ff7a40cda10f0558e891dd196a943a5082e (diff)
parent257b3b03cb1cff917e0b3b7832ad3eab5b59f257 (diff)
downloademacs-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.c27
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
3Copyright (C) 1985, 1994, 1997-1999, 2001-2012 Free Software Foundation, Inc. 3Copyright (C) 1985, 1994, 1997-1999, 2001-2013 Free Software Foundation,
4Inc.
4 5
5This file is part of GNU Emacs. 6This 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;
35static Lisp_Object 36static Lisp_Object
36casify_object (enum case_action flag, Lisp_Object obj) 37casify_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. */)
190static void 191static void
191casify_region (enum case_action flag, Lisp_Object b, Lisp_Object e) 192casify_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