emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

question about frame local variable


From: Kenichi Handa
Subject: question about frame local variable
Date: Sat, 25 Oct 2003 09:49:47 +0900 (JST)
User-agent: SEMI/1.14.3 (Ushinoya) FLIM/1.14.2 (Yagi-Nishiguchi) APEL/10.2 Emacs/21.3 (sparc-sun-solaris2.6) MULE/5.0 (SAKAKI)

It seems that we need the attached patch to make a code like
this (allow scalable fonts only for a specific frame) work
well.

(defun make-frame-allowing-scalable-fonts ()
  (make-variable-frame-local 'scalable-fonts-allowed)
  (let ((frame (make-frame '((name . "SCALABLE")))))
    (modify-frame-parameters frame '((scalable-fonts-allowed . t)))
    frame))

The patch accesses the value of `scalable-fonts-allowed' not
directly by Vscalable_fonts_allowed but via:
   find_symbol_value (Qscalable_fonts_allowed)

Is this the correct way?  Shall I install it?

---
Ken'ichi HANDA
address@hidden

*** xfaces.c.~1.284.~   Tue Sep  2 08:26:41 2003
--- xfaces.c    Fri Oct 24 16:48:04 2003
***************
*** 6162,6174 ****
  may_use_scalable_font_p (font)
       const char *font;
  {
!   if (EQ (Vscalable_fonts_allowed, Qt))
      return 1;
!   else if (CONSP (Vscalable_fonts_allowed))
      {
        Lisp_Object tail, regexp;
  
!       for (tail = Vscalable_fonts_allowed; CONSP (tail); tail = XCDR (tail))
        {
          regexp = XCAR (tail);
          if (STRINGP (regexp)
--- 6162,6177 ----
  may_use_scalable_font_p (font)
       const char *font;
  {
!   Lisp_Object val;
! 
!   val = find_symbol_value (Qscalable_fonts_allowed);
!   if (EQ (val, Qt))
      return 1;
!   else if (CONSP (val))
      {
        Lisp_Object tail, regexp;
  
!       for (tail = val; CONSP (tail); tail = XCDR (tail))
        {
          regexp = XCAR (tail);
          if (STRINGP (regexp)
***************
*** 6364,6370 ****
        }
  
        /* Try all scalable fonts before giving up.  */
!       if (nfonts == 0 && ! EQ (Vscalable_fonts_allowed, Qt))
        {
          int count = SPECPDL_INDEX ();
          specbind (Qscalable_fonts_allowed, Qt);
--- 6367,6374 ----
        }
  
        /* Try all scalable fonts before giving up.  */
!       if (nfonts == 0
!         && ! EQ (find_symbol_value (Qscalable_fonts_allowed), Qt))
        {
          int count = SPECPDL_INDEX ();
          specbind (Qscalable_fonts_allowed, Qt);




reply via email to

[Prev in Thread] Current Thread [Next in Thread]