emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] Changes to emacs/lisp/simple.el,v


From: Stefan Monnier
Subject: [Emacs-diffs] Changes to emacs/lisp/simple.el,v
Date: Sun, 13 Apr 2008 22:12:05 +0000

CVSROOT:        /sources/emacs
Module name:    emacs
Changes by:     Stefan Monnier <monnier>        08/04/13 22:12:02

Index: lisp/simple.el
===================================================================
RCS file: /sources/emacs/emacs/lisp/simple.el,v
retrieving revision 1.919
retrieving revision 1.920
diff -u -b -r1.919 -r1.920
--- lisp/simple.el      11 Apr 2008 22:28:02 -0000      1.919
+++ lisp/simple.el      13 Apr 2008 22:12:02 -0000      1.920
@@ -5234,9 +5234,7 @@
 
 ;; Define the major mode for lists of completions.
 
-(defvar completion-list-mode-map nil
-  "Local map for completion list buffers.")
-(or completion-list-mode-map
+(defvar completion-list-mode-map
     (let ((map (make-sparse-keymap)))
       (define-key map [mouse-2] 'mouse-choose-completion)
       (define-key map [follow-link] 'mouse-face)
@@ -5245,7 +5243,8 @@
       (define-key map "\e\e\e" 'delete-completion-window)
       (define-key map [left] 'previous-completion)
       (define-key map [right] 'next-completion)
-      (setq completion-list-mode-map map)))
+    map)
+  "Local map for completion list buffers.")
 
 ;; Completion mode is suitable only for specially formatted data.
 (put 'completion-list-mode 'mode-class 'special)
@@ -5425,7 +5424,7 @@
                     (raise-frame (window-frame mini))))
               (exit-minibuffer)))))))
 
-(defun completion-list-mode ()
+(define-derived-mode completion-list-mode nil "Completion List"
   "Major mode for buffers showing lists of possible completions.
 Type \\<completion-list-mode-map>\\[choose-completion] in the completion list\
  to select the completion near point.
@@ -5433,15 +5432,7 @@
  with the mouse.
 
 \\{completion-list-mode-map}"
-
-  (interactive)
-  (kill-all-local-variables)
-  (use-local-map completion-list-mode-map)
-  (setq mode-name "Completion List")
-  (setq major-mode 'completion-list-mode)
-  (make-local-variable 'completion-base-size)
-  (setq completion-base-size nil)
-  (run-mode-hooks 'completion-list-mode-hook))
+  (set (make-local-variable 'completion-base-size) nil))
 
 (defun completion-list-mode-finish ()
   "Finish setup of the completions buffer.
@@ -5502,17 +5493,15 @@
          (setq default-directory
                 (file-name-directory (expand-file-name mbuf-contents)))))
     (with-current-buffer standard-output
+      (let ((base-size completion-base-size)) ;Read before killing localvars.
       (completion-list-mode)
+        (set (make-local-variable 'completion-base-size) base-size))
       (set (make-local-variable 'completion-reference-buffer) mainbuf)
+      (unless completion-base-size
+        ;; This may be needed for old completion packages which don't use
+        ;; completion-all-completions-with-base-size yet.
       (setq completion-base-size
            (cond
-            ((and (symbolp minibuffer-completion-table)
-                  (get minibuffer-completion-table 
'completion-base-size-function))
-             ;; To compute base size, a function can use the global value of
-             ;; completion-common-substring or minibuffer-completion-contents.
-             (with-current-buffer mainbuf
-               (funcall (get minibuffer-completion-table
-                             'completion-base-size-function))))
             (minibuffer-completing-file-name
              ;; For file name completion, use the number of chars before
              ;; the start of the file name component at point.
@@ -5522,7 +5511,7 @@
                  (- (point) (minibuffer-prompt-end)))))
             (minibuffer-completing-symbol nil)
             ;; Otherwise, in minibuffer, the base size is 0.
-            ((minibufferp mainbuf) 0)))
+               ((minibufferp mainbuf) 0))))
       (setq common-string-length
            (cond
             (completion-common-substring




reply via email to

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