Subject: bug#5919: 24.0.50; Feature request:winner-boring-buffer-regexp

From: Thierry Volpiatto <[email-masked]>
Date: Sat, 10 Apr 2010 08:58:44 +0200

Hi,
winner-boring-buffers accept only buffers names (it use member to parse
the list).
It would be nice to have a winner-boring-buffer-regexp in addition:

Example:(in my .emacs)

,----
| (defvar winner-boring-buffers-regexp "\*[aA]nything.*\\|\*xhg.*")
| (defalias 'winner-set 'winner-set1)
| (defun winner-set1 (conf)
|   ;; For the format of `conf', see `winner-conf'.
|   (let* ((buffers nil)
| 	 (alive
|           ;; Possibly update `winner-point-alist'
| 	  (loop for buf in (mapcar 'cdr (cdr conf))
| 		for pos = (winner-get-point buf nil)
| 		if (and pos (not (memq buf buffers)))
| 		do (push buf buffers)
| 		collect pos)))
|     (winner-set-conf (car conf))
|     (let (xwins)                        ; to be deleted
| 
|       ;; Restore points
|       (dolist (win (winner-sorted-window-list))
|         (unless (and (pop alive)
|                      (setf (window-point win)
|                            (winner-get-point (window-buffer win) win))
| ,----
| |                      (not (or (member (buffer-name (window-buffer win))
| |                                       winner-boring-buffers)
| |                               (string-match winner-boring-buffers-regexp
| |                                             (buffer-name (window-buffer win))))))
| `----
|           (push win xwins)))            ; delete this window
| 
|       ;; Restore marks
|       (letf (((current-buffer)))
| 	(loop for buf in buffers
| 	      for entry = (cadr (assq buf winner-point-alist))
| 	      do (progn (set-buffer buf)
| 			(set-mark (car entry))
| 			(setf (winner-active-region) (cdr entry)))))
|       ;; Delete windows, whose buffers are dead or boring.
|       ;; Return t if this is still a possible configuration.
|       (or (null xwins)
| 	  (progn
|             (mapc 'delete-window (cdr xwins)) ; delete all but one
|             (unless (one-window-p t)
|               (delete-window (car xwins))
|               t))))))
`----

In GNU Emacs 24.0.50.1 (i686-pc-linux-gnu, GTK+ Version 2.18.9)
 of 2010-04-01 on tux
Windowing system distributor `The X.Org Foundation', version 11.0.10605000
configured using `configure  '--prefix=/usr' '--build=i686-pc-linux-gnu' '--host=i686-pc-linux-gnu' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' '--program-suffix=-emacs-24' '--infodir=/usr/share/info/emacs-24' '--with-sound' '--with-x' '--without-gconf' '--without-toolkit-scroll-bars' '--with-gif' '--with-jpeg' '--with-png' '--with-rsvg' '--with-tiff' '--with-xpm' '--with-xft' '--without-libotf' '--without-m17n-flt' '--with-x-toolkit=gtk' '--without-hesiod' '--without-kerberos' '--without-kerberos5' '--with-gpm' '--with-dbus' 'build_alias=i686-pc-linux-gnu' 'host_alias=i686-pc-linux-gnu' 'CFLAGS=-march=i686 -pipe -O2' 'LDFLAGS=-Wl,-O1''

Important settings:
  value of $LC_ALL: C
  value of $LC_COLLATE: C
  value of $LC_CTYPE: fr_FR.UTF-8
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: fr_FR.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  global-undo-tree-mode: t
  undo-tree-mode: t
  eldoc-mode: t
  delete-selection-mode: t
  minibuffer-depth-indicate-mode: t
  auto-image-file-mode: t
  shell-dirtrack-mode: t
  partial-completion-mode: t
  show-paren-mode: t
  display-battery-mode: t
  display-time-mode: t
  diff-auto-refine-mode: t
  savehist-mode: t
  desktop-save-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-n C-n C-n C-n C-n C-n C-w <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <down> 
<down> <down> <down> <down> <down> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <up> <up> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<return> C-y C-x C-f C-g C-x C-s C-c <left> C-c <right> 
C-x C-b C-g C-c <left> C-c <right> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <right> <right> <right> 
<right> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <down> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
<left> <left> <left> C-SPC C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n 
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-x r s a C-g C-x 
C-s M-x r e p o r t - <return>

Recent messages:
Wrote /home/thierry/.emacs.d/emacs-config-laptop/.emacs.el
Winner undo (1 / 21)
Winner undid undo

Winner undo (1 / 21)
Winner undid undo
Mark set
Quit
(No changes need to be saved)

Load-path shadows:
/home/thierry/elisp/lua-mode/lua-mode hides /usr/share/emacs/site-lisp/lua-mode/lua-mode
~/elisp/g-client/json hides /usr/share/emacs/24.0.50/lisp/json
/usr/share/emacs/site-lisp/flim/hex-util hides /usr/share/emacs/24.0.50/lisp/hex-util
/usr/share/emacs/site-lisp/flim/sha1 hides /usr/share/emacs/24.0.50/lisp/sha1
/usr/share/emacs/site-lisp/flim/md4 hides /usr/share/emacs/24.0.50/lisp/md4
/usr/share/emacs/site-lisp/flim/ntlm hides /usr/share/emacs/24.0.50/lisp/net/ntlm
/usr/share/emacs/site-lisp/flim/hmac-def hides /usr/share/emacs/24.0.50/lisp/net/hmac-def
/usr/share/emacs/site-lisp/flim/sasl-digest hides /usr/share/emacs/24.0.50/lisp/net/sasl-digest
/usr/share/emacs/site-lisp/flim/sasl hides /usr/share/emacs/24.0.50/lisp/net/sasl
/usr/share/emacs/site-lisp/flim/hmac-md5 hides /usr/share/emacs/24.0.50/lisp/net/hmac-md5
/usr/share/emacs/site-lisp/flim/sasl-cram hides /usr/share/emacs/24.0.50/lisp/net/sasl-cram
/usr/share/emacs/site-lisp/flim/sasl-ntlm hides /usr/share/emacs/24.0.50/lisp/net/sasl-ntlm
/home/thierry/elisp/emms/lisp/tq hides /usr/share/emacs/24.0.50/lisp/emacs-lisp/tq

Features:
(shadow emacsbug align em-unix em-script em-prompt em-ls em-hist em-pred
em-glob em-dirs em-cmpl em-basic esh-opt em-banner em-alias esh-var
esh-io esh-cmd esh-ext esh-proc esh-groups eshell esh-module esh-mode
flow-fill epa-mail gnus-fun animate nxml-uchnm rng-xsd xsd-regexp
rng-cmpct rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse
rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln
nxml-rap nxml-util nxml-glyph nxml-enc xmltok cal-julian w3m-antenna
w3m-rss w3m-form w3m-tabmenu w3m-session gnus-cite smiley qp gnus-ml
w3m-cookie sb-emacswiki sb-rss url-cache url-handlers nnrss parse-time
nnfolder nnml nndraft nnmh bbdb-gnus bbdb-snarf mail-extr gnus-agent
gnus-srvr gnus-score score-mode nnvirtual gnus-cache gnus-demon
gnus-namazu gnus-dired nnshimbun shimbun luna eword-encode eword-decode
std11 mel path-util mime-def mcharset mcs-20 mcs-e20 pces pces-e20
pces-20 broken pcustom poe gnus-bcklg spam spam-stat gnus-uu yenc
gnus-msg gnus-alias help-mode view sh-script vc-rcs xhg-dvc xhg
xhg-annotate xhg-mq xhg-log tla smerge-mode dvc-state dvc-config
dvc-diff dvc-fileinfo diff dvc-cmenu dvc-about dvc-version dvc-revlist
uniquify align-let bzr-core cg-core xdarcs-core xgit-core xhg-core
xmtn-minimal server el-expectations el-mock csv2org iedit eieio
zop-to-char wave-list wave-display wave-client json netrc g g-cus-load
elscreen-server elscreen-dired elscreen-w3m mule-util alist pym static
apel-ver product elscreen undo-tree smallurl mm-url xml-weather
rectangle-utils windmove sdcv woof screenshot auto-document eiv tv-utils
eldoc pcvs pcvs-parse pcvs-info pcvs-defs showtip delsel
init-anything-thierry descbinds-anything anything-ipython ipython
executable anything-grep grep anything-dabbrev-expand dabbrev
shell-history anything-complete anything-show-completion anything-etags
anything-match-plugin etags anything-traverse anything-delicious
anything-mercurial anything-config w3m-bookmark rx anything
firefox-protocol bookmark-firefox-handler bookmark-extensions bookmark
install-elisp find-func mb-depth autodoc ioccur traverselisp thumb-page
moz stumpwm-mode cl-info slime-banner slime-tramp slime-asdf slime-fancy
slime-fontifying-fu slime-package-fu slime-references slime-xref-browser
slime-scratch slime-presentations slime-highlight-edits slime-fuzzy
slime-fancy-inspector slime-c-p-c slime-editing-commands slime-autodoc
slime-parse slime-repl slime apropos hideshow hyperspec thingatpt
slime-autoloads bbdb-autoloads bbdb-gui bbdb-com bbdb boxquote rect
image-file tramp-imap tramp-gw tramp-fish tramp-smb tramp-cache
tramp-ftp tramp-cmds tramp shell tramp-compat trampver complete
newsticker newst-treeview tree-widget newst-plainview newst-reader
newst-ticker newst-backend ledger pcomplete esh-arg esh-util extview lpr
woman man assoc two-column shell-command em-term term ehelp electric
esh-toggle em-xtra dirtrack flymake pdbtrack pycomplete python-mode
info-look ansi-color pymacs no-word regex-tool whitespace htmlfontify
text-translator-load paren battery time dired-tar compile comint
dired-extension image-dired dired-details yaoddmuse skeleton sgml-mode
emms-mpd-config emms-playlist-limit emms-volume emms-volume-amixer
emms-i18n emms-history emms-score emms-stream-info
emms-metaplaylist-mode emms-bookmarks emms-lastfm-client emms-cue
emms-mode-line-icon emms-browser sort emms-playlist-sort
emms-last-played emms-player-xine emms-player-mpd tq emms-playing-time
emms-lyrics emms-url emms-tag-editor emms-mark emms-mode-line emms-cache
emms-info-ogginfo emms-info-mp3info emms-playlist-mode emms-player-vlc
emms-player-mplayer emms-info emms-streams later-do emms-source-playlist
emms-source-file emms-player-simple emms-setup emms emms-compat winner
dvc-init bzr-gnus tla-gnus xgit-gnus xhg-gnus gnus-art mm-uu mml2015
mm-view smime password-cache dig dvc-gnus tla-core pp tla-autoconf
tla-defs dvc-log vc vc-dispatcher dvc-unified dvc-tips dired-x dired-aux
ffap ediff-merg ediff-diff ediff-wind ediff-help ediff-util ediff-mult
ediff-init ediff dvc-autoloads dvc-core dvc-lisp dvc-buffers dvc-ui
dvc-register dvc-utils dvc-emacs ewoc dvc-defs dvc-site psvn log-edit
ring pcvs-util add-log diff-mode lisppaste-extension lisppaste xml-rpc
url-http tls url-auth url-gw xml htmlize-hack htmlize muse-colors
muse-docbook muse-texinfo texnfo-upd texinfo muse-latex muse-html
muse-xml-common muse-wiki cus-edit cus-start cus-load muse-publish
muse-project muse-protocols muse-regexps muse muse-nested-tags muse-mode
muse-autoloads org-config-thierry cal-china lunar solar cal-dst
cal-bahai cal-islam cal-hebrew holidays hol-loaddefs vc-hg org-wl
org-w3m org-vm org-rmail org-mhe org-mew org-irc org-jsinfo org-infojs
org-html org-exp org-exp-blocks org-info org-gnus org-bibtex org-bbdb
org-agenda appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs
org-annotation-helper url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-util url-parse url-vars mailcap remember
org-remember org-datetree org byte-opt bytecomp byte-compile
org-footnote org-src org-list org-faces org-compat org-macs noutline
outline config-w3m w3m browse-url doc-view jka-compr image-mode timezone
w3m-hist w3m-fb w3m-ems w3m-ccl ccl w3m-favicon w3m-image w3m-proc
w3m-util mime-w3m w3m-load savehist epa-file epa derived epg epg-config
auth-source dired gnus-async nntp gnus-sum nnoo gnus-group time-date
gnus-undo nnmail mail-source format-spec gnus-start gnus-spec gnus-int
gnus-range message sendmail regexp-opt rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev gmm-utils mailheader gnus-win gnus gnus-ems nnheader
gnus-util mail-utils mm-util mail-prsvr wid-edit info easymenu
usage-memo desktop midnight punycode idna mybest-theme edmacro kmacro
eev-thierry iterator eev-all eev-mini-steps eev-browse-url eev-langs
eev-compose eev-glyphs disp-table eev-insert eev-steps eev-bounded eev
easy-mmode advice help-fns advice-preload cl cl-19 site-gentoo w3m-wget
preview-latex tex-site auto-loads tooltip ediff-hook vc-hooks
lisp-float-type mwheel x-win x-dnd font-setting tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev loaddefs button minibuffer faces cus-face files
text-properties overlay md5 base64 format env code-pages mule custom
widget hashtable-print-readable backquote make-network-process dbusbind
font-render-setting gtk x-toolkit x multi-tty emacs)

-- 
Thierry Volpiatto
Gpg key: http://pgp.mit.edu/