Subject: 24.0.50; nxml mode binds completion to c-return

From: [email-masked]
Date: Mon, 02 Aug 2010 09:52:34 +0200

nxml mode does this:
  (define-key map [C-return] 'nxml-complete)

which isnt exactly a bug, but its annoying. Its annoying because mode
specific completions should go somewhere consistent, such as M-tab, a
binding which I dont like either, but at least most modes put their
completion functionality there.

Heres some further info from nxml mode:

,----
| nxml-bind-meta-tab-to-complete-flag is a variable defined in `nxml-mode.el'.
| Its value is nil
| 
| Documentation:
| *Non-nil means bind M-TAB in `nxml-mode-map' to `nxml-complete'.
| C-return will be bound to `nxml-complete' in any case.
| M-TAB gets swallowed by many window systems/managers, and
| `documentation' will show M-TAB rather than C-return as the
| binding for `nxml-complete' when both are bound.  So it's better
| to bind M-TAB only when it will work.
`----

So the mode expresses an opinion that c-return should always complete,
but m-tab not always complete. I think it should be the other way
around. Esc-tab always works in all window managers etc, and I also
think completion should be solved once and for all in the core of Emacs,
not left to various modes to opinionate about.

Ok, the real reason I find this infuriating is that I want to use
c-return for other-window, which is now very inconvenient. The keymaps
are already polluted enough.

In GNU Emacs 24.0.50.12 (i686-pc-linux-gnu, GTK+ Version 2.18.9)
 of 2010-06-26 on localhost.localdomain
Windowing system distributor `Fedora Project', version 11.0.10802000
configured using `configure  '--with-imagemagick''

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_US.utf8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  diff-auto-refine-mode: t
  yas/global-mode: t
  yas/minor-mode: t
  erc-truncate-mode: t
  erc-track-mode: t
  erc-track-minor-mode: t
  erc-spelling-mode: t
  erc-ring-mode: t
  erc-pcomplete-mode: t
  erc-netsplit-mode: t
  erc-log-mode: t
  erc-button-mode: t
  erc-fill-mode: t
  erc-autojoin-mode: t
  erc-autoaway-mode: t
  ido-everywhere: t
  eldoc-mode: t
  erc-stamp-mode: t
  erc-match-mode: t
  delete-selection-mode: t
  show-paren-mode: t
  erc-smiley-mode: t
  erc-irccontrols-mode: t
  recentf-mode: t
  senator-minor-mode: t
  which-function-mode: t
  semantic-mru-bookmark-mode: t
  semantic-idle-summary-mode: t
  semantic-idle-scheduler-mode: t
  semantic-decoration-mode: t
  semantic-highlight-func-mode: t
  semantic-stickyfunc-mode: t
  shell-dirtrack-mode: t
  tooltip-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-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent input:
<right> <right> <right> <right> <right> <right> <right> 
<right> <right> <right> <right> <down> <down> <down> 
<down> C-a <up> <up> <up> <up> M-% " u <return> " - 
<return> C-a M-% C-g M-s C-g M-s M-r C-a <C-right> 
<right> C-SPC <C-right> <C-right> <right> <left> <left> 
<left> <left> <left> <left> <left> <left> <left> <left> 
M-w C-a M-% C-y <return> C-y <backspace> - <return> 
! C-x C-s <prior> <prior> C-p C-p C-p C-p C-p C-p C-p 
C-p C-p C-p C-p C-a C-SPC C-p C-SPC C-n C-SPC C-M-x 
C-SPC <next> C-v C-v C-p M-x n a r r o SPC t SPC SPC 
r SPC <return> M-< C-x h M-x s o r t SPC l SPC <return> 
C-n C-n C-n C-n <down> <down> <up> <up> <up> <up> <up> 
<up> <up> <up> <up> <up> <down> <up> C-s C-w C-w C-w 
C-e C-SPC C-a C-s C-w C-a C-g C-SPC C-e C-a C-g C-SPC 
C-e C-s M-w C-z M-< <next> <prior> M-< C-SPC C-e C-s 
M-y C-g C-h k C-s <C-return> <C-return> <C-return> 
<C-return> <C-return> C-x o <C-return> C-h k <C-return> 
<C-return> C-x o <tab> <return> C-x C-w C-g C-x 1 <C-right> 
<C-right> <C-left> C-r C-w C-w C-r C-r C-r C-r <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <down> <down> <down> <down> <down> <down> 
<down> <down> <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> 
C-a C-SPC C-e M-w C-a M-x r e p o SPC r SPC e m SPC 
SPC b SPC <return>

Recent messages:
Quit
Type C-x 1 to delete the help window, C-M-v to scroll help.
Cannot complete in this context [6 times]
mouse-2, RET: find function's definition
uncompressing nxml-mode.el.gz...done
Loading semanticdb-file...done [2 times]
Quit
Mark saved where search started
Mark set
Making completion list... [2 times]

Load-path shadows:
~/.elisp/emms/lisp/jack hides /home/joakim/.elisp/jack
~/.emacs.d/predictive/tNFA hides /home/joakim/.elisp/tNFA
/home/joakim/.emacs.d/elpa/mediawiki-1.1/mediawiki hides /home/joakim/.elisp/mediawiki
~/.emacs.d/predictive/dict-tree hides /home/joakim/.elisp/dict-tree
~/.emacs.d/predictive/trie hides /home/joakim/.elisp/trie
/home/joakim/.emacs.d/elpa/clojure-mode-1.6/clojure-mode hides /home/joakim/.elisp/clojure-mode
~/.emacs.d/predictive/heap hides /home/joakim/.elisp/heap
~/.emacs.d/predictive/queue hides /home/joakim/.elisp/queue
/home/joakim/.emacs.d/elpa/slime-20091016/slime hides /home/joakim/.elisp/slime-2.0/slime
/home/joakim/.elisp/slime-2.0/tree-widget hides /home/joakim/.elisp/sclang/tree-widget
/home/joakim/.elisp/javascript-mode hides /home/joakim/.elisp/mdee/javascript-mode
/home/joakim/.elisp/tuareg-mode-1.45.0/camldebug hides /home/joakim/.elisp/caml/camldebug
/usr/local/share/emacs/site-lisp/bbdb-2.35/texinfo/infohack hides /usr/local/share/emacs/site-lisp/dvc/texinfo/infohack
/home/joakim/.elisp/edb/edb-1int-to-single hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/edb-1int-to-single
/home/joakim/.elisp/edb/db-isbn hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-isbn
/home/joakim/.elisp/edb/db-search hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-search
/home/joakim/.elisp/edb/edb-meta hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/edb-meta
/home/joakim/.elisp/edb/edb-t-human-names hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/edb-t-human-names
/home/joakim/.elisp/edb/edbcore hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/edbcore
/home/joakim/.elisp/edb/db-tagged hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-tagged
/home/joakim/.elisp/edb/db-rdb hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-rdb
/home/joakim/.elisp/edb/db-two-dbs hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-two-dbs
/home/joakim/.elisp/edb/db-nosetf hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-nosetf
/home/joakim/.elisp/edb/db-sort hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-sort
/home/joakim/.elisp/edb/edb-t-timedate1 hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/edb-t-timedate1
/home/joakim/.elisp/edb/database hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/database
/home/joakim/.elisp/edb/edb-t-places-usuk hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/edb-t-places-usuk
/home/joakim/.elisp/edb/db-oldnames hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-oldnames
/home/joakim/.elisp/dictionary-1.8.7/connection hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/connection
/home/joakim/.elisp/edb/db-lemacs hides /usr/local/share/emacs/site-lisp/edb-1.31/lisp/db-lemacs
/home/joakim/.elisp/elip hides /usr/local/share/emacs/site-lisp/elip-0.803/source/elip
/home/joakim/.elisp/regress hides /usr/local/share/emacs/site-lisp/jde/lisp/regress
/usr/local/share/emacs/site-lisp/ecb/ecb2/test hides /usr/local/share/emacs/site-lisp/cedet/semantic/tests/test
/home/joakim/.elisp/wisentjs/wisent-javascript-jv-wy hides /usr/local/share/emacs/site-lisp/cedet/semantic/wisent/wisent-javascript-jv-wy
/home/joakim/.elisp/elunit hides /usr/local/share/emacs/site-lisp/dvc/lisp/contrib/elunit
/home/joakim/.elisp/compile hides /usr/local/share/emacs/site-lisp/edb-1.31/examples/edbibtex/compile
/usr/local/share/emacs/site-lisp/emacs-planner/muse/examples/johnw/muse-init hides /usr/local/share/emacs/site-lisp/emacs-planner/muse/examples/mwolson/muse-init
/usr/local/share/emacs/site-lisp/cedet/speedbar/dframe hides /usr/local/share/emacs/24.0.50/lisp/dframe
/usr/local/share/emacs/site-lisp/cedet/speedbar/sb-image hides /usr/local/share/emacs/24.0.50/lisp/sb-image
/home/joakim/.elisp/slime-2.0/tree-widget hides /usr/local/share/emacs/24.0.50/lisp/tree-widget
/home/joakim/.elisp/cedet/common/ezimage hides /usr/local/share/emacs/24.0.50/lisp/ezimage
/usr/local/share/emacs/site-lisp/cedet/speedbar/speedbar hides /usr/local/share/emacs/24.0.50/lisp/speedbar
/home/joakim/.emacs.d/elpa/json-1.2/json hides /usr/local/share/emacs/24.0.50/lisp/json
/home/joakim/.elisp/emacs-planner/remember/remember hides /usr/local/share/emacs/24.0.50/lisp/textmodes/remember
/home/joakim/.elisp/css-mode hides /usr/local/share/emacs/24.0.50/lisp/textmodes/css-mode
/home/joakim/.elisp/compile hides /usr/local/share/emacs/24.0.50/lisp/progmodes/compile
/usr/local/share/emacs/site-lisp/emacs-w3m/attic/rfc2368 hides /usr/local/share/emacs/24.0.50/lisp/mail/rfc2368
~/.emacs.d/predictive/avl-tree hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/avl-tree
/usr/local/share/emacs/site-lisp/dvc/lisp/contrib/ewoc hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/ewoc
/usr/local/share/emacs/site-lisp/cedet/eieio/eieio-datadebug hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/eieio-datadebug
/usr/local/share/emacs/site-lisp/cedet/eieio/eieio hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/eieio
/usr/local/share/emacs/site-lisp/cedet/eieio/eieio-opt hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/eieio-opt
/usr/local/share/emacs/site-lisp/cedet/eieio/eieio-speedbar hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/eieio-speedbar
/usr/local/share/emacs/site-lisp/cedet/eieio/eieio-comp hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/eieio-comp
/usr/local/share/emacs/site-lisp/cedet/eieio/eieio-custom hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/eieio-custom
/usr/local/share/emacs/site-lisp/cedet/eieio/eieio-base hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/eieio-base
~/.elisp/emms/lisp/tq hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/tq
/usr/local/share/emacs/site-lisp/cedet/eieio/chart hides /usr/local/share/emacs/24.0.50/lisp/emacs-lisp/chart
/home/joakim/.elisp/cedet/common/cedet-cscope hides /usr/local/share/emacs/24.0.50/lisp/cedet/cedet-cscope
/home/joakim/.elisp/cedet/common/pulse hides /usr/local/share/emacs/24.0.50/lisp/cedet/pulse
/home/joakim/.elisp/cedet/common/cedet hides /usr/local/share/emacs/24.0.50/lisp/cedet/cedet
/usr/local/share/emacs/site-lisp/cedet/ede/ede hides /usr/local/share/emacs/24.0.50/lisp/cedet/ede
/home/joakim/.elisp/cedet/common/cedet-idutils hides /usr/local/share/emacs/24.0.50/lisp/cedet/cedet-idutils
/home/joakim/.elisp/cedet/common/data-debug hides /usr/local/share/emacs/24.0.50/lisp/cedet/data-debug
/home/joakim/.elisp/cedet/common/cedet-global hides /usr/local/share/emacs/24.0.50/lisp/cedet/cedet-global
/home/joakim/.elisp/cedet/common/mode-local hides /usr/local/share/emacs/24.0.50/lisp/cedet/mode-local
/home/joakim/.elisp/cedet/common/inversion hides /usr/local/share/emacs/24.0.50/lisp/cedet/inversion
/usr/local/share/emacs/site-lisp/cedet/semantic/semantic hides /usr/local/share/emacs/24.0.50/lisp/cedet/semantic
/home/joakim/.elisp/cedet/common/cedet-files hides /usr/local/share/emacs/24.0.50/lisp/cedet/cedet-files
/usr/local/share/emacs/site-lisp/cedet/srecode/srecode hides /usr/local/share/emacs/24.0.50/lisp/cedet/srecode

Features:
(shadow emacsbug semantic-tag-write semantic-tag-ls semantic-tag-file
semanticdb-file semantic-edit 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 ffap starttls mailalias smtpmail moy-bbdb
nnagent eieio-opt help-mode view flow-fill bookmark multi-isearch
diff-mode gnus-fun bbdb-gui gnus-cite smiley mule-util w3m-cookie
w3m-bookmark w3m-tabmenu w3m-form w3m-symbol w3m w3m-hist w3m-fb w3m-ems
w3m-ccl ccl w3m-favicon w3m-image w3m-proc w3m-util gnus-async
gnus-bcklg qp gnus-ml gnus-topic parse-time nnfolder utf-7 utf7 nnimap
imap nndraft nnmh bbdb-gnus bbdb-snarf mail-extr bbdb-com netrc
gnus-agent gnus-srvr gnus-score score-mode nnvirtual nntp gnus-cache
gnus-alias highline nnmairix nnml stef-elisp csound-x csound-lsp
csound-csd csound-doc csound-opcodes csound-mid csound-ft graphs
csound-spdb k csound-key keykit-interaction keykit-mode kk_utils i
csound-eel comm-tests query-sheet embedded-elisp-library mmm-mode
mmm-univ mmm-class mmm-region mmm-auto mmm-vars mmm-utils mmm-compat
stef-elisp-compatibility slime-repl slime apropos hyperspec
my-msf-abbrev msf-abbrev python-21 python sh-script cperl-mode perl-mode
semantic-el semantic-bovine bovine-debug semantic-debug boxquote rect
grep-edit winner vc-git browse-kill-ring jv-timeclock ses unsafep
timeclock-visualize auto-edit-substitute clojure-test-mode-autoloads
cssh-autoloads dired-isearch-autoloads epresent-autoloads ert-autoloads
facebook-autoloads gtk-look-autoloads json-autoloads magit-autoloads
mediawiki-autoloads pastie-autoloads smart-tab-autoloads
swank-clojure-autoloads clojure-mode-autoloads slime-repl-autoloads
slime-autoloads yasnippet-bundle-autoloads yasnippet-bundle
dropdown-list yasnippet package reporter erc-truncate erc-track
erc-spelling flyspell ispell erc-ring erc-pcomplete erc-netsplit erc-log
erc-button erc-fill erc-join erc-autoaway image-file grep fsdired
hide-lines memory-usage my-eshell dired-x dired-aux ido my-jde-init
java-mode-indent-annotations jde-eclipse-compiler-server flymake jde
etags jde-open-source jde-class jde-parse-class jde-import
jde-java-font-lock jde-which-method jde-java-grammar jde-wiz
jde-complete eldoc jde-plugins executable browse-url jde-gen tempo
jde-run jde-jdb jde-bug jde-dbs jde-dbo regress jde-db jde-parse sregex
jde-imenu semantic-java semantic-doc avltree stack-m elib-node
jde-compile cc-mode cc-fonts cc-menus cc-cmds cc-styles cc-align
cc-engine cc-vars cc-defs jde-help jde-widgets beanshell jde-custom
jde-project-file jde-autoload jde-util arc-mode archive-mode pager
emms-jave emms-player-mymplayer emms-playlist-limit emms-volume
emms-volume-amixer emms-tag-editor emms-info-metaflac emms-i18n
emms-mark emms-history emms-bookmarks emms-score emms-stream-info
emms-metaplaylist-mode emms-lastfm emms-browser emms-playlist-sort
emms-last-played emms-player-xine emms-player-mpd tq emms-playing-time
emms-lyrics emms-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie emms-streams emms-mode-line emms-cache
emms-info-ogginfo emms-info-mp3info emms-info later-do
emms-playlist-mode emms-player-vlc emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-dbus emms-setup emms emms-compat erc-stamp erc-match erc-ezbounce
color-theme ansi-color delsel paren pcomplete plannerinit muse-backlink
remember-planner remember noutline outline planner-cyclic solar cal-dst
cal-bahai holidays hol-loaddefs ede-simple ede-linux ede-emacs
ede-cpp-root planner-appt appt diary-lib diary-loaddefs
planner-tasks-overview planner-erc erc-goodies erc erc-backend
erc-compat pp planner-gnus gnus-msg gnus-art mm-uu mml2015 epg-config
mm-view smime dig mailcap gnus-sum nnoo gnus-group time-date gnus-undo
nnmail mail-source gnus-start gnus-spec gnus-int gnus-range gnus-win
message sendmail mml mml-sec mailabbrev gmm-utils mailheader gnus
gnus-ems nnheader mail-utils planner-multi crm planner-publish muse-xml
muse-latex muse-wiki planner cal-menu calendar cal-loaddefs muse-html
muse-xml-common muse-colors cus-edit cus-start cus-load muse-publish
muse-project muse-protocols sb-info info muse-regexps muse
muse-nested-tags muse-mode windmove abook mm-decode mm-bodies mm-encode
mail-parse rfc2231 rfc2047 rfc2045 ietf-drums vcard bbdb-autoloads bbdb
timezone pastebin pk-total-recall w3m-load dired-details+ dired
dired-details sort winring ecb ecb-symboldef ecb-analyse
ecb-compatibility ecb-winman-support ecb-autogen autoload ecb-tod
ecb-cycle ecb-eshell ecb-help ecb-jde efc ecb-method-browser hideshow
ecb-file-browser ecb-layout compile ecb-create-layout ecb-compilation
ecb-speedbar ecb-common-browser ecb-semantic-wrapper ecb-navigate
ecb-mode-line ecb-face tree-buffer ecb-upgrade ecb-util thingatpt
jka-compr disp-table anything-config rx anything easy-mmode woman man
recentf tree-widget semanticdb-java ede-proj-maven2 cedet-files cedet
cedet-contrib-load contrib-loaddefs cogre-load cogre-loaddefs
speedbar-load speedbar-loaddefs ede-load ede-loaddefs ede-speedbar
ede-files ede eieio-speedbar semantic-ia-sb semantic-analyze
semantic-scope semantic-analyze-fcn semantic-sort semantic-sb speedbar
sb-image dframe eieio-custom wid-edit ede-source srecode-load srecode
srecode-loaddefs semantic-load senator which-func semantic-imenu imenu
semantic-format ezimage semantic-mru-bookmark semanticdb-mode
semantic-idle semantic-ctxt semantic-decorate-include semanticdb-find
semanticdb-ref semanticdb-el semanticdb-search semantic-find semanticdb
eieio-base semantic-decorate-mode semantic-decorate pulse
semantic-util-modes semantic-util semantic semantic-lex semantic-tag
working fame semantic-fw semantic-loaddefs mode-local find-func derived
eieio-load eieio-loaddefs cedet-load cedet-compat cedet-loaddefs eieio
warnings byte-opt bytecomp byte-compile inversion cl cl-19 generic-x
edmacro kmacro jvfetchmail mailcrypt rfc822 easymenu zen-mode tramp-imap
assoc tramp-gw tramp-gvfs zeroconf url-util url-parse url-vars mm-util
mail-prsvr tramp-fish tramp-smb tramp-cache tramp-ftp tramp-cmds tramp
auth-source gnus-util advice help-fns advice-preload shell comint
regexp-opt ring password-cache format-spec tramp-compat trampver server
timeclock battery secrets dbus xml tooltip ediff-hook vc-hooks
lisp-float-type mwheel x-win x-dnd 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
dynamic-setting system-font-setting font-render-setting gtk x-toolkit x
multi-tty emacs)
-- 
Joakim Verona