Subject: 23.3; Time to use a different binding for completion?

From: Reuben Thomas <[email-masked]>
Date: Wed, 13 Apr 2011 18:26:15 +0100

Emacs binds various completion functions to M-Tab, which is already used
by many window managers, including Compiz and Metacity, i.e. the WMs one
is likely to use on a modern GNU system, for switching between open
windows.

Is it therefore time to admit defeat and find an alternative binding for
completion functions, even if it’s an extra binding rather than simply a
different one?

In GNU Emacs 23.3.2 (i686-pc-linux-gnu, GTK+ Version 2.22.0)
 of 2011-03-02 on canta
Windowing system distributor `The X.Org Foundation', version 11.0.10900000
Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Javascript/nxhtml

Minor modes in effect:
  nxml-where-marks: t
  nxml-where-tag+id: t
  nxml-where-header: t
  shell-dirtrack-mode: t
  show-paren-mode: t
  savehist-mode: t
  minibuffer-electric-default-mode: t
  iswitchb-mode: t
  icomplete-mode: t
  global-whitespace-mode: t
  global-auto-revert-mode: t
  nxhtml-menu-mode: t
  nxhtml-tag-do-also: t
  popcmp-group-alternatives: t
  popcmp-short-help-beside-alts: t
  mlinks-active-links: t
  rngalt-minimal-validation-header: t
  rngalt-display-validation-header: t
  desktop-save-mode: t
  flyspell-mode: t
  recentf-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
t m l - w e b - <tab> <backspace> <backspace> <backspace> 
<backspace> <tab> v c <tab> s <tab> <backspace> <backspace> 
<backspace> <backspace> <backspace> <backspace> <backspace> 
<backspace> <backspace> C-g <down-mouse-1> <mouse-1> 
M-x w e b - c v s - <backspace> <backspace> <backspace> 
<backspace> v b <backspace> c s <tab> n x <tab> <return> 
3 y C-c C-c C-c C-c C-c C-c C-c C-c C-c C-c C-c C-c 
C-x 0 <help-echo> <help-echo> <help-echo> <help-echo> 
<help-echo> <help-echo> <down-mouse-1> <mouse-1> <help-echo> 
<down-mouse-1> <mouse-1> C-x b n i n <backspace> <backspace> 
<backspace> i n d e <return> <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> <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> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <up> <up> <up> <up> <up> <up> 
<up> <up> <up> <help-echo> <down-mouse-1> <mouse-1> 
<left> <left> M-x x m <backspace> <backspace> n x m 
l = - c o m <backspace> <backspace> <backspace> <backspace> 
- <backspace> <backspace> - c o m p l e t e <return> 
C-g <down-mouse-1> <mouse-movement> <mouse-movement> 
<drag-mouse-1> <down-mouse-1> <mouse-1> C-x 1 M-x <up> 
<return> <down-mouse-1> <mouse-1> M-x <up> <return> 
<down-mouse-1> <mouse-1> y <help-echo> <down-mouse-1> 
<mouse-1> M-< <down-mouse-1> <mouse-1> M-x r e p o 
r t = - b <backspace> <backspace> - <backspace> <backspace> 
- e m a c s - b u g <return>

Recent messages:
XHTML validation header that sets the DTD to XHTML.  This will
not be inserted in the buffer but completion and XHTML validation
will assume it is there so both error checking and completion
will work.

Do you want to add a fictive XHTML validation header? (y or n) 
No alternative found
Using vacuous schema [3 times]
Mark set
Using vacuous schema

Load-path shadows:
/home/rrt/local/share/emacs/nxhtml/util/rnc-mode hides /usr/share/emacs-snapshot/site-lisp/rnc-mode/rnc-mode
/home/rrt/local/share/emacs/nxhtml/related/php-mode hides /home/rrt/local/share/emacs/site-lisp/php-mode
/home/rrt/local/share/emacs/nxhtml/related/csharp-mode hides /home/rrt/local/share/emacs/site-lisp/csharp-mode
/home/rrt/local/share/emacs/site-lisp/popup hides /usr/local/share/emacs/23.3/site-lisp/auto-complete/popup
/home/rrt/local/share/emacs/site-lisp/fuzzy hides /usr/local/share/emacs/23.3/site-lisp/auto-complete/fuzzy
/home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/local/share/emacs/23.3/site-lisp/css-mode/css-mode
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/link hides /usr/local/share/emacs/23.3/site-lisp/dictionary-el/link
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/connection hides /usr/local/share/emacs/23.3/site-lisp/dictionary-el/connection
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary-init hides /usr/local/share/emacs/23.3/site-lisp/dictionary-el/dictionary-init
/home/rrt/.emacs.d/elpa/dictionary-1.8.7/dictionary hides /usr/local/share/emacs/23.3/site-lisp/dictionary-el/dictionary
/home/rrt/local/share/emacs/site-lisp/dict hides /usr/local/share/emacs/23.3/site-lisp/emacs-goodies-el/dict
/home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/local/share/emacs/23.3/lisp/textmodes/css-mode
/usr/share/emacs-snapshot/site-lisp/ruby1.8-elisp/ruby-mode hides /usr/local/share/emacs/23.3/lisp/progmodes/ruby-mode
/home/rrt/.emacs.d/elpa/css-mode-1.0/css-mode hides /usr/share/emacs/site-lisp/css-mode/css-mode
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-info hides /usr/share/emacs/site-lisp/auctex/tex-info
/usr/local/share/emacs/23.3/site-lisp/auctex/context-nl hides /usr/share/emacs/site-lisp/auctex/context-nl
/usr/local/share/emacs/23.3/site-lisp/auctex/context-en hides /usr/share/emacs/site-lisp/auctex/context-en
/usr/local/share/emacs/23.3/site-lisp/auctex/latex hides /usr/share/emacs/site-lisp/auctex/latex
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-mik hides /usr/share/emacs/site-lisp/auctex/tex-mik
/usr/local/share/emacs/23.3/site-lisp/dictionary-el/lpath hides /usr/share/emacs/site-lisp/auctex/lpath
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-buf hides /usr/share/emacs/site-lisp/auctex/tex-buf
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-jp hides /usr/share/emacs/site-lisp/auctex/tex-jp
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-bar hides /usr/share/emacs/site-lisp/auctex/tex-bar
/usr/local/share/emacs/23.3/site-lisp/auctex/tex hides /usr/share/emacs/site-lisp/auctex/tex
/usr/local/share/emacs/23.3/site-lisp/auctex/multi-prompt hides /usr/share/emacs/site-lisp/auctex/multi-prompt
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-fptex hides /usr/share/emacs/site-lisp/auctex/tex-fptex
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-font hides /usr/share/emacs/site-lisp/auctex/tex-font
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-fold hides /usr/share/emacs/site-lisp/auctex/tex-fold
/usr/local/share/emacs/23.3/site-lisp/auctex/texmathp hides /usr/share/emacs/site-lisp/auctex/texmathp
/usr/local/share/emacs/23.3/site-lisp/auctex/context hides /usr/share/emacs/site-lisp/auctex/context
/usr/local/share/emacs/23.3/site-lisp/auctex/font-latex hides /usr/share/emacs/site-lisp/auctex/font-latex
/usr/local/share/emacs/23.3/site-lisp/auctex/bib-cite hides /usr/share/emacs/site-lisp/auctex/bib-cite
/usr/local/share/emacs/23.3/site-lisp/auctex/toolbar-x hides /usr/share/emacs/site-lisp/auctex/toolbar-x
/usr/local/share/emacs/23.3/site-lisp/auctex/tex-style hides /usr/share/emacs/site-lisp/auctex/tex-style

Features:
(shadow sort mail-extr emacsbug zencoding-mode whelp wid-browse
viper-tut useful-commands tyda tabkey2 sml-modeline sex-mode search-form
rxi rebind pointback pause org-panel ocr-user new-key-seq-widget n-back
winsize ourcomments-widgets winsav windmove trace mumamo-regions
ps-print ps-def lpr mumamo-aspnet markchars key-cat inlimg idn
html-write hl-needed vline hl-line hfyview gpl ediff-url custsets
cus-new-user css-simple-completion css-palette chartg buffer-bg
as-external wrap-to-fill anchored-transpose wikipedia-mode tutorial
visual-basic-mode tt-mode smarty-mode hippie-exp add-log mozadd
iss-mumamo iss-mode flymu flymakemsg flymake-java-1 flymake-helpers
flymake-css django csharp-mode outline-magic nxml-where nxhtml-js
nxhtml-strval nxhtml-bug html-wtoc html-move html-chklnk autostart22
nxhtmlmaint message sendmail ecomplete rfc822 mml mml-sec mailabbrev
nnheader gmm-utils mailheader canlock sha1 hex-util hashcash 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-agenda org-info org-gnus org-bibtex
org-bbdb parse-time timezone mail-utils url-cache nxhtml-web-vcs
jka-compr autoconf autoconf-mode vc-git css-mode js json thingatpt
newcomment nxml-uchnm rng-xsd xsd-regexp rng-cmpct face-remap filladapt
nxhtml-mumamo mumamo-fun nxhtml completing-help ange-ftp tramp-imap
tramp-gw tramp-fish tramp-smb tramp-cache tramp-ftp tramp-cmds tramp
auth-source shell password-cache format-spec tramp-compat trampver paren
savehist minibuf-eldef iswitchb icomplete whitespace autorevert time
server nxhtml-autostart nxhtml-autoload moz majmodpri rnc-mode
nxhtml-menu udev-rinari udev-ecb udev flymake-js flymake css-color
nxhtml-mode html-quote tidy-xhtml ediff-merg ediff-diff ediff-wind
ediff-help ediff-util ediff-mult ediff-init ediff html-imenu imenu
loadhist popcmp xhtml-help mlinks html-toc xml fupd html-pagetoc foldit
appmenu-fold appmenu mumamo sgml-mode rngalt rng-nxml nxml-mode
nxml-outln nxml-rap nxml-glyph rng-valid rng-loc rng-uri rng-parse
nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-util
nxml-enc xmltok desktop help-mode view flyspell fold-dwim hideshow
html-upl html-site ourcomments-util uniquify recentf tree-widget org
byte-opt warnings org-footnote org-src org-list org-faces org-compat
org-macs noutline outline ido bookmark pp apropos grep ffip gimpedit
dired web-vcs bytecomp byte-compile rx url-http tls url url-proxy
url-privacy url-expand url-methods url-history url-auth url-cookie
url-util url-parse url-gw url-vars mm-decode gnus-util netrc mm-bodies
mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums
mm-util time-date mail-prsvr cus-edit cus-start cus-load wid-edit
compile web-autoload nxhtml-base php-mode etags cc-langs cc-mode
cc-fonts cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
speedbar sb-image ezimage dframe lua-mode regexp-opt comint ring
ropemacs pymacs smart-quotes ffap ispell auto-dictionary-autoloads
c-eldoc-autoloads css-mode-autoloads dictionary-autoloads
diff-git-autoloads dired-isearch-autoloads full-ack-autoloads
guess-style-autoloads javascript-autoloads kill-ring-search-autoloads
lambdacalc-autoloads magit-autoloads mv-shell-autoloads tumble-autoloads
http-post-simple-autoloads package reporter advice advice-preload
yasnippet help-fns derived edmacro kmacro easymenu assoc cl cl-19
muse-autoloads emacs-goodies-el emacs-goodies-custom
emacs-goodies-loaddefs easy-mmode bbdb-autoloads 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 system-font-setting
font-render-setting gtk x-toolkit x multi-tty emacs)

-- 
http://rrt.sc3d.org/