浏览代码

Fix compile errors

Ryan C. Thompson 12 年之前
父节点
当前提交
204cc29226
共有 1 个文件被更改,包括 85 次插入102 次删除
  1. 85 102
      ido-ubiquitous.el

+ 85 - 102
ido-ubiquitous.el

@@ -59,7 +59,7 @@
 
 
 (require 'ido)
 (require 'ido)
 (require 'advice)
 (require 'advice)
-(require 'cl-seq)
+(require 'cl)
 
 
 ;;; Custom Declarations
 ;;; Custom Declarations
 
 
@@ -92,8 +92,9 @@
 	  (ido-ubiquitous-warn-about-ido-disabled)
 	  (ido-ubiquitous-warn-about-ido-disabled)
 	(add-hook 'after-init-hook 'ido-ubiquitous-warn-about-ido-disabled))))
 	(add-hook 'after-init-hook 'ido-ubiquitous-warn-about-ido-disabled))))
   ;; Ensure emacs 23 code disabled
   ;; Ensure emacs 23 code disabled
-  (ad-disable-advice 'completing-read 'around 'ido-ubiquitous-legacy)
-  (ad-activate 'completing-read)
+  (ignore-errors
+    (ad-disable-advice 'completing-read 'around 'ido-ubiquitous-legacy)
+    (ad-activate 'completing-read))
   ;; Actually enable/disable the mode
   ;; Actually enable/disable the mode
   (setq completing-read-function
   (setq completing-read-function
 	(if ido-ubiquitous-mode
 	(if ido-ubiquitous-mode
@@ -120,7 +121,8 @@
 This will be used for functions that are incompatibile with ido
 This will be used for functions that are incompatibile with ido
 or if ido cannot handle the completion arguments.
 or if ido cannot handle the completion arguments.
 
 
-If you turn off ido-ubiquitous mode, `completing-read-function' will be set to this."
+If you turn off ido-ubiquitous mode, `completing-read-function'
+will be set to this."
   :type '(choice (const :tag "Standard emacs completion"
   :type '(choice (const :tag "Standard emacs completion"
 			completing-read-default)
 			completing-read-default)
 		 (function :tag "Other function"))
 		 (function :tag "Other function"))
@@ -151,6 +153,58 @@ happen, so this feature may simply not work in some cases."
 (define-obsolete-variable-alias 'ido-ubiquitous-exceptions
 (define-obsolete-variable-alias 'ido-ubiquitous-exceptions
   'ido-ubiquitous-command-exceptions "0.4")
   'ido-ubiquitous-command-exceptions "0.4")
 
 
+(defvar ido-ubiquitous-default-function-exceptions
+  '(read-file-name
+    read-file-name-internal
+    read-buffer
+    gnus-emacs-completing-read
+    gnus-iswitchb-completing-read
+    man
+    grep-read-files)
+  "Default value of `ido-ubiquitous-function-exceptions'")
+
+(defun ido-ubiquitous-set-function-exceptions (sym newval)
+  ;; Loop through all functions, enabling or disabling ido-ubiquitous
+  ;; as appropriate.
+  (mapatoms
+   (lambda (sym)
+     (if (memq sym newval)
+	 (eval `(ido-ubiquitous-disable-in ,sym))
+       (eval `(ido-ubiquitous-enable-in ,sym)))))
+  ;; Set the new value
+  (set-default sym newval))
+
+(defmacro ido-ubiquitous-disable-in (func)
+  "Disable ido-ubiquitous in FUNC."
+  (put func 'ido-ubiquitous-disable t)
+  (let ((docstring
+         (format "Disable ido-ubiquitous in %s if its `idu-ubiquitous-disable' property is non-nil." func)))
+    `(defadvice ,func (around disable-ido-ubiquitous activate)
+       ,docstring
+       (let ((ido-ubiquitous-mode
+	      (and ido-ubiquitous-mode
+		   (not (get ',func 'ido-ubiquitous-disable)))))
+	 ad-do-it))))
+
+(define-obsolete-function-alias
+  'disable-ido-ubiquitous-in
+  'ido-ubiquitous-disable-in
+  "0.4")
+
+(defmacro ido-ubiquitous-enable-in (func)
+  "Re-enable ido-ubiquitous in FUNC.
+
+  This reverses the effect of a previous call to
+  `ido-ubiquitous-disable-in' (if no such call was made, this is
+  a no-op.)"
+  `(when (get ',func 'ido-ubiquitous-disable)
+     (put ,func 'ido-ubiquitous-disable nil)))
+
+(define-obsolete-function-alias
+  'enable-ido-ubiquitous-in
+  'ido-ubiquitous-enable-in
+  "0.4")
+
 ;;;###autoload
 ;;;###autoload
 (defcustom ido-ubiquitous-function-exceptions
 (defcustom ido-ubiquitous-function-exceptions
   ido-ubiquitous-default-function-exceptions
   ido-ubiquitous-default-function-exceptions
@@ -179,6 +233,9 @@ through Customize."
   "If t, then the next call to ido-completing-read is by ido-ubiquitous.")
   "If t, then the next call to ido-completing-read is by ido-ubiquitous.")
 (defvar ido-ubiquitous-this-call-replaces-completing-read nil
 (defvar ido-ubiquitous-this-call-replaces-completing-read nil
   "If t, then the current call to ido-completing-read is by ido-ubiquitous.")
   "If t, then the current call to ido-completing-read is by ido-ubiquitous.")
+(defvar ido-ubiquitous-disable-for-one-command nil
+  "If t, disable ido-ubiquitous for the next command.")
+
 
 
 (defun completing-read-ido (prompt collection &optional predicate
 (defun completing-read-ido (prompt collection &optional predicate
                                    require-match initial-input
                                    require-match initial-input
@@ -254,9 +311,6 @@ features to avoid interfering with the normal operation of ido."
 
 
 ;;; Ido-ubiquitous interactive command exceptions
 ;;; Ido-ubiquitous interactive command exceptions
 
 
-(defvar ido-ubiquitous-disable-for-one-command nil
-  "If t, disable ido-ubiquitous for the next command.")
-
 ;; The following advices should allow ido-ubiquitous to apply to the
 ;; The following advices should allow ido-ubiquitous to apply to the
 ;; interactive forms of commands as well as their bodies.
 ;; interactive forms of commands as well as their bodies.
 (defadvice call-interactively (around ido-ubiquitous-command-exceptions activate)
 (defadvice call-interactively (around ido-ubiquitous-command-exceptions activate)
@@ -272,48 +326,6 @@ features to avoid interfering with the normal operation of ido."
 
 
 ;;; Ido-ubiquitous function exceptions
 ;;; Ido-ubiquitous function exceptions
 
 
-(defmacro ido-ubiquitous-disable-in (func)
-  "Disable ido-ubiquitous in FUNC."
-  (put func 'ido-ubiquitous-disable t)
-  (let ((docstring
-         (format "Disable ido-ubiquitous in %s if its `idu-ubiquitous-disable' property is non-nil." func)))
-    `(defadvice ,func (around disable-ido-ubiquitous activate)
-       ,docstring
-       (let ((ido-ubiquitous-mode
-	      (and ido-ubiquitous-mode
-		   (not (get ,func 'ido-ubiquitous-disable)))))
-	 ad-do-it))))
-
-(define-obsolete-function-alias
-  'disable-ido-ubiquitous-in
-  'ido-ubiquitous-disable-in
-  "0.4")
-
-(defmacro ido-ubiquitous-enable-in (func)
-  "Re-enable ido-ubiquitous in FUNC.
-
-  This reverses the effect of a previous call to
-  `ido-ubiquitous-disable-in' (if no such call was made, this is
-  a no-op.)"
-  `(when (get ,func 'ido-ubiquitous-disable)
-     (put ,func 'ido-ubiquitous-disable nil)))
-
-(define-obsolete-function-alias
-  'enable-ido-ubiquitous-in
-  'ido-ubiquitous-enable-in
-  "0.4")
-
-(defun ido-ubiquitous-set-function-exceptions (sym newval)
-  ;; Loop through all functions, enabling or disabling ido-ubiquitous
-  ;; as appropriate.
-  (mapatoms
-   (lambda (sym)
-     (if (memq sym newval)
-	 (eval `(ido-ubiquitous-disable-in ,sym))
-       (eval `(ido-ubiquitous-enable-in ,sym)))))
-  ;; Set the new value
-  (set-default sym newval))
-
 ;;; Ido-ubiquitous compatibility with old completing-read
 ;;; Ido-ubiquitous compatibility with old completing-read
 
 
 ;;;###autoload
 ;;;###autoload
@@ -369,26 +381,8 @@ list.
 Only *interactive* commands should go here. To disable
 Only *interactive* commands should go here. To disable
 compatibility mode in non-interactive functions, customize
 compatibility mode in non-interactive functions, customize
 `ido-ubiquitous-function-compatibility-exceptions'."
 `ido-ubiquitous-function-compatibility-exceptions'."
-  :type '(repeat (list ))
-  :type 'hook(repeat (symbol :tag "Command"))
-  :group 'ido-ubiquitous-compatibility)
-
-;;;###autoload
-(defcustom ido-ubiquitous-function-compatibility-list
-  '()
-  "List of functions in which to enable old-style compatibility.
-
-See `ido-ubiquitous-enable-compatibility-globally' for a
-description of the compatibility behavior. If ido doesn't
-properly select the default selection for a function, try adding
-it to this list.
-
-If you need to add a function to this list, please also file a
-bug report at
-https://github.com/DarwinAwardWinner/ido-ubiquitous/issues"
-  :group 'ido-ubiquitous-compatibility
   :type 'hook
   :type 'hook
-  :set 'ido-ubiquitous-set-function-compatibility-list)
+  :group 'ido-ubiquitous-compatibility)
 
 
 (defmacro ido-ubiquitous-enable-compatibility-in (func)
 (defmacro ido-ubiquitous-enable-compatibility-in (func)
   "Enable ido-ubiquitous old-style compatibility in FUNC."
   "Enable ido-ubiquitous old-style compatibility in FUNC."
@@ -399,7 +393,7 @@ https://github.com/DarwinAwardWinner/ido-ubiquitous/issues"
 	 ,docstring
 	 ,docstring
 	 (let ((ido-ubiquitous-enable-compatibility-globally
 	 (let ((ido-ubiquitous-enable-compatibility-globally
 		(or ido-ubiquitous-enable-compatibility-globally
 		(or ido-ubiquitous-enable-compatibility-globally
-		    (get ,func 'ido-ubiquitous-enable-compatibility))))
+		    (get ',func 'ido-ubiquitous-enable-compatibility))))
 	   ad-do-it))
 	   ad-do-it))
        (put func 'ido-ubiquitous-enable-compatibility t))))
        (put func 'ido-ubiquitous-enable-compatibility t))))
 
 
@@ -409,7 +403,7 @@ https://github.com/DarwinAwardWinner/ido-ubiquitous/issues"
   This reverses the effect of a previous call to
   This reverses the effect of a previous call to
   `ido-ubiquitous-enable-compatibility-in' (if no such call was
   `ido-ubiquitous-enable-compatibility-in' (if no such call was
   made, this is a no-op.)"
   made, this is a no-op.)"
-  `(when (get ,func 'ido-ubiquitous-enable-compatibility)
+  `(when (get ',func 'ido-ubiquitous-enable-compatibility)
      (put ,func 'ido-ubiquitous-enable-compatibility nil)))
      (put ,func 'ido-ubiquitous-enable-compatibility nil)))
 
 
 (defun ido-ubiquitous-set-function-compatibility-list (sym newval)
 (defun ido-ubiquitous-set-function-compatibility-list (sym newval)
@@ -423,6 +417,23 @@ https://github.com/DarwinAwardWinner/ido-ubiquitous/issues"
   ;; Set the new value
   ;; Set the new value
   (set-default sym newval))
   (set-default sym newval))
 
 
+;;;###autoload
+(defcustom ido-ubiquitous-function-compatibility-list
+  '()
+  "List of functions in which to enable old-style compatibility.
+
+See `ido-ubiquitous-enable-compatibility-globally' for a
+description of the compatibility behavior. If ido doesn't
+properly select the default selection for a function, try adding
+it to this list.
+
+If you need to add a function to this list, please also file a
+bug report at
+https://github.com/DarwinAwardWinner/ido-ubiquitous/issues"
+  :group 'ido-ubiquitous-compatibility
+  :type 'hook
+  :set 'ido-ubiquitous-set-function-compatibility-list)
+
 (defvar ido-ubiquitous-initial-item nil
 (defvar ido-ubiquitous-initial-item nil
   "The first item selected when ido starts.")
   "The first item selected when ido starts.")
 
 
@@ -478,36 +489,8 @@ controls whether this advice has any effect."
 	     (memq function ido-ubiquitous-command-compatibility-list))))
 	     (memq function ido-ubiquitous-command-compatibility-list))))
     ad-do-it))
     ad-do-it))
 
 
-(defmacro ido-ubiquitous-disable-compatibility-in (func)
-  "Disable ido-ubiquitous compatibility mode in FUNC."
-  (let ((docstring
-         (format "Disable ido-ubiquitous in %s" func)))
-    `(defadvice ,func (around disable-ido-ubiquitous-compatibility activate)
-       ,docstring
-       (let (ido-ubiquitous-enable-compatibility) ad-do-it))))
-
-(defmacro ido-ubiquitous-enable-compatibility-in (func)
-  "Re-enable ido-ubiquitous comaptibility mode in FUNC.
-
-  This reverses the effect of a previous call to
-  `ido-ubiquitous-disable-compatibility-in'."
-  `(when (ad-find-advice ',func 'around 'disable-ido-ubiquitous-compatibility)
-     (ad-disable-advice ',func 'around 'disable-ido-ubiquitous-compatibility)
-     (ad-activate ',func)))
-
-(defun ido-ubiquitous-set-function-compatibility-exceptions (sym newval)
-  (let* ((oldval (when (boundp sym) (eval sym))))
-    ;; Re-enable compatibility on all old functions, in case they
-    ;; were removed from the list.
-    (dolist (oldfun oldval)
-      (eval `(ido-ubiquitous-enable-compatibility-in ,oldfun)))
-    ;; Set the new value
-    (set-default sym newval)
-    ;; Disable compatibility on all new functions
-    (dolist (newfun newval)
-      (eval `(ido-ubiquitous-disable-compatibility-in ,newfun)))))
-
 ;;; Other
 ;;; Other
+
 (defun ido-ubiquitous-initialize ()
 (defun ido-ubiquitous-initialize ()
   "Do initial setup for ido-ubiquitous.
   "Do initial setup for ido-ubiquitous.
 
 
@@ -522,9 +505,9 @@ This only needs to be called once when the file is first loaded."
   (ido-ubiquitous-set-function-exceptions
   (ido-ubiquitous-set-function-exceptions
    'ido-ubiquitous-function-exceptions
    'ido-ubiquitous-function-exceptions
    ido-ubiquitous-function-exceptions)
    ido-ubiquitous-function-exceptions)
-  (ido-ubiquitous-set-function-compatibility-exceptions
-   'ido-ubiquitous-function-compatibility-exceptions
-   ido-ubiquitous-function-compatibility-exceptions)
+  (ido-ubiquitous-set-function-compatibility-list
+   'ido-ubiquitous-function-compatibility-list
+   ido-ubiquitous-function-compatibility-list)
   ;; Make sure the mode is turned on/off as specified by the value of
   ;; Make sure the mode is turned on/off as specified by the value of
   ;; the mode variable
   ;; the mode variable
   (ido-ubiquitous-mode (if ido-ubiquitous-mode 1 0)))
   (ido-ubiquitous-mode (if ido-ubiquitous-mode 1 0)))