Re: [O] Org Clock Timer in Frame Title bug

2012-05-05 Thread Bastien
Hi George,

George Kettleborough g.kettleboro...@uea.ac.uk writes:

 On Sun, Apr 29 2012, Bastien wrote:
 `global-mode-string' and ̀frame-title-format' are list by default
 and they cannot be customized.  They can be manually set to a string,
 but that's a mistake (okay, `global-mode-string' is a misleading name.)

 On my Fedora box, frame-title-format is by default:

 (multiple-frames %b
( invocation-name @ system-name))

 This is the value even if --no-init-file is used so I don't think this
 is distro-specific.

Okay, I added a new option `org-clock-frame-title-format' for the
`frame-title-format' string.

This format string will /replace/ `frame-title-format' instead of 
just amending it.  I don't find any way to safely set this var, as 
there is no equivalent of `global-mode-string' for the frame.  

Thanks,

-- 
 Bastien



Re: [O] Org Clock Timer in Frame Title bug

2012-04-30 Thread George Kettleborough
On Sun, Apr 29 2012, Bastien wrote:
 `global-mode-string' and ̀frame-title-format' are list by default
 and they cannot be customized.  They can be manually set to a string,
 but that's a mistake (okay, `global-mode-string' is a misleading name.)

On my Fedora box, frame-title-format is by default:

(multiple-frames %b
 ( invocation-name @ system-name))

This is the value even if --no-init-file is used so I don't think this
is distro-specific.

Since the first element in the list is a symbol, the behaviour is to
treat it as a boolean which decides whether the second or third element
is used.  Anything appended to this list is just ignored.

Is this what you mean by frame-title-format being a list by default?  If
so, it's the wrong type of list and we do need to ensure that it's of
the correct form before we can append stuff to the end for display.

global-mode-string, on the other hand, does seem to be of the right type
by default:

()

Thanks,

George.



Re: [O] Org Clock Timer in Frame Title bug

2012-04-29 Thread Bastien
Hi George,

George Kettleborough g.kettleboro...@uea.ac.uk writes:

 Checking (listp frame-title-format) ensures there will be no error when
 calling delq, but it doesn't fix the feature.  If the user's
 frame-title-format is not a list then the feature will not work for no
 apparent reason.  The same thing goes for global-mode-string too, which
 the current release of org-mode modifies.

 For the clock and timer display features to work as intended both of
 these variables need to be lists with either a string or a list as the
 first element.  Note that simply being a list is not enough, it must
 contain a string or list as first element.  This format causes the
 elements of the list to be treated as mode-line-formats recursively.

`global-mode-string' and ̀frame-title-format' are list by default
and they cannot be customized.  They can be manually set to a string,
but that's a mistake (okay, `global-mode-string' is a misleading name.)

 The following in both org-clock.el and org-timer.el will ensure both
 variables have the correct format to begin with:

 (unless (and (listp frame-title-format)
  (or (stringp (first frame-title-format))
  (listp (first frame-title-format
   (setq frame-title-format (list  frame-title-format)))

 (unless (and (listp global-mode-string)
  (or (stringp (first global-mode-string))
  (listp (first global-mode-string
   (setq global-mode-string (list  global-mode-string)))

This can go into .emacs.el for those who set those two variables to a
string... but they should not do it in the first place, right?

 It might be better to do this just once in org.el or org-install.el,
 since maybe other modules might want to put stuff in the mode-line or
 frame-title.

 Of course the user or another mode might edit either of the variables to
 something bad (like a symbol or string) afterwards.  Maybe this should
 be done every time before clock-in/timer-start or any time we wish to
 append stuff to either of these lists?

Org cannot fix all cases where the user is setting a variable to
something that is non-standard.  For this issue, it's already nice
to not produce an error when the user set `global-mode-string' and
`frame-title-format' to  instead of ().

Or am I overlooking something?

-- 
 Bastien



Re: [O] Org Clock Timer in Frame Title bug

2012-04-28 Thread George Kettleborough
On Sun, Apr 22 2012, Matt Lundin wrote:
 Mike McLean mike.mcl...@pobox.com writes:

 It appears that there is a small problem with commit
 37fafb7b9e4e8e1eeb6b8faa76a1621c28970ef5 (Option for clock and timer to
 be displayed in frame-title). The default value offrame-title-format in
 my setup is t and this causes an error when clocking in/out.

 I can confirm this bug. The problem is that org-clock-out calls a delq
 on frame-title-format regardless of the value of
 org-clock-clocked-in-display. This is a problem because
 frame-title-format can be either a list or a string. Note: the same
 problem will occur when calling org-clock-in if the value of
 frame-title-format is a string and if org-clock-clocked-in-display is
 set to 'frame-title.

Checking (listp frame-title-format) ensures there will be no error when
calling delq, but it doesn't fix the feature.  If the user's
frame-title-format is not a list then the feature will not work for no
apparent reason.  The same thing goes for global-mode-string too, which
the current release of org-mode modifies.

For the clock and timer display features to work as intended both of
these variables need to be lists with either a string or a list as the
first element.  Note that simply being a list is not enough, it must
contain a string or list as first element.  This format causes the
elements of the list to be treated as mode-line-formats recursively.

The following in both org-clock.el and org-timer.el will ensure both
variables have the correct format to begin with:

(unless (and (listp frame-title-format)
 (or (stringp (first frame-title-format))
 (listp (first frame-title-format
  (setq frame-title-format (list  frame-title-format)))

(unless (and (listp global-mode-string)
 (or (stringp (first global-mode-string))
 (listp (first global-mode-string
  (setq global-mode-string (list  global-mode-string)))

It might be better to do this just once in org.el or org-install.el,
since maybe other modules might want to put stuff in the mode-line or
frame-title.

Of course the user or another mode might edit either of the variables to
something bad (like a symbol or string) afterwards.  Maybe this should
be done every time before clock-in/timer-start or any time we wish to
append stuff to either of these lists?

Thanks,

George.



Re: [O] Org Clock Timer in Frame Title bug

2012-04-22 Thread Bastien
Fixed, thanks to Mike for reporting and to Matt for pointing 
at the detailed problem.

-- 
 Bastien



Re: [O] Org Clock Timer in Frame Title bug

2012-04-21 Thread Matt Lundin
Mike McLean mike.mcl...@pobox.com writes:

 It appears that there is a small problem with commit
 37fafb7b9e4e8e1eeb6b8faa76a1621c28970ef5 (Option for clock and timer to
 be displayed in frame-title). The default value offrame-title-format in
 my setup is t and this causes an error when clocking in/out.

I can confirm this bug. The problem is that org-clock-out calls a delq
on frame-title-format regardless of the value of
org-clock-clocked-in-display. This is a problem because
frame-title-format can be either a list or a string. Note: the same
problem will occur when calling org-clock-in if the value of
frame-title-format is a string and if org-clock-clocked-in-display is
set to 'frame-title.

Best,
Matt