[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/src/macterm.c
From: |
Steven Tamm |
Subject: |
[Emacs-diffs] Changes to emacs/src/macterm.c |
Date: |
Sat, 18 Dec 2004 12:18:01 -0500 |
Index: emacs/src/macterm.c
diff -c emacs/src/macterm.c:1.83 emacs/src/macterm.c:1.84
*** emacs/src/macterm.c:1.83 Tue Nov 30 05:57:27 2004
--- emacs/src/macterm.c Sat Dec 18 16:36:29 2004
***************
*** 5976,5982 ****
strcpy(cs, "mac-cyrillic");
break;
case kTextEncodingMacCentralEurRoman:
! strcpy(cs, "mac-centraleuropean");
break;
case kTextEncodingMacSymbol:
case kTextEncodingMacDingbats:
--- 5976,5982 ----
strcpy(cs, "mac-cyrillic");
break;
case kTextEncodingMacCentralEurRoman:
! strcpy(cs, "mac-centraleurroman");
break;
case kTextEncodingMacSymbol:
case kTextEncodingMacDingbats:
***************
*** 6034,6040 ****
coding_system = Qeuc_kr;
else if (strcmp (cs, "mac-roman") == 0
|| strcmp (cs, "mac-cyrillic") == 0
! || strcmp (cs, "mac-centraleuropean") == 0
|| strcmp (cs, "adobe-fontspecific") == 0)
strcpy (mf, family);
else
--- 6034,6040 ----
coding_system = Qeuc_kr;
else if (strcmp (cs, "mac-roman") == 0
|| strcmp (cs, "mac-cyrillic") == 0
! || strcmp (cs, "mac-centraleurroman") == 0
|| strcmp (cs, "adobe-fontspecific") == 0)
strcpy (mf, family);
else
***************
*** 6276,6281 ****
--- 6276,6303 ----
};
static Lisp_Object
+ mac_c_string_match (regexp, string, nonspecial, exact)
+ Lisp_Object regexp;
+ const char *string, *nonspecial;
+ int exact;
+ {
+ if (exact)
+ {
+ if (strcmp (string, nonspecial) == 0)
+ return build_string (string);
+ }
+ else if (strstr (string, nonspecial))
+ {
+ Lisp_Object str = build_string (string);
+
+ if (fast_string_match (regexp, str) >= 0)
+ return str;
+ }
+
+ return Qnil;
+ }
+
+ static Lisp_Object
mac_do_list_fonts (pattern, maxnames)
char *pattern;
int maxnames;
***************
*** 6286,6291 ****
--- 6308,6315 ----
char scaled[256];
char *ptr;
int scl_val[XLFD_SCL_LAST], *field, *val;
+ char *longest_start, *cur_start, *nonspecial;
+ int longest_len, cur_len, exact;
for (i = 0; i < XLFD_SCL_LAST; i++)
scl_val[i] = -1;
***************
*** 6343,6376 ****
ptr = regex;
*ptr++ = '^';
! /* Turn pattern into a regexp and do a regexp match. */
for (; *pattern; pattern++)
{
! if (*pattern == '?')
! *ptr++ = '.';
! else if (*pattern == '*')
! {
! *ptr++ = '.';
! *ptr++ = '*';
! }
else
! *ptr++ = tolower (*pattern);
}
*ptr = '$';
*(ptr + 1) = '\0';
pattern_regex = build_string (regex);
for (i = 0; i < font_name_count; i++)
{
! fontname = build_string (font_name_table[i]);
! if (fast_string_match (pattern_regex, fontname) >= 0)
{
font_list = Fcons (fontname, font_list);
!
! n_fonts++;
! if (maxnames > 0 && n_fonts >= maxnames)
! break;
}
else if (scl_val[XLFD_SCL_PIXEL_SIZE] > 0
&& (ptr = strstr (font_name_table[i], "-0-0-75-75-m-0-")))
--- 6367,6432 ----
ptr = regex;
*ptr++ = '^';
! longest_start = cur_start = ptr;
! longest_len = cur_len = 0;
! exact = 1;
!
! /* Turn pattern into a regexp and do a regexp match. Also find the
! longest substring containing no special characters. */
for (; *pattern; pattern++)
{
! if (*pattern == '?' || *pattern == '*')
! {
! if (cur_len > longest_len)
! {
! longest_start = cur_start;
! longest_len = cur_len;
! }
! cur_len = 0;
! exact = 0;
!
! if (*pattern == '?')
! *ptr++ = '.';
! else /* if (*pattern == '*') */
! {
! *ptr++ = '.';
! *ptr++ = '*';
! }
! }
else
! {
! if (cur_len == 0)
! cur_start = ptr;
! cur_len++;
!
! *ptr++ = tolower (*pattern);
! }
! }
!
! if (cur_len > longest_len)
! {
! longest_start = cur_start;
! longest_len = cur_len;
}
+
*ptr = '$';
*(ptr + 1) = '\0';
+ nonspecial = xmalloc (longest_len + 1);
+ strncpy (nonspecial, longest_start, longest_len);
+ nonspecial[longest_len] = '\0';
+
pattern_regex = build_string (regex);
for (i = 0; i < font_name_count; i++)
{
! fontname = mac_c_string_match (pattern_regex, font_name_table[i],
! nonspecial, exact);
! if (!NILP (fontname))
{
font_list = Fcons (fontname, font_list);
! if (exact || maxnames > 0 && ++n_fonts >= maxnames)
! return font_list;
}
else if (scl_val[XLFD_SCL_PIXEL_SIZE] > 0
&& (ptr = strstr (font_name_table[i], "-0-0-75-75-m-0-")))
***************
*** 6384,6400 ****
scl_val[XLFD_SCL_POINT_SIZE],
scl_val[XLFD_SCL_AVGWIDTH],
ptr + sizeof ("-0-0-75-75-m-0-") - 1);
! fontname = build_string (scaled);
! if (fast_string_match (pattern_regex, fontname) >= 0)
{
font_list = Fcons (fontname, font_list);
!
! n_fonts++;
! if (maxnames > 0 && n_fonts >= maxnames)
! break;
}
}
}
return font_list;
}
--- 6440,6458 ----
scl_val[XLFD_SCL_POINT_SIZE],
scl_val[XLFD_SCL_AVGWIDTH],
ptr + sizeof ("-0-0-75-75-m-0-") - 1);
! fontname = mac_c_string_match (pattern_regex, scaled,
! nonspecial, exact);
! if (!NILP (fontname))
{
font_list = Fcons (fontname, font_list);
! if (exact || maxnames > 0 && ++n_fonts >= maxnames)
! return font_list;
}
}
}
+
+ xfree (nonspecial);
+
return font_list;
}
- [Emacs-diffs] Changes to emacs/src/macterm.c,
Steven Tamm <=