emacs-elpa-diffs
[Top][All Lists]
Advanced

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

[elpa] externals/auctex 25a9c18 76/78: Define TeX-completing-read-multip


From: Tassilo Horn
Subject: [elpa] externals/auctex 25a9c18 76/78: Define TeX-completing-read-multiple for Emacs 24.4 and later.
Date: Mon, 19 Oct 2015 09:11:20 +0000

branch: externals/auctex
commit 25a9c18d1712d7f2c221a4a14b72c178b7d6bd5a
Author: Mosè Giordano <address@hidden>
Commit: Mosè Giordano <address@hidden>

    Define TeX-completing-read-multiple for Emacs 24.4 and later.
    
    * tex.el (fboundp): Define a `TeX-completing-read-multiple'
    version for GNU Emacs >= 24.4.  Fixes bug#19504.
---
 ChangeLog |    5 +++++
 tex.el    |   59 +++++++++++++++++++++++++++++++++++++++++++++++++----------
 2 files changed, 54 insertions(+), 10 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index cd4d925..20bd1dc 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2015-10-18  Mos� Giordano  <address@hidden>
+
+       * tex.el (fboundp): Define a `TeX-completing-read-multiple'
+       version for GNU Emacs >= 24.4.  Fixes bug#19504.
+
 2015-10-13  Mos� Giordano  <address@hidden>
 
        * style/pstricks.el ("pstricks"): Do not disable PDF mode if XeTeX
diff --git a/tex.el b/tex.el
index 56fb51b..6bd7a95 100644
--- a/tex.el
+++ b/tex.el
@@ -778,18 +778,57 @@ overlays."
 edit-utils >= 2.32 for XEmacs.")))
 
 (if (fboundp 'completing-read-multiple)
-    (defun TeX-completing-read-multiple
-       (prompt table &optional predicate require-match initial-input
-               hist def inherit-input-method)
-      "Like `completing-read-multiple' which see.
+    (if (or (and (= emacs-major-version 24) (>= emacs-minor-version 4))
+           (>= emacs-major-version 25))
+       ;; For GNU Emacs 24.4 or later, based on `completing-read-multiple' of
+       ;; git commit b14abca9476cba2f500b5eda89441d593dd0f12b
+       ;;   2013-01-10  * lisp/emacs-lisp/crm.el: Allow any regexp for 
separators.
+       (defun TeX-completing-read-multiple
+           (prompt table &optional predicate require-match initial-input
+                   hist def inherit-input-method)
+         "Like `completing-read-multiple' which see.
+Retain zero-length substrings but ensure that empty input results
+in nil across different emacs versions."
+         (unwind-protect
+             (progn
+               (add-hook 'choose-completion-string-functions
+                         'crm--choose-completion-string)
+               (let* ((minibuffer-completion-table #'crm--collection-fn)
+                      (minibuffer-completion-predicate predicate)
+                      ;; see completing_read in src/minibuf.c
+                      (minibuffer-completion-confirm
+                       (unless (eq require-match t) require-match))
+                      (crm-completion-table table)
+                      (map (if require-match
+                               crm-local-must-match-map
+                             crm-local-completion-map))
+                      ;; If the user enters empty input, `read-from-minibuffer'
+                      ;; returns the empty string, not DEF.
+                      (input (read-from-minibuffer
+                              prompt initial-input map
+                              nil hist def inherit-input-method))
+                      result)
+                 (and def (string-equal input "") (setq input def))
+                 (if (equal (setq result (split-string input crm-separator))
+                            '(""))
+                     nil
+                   result)))
+           (remove-hook 'choose-completion-string-functions
+                        'crm--choose-completion-string)))
+      ;; For GNU Emacs <= 24.3.
+      (defun TeX-completing-read-multiple
+         (prompt table &optional predicate require-match initial-input
+                 hist def inherit-input-method)
+       "Like `completing-read-multiple' which see.
 Ensures that empty input results in nil across different emacs versions."
-      (let ((result (completing-read-multiple prompt table predicate
-                                             require-match initial-input
-                                             hist def inherit-input-method)))
-       (if (equal result '("")) nil result)))
+       (let ((result (completing-read-multiple prompt table predicate
+                                               require-match initial-input
+                                               hist def inherit-input-method)))
+         (if (equal result '("")) nil result))))
+  ;; For XEmacs.
   (defun TeX-completing-read-multiple
-    (prompt table &optional predicate require-match initial-input
-           hist def inherit-input-method)
+      (prompt table &optional predicate require-match initial-input
+             hist def inherit-input-method)
     "Poor mans implementation of Emacs' `completing-read-multiple' for XEmacs.
 The XEmacs package edit-utils-2.32 includes `crm.el'."
     (multi-prompt (if (boundp 'crm-separator) crm-separator ",") nil prompt



reply via email to

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