mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
* url-handlers.el (url-file-handler-load-in-progress): New defvar.
(url-file-handler): Use it, in order to avoid recursive load.
This commit is contained in:
parent
472c15bf14
commit
0f09bbfa7f
2 changed files with 26 additions and 14 deletions
|
|
@ -1,3 +1,8 @@
|
|||
2014-05-09 Michael Albinus <michael.albinus@gmx.de>
|
||||
|
||||
* url-handlers.el (url-file-handler-load-in-progress): New defvar.
|
||||
(url-file-handler): Use it, in order to avoid recursive load.
|
||||
|
||||
2014-05-01 Glenn Morris <rgm@gnu.org>
|
||||
|
||||
* url-parse.el (url-generic-parse-url): Doc fix (replace `iff').
|
||||
|
|
|
|||
|
|
@ -137,25 +137,32 @@ like URLs \(Gnus is particularly bad at this\)."
|
|||
(inhibit-file-name-operation operation))
|
||||
(apply operation args)))
|
||||
|
||||
(defvar url-file-handler-load-in-progress nil
|
||||
"Check for recursive load.")
|
||||
|
||||
;;;###autoload
|
||||
(defun url-file-handler (operation &rest args)
|
||||
"Function called from the `file-name-handler-alist' routines.
|
||||
OPERATION is what needs to be done (`file-exists-p', etc). ARGS are
|
||||
the arguments that would have been passed to OPERATION."
|
||||
(let ((fn (get operation 'url-file-handlers))
|
||||
(val nil)
|
||||
(hooked nil))
|
||||
(if (and (not fn) (intern-soft (format "url-%s" operation))
|
||||
(fboundp (intern-soft (format "url-%s" operation))))
|
||||
(error "Missing URL handler mapping for %s" operation))
|
||||
(if fn
|
||||
(setq hooked t
|
||||
val (save-match-data (apply fn args)))
|
||||
(setq hooked nil
|
||||
val (url-run-real-handler operation args)))
|
||||
(url-debug 'handlers "%s %S%S => %S" (if hooked "Hooked" "Real")
|
||||
operation args val)
|
||||
val))
|
||||
;; Avoid recursive load.
|
||||
(if (and load-in-progress url-file-handler-load-in-progress)
|
||||
(url-run-real-handler operation args)
|
||||
(let ((url-file-handler-load-in-progress load-in-progress)
|
||||
(fn (get operation 'url-file-handlers))
|
||||
(val nil)
|
||||
(hooked nil))
|
||||
(if (and (not fn) (intern-soft (format "url-%s" operation))
|
||||
(fboundp (intern-soft (format "url-%s" operation))))
|
||||
(error "Missing URL handler mapping for %s" operation))
|
||||
(if fn
|
||||
(setq hooked t
|
||||
val (save-match-data (apply fn args)))
|
||||
(setq hooked nil
|
||||
val (url-run-real-handler operation args)))
|
||||
(url-debug 'handlers "%s %S%S => %S" (if hooked "Hooked" "Real")
|
||||
operation args val)
|
||||
val)))
|
||||
|
||||
(defun url-file-handler-identity (&rest args)
|
||||
;; Identity function
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue