dimitri / el-get Goto Github PK
View Code? Open in Web Editor NEWManage the external elisp bits and pieces upon which you depend!
Home Page: http://tapoueh.org/emacs/el-get.html
Manage the external elisp bits and pieces upon which you depend!
Home Page: http://tapoueh.org/emacs/el-get.html
git-submodule update --recursive is not available with this git version thus making your package impossible to use with debian etch
new to emacs & lisp, but it seems like the recipe for color-theme-zen-and-art needs the load after, if i'm not mistaken:
(:name color-theme-zen-and-art :type git :url "git://github.com/irfn/zen-and-art.git" :load "zen-and-art.el")
I am loving el-get, but I use the Friendly Interactive Shell (fish) and many of el-get's installation methods assume bash, e.g. in el-get-http-tar-cleanup-extract-hook "(format "cd %s && mv "%s"/* ." pdir (car files))".
I think these problems can be addressed by explicitly running these command lines using "bash -c '...'". What do you think? I may be totally missing something here...
Thanks for the great work!
Kevin
I have been maintaining forks of certain recipes, e.g. wanderlust, flim, semi, apel, mailcrypt, where there is a high-quality git mirror of upstream CVS.
This issue is to discuss the issue of whether el-get bundled recipes could and should use a git mirror instead of CVS, presuming a well-maintained and full-fidelity git mirror exists. The question is irrelevant if the git mirror isn't of sufficiently high quality.
Some arguments in favor (of git mirrors) are:
Marmalade is an alternative repository for package.el located at http://marmalade-repo.org/. Would be nice to have its explicit support in el-get. Implicit support is already possible by adding (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages")) to init.el.
The default git installed on MacOS X Snow Leopard doesn't include the --init
option to git submodule update
. I think el-get should do git submodule init; git submodule update
just to be more compatible.
I was just trying to get el-get installed with the lazy installer & was getting an error for wrong-type-argument. Still being very new to lisp I wasn't really able to find out what the issue was from the code + debugger data. Searching for it online wasn't helpful either.
After thinking for a bit I recalled that I have two versions of git installed on my system & that if it was trying to access it through the system path it would cause problems. Turns out it was exactly that. Although this might be unnecessary, it would be nice if in cases like this (can't find git, git not installed, etc) if a built-in error message was displayed to notify the user of the issue rather than have the debugger spew out the wrong-type-argument error.
I'm trying to write a recipe for el-screen:
(:name el-screen
:type http-tar
:options ("xzf")
:url "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz")
It seems that url-retrieve is unable to fetch that file through ftp:
Debugger entered--Lisp error: (error "File does not exist: ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz")
signal(error ("File does not exist: ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz"))
error("File does not exist: %s" "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz")
url-ftp([cl-struct-url "ftp" nil nil "ftp.morishima.net" 21 "/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz" nil nil t] el-get-http-retrieve-callback (nil "el-screen" (lambda (package) (let ... ...)) "~/.emacs.d/el-get/el-screen/elscreen-1.4.6.tar.gz" (apel autopair color-theme django-mode el-get emacs-w3m magit nxhtml package pymacs python-mode smex switch-window textile-mode undo-tree yasnippet (:name clojure-mode :type elpa) (:name dired-isearch :type elpa) (:name full-ack :type elpa) (:name gist :type elpa) (:name haml-mode :type elpa) (:name htmlize :type elpa) (:name inf-ruby :type elpa) (:name js2-mode :type elpa) (:name json :type elpa) (:name kill-ring-search :type elpa) (:name lua-mode :type elpa) (:name pastie :type elpa) (:name ruby-compilation :type elpa) (:name ruby-electric :type elpa) (:name ruby-mode :type elpa) (:name sass-mode :type elpa) (:name slime :type elpa) (:name textmate :type elpa) (:name yaml-mode :type elpa) (:name browse-kill-ring :type emacswiki) (:name dired+ :type emacswiki) (:name coffee-mode :type git :url "git://github.com/defunkt/coffee-mode.git") (:name color-theme-chocolate-rain :type git :url "git://github.com/marktran/color-theme-chocolate-rain.git" :load "color-theme-chocolate-rain.el" :after ...) (:name diminish :type http :url "http://www.eskimo.com/~seldon/diminish.el") (:name el-screen :type http-tar :options ... :url "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz") (:name growl :type http :url "http://edward.oconnor.cx/elisp/growl.el") (:name ipython :type http :url "http://ipython.scipy.org/dist/ipython.el") (:name markdown-mode :type git :url "git://jblevins.org/git/markdown-mode.git") (:name mo-git-blame :type git :url "git://github.com/voins/mo-git-blame.git") (:name mode-compile :type http :url "http://perso.tls.cena.fr/boubaker/distrib/mode-compile.el") (:name paredit :type http :url "http://mumble.net/~campbell/emacs/paredit.el") (:name peepopen :type git :url "git://github.com/topfunky/PeepOpen-EditorSupport.git" :features peepopen) (:name quack :type http :url "http://www.neilvandyke.org/quack/quack.el") (:name rhtml-mode :type git :url "git://github.com/eschulte/rhtml.git" :compile "rhtml-mode.el") ...)))
url-retrieve-internal("ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz" el-get-http-retrieve-callback (nil "el-screen" (lambda (package) (let ... ...)) "~/.emacs.d/el-get/el-screen/elscreen-1.4.6.tar.gz" (apel autopair color-theme django-mode el-get emacs-w3m magit nxhtml package pymacs python-mode smex switch-window textile-mode undo-tree yasnippet (:name clojure-mode :type elpa) (:name dired-isearch :type elpa) (:name full-ack :type elpa) (:name gist :type elpa) (:name haml-mode :type elpa) (:name htmlize :type elpa) (:name inf-ruby :type elpa) (:name js2-mode :type elpa) (:name json :type elpa) (:name kill-ring-search :type elpa) (:name lua-mode :type elpa) (:name pastie :type elpa) (:name ruby-compilation :type elpa) (:name ruby-electric :type elpa) (:name ruby-mode :type elpa) (:name sass-mode :type elpa) (:name slime :type elpa) (:name textmate :type elpa) (:name yaml-mode :type elpa) (:name browse-kill-ring :type emacswiki) (:name dired+ :type emacswiki) (:name coffee-mode :type git :url "git://github.com/defunkt/coffee-mode.git") (:name color-theme-chocolate-rain :type git :url "git://github.com/marktran/color-theme-chocolate-rain.git" :load "color-theme-chocolate-rain.el" :after ...) (:name diminish :type http :url "http://www.eskimo.com/~seldon/diminish.el") (:name el-screen :type http-tar :options ... :url "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz") (:name growl :type http :url "http://edward.oconnor.cx/elisp/growl.el") (:name ipython :type http :url "http://ipython.scipy.org/dist/ipython.el") (:name markdown-mode :type git :url "git://jblevins.org/git/markdown-mode.git") (:name mo-git-blame :type git :url "git://github.com/voins/mo-git-blame.git") (:name mode-compile :type http :url "http://perso.tls.cena.fr/boubaker/distrib/mode-compile.el") (:name paredit :type http :url "http://mumble.net/~campbell/emacs/paredit.el") (:name peepopen :type git :url "git://github.com/topfunky/PeepOpen-EditorSupport.git" :features peepopen) (:name quack :type http :url "http://www.neilvandyke.org/quack/quack.el") (:name rhtml-mode :type git :url "git://github.com/eschulte/rhtml.git" :compile "rhtml-mode.el") ...)))
url-retrieve("ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz" el-get-http-retrieve-callback ("el-screen" (lambda (package) (let ... ...)) "~/.emacs.d/el-get/el-screen/elscreen-1.4.6.tar.gz" (apel autopair color-theme django-mode el-get emacs-w3m magit nxhtml package pymacs python-mode smex switch-window textile-mode undo-tree yasnippet (:name clojure-mode :type elpa) (:name dired-isearch :type elpa) (:name full-ack :type elpa) (:name gist :type elpa) (:name haml-mode :type elpa) (:name htmlize :type elpa) (:name inf-ruby :type elpa) (:name js2-mode :type elpa) (:name json :type elpa) (:name kill-ring-search :type elpa) (:name lua-mode :type elpa) (:name pastie :type elpa) (:name ruby-compilation :type elpa) (:name ruby-electric :type elpa) (:name ruby-mode :type elpa) (:name sass-mode :type elpa) (:name slime :type elpa) (:name textmate :type elpa) (:name yaml-mode :type elpa) (:name browse-kill-ring :type emacswiki) (:name dired+ :type emacswiki) (:name coffee-mode :type git :url "git://github.com/defunkt/coffee-mode.git") (:name color-theme-chocolate-rain :type git :url "git://github.com/marktran/color-theme-chocolate-rain.git" :load "color-theme-chocolate-rain.el" :after ...) (:name diminish :type http :url "http://www.eskimo.com/~seldon/diminish.el") (:name el-screen :type http-tar :options ... :url "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz") (:name growl :type http :url "http://edward.oconnor.cx/elisp/growl.el") (:name ipython :type http :url "http://ipython.scipy.org/dist/ipython.el") (:name markdown-mode :type git :url "git://jblevins.org/git/markdown-mode.git") (:name mo-git-blame :type git :url "git://github.com/voins/mo-git-blame.git") (:name mode-compile :type http :url "http://perso.tls.cena.fr/boubaker/distrib/mode-compile.el") (:name paredit :type http :url "http://mumble.net/~campbell/emacs/paredit.el") (:name peepopen :type git :url "git://github.com/topfunky/PeepOpen-EditorSupport.git" :features peepopen) (:name quack :type http :url "http://www.neilvandyke.org/quack/quack.el") (:name rhtml-mode :type git :url "git://github.com/eschulte/rhtml.git" :compile "rhtml-mode.el") ...)))
(let* ((pdir ...) (fname ...) (dest ...)) (unless (file-directory-p pdir) (make-directory pdir)) (url-retrieve url (quote el-get-http-retrieve-callback) (\` ...)))
el-get-http-install("el-screen" "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz" (lambda (package) (let (...) (el-get-start-process-list package ... ...))) "~/.emacs.d/el-get/el-screen/elscreen-1.4.6.tar.gz")
(let* ((source ...) (options ...) (pdir ...) (tarfile ...) (dest ...) (name ...) (ok ...) (ko ...) (post ...)) (el-get-http-install package url post dest))
el-get-http-tar-install("el-screen" "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz" el-get-post-install)
funcall(el-get-http-tar-install "el-screen" "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz" el-get-post-install)
(let* ((source ...) (method ...) (install ...) (url ...)) (el-get-check-init) (el-get-save-package-status package "required") (funcall install package url (quote el-get-post-install)) (message "el-get install %s" package))
(let ((el-get-sources ...)) (el-get-error-unless-package-p package) (let (...) (when ... ...) (when ... ...)) (let* (... ... ... ...) (el-get-check-init) (el-get-save-package-status package "required") (funcall install package url ...) (message "el-get install %s" package)))
el-get-install("el-screen")
(if (el-get-package-exists-p package) (if (and status ...) (condition-case err ... ...) (message "Package %s failed to install, remove it first." package)) (el-get-install package))
(let* ((package ...) (status ...)) (if (el-get-package-exists-p package) (if ... ... ...) (el-get-install package)))
(lambda (source) (let* (... ...) (if ... ... ...)))((:name el-screen :type http-tar :options ("xzf") :url "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz"))
mapcar((lambda (source) (let* (... ...) (if ... ... ...))) (apel autopair color-theme django-mode el-get emacs-w3m magit nxhtml package pymacs python-mode smex switch-window textile-mode undo-tree yasnippet (:name clojure-mode :type elpa) (:name dired-isearch :type elpa) (:name full-ack :type elpa) (:name gist :type elpa) (:name haml-mode :type elpa) (:name htmlize :type elpa) (:name inf-ruby :type elpa) (:name js2-mode :type elpa) (:name json :type elpa) (:name kill-ring-search :type elpa) (:name lua-mode :type elpa) (:name pastie :type elpa) (:name ruby-compilation :type elpa) (:name ruby-electric :type elpa) (:name ruby-mode :type elpa) (:name sass-mode :type elpa) (:name slime :type elpa) (:name textmate :type elpa) (:name yaml-mode :type elpa) (:name browse-kill-ring :type emacswiki) (:name dired+ :type emacswiki) (:name coffee-mode :type git :url "git://github.com/defunkt/coffee-mode.git") (:name color-theme-chocolate-rain :type git :url "git://github.com/marktran/color-theme-chocolate-rain.git" :load "color-theme-chocolate-rain.el" :after (lambda nil ...)) (:name diminish :type http :url "http://www.eskimo.com/~seldon/diminish.el") (:name el-screen :type http-tar :options ("xzf") :url "ftp://ftp.morishima.net/pub/morishima.net/naoto/ElScreen/elscreen-1.4.6.tar.gz") (:name growl :type http :url "http://edward.oconnor.cx/elisp/growl.el") (:name ipython :type http :url "http://ipython.scipy.org/dist/ipython.el") (:name markdown-mode :type git :url "git://jblevins.org/git/markdown-mode.git") (:name mo-git-blame :type git :url "git://github.com/voins/mo-git-blame.git") (:name mode-compile :type http :url "http://perso.tls.cena.fr/boubaker/distrib/mode-compile.el") (:name paredit :type http :url "http://mumble.net/~campbell/emacs/paredit.el") (:name peepopen :type git :url "git://github.com/topfunky/PeepOpen-EditorSupport.git" :features peepopen) (:name quack :type http :url "http://www.neilvandyke.org/quack/quack.el") (:name rhtml-mode :type git :url "git://github.com/eschulte/rhtml.git" :compile "rhtml-mode.el") ...))
(prog1 (mapcar (lambda ... ...) el-get-sources) (when progress (while ... ... ... ...) (progress-reporter-done progress)))
(let* ((p-status ...) (total ...) (installed ...) (progress ...) (el-get-default-process-sync ...)) (prog1 (mapcar ... el-get-sources) (when progress ... ...)))
el-get()
eval((el-get))
eval-last-sexp-1(nil)
eval-last-sexp(nil)
call-interactively(eval-last-sexp nil nil)
(url-retrieve) seems to fail rather quickly for ftp urls. Any ideas?
Otherwise, we get:
Debugger entered--Lisp error: (void-variable byte-compile-verbose) byte-compile-file("~/.emacs.d/el-get/el-get/el-get.el") el-get-byte-compile-file("~/.emacs.d/el-get/el-get" "el-get.el") el-get-init("el-get") (progn (setq default-directory (file-name-as-directory "/Users/dave/Dropbox/home/.emacs.d/el-get/el-get")) (setq el-get-sources (quote ...)) (load (concat ... "el-get" ".el")) (el-get-init "el-get") (with-current-buffer (process-buffer proc) (goto-char ...) (insert "\nCongrats, el-get is installed and ready to serve!"))) (if (eq (process-status proc) (quote exit)) (progn (setq default-directory ...) (setq el-get-sources ...) (load ...) (el-get-init "el-get") (with-current-buffer ... ... ...))) (when (eq (process-status proc) (quote exit)) (setq default-directory (file-name-as-directory "/Users/dave/Dropbox/home/.emacs.d/el-get/el-get")) (setq el-get-sources (quote ...)) (load (concat ... "el-get" ".el")) (el-get-init "el-get") (with-current-buffer (process-buffer proc) (goto-char ...) (insert "\nCongrats, el-get is installed and ready to serve!"))) (lambda (proc change) (when (eq ... ...) (setq default-directory ...) (setq el-get-sources ...) (load ...) (el-get-init "el-get") (with-current-buffer ... ... ...)))(# "exited abnormally with code 128\n")
Hi, what do you think of this idea, I am stealing code for function "el-get" and make another function which updates all installed packages, but it's ugly...
Doc sez:
If your property list is missing the :type property, then it's merged with the recipe one, so that you can override any definition provided by `el-get' recipes locally.
But with this plist:
(:name org-mode
:build `,(mapcar
(lambda (target)
(concat "make " target " EMACS=" invocation-directory invocation-name))
'("clean" "all" "doc"))
)
I'm getting this backtrace:
Debugger entered--Lisp error: (void-function nil) nil("org-mode" nil el-get-post-install) funcall(nil "org-mode" nil el-get-post-install) (let* ((source ...) (method ...) (install ...) (url ...)) (el-get-check-init) (el-get-save-package-status package "required") (funcall install package url (quote el-get-post-install)) (message "el-get install %s" package)) (let ((el-get-sources ...)) (el-get-error-unless-package-p package) (let (...) (when ... ...) (when ... ...)) (let* (... ... ... ...) (el-get-check-init) (el-get-save-package-status package "required") (funcall install package url ...) (message "el-get install %s" package))) el-get-install("org-mode") (if (el-get-package-exists-p package) (if (and status ...) (condition-case err ... ...) (message "Package %s failed to install, remove it first." package)) (el-get-install package)) (let* ((package ...) (status ...)) (if (el-get-package-exists-p package) (if ... ... ...) (el-get-install package))) (lambda (source) (let* (... ...) (if ... ... ...)))(org-mode) mapcar((lambda (source) (let* (... ...) (if ... ... ...))) (apel auto-complete bbdb emacs-w3m flim magit org-mode semi wanderlust)) (prog1 (mapcar (lambda ... ...) el-get-sources) (when progress (while ... ... ... ...) (progress-reporter-done progress))) (let* ((p-status ...) (total ...) (installed ...) (progress ...) (el-get-default-process-sync ...)) (prog1 (mapcar ... el-get-sources) (when progress ... ...))) el-get(sync) (if (or t el-get-newly-installed) (el-get (quote sync)) (el-get)) (let ((el-get-newly-installed)) (condition-case nil (require ...) (error ... ... ... ... ...)) (add-to-list (quote el-get-recipe-path) "~/.emacs.d/elhome/el-get-recipes") (setq el-get-sources (quote ...)) (if (or t el-get-newly-installed) (el-get ...) (el-get))) eval-buffer(#> nil "/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/20-el-get.el" nil t) ; Reading at buffer position 1294 load-with-code-conversion("/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/20-el-get.el" "/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/20-el-get.el" nil nil) load("/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/20-el-get") mapc(load ("/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/00-essentials" "/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/10-initsplit" "/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/20-el-get" "/Users/dave/Dropbox/home/.emacs.d/elhome/init.d/99-byte-code-cache")) elhome-init() eval-buffer(# nil "/Users/dave/Dropbox/home/.emacs.d/init.el" nil t) ; Reading at buffer position 5490 load-with-code-conversion("/Users/dave/Dropbox/home/.emacs.d/init.el" "/Users/dave/Dropbox/home/.emacs.d/init.el" t t) load("/Users/dave/Dropbox/home/.emacs.d/init" t t) #[nil "�\205\264
I can't get the nxhtml recipe to install. It throws me in the debugger with the following:
Debugger entered--Lisp error: (void-function :name)
(:name nxhtml :type git :url "http://github.com/emacsmirror/nxhtml.git" :load "autostart.el")
eval-buffer(#<buffer *load*<3>> nil "/Users/marktran/.emacs.d/el-get/el-get/recipes/nxhtml.el" nil t) ; Reading at buffer position 115
load-with-code-conversion("/Users/marktran/.emacs.d/el-get/el-get/recipes/nxhtml.el" "/Users/marktran/.emacs.d/el-get/el-get/recipes/nxhtml.el" t t)
require(nxhtml nil t)
(progn (require (quote nxhtml) nil t))
(eval-when-compile (require (quote nxhtml) nil t))
eval-buffer(#<buffer *load*<2>> nil "/Users/marktran/.emacs.d/el-get/nxhtml/nxhtml/nxhtml-mumamo.el" nil t) ; Reading at buffer position 1550
load-with-code-conversion("/Users/marktran/.emacs.d/el-get/nxhtml/nxhtml/nxhtml-mumamo.el" "/Users/marktran/.emacs.d/el-get/nxhtml/nxhtml/nxhtml-mumamo.el" nil t)
nxhtml-mumamo-mode()
funcall(nxhtml-mumamo-mode)
(progn (funcall mode) mode)
(if mode (progn (funcall mode) mode))
(when mode (funcall mode) mode)
(if (and keep-mode-if-same (eq ... ...)) nil (when mode (funcall mode) mode))
(unless (and keep-mode-if-same (eq ... ...)) (when mode (funcall mode) mode))
mumamo-ad-set-auto-mode-0(nxhtml-mumamo-mode t)
set-auto-mode-0(nxhtml-mumamo-mode t)
set-auto-mode(t)
majmodpri-check-normal-mode()
majmodpri-apply-priorities(t)
#[(sym val) "\306� \"\210\307\310\311\312\n\"\"� \205r
diff --git a/el-get.el b/el-get.el
index d924bf4..b9d1415 100644
--- a/el-get.el
+++ b/el-get.el
@@ -1151,6 +1151,7 @@ PACKAGE isn't currently installed by ELPA."
(re-search-forward "^$" nil 'move)
(forward-char)
(delete-region (point-min) (point))
+ (setq buffer-file-coding-system 'no-conversion)
(write-file part)
(when (file-exists-p dest)
(delete-file dest))
Getting this error, trying to install following instruction in readme.
Debugger entered--Lisp error: (error "el-get: can not find package name `el-get' in `el-get-sources'") signal(error ("el-get: can not find package name `el-get' in `el-get-sources'")) error("el-get: can not find package name `%s' in `el-get-sources'" "el-get") (if (el-get-package-p package) nil (error "el-get: can not find package name `%s' in `el-get-sources'" package)) (unless (el-get-package-p package) (error "el-get: can not find package name `%s' in `el-get-sources'" package)) el-get-error-unless-package-p("el-get") el-get-init("el-get") (progn (setq default-directory (file-name-as-directory "/Users/dig/.emacs.d/el-get/el-get")) (load (concat ... "el-get" ".el")) (el-get-init "el-get") (with-current-buffer (process-buffer proc) (goto-char ...) (insert "\nCongrats, el-get is installed and ready to serve!"))) (if (eq (process-status proc) (quote exit)) (progn (setq default-directory ...) (load ...) (el-get-init "el-get") (with-current-buffer ... ... ...))) (when (eq (process-status proc) (quote exit)) (setq default-directory (file-name-as-directory "/Users/dig/.emacs.d/el-get/el-get")) (load (concat ... "el-get" ".el")) (el-get-init "el-get") (with-current-buffer (process-buffer proc) (goto-char ...) (insert "\nCongrats, el-get is installed and ready to serve!"))) (lambda (proc change) (when (eq ... ...) (setq default-directory ...) (load ...) (el-get-init "el-get") (with-current-buffer ... ... ...)))(# "exited abnormally with code 128\n") recursive-edit() byte-code("\306� @\307=\203!
It failed for me when trying to invoke install-info
:
cd ~/.emacs.d/el-get/wanderlust/doc/ && /usr/bin/install-info ~/.emacs.d/el-get/wanderlust/doc/wl.info.info dir
note the extra .info
above
Maybe it would be better to recommend something like this?
(url-retrieve "https://github.com/dimitri/el-get/raw/bf87b10f12fd90f4b0b0ddc2b9bc23e4abfeb2dc/el-get-install.el" (lambda (s)(end-of-buffer)(eval-print-last-sexp)))
It would be great if GitHub would provide a stable URL for the raw HEAD revision of a file; if it did, the following stricter version would be easier to write:
(url-retrieve
"https://github.com/dimitri/el-get/blob/master/el-get-install.el"
(lambda (s)
(re-search-forward "<a[^>]*\\Shref=\"\\([^\"]*\\)\"[^>]*\\Sid=\"raw-url\"")
(url-retrieve
(concat "https://github.com" (match-string 1))
(lambda (s) (end-of-buffer) (eval-print-last-sexp)))))
I'm not sure if the complication is worth the trouble, though
Some recipes which require a build step would also work if certain .el files were not byte compiled. The family of recipes I have in mind are wanderlust its dependencies, some of which are quite old. After inquiring on the wanderlust lists, I was informed that the .el files which reference these might never be used on certain platforms of newer versions of emacs.
This capability would also be useful with large packages under active development, where a bug is introduced in some file, but it's not a showstopper, and you'd like to keep using the package (or el-get install it today).
Thanks.
Hello, I've noticed that several recipes have a hardcoded path to Emacs for build/darwin. Specifically, the recipes for bbdb, emacs-w3m, emms, and magit all assume that Emacs.app is in /Applications and hardcode /Applications/Emacs.app/Contents/MacOS or /Applications/Emacs.app/Contents/MacOS/Emacs.
I personally have my Emacs.app in ~/Applications (i.e. my home directory) and anyone else who uses Homebrew to install Emacs may be in the same situation. Ideally, there should be a way to fill in the base path of Emacs so that recipes can be written in a generic way.
Thoughts?
el-get-package-exists-p just checks if the package directory exists, and not if the package is really installed.
This becomes an issue when an (el-get) has failed, and just created an empty directory for the package. This can happen for example with a broken internet connexion: the download timeouts, and the package is not fully installed.
Checking if the package has been correctly installed could be done with a hidden dotfile created when the installation is OK. Or we could use specific checks for each type, but it would be harder.
The :after hook is called on a per-package basis, while these are being loaded, but the ".loaddefs" file is not loaded until all other packages have also been loaded.
Thus, I'm not able to write something like:
(:name enclose :type http
:url "https://github.com/rejeep/enclose/raw/master/enclose.el"
:after (lambda () (enclose-global-mode t)))
But instead:
(:name enclose :type http
:url "https://github.com/rejeep/enclose/raw/master/enclose.el"
:features (enclose)
:after (lambda () (enclose-global-mode t)))
This is not of maximum importance, but a nuissance nonetheless.
The only solution I see to it is to load the ".loaddefs" file both on:
Shouldn't I be able to install anything I have a recipe for? If I `M-x el-get-install RET TAB' I only see the packages in el-get-sources.
So test errors occur when requiring jump. It looks like maybe jump is a git subproject of rinari, maybe?
foo
, whose installation will fail, in el-get-sources
Result:
el-get-package-name-list: Please remove duplicates in `el-get-sources': ("foo").
pull it from: gizmomogwai@8da1ab5
see: http://panela.blog-city.com/python_and_emacs_7_buffer_navigation_point_history.htm for a short blog about it
The comment on el-get-start-process-list-sentinel
seems to imply that the next command is only chained when the process has exited successfully, but change
is never inspected, so it looks like it runs unconditionally.
I got this backtrace:
Debugger entered--Lisp error: (file-error "Removing directory" "Not a directory" "/var/folders/w6/w6aHCL+5EVeBUsDYKAF0pU+++TI/-Tmp-/elhome.RsLcquEd/home/.emacs.d/el-get/gist") delete-directory-internal("/var/folders/w6/w6aHCL+5EVeBUsDYKAF0pU+++TI/-Tmp-/elhome.RsLcquEd/home/.emacs.d/el-get/gist") delete-directory("~/.emacs.d/el-get/gist/" always) dired-delete-file("~/.emacs.d/el-get/gist/" always) el-get-rmdir("gist" nil el-get-post-remove) el-get-elpa-remove("gist" nil el-get-post-remove) el-get-remove("gist") call-interactively(el-get-remove t nil) execute-extended-command((4)) call-interactively(execute-extended-command nil nil)
it appears to be trying to remove the el-get directory even though gist was installed in an elpa-specific location.
Great. Seems to me that recipe override might easily need to set the type. For example, if I fork some cvs-based package to github and make some modifications that haven't been accepted upstream yet, I want to change the type and the URL, and nothing else. In fact, I'm pretty sure that's about to happen for me with wanderlust, in fact.
So no w3m functions are available after (el-get) completes until I manually eval (require 'w3m-load)
I have got the following error during 'emacs --daemon' command execution:
Package el-get failed to install, remove it first.
(No files need saving)
Checking /home/nik/.emacs.d/el-get/package...
Checking /home/nik/.emacs.d/el-get/package/elpa...
Done (Total of 0 files compiled)
require 'package
el-get: Calling :after function for package package
el-get initialized package package
Starting Emacs daemon.
Also, I've got the following error until I've added package to the el-get-sources:
Package el-get failed to install, remove it first.
el-get install google-maps
Warning (initialization): An error occurred while loading `/home/nik/.emacs.d/init.el':
Symbol's value as variable is void: package-user-dir
To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file. Start Emacs with
the `--debug-init' option to view a complete error backtrace.
Starting Emacs daemon.
For example, byte-compiling package files can take a long time, but when there's no build recipe we are doing it with the foreground emacs instance rather than launching an asynchronous job. Furthermore, things currently loaded could in principle adversely affect the results. That's why most makefiles that byte-compile things bypass the user's init file.
It looks like you probably reported the error well, once upon a time, but currently if there's no recipe for a requested package, I get something like:
Package flim failed to install, remove it first.
Of course, there's nothing to remove in that case, so it's a bit confusing.
Yesterday I encountered a problem with Org mode export:
org-export: Cannot open load file: org-mode/lisp/org-latex
But the .el(c) files were present and not stale.
Today, the error prevented entering org-mode itself:
org: Cannot open load file: org-mode/lisp/org
I used el-get-init org-mode to see:
if: el-get could not find directory `./doc' for package org-mode, at /home/myuser/.emacs.d/el-get/el-get/recipes/doc
This is curious, because the line :info "doc" is used in many other packages. Has something changed with the recommended syntax for :info?
The temporary workaround was to remove the line :info "doc" from recipes.el. Org works then. Export via pdflatex works fine, too.
Is this related to the autoloads problems in #111?
Here's a package that's distributed online in .el.gz format:
(:name ido-hacks :type http :url "http://www0.fh-trier.de/~politza/emacs/ido-hacks.el.gz")
Currently el-get puts the gzipped content into the local .el file; it'd be nice if IDO could detect the file extension and gunzip the content as necessary.
(In the longer term, I personally think it would be ideal to unify the http and http-tar methods, and instead make the http download method handle content detection.)
Packages living on emacswiki and other simple http files usually have autoload cookies. Instead of writing a per-package :after lambda declaring the autoloads, I'd rather prefer to have an :autoload or similar property on sources (which could be t by default, at least on the emacswiki and http sources), which would automatically generate the autoload file during installation and load it at init time.
I tried this using el-get-post-install-hook, but I have no el-get-post-init-hook, so I still need some per-package boiler plate code (in the form of :load). Besides, the property-based approach would be much cleaner by itself (defaulting to 't' on all methods except elpa, for example).
;; Generate package autoloads
(add-hook 'el-get-post-install-hooks
'(lambda (package)
(let* ((method (plist-get (el-get-package-def package) :type))
(generate (or (eq method 'http)
(eq method 'emacswiki)))
(generated-autoload-file (concat (el-get-package-directory package) "/loaddefs.el")))
(when generate
(update-directory-autoloads (el-get-package-directory package))))))
el-get
fails when a recipe uses a SCM method for which the binary tool is not installed (and the error message is not very helpful).
A fall back HTTP method URL would be useful in case the user cannot/does not want to install yet another SCM tool.
A similar exception occurs with color-theme
, should I blame bzr version of Emacs, or is it el-get
?
el-get remove magit
el-get install magit
el-get: updating outdated autoloads
el-get: byte-compiling autoload file
el-get: evaluating autoload file
Loading ~/.emacs.d/el-get/.loaddefs...done
el-get: Package magit installed.
el-get: git submodule update ok
error in process sentinel: insert-file-contents-literally: Variable binding depth exceeds max-specpdl-size
error in process sentinel: Variable binding depth exceeds max-specpdl-size
Related to a compile-exclude feature, it would be nice to have an option to simply keep-going to byte compile other .el files when one .el file has a problem.
After the init completes, and the user adjudges the application to be in a works-for-me status despite a few byte-compilation errors, they could exclude those files which failed.
Thanks.
For example, the FLIM package is developed on the flim-1_14
branch rather than trunk, for some reason. I have worked around it as follows, but it's a bad solution. There should be a :revision option or something.
(:name flim
:type cvs
:module "flim"
:url ":pserver:[email protected]:/cvs/root"
:build `(,(concat (executable-find "cvs") " up -r flim-1_14-wl")
,(concat invocation-directory invocation-name
" -L " (file-name-as-directory "..") "apel"
" -batch -q -no-site-file -l FLIM-MK -f compile-flim"
" NONE NONE NONE"))
)
(note that there's something I want from flim-1_14-wl
, but the official head is flim-1_14
)
Currently, el-get is installed explicitely by using the scratch buffer. However, this requires extra steps when one's Emacs configuration is in Git or other RCS -- a simple pull and Emacs restart is not enough to update configuration fully.
Instead, el-get's installation routine described in the quick-start could check whether el-get is already installed and become a noop. This way, that installation routine could be installed permanently into init.el
Given: gist recipe:
(:name gist
:type elpa)
M-x el-get-remove gist reports:
No such file or directory, /home/cbbrowne/.emacs.d/el-get/gist
This is so; gist happens to reside in
/home/cbbrowne/.emacs.d/elpa/gist-0.5
Probably el-get-remove should be using the ELPA package-delete function.
Apt get asks the user if the installation should be performed whenever other packages are pulles as dependencies.
So either emacs must show the question (and allow interaction) to the user, of the flag "-y" must be used with apt-get.
See these comments for details
subj
i think it would be nice to make option for alternative external http file downloader, such as wget or curl
Hi Dimitri, I'm not sure how you prefer to receive patches, but I changed the package.el recipe so that package-list-packages (ELPA) would work out of the box:
(:name package
:type http
:url "http://tromey.com/elpa/package.el"
:features package
:after (lambda ()
(make-directory (expand-file-name "~/.emacs.d/elpa") t)
(package-initialize))
)
Starting up emacs without el-get's new generated loaddefs file works fine for me, but once that file has been generated asynchronously, the next attempt to start emacs fails:
Debugger entered--Lisp error: (file-error "Cannot open load file" "diff-git/diff-git")
(diff-git-default-bindings)
eval((diff-git-default-bindings))
eval-after-load(diff-mode (diff-git-default-bindings))
eval-buffer(#<buffer *load*<3>> nil "/Users/steve/.emacs.d/el-get/.loaddefs.el" nil t) ; Reading at buffer position 9396
load-with-code-conversion("/Users/steve/.emacs.d/el-get/.loaddefs.el" "/Users/steve/.emacs.d/el-get/.loaddefs.el" nil nil)
load("~/.emacs.d/el-get/.loaddefs")
el-get-load-fast("~/.emacs.d/el-get/.loaddefs.el")
el-get-eval-autoloads()
(if el-get-outdated-autoloads nil (el-get-eval-autoloads))
(unless el-get-outdated-autoloads (el-get-eval-autoloads))
el-get(sync)
Here's the offending autoload:
(autoload 'diff-git-default-bindings "diff-git/diff-git" "\
Add bindings to the `diff-mode' keymap.
\(fn)" nil nil)
The corresponding recipe looks like this:
(:name diff-git :type git :url "git://github.com/alanfalloon/diff-git.el.git")
but actually all the autoloads use similar relative paths.
This is with the latest dev emacs, but breaks similarly in Emacs 22.
The version installed using the recipe is 1.4.5, but the latest version is 2.0.4 which was released on November 14, 2010.
The latest version can be obtained from: https://forge.ocamlcore.org/frs/?group_id=43
It looks like the bzr branch hasn't been updated since 2008.
Sometime in the last few days one of the errors in Issue 113 returned:
Org buffer, C-c C-e, p (export via pdflatex):
org-export: Cannot open load file: org-mode/lisp/org-latex
The .el(c) files are present and not stale:
[master]~/.emacs.d/el-get/org-mode $ ls -l lisp/latex
-rw-r--r-- 1 myuser users 6886 Jan 16 14:31 lisp/ob-latex.el
-rw-r--r-- 1 myuser users 5202 Jan 16 14:32 lisp/ob-latex.elc
-rw-r--r-- 1 myuser users 95570 Jan 16 14:31 lisp/org-latex.el
-rw-r--r-- 1 myuser users 76882 Jan 16 14:31 lisp/org-latex.elc
I have tried an el-get-remove, el-get-install cycle, with emacs daemon restart. Nothing seems to have any effect.
The .el file in question does have a couple of warnings, but nothing that should prevent el-get from initializing:
M-x byte-compile-file:
Compiling file /home/myuser/.emacs.d/el-get/org-mode/lisp/org-latex.el at Sun Jan 16 14:44:35 2011
Entering directory /home/myuser/.emacs.d/el-get/org-mode/lisp/' org-latex.el:76:1:Warning: global/dynamic var
latexp' lacks a prefix
org-latex.el:78:1:Warning: global/dynamic var `commentsp' lacks a prefix
In org-export-latex-tables:
org-latex.el:1850:41:Warning: assignment to free variable width' org-latex.el:1850:62:Warning: reference to free variable
width'
Wrote /home/myuser/.emacs.d/el-get/org-mode/lisp/org-latex.elc
There could be similar issues lurking in loading other org modules, but this is the most common org mode special op for me, and thus the only problem I have encountered.
Thanks.
FTP is only supported by the HTTP method, because that actually calls url-retrieve. This is a bit weird from a naming perspective, as a ftp:// URL is definitely not HTTP.
There probably ought to be a default FTP method in v1.0 which is a duplicate of the HTTP method?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.