X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=src%2Fabbrev.c;h=2b2f00e28d67ee70ac951025976343dfb8aa46b7;hb=19642ae21cbdca722f34b272007705437d9a7fc7;hp=80f08adfb50e91422076559a8948167f435dc9d6;hpb=afa9772e3fcbb4e80e3e4cfd1a40b4fccc6d08b8;p=chise%2Fxemacs-chise.git diff --git a/src/abbrev.c b/src/abbrev.c index 80f08ad..2b2f00e 100644 --- a/src/abbrev.c +++ b/src/abbrev.c @@ -1,5 +1,6 @@ /* Primitives for word-abbrev mode. Copyright (C) 1985, 1986, 1992, 1993 Free Software Foundation, Inc. + Copyright (C) 2001 MORIOKA Tomohiko This file is part of XEmacs. @@ -77,9 +78,9 @@ Lisp_Object Vpre_abbrev_expand_hook, Qpre_abbrev_expand_hook; struct abbrev_match_mapper_closure { struct buffer *buf; - struct Lisp_Char_Table *chartab; + Lisp_Char_Table *chartab; Charcount point, maxlen; - struct Lisp_Symbol *found; + Lisp_Symbol *found; }; /* For use by abbrev_match(): Match SYMBOL's name against buffer text @@ -91,8 +92,8 @@ abbrev_match_mapper (Lisp_Object symbol, void *arg) struct abbrev_match_mapper_closure *closure = (struct abbrev_match_mapper_closure *)arg; Charcount abbrev_length; - struct Lisp_Symbol *sym = XSYMBOL (symbol); - struct Lisp_String *abbrev; + Lisp_Symbol *sym = XSYMBOL (symbol); + Lisp_String *abbrev; /* symbol_value should be OK here, because abbrevs are not expected to contain any SYMBOL_MAGIC stuff. */ @@ -147,7 +148,7 @@ abbrev_match_mapper (Lisp_Object symbol, void *arg) /* Match the buffer text against names of symbols in obarray. Returns the matching symbol, or 0 if not found. */ -static struct Lisp_Symbol * +static Lisp_Symbol * abbrev_match (struct buffer *buf, Lisp_Object obarray) { struct abbrev_match_mapper_closure closure; @@ -157,7 +158,11 @@ abbrev_match (struct buffer *buf, Lisp_Object obarray) closure.buf = buf; closure.point = BUF_PT (buf); closure.maxlen = closure.point - BUF_BEGV (buf); +#ifdef UTF2000 + closure.chartab = XCHAR_TABLE (buf->syntax_table); +#else closure.chartab = XCHAR_TABLE (buf->mirror_syntax_table); +#endif closure.found = 0; map_obarray (obarray, abbrev_match_mapper, &closure); @@ -175,7 +180,7 @@ abbrev_match (struct buffer *buf, Lisp_Object obarray) This speed difference should be unnoticeable, though. I have tested the degenerated cases of thousands of abbrevs being defined, and abbrev_match() was still fast enough for normal operation. */ -static struct Lisp_Symbol * +static Lisp_Symbol * abbrev_oblookup (struct buffer *buf, Lisp_Object obarray) { Bufpos wordstart, wordend; @@ -282,10 +287,10 @@ If no abbrev matched, but `pre-abbrev-expand-hook' changed the buffer, Bufpos point; /* position of point */ Bufpos abbrev_start; /* position of abbreviation beginning */ - struct Lisp_Symbol *(*fun) (struct buffer *, Lisp_Object); + Lisp_Symbol *(*fun) (struct buffer *, Lisp_Object); - struct Lisp_Symbol *abbrev_symbol; - struct Lisp_String *abbrev_string; + Lisp_Symbol *abbrev_symbol; + Lisp_String *abbrev_string; Lisp_Object expansion, count, hook; Charcount abbrev_length; int lccount, uccount; @@ -385,8 +390,14 @@ If no abbrev matched, but `pre-abbrev-expand-hook' changed the buffer, Bufpos pos = abbrev_start; /* Find the initial. */ while (pos < point +#ifdef UTF2000 + && !WORD_SYNTAX_P (XCHAR_TABLE (buf->syntax_table), + BUF_FETCH_CHAR (buf, pos)) +#else && !WORD_SYNTAX_P (XCHAR_TABLE (buf->mirror_syntax_table), - BUF_FETCH_CHAR (buf, pos))) + BUF_FETCH_CHAR (buf, pos)) +#endif + ) pos++; /* Change just that. */ Fupcase_initials_region (make_int (pos), make_int (pos + 1),