emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] /srv/bzr/emacs/trunk r107582: Adapt nXML mode to Emacs 24


From: Chong Yidong
Subject: [Emacs-diffs] /srv/bzr/emacs/trunk r107582: Adapt nXML mode to Emacs 24 completion scheme.
Date: Mon, 12 Mar 2012 11:58:20 +0800
User-agent: Bazaar (2.3.1)

------------------------------------------------------------
revno: 107582
fixes bug(s): http://debbugs.gnu.org/6776
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Mon 2012-03-12 11:58:20 +0800
message:
  Adapt nXML mode to Emacs 24 completion scheme.
  
  * lisp/nxml/nxml-mode.el (nxml-mode-map): Do not bind C-RET.
  (nxml-completion-at-point-function): New function.
  (nxml-mode): Use it.
  (nxml-bind-meta-tab-to-complete-flag): Default to t.
modified:
  etc/NEWS
  lisp/ChangeLog
  lisp/nxml/nxml-mode.el
=== modified file 'etc/NEWS'
--- a/etc/NEWS  2012-03-08 05:27:03 +0000
+++ b/etc/NEWS  2012-03-12 03:58:20 +0000
@@ -771,6 +771,11 @@
 ---
 ** mpc.el: Can use pseudo tags of the form tag1|tag2 as a union of two tags.
 
+** nXML mode no longer binds C-RET to `nxml-complete'.
+Completion is now performed via `completion-at-point', bound to M-TAB.
+If `nxml-bind-meta-tab-to-complete-flag' is non-nil (the default),
+this performs tag completion.
+
 ---
 ** Prolog mode has been completely revamped, with lots of additional
 functionality such as more intelligent indentation, electricity, support for

=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2012-03-12 03:03:16 +0000
+++ b/lisp/ChangeLog    2012-03-12 03:58:20 +0000
@@ -1,5 +1,10 @@
 2012-03-12  Chong Yidong  <address@hidden>
 
+       * nxml/nxml-mode.el (nxml-mode-map): Do not bind C-RET (Bug#6776).
+       (nxml-completion-at-point-function): New function.
+       (nxml-mode): Use it.
+       (nxml-bind-meta-tab-to-complete-flag): Default to t.
+
        * emacs-lisp/package.el (package-unpack, package-unpack-single):
        Load generated autoloads file before byte compiling (Bug#10970).
        (package--make-autoloads-and-compile): New helper fun.

=== modified file 'lisp/nxml/nxml-mode.el'
--- a/lisp/nxml/nxml-mode.el    2012-01-19 07:21:25 +0000
+++ b/lisp/nxml/nxml-mode.el    2012-03-12 03:58:20 +0000
@@ -86,18 +86,9 @@
   :group 'nxml
   :type 'integer)
 
-(defcustom nxml-bind-meta-tab-to-complete-flag (not window-system)
-  "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."
+(defcustom nxml-bind-meta-tab-to-complete-flag t
+  "Non-nil means to use nXML completion in \\[completion-at-point]."
   :group 'nxml
-  :set (lambda (sym flag)
-        (set-default sym flag)
-        (when (and (boundp 'nxml-mode-map) nxml-mode-map)
-          (define-key nxml-mode-map "\M-\t" (and flag 'nxml-complete))))
   :type 'boolean)
 
 (defcustom nxml-prefer-utf-16-to-utf-8-flag nil
@@ -418,9 +409,7 @@
     (define-key map "\C-c\C-o" nxml-outline-prefix-map)
     (define-key map [S-mouse-2] 'nxml-mouse-hide-direct-text-content)
     (define-key map "/" 'nxml-electric-slash)
-    (define-key map [C-return] 'nxml-complete)
-    (when nxml-bind-meta-tab-to-complete-flag
-      (define-key map "\M-\t" 'nxml-complete))
+    (define-key map "\M-\t" 'completion-at-point)
     map)
   "Keymap for nxml-mode.")
 
@@ -479,7 +468,7 @@
 If `nxml-slash-auto-complete-flag' is non-nil, then inserting a `</'
 automatically inserts the rest of the end-tag.
 
-\\[nxml-complete] performs completion on the symbol preceding point.
+\\[completion-at-point] performs completion on the symbol preceding point.
 
 \\[nxml-dynamic-markup-word] uses the contents of the current buffer
 to choose a tag to put around the word preceding point.
@@ -555,6 +544,8 @@
         (nxml-clear-inside (point-min) (point-max))
        (nxml-with-invisible-motion
          (nxml-scan-prolog)))))
+  (add-hook 'completion-at-point-functions
+            #'nxml-completion-at-point-function nil t)
   (add-hook 'after-change-functions 'nxml-after-change nil t)
   (add-hook 'change-major-mode-hook 'nxml-cleanup nil t)
 
@@ -1654,6 +1645,11 @@
     (ding)
     (message "Cannot complete in this context")))
 
+(defun nxml-completion-at-point-function ()
+  "Call `nxml-complete' to perform completion at point."
+  (when nxml-bind-meta-tab-to-complete-flag
+    #'nxml-complete))
+
 ;;; Movement
 
 (defun nxml-forward-balanced-item (&optional arg)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]