Subject: bug#22380: 24.5; erc doesn't handle the ! prefix

From: David Edmondson <[email-masked]>
Date: Fri, 15 Jan 2016 16:49:19 +0000

Connect to a new IRC server at $employer (over SSL using built-in
gnutls, but that doesn't seem relevant).

See the errors (copied from the *Messages* buffer):

error in process filter: erc-channel-receive-names: Unknown prefix char `33'
error in process filter: Unknown prefix char `33'

Examining the code, `erc-channel-receive-names' is trying to map prefix
characters on the name to particular user capabilities. The set of
allowed prefixes can be read from the server by `erc-parse-prefix'. In
this case, the server is returning:
	"(yqaohvV)!~&@%+-"

One of the users in a joined channel has the !/y prefix.

`erc-channel-receive-names' doesn't know about the !/y prefix, so it
emits an error at line 4793:
			(_ (error "Unknown prefix char `%S'" ch) voice))

It would be preferable if this was simply a notice rather than an error
(or even silent). Adding support for the !/y prefix would also be great,
but this problem would just re-arise if another currently unknown prefix
is added by a server.

Thanks for emacs!

In GNU Emacs 24.5.1 (x86_64-apple-darwin15.0.0, NS apple-appkit-1404.11)
 of 2015-10-05 on heart-of-gold
Windowing system distributor `Apple', version 10.3.1404
Configured using:
 `configure --prefix=/usr/local/Cellar/emacs/24.5
 --enable-locallisppath=/usr/local/share/emacs/site-lisp
 --infodir=/usr/local/Cellar/emacs/24.5/share/info/emacs --with-xml2
 --without-dbus --with-gnutls --with-imagemagick --with-ns
 --disable-ns-self-contained'

Important settings:
  locale-coding-system: utf-8-unix

Major mode: Emacs-Lisp

Minor modes in effect:
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  shell-dirtrack-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-spelling-mode: t
  erc-ring-mode: t
  erc-netsplit-mode: t
  erc-match-mode: t
  erc-list-mode: t
  erc-fill-mode: t
  erc-pcomplete-mode: t
  erc-autojoin-mode: t
  erc-stamp-mode: t
  erc-irccontrols-mode: t
  erc-noncommands-mode: t
  erc-keep-place-mode: t
  erc-move-to-prompt-mode: t
  auto-revert-mode: t
  diff-auto-refine-mode: t
  show-paren-mode: t
  pdf-occur-global-minor-mode: t
  paredit-mode: t
  winner-mode: t
  ido-vertical-mode: t
  ido-everywhere: t
  eldoc-mode: t
  override-global-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-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:
Auto-saving...done
Window Switching Mode On...
Window Switching Mode Off.
Window Switching Mode On...
Window Switching Mode Off.
Window Switching Mode On...
Window Switching Mode Off.
Window Switching Mode On...
Window Switching Mode Off.
Undo!

Load-path shadows:
/Users/dme/.emacs.d/elpa/let-alist-1.0.4/let-alist hides /usr/local/share/emacs/site-lisp/let-alist/let-alist
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-virtual hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-virtual
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-view hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-view
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-util hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-util
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-tools hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-tools
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-sync hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-sync
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-outline hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-outline
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-occur hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-occur
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-misc hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-misc
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-links hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-links
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-isearch hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-isearch
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-info hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-info
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-history hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-history
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-dev hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-dev
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-cache hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-cache
/Users/dme/.emacs.d/elpa/pdf-tools-20151224.1159/pdf-annot hides /usr/local/share/emacs/site-lisp/pdf-tools/pdf-annot
/Users/dme/.emacs.d/elpa/tablist-20150618.2218/tablist hides /usr/local/share/emacs/site-lisp/tablist/tablist
/Users/dme/.emacs.d/elpa/tablist-20150618.2218/tablist-filter hides /usr/local/share/emacs/site-lisp/tablist/tablist-filter
/Users/dme/.emacs.d/elpa/emms-20151211.1153/tq hides /usr/local/Cellar/emacs/24.5/share/emacs/24.5/lisp/emacs-lisp/tq

Features:
(shadow emacsbug cal-move view tramp-cmds conf-mode man dired-x
pcmpl-unix linum magit-blame magit-stash magit-bisect magit-remote
magit-commit magit-sequence magit magit-apply magit-wip magit-log
magit-diff smerge-mode magit-core magit-process magit-popup magit-mode
magit-git magit-section magit-utils git-commit log-edit pcvs-util
add-log with-editor async-bytecomp async tramp-sh dash eieio-opt
speedbar sb-image ezimage dframe debug mingus libmpdee tabify image-file
erc-log sendmail parse-time sort org-table org-element org-indent
org-rmail org-mhe org-irc org-info org-gnus org-docview doc-view
org-bibtex bibtex org-bbdb org-w3m org-notmuch org-protocol org-capture
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 org-list org-faces org-entities 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 find-func company-files
company-oddmuse company-keywords company-etags etags company-gtags
company-dabbrev-code company-dabbrev company-capf company-cmake
company-xcode company-clang company-semantic company-eclim
company-template company-css company-nxml company-bbdb company pcase
mail-extr win-switch windmove gnutls ruby-mode help-mode sh-script smie
executable dired-aux tramp-cache tramp tramp-compat tramp-loaddefs
trampver shell network-stream starttls tls erc-track erc-spelling
erc-ring erc-netsplit erc-match erc-list erc-fill erc-pcomplete
pcomplete erc-join erc-stamp erc-goodies erc erc-backend erc-compat
vc-git autorevert filenotify smex shr-color color url-util url-parse
auth-source gnus-util url-vars mm-archive misearch multi-isearch shr
browse-url notmuch-config notmuch hl-line notmuch-message
notmuch-maildir-fcc notmuch-tree notmuch-show notmuch-print
notmuch-crypto notmuch-wash diff-mode coolj notmuch-query goto-addr
icalendar diary-lib diary-loaddefs cal-menu calendar cal-loaddefs
notmuch-tag crm server paren pdf-occur ibuf-ext ibuffer tablist
tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw eieio eieio-core mode-local cedet
pdf-isearch let-alist pdf-misc imenu pdf-tools compile comint ansi-color
cus-edit cus-start cus-load pdf-view mule-util bookmark pp jka-compr
pdf-cache pdf-info tq pdf-util image-mode cl-macs notmuch-jump
notmuch-hello notmuch-mua notmuch-address notmuch-company notmuch-parser
wid-edit notmuch-lib cl gv mm-view mml-smime smime password-cache dig
mailcap message idna format-spec rfc822 mml mml-sec mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mm-util
mail-prsvr mailabbrev mail-utils gmm-utils mailheader footnote cc-mode
cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars
cc-defs markdown-mode thingatpt noutline outline paredit flyspell ispell
git-annex byte-opt advice winner ring ido-vertical-mode ido finder-inf
eldoc help-fns edmacro kmacro dired exec-path-from-shell use-package
diminish bytecomp byte-compile cl-extra cconv bind-key easy-mmode
cl-loaddefs cl-lib tex-site info easymenu package epg-config time-date
tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
ns-win 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
cocoa ns multi-tty emacs)

Memory information:
((conses 16 561789 76675)
 (symbols 48 53884 0)
 (miscs 40 2529 5293)
 (strings 32 144618 19496)
 (string-bytes 1 4207350)
 (vectors 16 58417)
 (vector-slots 8 1687920 55023)
 (floats 8 761 1110)
 (intervals 56 21321 1465)
 (buffers 960 122))