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

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 16 Mar 2015 18:50:04 +0000

Your bug report

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

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
20116: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20116
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#20116: 24.4.91; [PATCH]Don't use iswitchb in erc.
From: Stefan Monnier <[email-masked]>
To: Thierry Volpiatto <[email-masked]>
Cc: [email-masked]
Date: Mon, 16 Mar 2015 14:49:25 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

> IOW you suggest using something that doesn't exists yet, sorry, but this
> is out of my scope, well you have my patch "A titre informatif" in case
> somebody wants to make this change (I personally don't use erc, but I
> have users that do use it).

I believe it's now done,

        Stefan

Subject: 24.4.91; [PATCH]Don't use iswitchb in erc.
From: Thierry Volpiatto <[email-masked]>
To: [email-masked]
Date: Mon, 16 Mar 2015 08:45:32 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

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