|
@@ -40,11 +40,11 @@ Each function is called with two args, the filename before changing and after ch |
|
|
(require 'url) |
|
|
(require 'url) |
|
|
|
|
|
|
|
|
(defun dllib-if-unfound (url &optional bite-compile-p force-download-p) |
|
|
(defun dllib-if-unfound (url &optional bite-compile-p force-download-p) |
|
|
"if LIB does not exist, download it from URL and locate it to \"~/emacs.d/lisp/LIB.el\". |
|
|
|
|
|
return nil if LIB unfound and downloading failed, otherwise the path of LIB." |
|
|
|
|
|
|
|
|
"If library does not exist, download it from URL and locate it in \"~/emacs.d/lisp/\". |
|
|
|
|
|
Return nil if library unfound and downloading failed, otherwise the path where the library installed." |
|
|
(let* ((dir (expand-file-name (concat user-emacs-directory "lisp/"))) |
|
|
(let* ((dir (expand-file-name (concat user-emacs-directory "lisp/"))) |
|
|
(lib (file-name-nondirectory url)) |
|
|
|
|
|
(lpath (concat dir lib)) |
|
|
|
|
|
|
|
|
(lib (file-name-sans-extension (file-name-nondirectory url))) |
|
|
|
|
|
(lpath (concat dir lib ".el")) |
|
|
(locate-p (locate-library lib))) |
|
|
(locate-p (locate-library lib))) |
|
|
(if (or force-download-p (not locate-p)) |
|
|
(if (or force-download-p (not locate-p)) |
|
|
(progn (condition-case nil |
|
|
(progn (condition-case nil |
|
@@ -53,8 +53,10 @@ return nil if LIB unfound and downloading failed, otherwise the path of LIB." |
|
|
lpath |
|
|
lpath |
|
|
t) |
|
|
t) |
|
|
(when bite-compile-p |
|
|
(when bite-compile-p |
|
|
|
|
|
(and (file-writable-p (byte-compile-dest-file lpath)) |
|
|
|
|
|
(delete-file (byte-compile-dest-file lpath))) |
|
|
(byte-compile-file lpath))) |
|
|
(byte-compile-file lpath))) |
|
|
(error (and (file-readable-p lpath) |
|
|
|
|
|
|
|
|
(error (and (file-writable-p lpath) |
|
|
(delete-file lpath)) |
|
|
(delete-file lpath)) |
|
|
(message "downloading %s...something wrong happened!" url) |
|
|
(message "downloading %s...something wrong happened!" url) |
|
|
nil)) |
|
|
nil)) |
|
|