On Thu, Jun 13, 2013 at 3:35 PM, Stefan Monnier wrote: > > This works on 24.3, but on trunk all windows will be shown as "selected". > > (setq-default > > mode-line-format > > '(:eval (if (eq (frame-selected-window) > > (selected-window)) > > "selected" > > "not-selected"))) > > Indeed this doesn't work any more. This was one of the very few places > where (eq (frame-selected-window) (selected-window)) was nil, and this > "invariant" is presumed at various places in the C code, so it was > a bug. > > BTW, this worked in Emacs<24.3 if you wanted to highlight every frame's > selected-window, but not if you wanted to highlight "the one and only > selected-window". For single-frame settings, there's no difference, > of course. > > There is no alternative, yet. We should probably provide some ad-hoc > primitives (call them maybe display-selected-window and > display-frame-selected-window) which return something like "the window > that was selected when we entered redisplay". > > > Stefan > FWIW, the below seems to be working, although it still feels like an omission. Evgeni (defvar user-selected-window nil) (defun register-user-location () (setq user-selected-window (selected-window))) (add-hook 'post-command-hook 'register-user-location) (setq-default mode-line-format '(:eval (if (eq user-selected-window (selected-window)) "selected" "not-selected")))