Giter Site home page Giter Site logo

el-get's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

el-get's Issues

Requires a too-modern version of git

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.

url-retrieve unable to fetch ftp url

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?

color-theme-zen-and-art recipe fix

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")

Some kind of auto-installation needed

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

nxhtml recipe doesn't work

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

Does it compatible with daemon mode?

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.

Need a way to specify branch/tag to checkout

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)

el-get-package-exists-p not tolerant to previous failed installation

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.

Generated autoloads file is broken

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.

Issues with not finding git

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.

Bug when removing elpa packages

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.

Feature request: compile-exclude, regexp omit buggy or non-platform .el files

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.

Request: support .el.gz URLs

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.)

A better bootstrap?

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

Prefer (high-quality) git mirrors if available over CVS sources?

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:

  • Easier to set (or bisect) to a specific whole-tree revision, in case upstream causes a breaking change.
  • Easier to track a specific branch, i.e. the wanderlust packages almost all need to run a branch, which is actually maintained by the git mirror maintainer.
  • Easier to create, maintain, and merge local branches for contributing to upstream.

el-get-remove does not work properly with ELPA

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.

Feature request: download URL as alternative to SCM checkouts

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.

Error while trying to install magit

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

":after" hook called before loading autoloads

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:

  • a call to 'el-get', before doing anything else, so that autoloads for already-installed packages will be available.
  • a package build (after a successful one), so that new features will be made immediately available

el-get doesn't play nicely with alternative shells

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

Does not work with git 1.5.6.5

git-submodule update --recursive is not available with this git version thus making your package impossible to use with debian etch

org-mode.el: el-get could not find directory `./doc'

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?

False report of duplicates in el-get-sources

  • have a package foo, whose installation will fail, in el-get-sources
  • launch emacs, note the failure
  • `M-x el-get-remove RET foo RET'
  • `C-u M-x el-get-install RET'

Result:

el-get-package-name-list: Please remove duplicates in `el-get-sources': ("foo").

installation failure not respected?

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.

Feature request: keep-going option on byte compile

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.

el-get installation procedure needs to require bytecomp

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")

plist merging apparently not working?

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

Bad error message when recipe missing

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.

install fails on mac os x w/ emacs 23.2

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!

Pathname for Emacs should not be hardcoded for build/darwin

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?

Automatically generate and use autoloads

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))))))

More things than necessary done by current emacs instance

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.

FTP

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?

org-export: Cannot open load file: org-mode/lisp/org-latex (#113 redux)

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 varlatexp' 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 variablewidth'

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.

package.el recipe

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))
)

Recipe override should be able to set type

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.

no-conversion is needed under Windows

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))

Method apt-get stops waiting for user input

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.