(Fchar_charset): New optional arg restriction.
This commit is contained in:
parent
cde42f0ff5
commit
4cb75c4b12
2 changed files with 55 additions and 5 deletions
|
@ -1,3 +1,27 @@
|
|||
2009-02-04 Kenichi Handa <handa@m17n.org>
|
||||
|
||||
* Makefile.in (composite.o): Depends on frame.h and termhooks.h.
|
||||
|
||||
* charset.c (Fchar_charset): New optional arg restriction.
|
||||
|
||||
* coding.h (coding_system_charset_list): Extern it.
|
||||
|
||||
* coding.c (coding_system_charset_list): New function.
|
||||
|
||||
* composite.c: Include coding.h and termhooks.h.
|
||||
(composition_gstring_p): Fix for the terminal case.
|
||||
(composition_gstring_width): Likewise.
|
||||
(fill_gstring_body): Likewise.
|
||||
(autocmp_chars): For terminal, call Fcomposition_get_gstring with
|
||||
the frame.
|
||||
(composition_compute_stop_pos): Adjust cmp_it->stop_pos if point
|
||||
is within a composition.
|
||||
(Fcomposition_get_gstring): Fix the the terminal case.
|
||||
|
||||
* term.c (encode_terminal_code): Fix handling of composition.
|
||||
(produce_composite_glyph): For static composition, get pixel_width
|
||||
from struct composition.
|
||||
|
||||
2009-02-02 Andreas Schwab <schwab@suse.de>
|
||||
|
||||
* unexelf.c (unexec): Handle unaligned bss offset.
|
||||
|
|
|
@ -2098,15 +2098,41 @@ CH in the charset. */)
|
|||
}
|
||||
|
||||
|
||||
DEFUN ("char-charset", Fchar_charset, Schar_charset, 1, 1, 0,
|
||||
doc: /* Return the charset of highest priority that contains CH. */)
|
||||
(ch)
|
||||
Lisp_Object ch;
|
||||
DEFUN ("char-charset", Fchar_charset, Schar_charset, 1, 2, 0,
|
||||
doc: /* Return the charset of highest priority that contains CH.
|
||||
If optional 2nd arg RESTRICTION is non-nil, it is a list of charsets
|
||||
from which to find the charset. It may also be a coding system. In
|
||||
that case, find the charset from what supported by that coding system. */)
|
||||
(ch, restriction)
|
||||
Lisp_Object ch, restriction;
|
||||
{
|
||||
struct charset *charset;
|
||||
|
||||
CHECK_CHARACTER (ch);
|
||||
charset = CHAR_CHARSET (XINT (ch));
|
||||
if (NILP (restriction))
|
||||
charset = CHAR_CHARSET (XINT (ch));
|
||||
else
|
||||
{
|
||||
Lisp_Object charset_list;
|
||||
|
||||
if (CONSP (restriction))
|
||||
{
|
||||
for (charset_list = Qnil; CONSP (restriction);
|
||||
restriction = XCDR (restriction))
|
||||
{
|
||||
int id;
|
||||
|
||||
CHECK_CHARSET_GET_ID (XCAR (restriction), id);
|
||||
charset_list = Fcons (make_number (id), charset_list);
|
||||
}
|
||||
charset_list = Fnreverse (charset_list);
|
||||
}
|
||||
else
|
||||
charset_list = coding_system_charset_list (restriction);
|
||||
charset = char_charset (XINT (ch), charset_list, NULL);
|
||||
if (! charset)
|
||||
return Qnil;
|
||||
}
|
||||
return (CHARSET_NAME (charset));
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue