summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/ChangeLog7
-rw-r--r--src/dispextern.h10
-rw-r--r--src/fontset.c40
-rw-r--r--src/fontset.h4
4 files changed, 19 insertions, 42 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 60258810fe2..33675599390 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -5,6 +5,13 @@
http://lists.gnu.org/archive/html/emacs-devel/2013-12/msg00351.html.
* keyboard.c (poll_for_input_1, input_polling_used): Define
unconditionally.
+ * dispextern.h (FACE_SUITABLE_FOR_CHAR_P): Remove unused macro.
+ (FACE_FOR_CHAR): Simplify because face_for_char does the same.
+ * fontset.c (face_suitable_for_char_p) [0]: Remove unused function.
+ (font_for_char): Prefer ptrdiff_t to int for buffer position.
+ (face_for_char): Likewise. Rearrange eassert and return ASCII
+ face for CHAR_BYTE8_P.
+ * fontset.h (font_for_char, face_for_char): Adjust prototypes.
2013-12-11 Ken Brown <kbrown@cornell.edu>
diff --git a/src/dispextern.h b/src/dispextern.h
index 5976d068a78..97847e04686 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -1819,24 +1819,16 @@ struct face_cache
#define FACE_SUITABLE_FOR_ASCII_CHAR_P(FACE, CHAR) \
((FACE) == (FACE)->ascii_face)
-#define FACE_SUITABLE_FOR_CHAR_P(FACE, CHAR) \
- (ASCII_CHAR_P (CHAR) \
- ? FACE_SUITABLE_FOR_ASCII_CHAR_P(FACE) \
- : face_suitable_for_char_p ((FACE), (CHAR)))
-
/* Return the id of the realized face on frame F that is like the face
with id ID but is suitable for displaying character CHAR.
This macro is only meaningful for multibyte character CHAR. */
#define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) \
- ((ASCII_CHAR_P (CHAR) || CHAR_BYTE8_P (CHAR)) \
- ? (FACE)->ascii_face->id \
- : face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT)))
+ face_for_char ((F), (FACE), (CHAR), (POS), (OBJECT))
#else /* not HAVE_WINDOW_SYSTEM */
#define FACE_SUITABLE_FOR_ASCII_CHAR_P(FACE, CHAR) 1
-#define FACE_SUITABLE_FOR_CHAR_P(FACE, CHAR) 1
#define FACE_FOR_CHAR(F, FACE, CHAR, POS, OBJECT) ((FACE)->id)
#endif /* not HAVE_WINDOW_SYSTEM */
diff --git a/src/fontset.c b/src/fontset.c
index a3634f0b08d..b9f6de33ebb 100644
--- a/src/fontset.c
+++ b/src/fontset.c
@@ -899,42 +899,21 @@ free_face_fontset (struct frame *f, struct face *face)
face->fontset = -1;
}
-
-#if 0
-/* Return true if FACE is suitable for displaying character C.
- Called from the macro FACE_SUITABLE_FOR_CHAR_P
- when C is not an ASCII character. */
-
-bool
-face_suitable_for_char_p (struct face *face, int c)
-{
- Lisp_Object fontset, rfont_def;
-
- fontset = FONTSET_FROM_ID (face->fontset);
- rfont_def = fontset_font (fontset, c, NULL, -1);
- return (VECTORP (rfont_def)
- && INTEGERP (RFONT_DEF_FACE (rfont_def))
- && face->id == XINT (RFONT_DEF_FACE (rfont_def)));
-}
-#endif
-
-
-/* Return ID of face suitable for displaying character C on frame F.
- FACE must be realized for ASCII characters in advance. Called from
- the macro FACE_FOR_CHAR. */
+/* Return ID of face suitable for displaying character C at buffer position
+ POS on frame F. FACE must be realized for ASCII characters in advance.
+ Called from the macro FACE_FOR_CHAR. */
int
-face_for_char (struct frame *f, struct face *face, int c, int pos, Lisp_Object object)
+face_for_char (struct frame *f, struct face *face, int c,
+ ptrdiff_t pos, Lisp_Object object)
{
Lisp_Object fontset, rfont_def, charset;
int face_id;
int id;
- /* If face->fontset is negative (that happens when no font is found
- for face), just return face->ascii_face because we can't do
- anything. Perhaps, we should fix the callers to assure
- that face->fontset is always valid. */
- if (ASCII_CHAR_P (c) || face->fontset < 0)
+ eassert (fontset_id_valid_p (face->fontset));
+
+ if (ASCII_CHAR_P (c) || CHAR_BYTE8_P (c))
return face->ascii_face->id;
#ifdef HAVE_NS
@@ -950,7 +929,6 @@ face_for_char (struct frame *f, struct face *face, int c, int pos, Lisp_Object o
}
#endif
- eassert (fontset_id_valid_p (face->fontset));
fontset = FONTSET_FROM_ID (face->fontset);
eassert (!BASE_FONTSET_P (fontset));
@@ -1005,7 +983,7 @@ face_for_char (struct frame *f, struct face *face, int c, int pos, Lisp_Object o
Lisp_Object
-font_for_char (struct face *face, int c, int pos, Lisp_Object object)
+font_for_char (struct face *face, int c, ptrdiff_t pos, Lisp_Object object)
{
Lisp_Object fontset, rfont_def, charset;
int id;
diff --git a/src/fontset.h b/src/fontset.h
index b8ef4789e71..3531915f7d9 100644
--- a/src/fontset.h
+++ b/src/fontset.h
@@ -28,8 +28,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
extern void free_face_fontset (struct frame *, struct face *);
extern int face_for_char (struct frame *, struct face *, int,
- int, Lisp_Object);
-extern Lisp_Object font_for_char (struct face *, int, int, Lisp_Object);
+ ptrdiff_t, Lisp_Object);
+extern Lisp_Object font_for_char (struct face *, int, ptrdiff_t, Lisp_Object);
extern int make_fontset_for_ascii_face (struct frame *, int, struct face *);
extern int fontset_from_font (Lisp_Object);