Subject: bug#20116: 24.4.91; [PATCH]Don't use iswitchb in erc.

From: Thierry Volpiatto <[email-masked]>
Date: Mon, 16 Mar 2015 08:45:32 +0100

Hi,

erc is still using iswitchb which is deprecated, thus using this
directly does not allow other packages (at least helm) to use their own
completion.
Using completing-read allow ido user to use ido, helm users helm etc...

8c03a0e7352eeb3e40d94897623a5ce5d68a0789 HEAD erc_no_iswitchb
Author: Thierry Volpiatto <[email-masked]>
Date:   Mon Mar 16 08:37:59 2015 +0100

    Don't use iswitchb in erc.
    
    * lisp/erc/erc.el (erc-switch-to-buffer): Renamed from erc-iswitchb.
    Use completing-read.
    (erc-mode-map): Bind it.

1 file changed, 13 insertions(+), 31 deletions(-)
 lisp/erc/erc.el | 44 +++++++++++++-------------------------------

	Modified   lisp/erc/erc.el
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index a84f9f0..e76becd 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1110,7 +1110,7 @@ which the local user typed."
     (define-key map "\C-a" 'erc-bol)
     (define-key map [home] 'erc-bol)
     (define-key map "\C-c\C-a" 'erc-bol)
-    (define-key map "\C-c\C-b" 'erc-iswitchb)
+    (define-key map "\C-c\C-b" 'erc-switch-to-buffer)
     (define-key map "\C-c\C-c" 'erc-toggle-interpret-controls)
     (define-key map "\C-c\C-d" 'erc-input-action)
     (define-key map "\C-c\C-e" 'erc-toggle-ctcp-autoresponse)
@@ -1697,40 +1697,22 @@ nil."
        ;; a variable.
        res)))
 
-;; (iswitchb-mode) will autoload iswitchb.el
-(defvar iswitchb-temp-buflist)
-(declare-function iswitchb-read-buffer "iswitchb"
-                  (prompt &optional default require-match start matches-set))
-(defvar iswitchb-make-buflist-hook)
-
-(defun erc-iswitchb (&optional arg)
-  "Use `iswitchb-read-buffer' to prompt for a ERC buffer to switch to.
+(defun erc-switch-to-buffer (&optional arg)
+  "Prompt for a ERC buffer to switch to.
 When invoked with prefix argument, use all erc buffers.  Without prefix
 ARG, allow only buffers related to same session server.
 If `erc-track-mode' is in enabled, put the last element of
-`erc-modified-channels-alist' in front of the buffer list.
-
-Due to some yet unresolved reason, global function `iswitchb-mode'
-needs to be active for this function to work."
+`erc-modified-channels-alist' in front of the buffer list."
   (interactive "P")
-  (let ((enabled (bound-and-true-p iswitchb-mode)))
-    (or enabled (iswitchb-mode 1))
-    (unwind-protect
-        (let ((iswitchb-make-buflist-hook
-               (lambda ()
-                 (setq iswitchb-temp-buflist
-                       (mapcar 'buffer-name
-                               (erc-buffer-list
-                                nil
-                                (when arg erc-server-process)))))))
-          (switch-to-buffer
-           (iswitchb-read-buffer
-            "Switch-to: "
-            (if (boundp 'erc-modified-channels-alist)
-                (buffer-name (caar (last erc-modified-channels-alist)))
-              nil)
-            t)))
-      (or enabled (iswitchb-mode -1)))))
+  (switch-to-buffer
+   (completing-read "Switch-to: "
+                    (mapcar 'buffer-name
+                            (erc-buffer-list
+                             nil
+                             (when arg erc-server-process)))
+                    nil t nil nil
+                    (when (boundp 'erc-modified-channels-alist)
+                      (buffer-name (caar (last erc-modified-channels-alist)))))))  
 
 (defun erc-channel-list (proc)
   "Return a list of channel buffers.

In GNU Emacs 24.4.91.1 (x86_64-unknown-linux-gnu, X toolkit)
 of 2015-03-12 on dell-14z
Repository revision: b21a56ac91e39e75051ad07bb608c39af057adee
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description:	Ubuntu 14.04.2 LTS

Configured using:
 `configure --with-x-toolkit=lucid --without-toolkit-scroll-bars
 --without-gconf --without-gsettings'

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  magit-auto-revert-mode: t
  erc-list-mode: t
  erc-menu-mode: t
  erc-autojoin-mode: t
  erc-ring-mode: t
  erc-networks-mode: t
  erc-pcomplete-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-match-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-stamp-mode: t
  erc-netsplit-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-move-to-prompt-mode: t
  erc-readonly-mode: t
  diff-auto-refine-mode: t
  git-gutter-mode: t
  psession-mode: t
  golden-ratio-mode: t
  winner-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  auto-image-file-mode: t
  eldoc-in-minibuffer-mode: t
  show-paren-mode: t
  display-time-mode: t
  recentf-mode: t
  savehist-mode: t
  eldoc-mode: t
  minibuffer-depth-indicate-mode: t
  helm-descbinds-mode: t
  helm-mode: t
  shell-dirtrack-mode: t
  helm-adaptive-mode: t
  helm-match-plugin-mode: t
  helm-autoresize-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent messages:
Running git commit --
When done with a buffer, type C-c C-c
Type C-c C-c to commit (C-c C-k to abort).
Auto-saving...done
Saving file /home/thierry/labo/emacs/.git/COMMIT_EDITMSG...
Wrote /home/thierry/labo/emacs/.git/COMMIT_EDITMSG
Git finished
Type a prefix key to toggle it. Run 'actions' with their prefixes. '?' for more help.
Mark set
Saved text from "8c03a0e7352eeb3e40d94897623a5ce5d68a0789"

Load-path shadows:
/home/thierry/.emacs.d/elpa/emms-20150310.458/tq hides /usr/local/share/emacs/24.4.91/lisp/emacs-lisp/tq
~/elisp/auctex/lpath hides ~/elisp/emacs-wget/lpath

Features:
(shadow emacsbug magit-key-mode magit view help-mode autorevert
filenotify git-rebase-mode git-commit-mode log-edit add-log helm-ls-git
vc vc-dispatcher cl-indent helm-ring mail-extr helm-dabbrev epa-mail
smiley gnus-art mm-uu mml2015 mm-view mml-smime smime dig mule-util
network-stream starttls tls erc-list erc-menu erc-join erc-ring
erc-networks erc-pcomplete erc-track erc-match erc-button erc-fill
erc-stamp erc-netsplit erc-goodies erc erc-backend erc-compat
helm-command helm-elisp helm-eval package-build lisp-mnt org-element
org-rmail org-mhe org-irc org-info org-gnus org-docview org-bibtex
bibtex org-bbdb org-w3m sh-script smie executable conf-mode make-mode
cc-langs cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs markdown-mode vc-rcs diff-mode vc-git
naquadah-theme em-unix em-script em-prompt em-ls em-hist em-pred em-glob
em-dirs em-cmpl em-basic em-banner em-alias align-let git-gutter server
psession golden-ratio winner undo-tree diff slime-xref-browser
slime-banner slime-tramp slime-asdf slime-fancy slime-trace-dialog
slime-fontifying-fu slime-package-fu slime-references
slime-compiler-notes-tree slime-scratch slime-presentations bridge
slime-fuzzy slime-fancy-trace slime-fancy-inspector slime-c-p-c
slime-editing-commands slime-autodoc slime-repl slime-parse slime etags
arc-mode archive-mode image-file xdvi-search preview-latex tex-site
auto-loads pcomplete-extension pcmpl-unix pcmpl-gnu em-term term
disp-table ehelp python eldoc-eval warnings whitespace paren time
recentf tree-widget savehist mu4e-config org-mu4e helm-mu mu4e-contrib
mu4e mu4e-speedbar speedbar sb-image ezimage dframe mu4e-main mu4e-view
mu4e-headers mu4e-compose mu4e-draft mu4e-actions ido rfc2368 mu4e-mark
mu4e-message html2text mu4e-proc mu4e-utils mu4e-lists mu4e-about
mu4e-vars hl-line mu4e-meta gnus-dired nnir gnus-sum gnus-group
gnus-undo nnmail mail-source gnus-start gnus-spec gnus-int gnus-range
gnus-win nnoo config-w3m w3m-search w3m doc-view jka-compr image-mode
timezone w3m-hist w3m-fb bookmark-w3m w3m-ems w3m-ccl ccl w3m-favicon
w3m-image w3m-proc w3m-util smtpmail-async smtpmail sendmail dired-async
iterator lacarte iedit-rect iedit iedit-lib smallurl mm-url gnus
gnus-ems nnheader wid-edit rectangle-utils rect ledger-config ledger
esh-var esh-io esh-cmd esh-opt esh-ext esh-proc eldoc esh-groups eshell
esh-module esh-mode esh-arg esh-util tv-utils pcvs vc-cvs pcvs-parse
pcvs-info pcvs-defs pcvs-util ewoc mb-depth cl-info hyperspec esh-toggle
flymake no-word htmlize cl dired-extension emms-vlc-config
emms-librefm-stream emms-librefm-scrobbler emms-playlist-limit
emms-volume emms-volume-amixer emms-i18n emms-history emms-score
emms-stream-info emms-metaplaylist-mode emms-bookmarks 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 locate emms-player-simple emms-setup emms emms-compat
org-config-thierry ob-sh org-crypt appt diary-lib diary-loaddefs
org-annotation-helper addressbook-bookmark message rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045
ietf-drums mailabbrev mail-utils gmm-utils mailheader
bookmark-firefox-handler bookmark-extensions init-helm-thierry
helm-descbinds helm-extensions-autoloads helm-mode helm-files
image-dired tramp tramp-compat tramp-loaddefs trampver shell dired-x
dired-aux ffap thingatpt helm-buffers helm-elscreen helm-tags
helm-bookmark helm-adaptive helm-info bookmark pp helm-locate helm-help
helm-org org-location-google-maps org-agenda google-maps
google-maps-static google-maps-geocode google-maps-base json org
org-macro org-footnote org-pcomplete pcomplete org-list org-faces
org-entities noutline outline org-version ob-emacs-lisp ob ob-tangle
ob-ref ob-lob ob-table ob-exp org-src ob-keys ob-comint ob-core ob-eval
org-compat org-macs org-loaddefs format-spec find-func cal-menu calendar
cal-loaddefs helm-match-plugin helm-grep wgrep-helm wgrep helm-regexp
helm-plugin grep helm-external helm-net browse-url xml url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util url-parse url-vars mailcap helm-utils dired compile comint
ansi-color ring helm easy-mmode helm-source helm-config helm-autoloads
async-bytecomp async helm-aliases epa-file epa derived epg auth-source
eieio byte-opt bytecomp byte-compile cl-extra cconv eieio-core gnus-util
mm-util mail-prsvr password-cache cl-macs gv slime-autoloads package
epg-config time-date avoid cus-start cus-load w3m-wget info easymenu
edmacro kmacro advice help-fns net-utils cl-loaddefs cl-lib tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar 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 minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting font-render-setting x-toolkit x
multi-tty emacs)

Memory information:
((conses 16 630268 48383)
 (symbols 48 67566 0)
 (miscs 40 2227 1485)
 (strings 32 178215 24587)
 (string-bytes 1 5234753)
 (vectors 16 68597)
 (vector-slots 8 1767252 27510)
 (floats 8 1828 1180)
 (intervals 56 7470 1145)
 (buffers 960 185)
 (heap 1024 62416 3341))
-- 
Thierry
Get my Gnupg key:
gpg --keyserver pgp.mit.edu --recv-keys 59F29997