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