Subject: Re: bug#20404: 25.0.50; Sometimes no fontification with jit-lock-defer-time

From: Eli Zaretskii <[email-masked]>
Date: Thu, 23 Apr 2015 09:14:10 +0300

> From: Tassilo Horn <[email-masked]>
> Cc: [email-masked]
> Date: Thu, 23 Apr 2015 07:59:15 +0200
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> > So you are saying that something prevents the timer to run at the
> > prescribed time?
> 
> That seems to be the case.

It can also be that Emacs doesn't become idle for some reason.

> > I suggest to add trace printf's in the code that traverses the
> > idle-timers' list, and see why this timer doesn't run on time.
> 
> That would be
> 
>   static struct timespec
>   timer_check_2 (Lisp_Object timers, Lisp_Object idle_timers)
> 
> right?

Yes.

> +	  if (ripe)
> +	    {
> +	      printf("Idle timer calling %s is ripe.", AREF (5, chosen_timer));
> +	    }
>  	}
>  
>        /* If timer is ripe, run it if it hasn't been run.  */
> --8<---------------cut here---------------end--------------->8---
> 
> I think the problem is that the AREF returns the timer's function or
> maybe the symbol whose function definition is the timer's function.

Yes, you cannon printf a Lisp object with %s.

> How do I get the function's name in order to print that?

Try SDATA (SYMBOL_NAME (AREF (5, chosen_timer))).