[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r101184: Allow composition striding o
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r101184: Allow composition striding over PT. |
Date: |
Wed, 25 Aug 2010 13:41:32 +0900 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 101184 [merge]
committer: Kenichi Handa <address@hidden>
branch nick: trunk
timestamp: Wed 2010-08-25 13:41:32 +0900
message:
Allow composition striding over PT.
modified:
src/ChangeLog
src/composite.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2010-08-25 03:49:02 +0000
+++ b/src/ChangeLog 2010-08-25 04:39:30 +0000
@@ -1,5 +1,14 @@
2010-08-25 Kenichi Handa <address@hidden>
+ * composite.c (composition_compute_stop_pos): Don't break
+ composition at PT.
+ (composition_reseat_it): Likewise. Fix calculation of character
+ position starting a composition.
+ (Fcomposition_get_gstring): Don't limit the number of components
+ for automatic composition.
+
+2010-08-25 Kenichi Handa <address@hidden>
+
* composite.c (composition_compute_stop_pos): In forward search,
pay attention to the possibility that some character after ENDPOS
will be composed with charactrs before ENDPOS.
=== modified file 'src/composite.c'
--- a/src/composite.c 2010-08-25 00:54:05 +0000
+++ b/src/composite.c 2010-08-25 04:39:30 +0000
@@ -969,7 +969,9 @@
static Lisp_Object _work_val;
static int _work_char;
-/* 1 iff the character C is composable. */
+/* 1 iff the character C is composable. Characters of general
+ category Z? or C? are not composable except for ZWNJ and ZWJ. */
+
#define CHAR_COMPOSABLE_P(C) \
((C) == 0x200C || (C) == 0x200D \
|| (_work_val = CHAR_TABLE_REF (Vunicode_category_table, (C)), \
@@ -1028,19 +1030,6 @@
cmp_it->stop_pos = endpos = start;
cmp_it->ch = -1;
}
- if (NILP (string))
- {
- /* A composition never strides over PT. */
- if (PT > charpos)
- {
- if (PT < endpos)
- cmp_it->stop_pos = endpos = PT;
- }
- else if (PT < charpos && PT > endpos)
- {
- cmp_it->stop_pos = endpos = PT - 1;
- }
- }
if (NILP (current_buffer->enable_multibyte_characters)
|| NILP (Vauto_composition_mode))
return;
@@ -1233,23 +1222,8 @@
int
composition_reseat_it (struct composition_it *cmp_it, EMACS_INT charpos,
EMACS_INT bytepos, EMACS_INT endpos, struct window *w, struct face *face,
Lisp_Object string)
{
- if (endpos <= charpos)
- {
- if (NILP (string))
- {
- if (endpos < 0)
- endpos = BEGV;
- if (endpos < PT && PT < charpos)
- endpos = PT;
- }
- else if (endpos < 0)
- endpos = 0;
- }
- else
- {
- if (NILP (string) && charpos < PT && PT < endpos)
- endpos = PT;
- }
+ if (endpos < 0)
+ endpos = NILP (string) ? BEGV : 0;
if (cmp_it->ch == -2)
{
@@ -1311,7 +1285,7 @@
elt = XCAR (val);
if (cmp_it->lookback > 0)
{
- cpos -= cmp_it->lookback;
+ cpos = charpos - cmp_it->lookback;
if (STRINGP (string))
bpos = string_char_to_byte (string, cpos);
else
@@ -1773,8 +1747,6 @@
CHECK_NATNUM (from);
CHECK_NATNUM (to);
- if (XINT (to) > XINT (from) + MAX_COMPOSITION_COMPONENTS)
- to = make_number (XINT (from) + MAX_COMPOSITION_COMPONENTS);
if (! FONT_OBJECT_P (font_object))
{
struct coding_system *coding;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r101184: Allow composition striding over PT.,
Kenichi Handa <=