summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Antipov <dmantipov@yandex.ru>2013-02-13 11:14:38 +0400
committerDmitry Antipov <dmantipov@yandex.ru>2013-02-13 11:14:38 +0400
commit5a655b9f0d19703aad9331378c02e9c782412386 (patch)
treea6ce6b855a4014cdedc903ee8c69d0b415fd9d3c
parenteeb468daa1a5c8b64b939c1b3c4144c21a38f281 (diff)
downloademacs-5a655b9f0d19703aad9331378c02e9c782412386.tar.gz
* font.c (font_range): Add pos_byte argument. Adjust comment
and break long line. * font.h (font_range): Adjust prototype. * composite.c (autocmp_chars): Pass byte position to font_range. Break long line. Remove useless prototype and format comment.
-rw-r--r--src/ChangeLog8
-rw-r--r--src/composite.c14
-rw-r--r--src/font.c21
-rw-r--r--src/font.h2
4 files changed, 23 insertions, 22 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 31ffd36c060..bf27fd4066d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,11 @@
+2013-02-13 Dmitry Antipov <dmantipov@yandex.ru>
+
+ * font.c (font_range): Add pos_byte argument. Adjust comment
+ and break long line.
+ * font.h (font_range): Adjust prototype.
+ * composite.c (autocmp_chars): Pass byte position to font_range.
+ Break long line. Remove useless prototype and format comment.
+
2013-02-13 Glenn Morris <rgm@gnu.org>
* keyboard.c (input-decode-map, key-translation-map): Doc fixes.
diff --git a/src/composite.c b/src/composite.c
index 54cebc00eb7..9bbd4550c7b 100644
--- a/src/composite.c
+++ b/src/composite.c
@@ -642,13 +642,7 @@ compose_text (ptrdiff_t start, ptrdiff_t end, Lisp_Object components,
Qcomposition, prop, string);
}
-
-static Lisp_Object autocmp_chars (Lisp_Object, ptrdiff_t, ptrdiff_t,
- ptrdiff_t, struct window *,
- struct face *, Lisp_Object);
-
-
-/* Lisp glyph-string handlers */
+/* Lisp glyph-string handlers. */
/* Hash table for automatic composition. The key is a header of a
lgstring (Lispy glyph-string), and the value is a body of a
@@ -905,7 +899,9 @@ fill_gstring_body (Lisp_Object gstring)
object. Otherwise return nil. */
static Lisp_Object
-autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t limit, struct window *win, struct face *face, Lisp_Object string)
+autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos,
+ ptrdiff_t limit, struct window *win, struct face *face,
+ Lisp_Object string)
{
ptrdiff_t count = SPECPDL_INDEX ();
FRAME_PTR f = XFRAME (win->frame);
@@ -935,7 +931,7 @@ autocmp_chars (Lisp_Object rule, ptrdiff_t charpos, ptrdiff_t bytepos, ptrdiff_t
#ifdef HAVE_WINDOW_SYSTEM
if (FRAME_WINDOW_P (f))
{
- font_object = font_range (charpos, &to, win, face, string);
+ font_object = font_range (charpos, bytepos, &to, win, face, string);
if (! FONT_OBJECT_P (font_object)
|| (! NILP (re)
&& to < limit
diff --git a/src/font.c b/src/font.c
index 5cfac07de72..e2ea7262397 100644
--- a/src/font.c
+++ b/src/font.c
@@ -3689,11 +3689,11 @@ font_at (int c, ptrdiff_t pos, struct face *face, struct window *w,
#ifdef HAVE_WINDOW_SYSTEM
-/* Check how many characters after POS (at most to *LIMIT) can be
- displayed by the same font in the window W. FACE, if non-NULL, is
- the face selected for the character at POS. If STRING is not nil,
- it is the string to check instead of the current buffer. In that
- case, FACE must be not NULL.
+/* Check how many characters after character/byte position POS/POS_BYTE
+ (at most to *LIMIT) can be displayed by the same font in the window W.
+ FACE, if non-NULL, is the face selected for the character at POS.
+ If STRING is not nil, it is the string to check instead of the current
+ buffer. In that case, FACE must be not NULL.
The return value is the font-object for the character at POS.
*LIMIT is set to the position where that font can't be used.
@@ -3701,15 +3701,15 @@ font_at (int c, ptrdiff_t pos, struct face *face, struct window *w,
It is assured that the current buffer (or STRING) is multibyte. */
Lisp_Object
-font_range (ptrdiff_t pos, ptrdiff_t *limit, struct window *w, struct face *face, Lisp_Object string)
+font_range (ptrdiff_t pos, ptrdiff_t pos_byte, ptrdiff_t *limit,
+ struct window *w, struct face *face, Lisp_Object string)
{
- ptrdiff_t pos_byte, ignore;
+ ptrdiff_t ignore;
int c;
Lisp_Object font_object = Qnil;
if (NILP (string))
{
- pos_byte = CHAR_TO_BYTE (pos);
if (! face)
{
int face_id;
@@ -3720,10 +3720,7 @@ font_range (ptrdiff_t pos, ptrdiff_t *limit, struct window *w, struct face *face
}
}
else
- {
- eassert (face);
- pos_byte = string_char_to_byte (string, pos);
- }
+ eassert (face);
while (pos < *limit)
{
diff --git a/src/font.h b/src/font.h
index b565fb4b01b..ffed0461ff7 100644
--- a/src/font.h
+++ b/src/font.h
@@ -781,7 +781,7 @@ extern int font_unparse_fcname (Lisp_Object font, int pixel_size,
extern void register_font_driver (struct font_driver *driver, FRAME_PTR f);
extern void free_font_driver_list (FRAME_PTR f);
extern Lisp_Object font_update_drivers (FRAME_PTR f, Lisp_Object list);
-extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t *,
+extern Lisp_Object font_range (ptrdiff_t, ptrdiff_t, ptrdiff_t *,
struct window *, struct face *,
Lisp_Object);
extern void font_fill_lglyph_metrics (Lisp_Object, Lisp_Object);