mirror of
https://github.com/correl/melpa.git
synced 2025-03-07 04:45:08 -10:00
Merge branch 'master' of git://github.com/milkypostman/melpa
This commit is contained in:
commit
69e2d1eac6
136 changed files with 600 additions and 108 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -1,6 +1,7 @@
|
|||
/sync
|
||||
/packages/*.tar
|
||||
/packages/*.el
|
||||
/packages/*-readme.txt
|
||||
/packages/archive-contents
|
||||
/working/*/
|
||||
/html/index.html
|
||||
|
|
6
.gitmodules
vendored
6
.gitmodules
vendored
|
@ -1,3 +1,9 @@
|
|||
[submodule "epkgs"]
|
||||
path = epkgs
|
||||
url = https://github.com/milkypostman/epkgs.git
|
||||
[submodule "util/ecukes"]
|
||||
path = util/ecukes
|
||||
url = https://github.com/rejeep/ecukes.git
|
||||
[submodule "util/espuds"]
|
||||
path = util/espuds
|
||||
url = https://github.com/rejeep/espuds.git
|
||||
|
|
20
.travis.yml
Normal file
20
.travis.yml
Normal file
|
@ -0,0 +1,20 @@
|
|||
language: emacs-lisp
|
||||
before_install:
|
||||
- if [ "$EMACS" = 'emacs-snapshot' ]; then
|
||||
sudo add-apt-repository -y ppa:cassou/emacs &&
|
||||
sudo apt-get update -qq &&
|
||||
sudo apt-get install -qq
|
||||
emacs-snapshot-el emacs-snapshot-gtk emacs-snapshot;
|
||||
fi
|
||||
- if [ "$EMACS" = 'emacs24' ]; then
|
||||
sudo add-apt-repository -y ppa:cassou/emacs &&
|
||||
sudo apt-get update -qq &&
|
||||
sudo apt-get install -qq
|
||||
emacs24 emacs24-el emacs24-common-non-dfsg;
|
||||
fi
|
||||
env:
|
||||
#- EMACS=emacs
|
||||
- EMACS=emacs24
|
||||
#- EMACS=emacs-snapshot
|
||||
script:
|
||||
./run-travis-ci.sh
|
79
README.md
79
README.md
|
@ -1,4 +1,6 @@
|
|||
# MELPA
|
||||
# MELPA
|
||||
|
||||
[](https://travis-ci.org/milkypostman/melpa)
|
||||
|
||||
MELPA is a growing collection of `package.el`-compatible Emacs Lisp
|
||||
packages built automatically on our server from the upstream source
|
||||
|
@ -19,7 +21,7 @@ details.
|
|||
* [Usage](#usage)
|
||||
* [Contributing](#contributing-new-packages)
|
||||
* [Package Format](#package-format)
|
||||
* [Server Scripts](#server-scripts)
|
||||
* [Build Scripts](#build-scripts)
|
||||
* [API](#api)
|
||||
* [MELPA Package](#melpa-package)
|
||||
* [About](#about)
|
||||
|
@ -32,7 +34,7 @@ call to `package-initialize` in your `init.el` file.
|
|||
|
||||
(add-to-list 'package-archives
|
||||
'("melpa" . "http://melpa.milkbox.net/packages/") t)
|
||||
|
||||
|
||||
Since `package.el` doesn't allow locking packages to certain version,
|
||||
we also provide a package `melpa.el` which contains code to allow
|
||||
restricting packages to specific repositories. This allows someone to
|
||||
|
@ -52,11 +54,7 @@ guidelines,
|
|||
* Upstream source must be stored in an authoritative
|
||||
[SCM](http://en.wikipedia.org/wiki/Software_configuration_management)
|
||||
repository or on the Emacswiki.
|
||||
|
||||
<!-- * Package must be actively developed and not otherwise included in a -->
|
||||
<!-- different ELPA archive. Packages that are better suited for -->
|
||||
<!-- [marmalade](http://marmalade-repo.org/) -->
|
||||
|
||||
|
||||
* Submit one pull request per recipe. You can create multiple
|
||||
branches and create a pull request for each branch.
|
||||
|
||||
|
@ -64,16 +62,16 @@ guidelines,
|
|||
specifying only files relevant to the package. See the
|
||||
[Package Format](#package-format) section for more information on
|
||||
specifying package files.
|
||||
|
||||
|
||||
* The package name should match the name of the feature provided. See
|
||||
the `package` function for more information.
|
||||
|
||||
|
||||
* Packages should adhere to the `package.el` format as specified by
|
||||
`(info "(elisp) Packaging")`. More information on this format is
|
||||
provided by the
|
||||
[marmalade package manual](http://marmalade-repo.org/doc-files/package.5.html).
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
### Testing
|
||||
|
||||
|
@ -86,7 +84,7 @@ Let `<NAME>` denote the name of the recipe to submit.
|
|||
3. Confirm your package build properly by running
|
||||
|
||||
make recipes/<NAME>
|
||||
|
||||
|
||||
4. Install the file you built by running `package-install-file` from
|
||||
within Emacs and specifying the newly built package in the directory
|
||||
specified by `package-build-archive-dir` (default: `packages/`
|
||||
|
@ -104,7 +102,7 @@ helps simplify this process.
|
|||
|
||||
Packages are specified by files in the `recipes` directory. You can
|
||||
contribute a new package by adding a new file under `recipes` using
|
||||
the following form,
|
||||
the following form (`[...]` denotes optional or conditional values),
|
||||
|
||||
```elisp
|
||||
(<package-name>
|
||||
|
@ -112,22 +110,14 @@ the following form,
|
|||
[:url "<repo url>"]
|
||||
[:repo "github-user/repo-name"]
|
||||
[:module "cvs-module"]
|
||||
[:files ("<file1>", ...)])
|
||||
[:files ("<file1>" ...)])
|
||||
```
|
||||
|
||||
- `package-name`
|
||||
a lisp symbol that has the same name as the package being specified.
|
||||
|
||||
- `:url`
|
||||
specifies the URL of the version control repository. *required for
|
||||
the `git`, `bzr`, `hg`, `darcs`, `svn` and `cvs` fetchers*
|
||||
|
||||
- `:module`
|
||||
specifies the module of a CVS repository to check out. Defaults to to
|
||||
`package-name`. Only used with `:fetcher cvs`, and otherwise ignored.
|
||||
|
||||
- `:fetcher`
|
||||
specifies the type of repository that `:url` points to. Right now
|
||||
(one of `git, github, bzr, hg, darcs, svn, cvs, wiki`) specifies the type of repository that `:url` points to. Right now
|
||||
package-build supports [git][git], [github][github],
|
||||
[bazaar (bzr)][bzr], [mercurial (hg)][hg],
|
||||
[subversion (svn)][svn], [cvs][cvs] [darcs][darcs], and
|
||||
|
@ -143,13 +133,27 @@ differs from the package name being built. In the case of the `github`
|
|||
fetcher, use `:repo` instead of `:url`; the git URL will then be
|
||||
deduced.
|
||||
|
||||
- `:url`
|
||||
specifies the URL of the version control repository. *required for
|
||||
the `git`, `bzr`, `hg`, `darcs`, `svn` and `cvs` fetchers.*
|
||||
|
||||
- `:repo`
|
||||
specifies the github repository and is of the form `github-user/repo-name`. *required for the `github` fetcher*.
|
||||
|
||||
- `:module`
|
||||
specifies the module of a CVS repository to check out. Defaults to to
|
||||
`package-name`. Only used with `:fetcher cvs`, and otherwise ignored.
|
||||
|
||||
- `:files`
|
||||
optional property specifying the explicit files used to build the
|
||||
package. Automatically populated by matching all `.el` files in the
|
||||
root of the repository. This is necessary when there are multiple
|
||||
package. Automatically populated by matching all `.el` files in the
|
||||
root of the repository. This is necessary when there are multiple
|
||||
`.el` files in the repository but the package should only be built
|
||||
from a subset. *Any file in any path in the repository is copied to
|
||||
the root of the package*
|
||||
from a subset. *Any file specifed at any path in the repository is
|
||||
copied to the root of the package.* More complex options are
|
||||
available, submit an
|
||||
[Issue](https://github.com/milkypostman/melpa/issues) if the specified
|
||||
package requires more complex file specification.
|
||||
|
||||
[git]: http://git-scm.com/
|
||||
[github]: https://github.com/
|
||||
|
@ -174,7 +178,7 @@ Since there is only one `.el` file, this package only needs the `:url` and `:fet
|
|||
(ido-ubiquitous
|
||||
:url "https://github.com/DarwinAwardWinner/ido-ubiquitous.git"
|
||||
:fetcher git)
|
||||
```
|
||||
```
|
||||
|
||||
### Multiple Packages in one Repository
|
||||
|
||||
|
@ -191,7 +195,7 @@ contains the *starter-kit* package along with extra packages in the
|
|||
:url "https://github.com/technomancy/emacs-starter-kit.git"
|
||||
:fetcher git
|
||||
:files ("modules/starter-kit-bindings.el"))
|
||||
```
|
||||
```
|
||||
|
||||
Notice that `:files` is not specified for `starter-kit` since
|
||||
package-build will automatically add all `.el` files in the root
|
||||
|
@ -202,10 +206,10 @@ files specified explicitly.
|
|||
|
||||
### Multiple Files in Multiple Directories
|
||||
|
||||
There are special cases when we need
|
||||
There are special cases when we need
|
||||
There are special cases where creation of the package comes from many
|
||||
different sub-directories in the repository and the destination
|
||||
sub-directories need to be explicitly set.
|
||||
sub-directories need to be explicitly set.
|
||||
|
||||
Consider the `flymake-perlcritic` recipe,
|
||||
|
||||
|
@ -230,7 +234,7 @@ first element to be the destination directory. These can be embedded
|
|||
further, such as the following---hypothetical---entry for `:files`,
|
||||
|
||||
```elisp
|
||||
("*.el" ("snippets"
|
||||
("*.el" ("snippets"
|
||||
("html-mode" "snippets/html-mode/*")
|
||||
("python-mode" "snippets/python-mode/*")))
|
||||
```
|
||||
|
@ -316,17 +320,17 @@ format.
|
|||
* `clean-packages` -- remove all compiled packages from the `packages` directory.
|
||||
|
||||
* `clean-json` -- remove all JSON files.
|
||||
|
||||
|
||||
Note that these scripts require an Emacs with `package.el` installed,
|
||||
such as Emacs 24. If you have an older version of Emacs, you can get a
|
||||
suitable `package.el` [here](http://bit.ly/pkg-el23).
|
||||
|
||||
|
||||
[melpa]: http://melpa.milkbox.net
|
||||
|
||||
|
||||
## API
|
||||
|
||||
All repository code is contained in the `package-build.el`.
|
||||
All repository code is contained in the `package-build.el`.
|
||||
|
||||
### Functions
|
||||
|
||||
|
@ -397,7 +401,7 @@ which packages will be enabled (whitelist packages only) or excluded
|
|||
`package-archives`, PACKAGE is a symbol of a package in that
|
||||
archive to exclude. Any specified package is excluded regardless
|
||||
of the value of `package-archive-enable-alist`
|
||||
|
||||
|
||||
|
||||
If a particular ARCHIVE has an entry in
|
||||
`package-archive-enable-alist` then only packages
|
||||
|
@ -422,4 +426,3 @@ You can install the package manually by pasting this into yoru `*scratch*` buffe
|
|||
|
||||
*MELPA* is *Milkypostman's ELPA* or *Milkypostman's Experimental Lisp
|
||||
Package Archive* if you're not into the whole brevity thing.
|
||||
|
||||
|
|
8
features/initialization.feature
Normal file
8
features/initialization.feature
Normal file
|
@ -0,0 +1,8 @@
|
|||
Feature: Initialization
|
||||
|
||||
Scenario: read recipes
|
||||
Given read recipes
|
||||
|
||||
Scenario: package-build initialization
|
||||
Given initialization
|
||||
|
22
features/step-definitions/melpa-steps.el
Normal file
22
features/step-definitions/melpa-steps.el
Normal file
|
@ -0,0 +1,22 @@
|
|||
(Given "^initialization$"
|
||||
(lambda ()
|
||||
(package-build-initialize)))
|
||||
|
||||
(Given "^read recipes$"
|
||||
(lambda ()
|
||||
(pb/read-recipes)))
|
||||
|
||||
(Given "^capture messages to \\(.+\\)$"
|
||||
(lambda (varby)
|
||||
(message "****** %s" varby)
|
||||
(collect-messages-to varby)))
|
||||
|
||||
(Given "^package initialization$"
|
||||
(lambda ()
|
||||
(package-initialize)))
|
||||
|
||||
(Then "^\\(.+\\) should be empty"
|
||||
(lambda (var)
|
||||
(message "//////// %s" (eval (intern var)))
|
||||
(let ((varsym (intern var)))
|
||||
(assert (not (eval varsym)) nil "Variable %s is not empty." var))))
|
43
features/support/env.el
Normal file
43
features/support/env.el
Normal file
|
@ -0,0 +1,43 @@
|
|||
;; This is an example of how you could set up this file. This setup
|
||||
;; requires a directory called util in the project root and that the
|
||||
;; util directory contains the testing tools ert and espuds.
|
||||
|
||||
(let* ((features-directory
|
||||
(file-name-directory
|
||||
(directory-file-name (file-name-directory load-file-name))))
|
||||
(project-directory
|
||||
(file-name-directory
|
||||
(directory-file-name features-directory))))
|
||||
(setq melpa-root-path project-directory)
|
||||
(setq melpa-util-path (expand-file-name "util" melpa-root-path)))
|
||||
|
||||
(add-to-list 'load-path melpa-root-path)
|
||||
(add-to-list 'load-path (expand-file-name "espuds" melpa-util-path))
|
||||
|
||||
(require 'package-build)
|
||||
(require 'ert)
|
||||
(require 'espuds)
|
||||
|
||||
|
||||
(Setup
|
||||
;; Before anything has run
|
||||
)
|
||||
|
||||
(Before
|
||||
;; Before each scenario is run
|
||||
(defmacro collect-messages-to (var)
|
||||
(let ((varsym (intern (eval var))))
|
||||
(set varsym '())
|
||||
`(defadvice message (before message (format-string &rest args) activate)
|
||||
(add-to-list ',varsym (ignore-errors (format format-string args))))
|
||||
))
|
||||
)
|
||||
|
||||
(After
|
||||
;; After each scenario is run
|
||||
)
|
||||
|
||||
(Teardown
|
||||
;; After when everything has been run
|
||||
)
|
||||
|
|
@ -13,11 +13,13 @@
|
|||
<%
|
||||
require 'json'
|
||||
archive_json = JSON.parse(File.open("../archive.json").read)
|
||||
recipe_json = JSON.parse(File.open("../recipes.json").read)
|
||||
|
||||
headers = ["Package", "Version", "Description", "Source"]
|
||||
headers = ["Package", "Version", "Description", "Recipe", "Source"]
|
||||
|
||||
data = archive_json.keys.sort.map do |pkgname|
|
||||
versions, deps, descr, pkgtype = archive_json[pkgname]
|
||||
recipe = recipe_json[pkgname]
|
||||
version = versions.join('.')
|
||||
pkgurl = "packages/#{pkgname}-#{version}." + (pkgtype == "single" ? "el" : "tar")
|
||||
recipe_url = "https://github.com/milkypostman/melpa/blob/master/recipes/#{pkgname}"
|
||||
|
@ -25,10 +27,17 @@
|
|||
if descr =~ /(.*?)(\s*-\*-.*?)?\s*\[source:\s*(\w+)\]\s*/
|
||||
descr, source = $1, $3
|
||||
end
|
||||
["<a name=\"#{pkgname}\"></a>[#{pkgname}](#{pkgurl})", version, descr, "[#{source}](#{recipe_url})"]
|
||||
|
||||
source_url =
|
||||
case source
|
||||
when 'github' then "https://github.com/#{recipe['repo']}"
|
||||
when 'wiki' then recipe.key?('files') ? nil : "http://www.emacswiki.org/emacs/#{pkgname}.el"
|
||||
end
|
||||
|
||||
["<a name=\"#{pkgname}\"></a>[#{pkgname}](#{pkgurl})", version, descr, "[recipe](#{recipe_url})", source_url ? "[#{source}](#{source_url})" : ""]
|
||||
end
|
||||
|
||||
colwidth = [0,0,0, 9]
|
||||
colwidth = [0,0,0,0, 9]
|
||||
|
||||
data.map do |row|
|
||||
row.to_enum(:each_with_index).map do |e,i|
|
||||
|
@ -100,26 +109,11 @@ You can then customize two variables:
|
|||
|
||||
## Known Issues
|
||||
|
||||
Due to the way the HTTP routing works on my provider, the HTTP/1.1
|
||||
connection will time out for long package installs--where the
|
||||
package is large and takes a while to compile--like *magit* or *evil*. If you run into problems with complaints about the response from the web server consider adding
|
||||
**Note:** *This fix are included in the `melpa.el` package.*
|
||||
|
||||
<!-- <script src="https://gist.github.com/1679208.js"> </script> -->
|
||||
|
||||
(setq url-http-attempt-keepalives nil)
|
||||
|
||||
This makes things a tad more slow but means that the install completes
|
||||
correctly. Otherwise the connection times out and the install goes haywire.
|
||||
|
||||
### Fixes for `package.el`
|
||||
|
||||
**Note:** *These fixes are included in the `melpa.el` package.*
|
||||
|
||||
There are a number of small bugs in Emacs24's `package.el`. First,
|
||||
when installing dependencies, the packages were not getting
|
||||
initialized. Second, the order for dependencies was coming out
|
||||
backwards for what I needed. Both problems are
|
||||
easily patched by some *advice*.
|
||||
There is a small bug in Emacs24's `package.el` the order for
|
||||
dependencies comes out backwards for what I needed. the problem is
|
||||
patched by some *advice*.
|
||||
|
||||
<!-- <script src="https://gist.github.com/1679232.js"> </script> -->
|
||||
|
||||
|
@ -131,17 +125,6 @@ backwards for what I needed. Both problems are
|
|||
(setq requirements (reverse requirements))
|
||||
(print requirements))
|
||||
|
||||
If you are not using Emacs24 from HEAD, you may also need this to initialize packages after they are downloaded and installed.
|
||||
|
||||
(defadvice package-download-tar
|
||||
(after package-download-tar-initialize activate compile)
|
||||
"initialize the package after compilation"
|
||||
(package-initialize))
|
||||
|
||||
(defadvice package-download-single
|
||||
(after package-download-single-initialize activate compile)
|
||||
"initialize the package after compilation"
|
||||
(package-initialize))
|
||||
|
||||
|
||||
## Updating Packages
|
||||
|
@ -159,3 +142,9 @@ packages using git, subversion, mercurial, and darcs. This covers
|
|||
most of the packages that I am interested in.
|
||||
|
||||
|
||||
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" type="text/javascript"></script>
|
||||
<script src="http://cdnjs.cloudflare.com/ajax/libs/datatables/1.9.4/jquery.dataTables.min.js" type="text/javascript"></script>
|
||||
<script language="javascript">
|
||||
$("table").dataTable({bPaginate: false, bLengthChange: false});
|
||||
$('div.dataTables_filter input').focus().attr("placeholder", "Enter filter terms");
|
||||
</script>
|
||||
|
|
149
package-build.el
149
package-build.el
|
@ -43,6 +43,7 @@
|
|||
(require 'cl)
|
||||
|
||||
(require 'package)
|
||||
(require 'lisp-mnt)
|
||||
|
||||
(defcustom package-build-working-dir (expand-file-name "working/")
|
||||
"Directory in which to keep checkouts."
|
||||
|
@ -65,6 +66,9 @@
|
|||
(defvar package-build-archive-alist nil
|
||||
"List of already-built packages, in the standard package.el format.")
|
||||
|
||||
(defvar package-build-initialized nil
|
||||
"Determines if package-build has been initialized.")
|
||||
|
||||
;;; Internal functions
|
||||
|
||||
(defun pb/slurp-file (file-name)
|
||||
|
@ -90,7 +94,7 @@
|
|||
;; which break date-to-time
|
||||
(date-to-time (replace-regexp-in-string "/" "-" s))))))
|
||||
(concat (format-time-string "%Y%m%d." time)
|
||||
(format "%d" (or (parse-integer (format-time-string "%H%M" time)) 0)))))
|
||||
(format "%d" (or (string-to-number (format-time-string "%H%M" time)) 0)))))
|
||||
|
||||
(defun pb/string-match-all (regex str &optional group)
|
||||
"Find every match for `REGEX' within `STR', returning the full match string or group `GROUP'."
|
||||
|
@ -138,10 +142,9 @@ In turn, this function uses the :fetcher option in the config to
|
|||
choose a source-specific fetcher function, which it calls with
|
||||
the same arguments."
|
||||
(let ((repo-type (plist-get config :fetcher)))
|
||||
(message (format "%s " repo-type))
|
||||
(message "Fetcher: %s" repo-type)
|
||||
(unless (eq 'wiki repo-type)
|
||||
(message (format "%s\n"
|
||||
(or (plist-get config :repo) (plist-get config :url)))))
|
||||
(message "Source: %s\n" (or (plist-get config :repo) (plist-get config :url))))
|
||||
(funcall (intern (format "pb/checkout-%s" repo-type))
|
||||
name config cwd)))
|
||||
|
||||
|
@ -177,11 +180,30 @@ seconds; the server cuts off after 10 requests in 20 seconds.")
|
|||
(url-copy-file download-url filename t))
|
||||
(when (zerop (nth 7 (file-attributes filename)))
|
||||
(error "Wiki file %s was empty - has it been removed?" filename))
|
||||
(with-current-buffer (pb/with-wiki-rate-limit
|
||||
(url-retrieve-synchronously wiki-url))
|
||||
(message (format "%s\n" download-url))
|
||||
(pb/find-parse-time
|
||||
"Last edited \\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [0-9]\\{2\\}:[0-9]\\{2\\} [A-Z]\\{3\\}\\)"))))
|
||||
;; The Last-Modified response header for the download is actually
|
||||
;; correct for the file, but we have no access to that
|
||||
;; header. Instead, we must query the non-raw emacswiki page for
|
||||
;; the file.
|
||||
;; Since those Emacswiki lookups are time-consuming, we maintain a
|
||||
;; foo.el.stamp file containing ("SHA1" . "PARSED_TIME")
|
||||
(let* ((new-content-hash (secure-hash 'sha1 (pb/slurp-file filename)))
|
||||
(stamp-file (concat filename ".stamp"))
|
||||
(stamp-info (pb/read-from-file stamp-file))
|
||||
(prev-content-hash (car stamp-info)))
|
||||
(if (and prev-content-hash
|
||||
(string-equal new-content-hash prev-content-hash))
|
||||
;; File has not changed, so return old timestamp
|
||||
(progn
|
||||
(message "%s is unchanged" filename)
|
||||
(cdr stamp-info))
|
||||
(message "%s has changed - checking mod time" filename)
|
||||
(let ((new-timestamp
|
||||
(with-current-buffer (pb/with-wiki-rate-limit
|
||||
(url-retrieve-synchronously wiki-url))
|
||||
(pb/find-parse-time
|
||||
"Last edited \\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} [0-9]\\{2\\}:[0-9]\\{2\\} [A-Z]\\{3\\}\\)"))))
|
||||
(pb/dump (cons new-content-hash new-timestamp) stamp-file)
|
||||
new-timestamp)))))
|
||||
|
||||
(defun pb/checkout-wiki (name config dir)
|
||||
"Checkout package NAME with config CONFIG from the EmacsWiki into DIR."
|
||||
|
@ -228,11 +250,11 @@ seconds; the server cuts off after 10 requests in 20 seconds.")
|
|||
|
||||
(defun pb/princ-exists (dir)
|
||||
"Print a message that the contents of DIR will be updated."
|
||||
(message (format "updating %s\n" dir)))
|
||||
(message "Updating %s" dir))
|
||||
|
||||
(defun pb/princ-checkout (repo dir)
|
||||
"Print a message that REPO will be checked out into DIR."
|
||||
(message (format "cloning %s to %s\n" repo dir)))
|
||||
(message "Cloning %s to %s" repo dir))
|
||||
|
||||
(defun pb/checkout-svn (name config dir)
|
||||
"Check package NAME with config CONFIG out of svn into DIR."
|
||||
|
@ -430,6 +452,35 @@ The file is written to `package-build-working-dir'."
|
|||
(or (mapcar (lambda (fn) (concat dir "/" fn)) files)
|
||||
(list dir)))))
|
||||
|
||||
|
||||
(defun pb/find-package-commentary (file-path)
|
||||
"Get commentary section from FILE-PATH."
|
||||
(when (file-exists-p file-path)
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file-path)
|
||||
(lm-commentary))))
|
||||
|
||||
(defun pb/write-pkg-readme (commentary file-name)
|
||||
"Write COMMENTARY to the FILE-NAME-readme.txt file."
|
||||
(when commentary
|
||||
(with-temp-buffer
|
||||
(insert commentary)
|
||||
;; Adapted from `describe-package-1'.
|
||||
(goto-char (point-min))
|
||||
(save-excursion
|
||||
(when (re-search-forward "^;;; Commentary:\n" nil t)
|
||||
(replace-match ""))
|
||||
(while (re-search-forward "^\\(;+ ?\\)" nil t)
|
||||
(replace-match ""))
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "\\`\\( *\n\\)+" nil t)
|
||||
(replace-match "")))
|
||||
(delete-trailing-whitespace)
|
||||
(let ((coding-system-for-write buffer-file-coding-system))
|
||||
(write-region nil nil
|
||||
(expand-file-name (concat file-name "-readme.txt")
|
||||
package-build-archive-dir))))))
|
||||
|
||||
(defun pb/get-package-info (file-path)
|
||||
"Get a vector of package info from the docstrings in FILE-PATH."
|
||||
(when (file-exists-p file-path)
|
||||
|
@ -464,7 +515,6 @@ The file is written to `package-build-working-dir'."
|
|||
(nth 1 pkgfile-info)))
|
||||
(error "No define-package found in %s" file-path)))))
|
||||
|
||||
|
||||
(defun pb/merge-package-info (pkg-info name version config)
|
||||
"Return a version of PKG-INFO updated with NAME, VERSION and info from CONFIG.
|
||||
If PKG-INFO is nil, an empty one is created."
|
||||
|
@ -478,12 +528,14 @@ If PKG-INFO is nil, an empty one is created."
|
|||
|
||||
(defun pb/dump-archive-contents ()
|
||||
"Dump the list of built packages back to the archive-contents file."
|
||||
(package-build-initialize)
|
||||
(pb/dump (cons 1 package-build-archive-alist)
|
||||
(expand-file-name "archive-contents"
|
||||
package-build-archive-dir)))
|
||||
|
||||
(defun pb/add-to-archive-contents (pkg-info type)
|
||||
"Add the built archive with info PKG-INFO and TYPE to `package-build-archive-alist'."
|
||||
(package-build-initialize)
|
||||
(let* ((name (intern (aref pkg-info 0)))
|
||||
(requires (aref pkg-info 1))
|
||||
(desc (or (aref pkg-info 2) "No description available."))
|
||||
|
@ -515,6 +567,7 @@ If PKG-INFO is nil, an empty one is created."
|
|||
Note that the working directory (if present) is not deleted by
|
||||
this function, since the archive list may contain another version
|
||||
of the same-named package which is to be kept."
|
||||
(package-build-initialize)
|
||||
(print (format "Removing archive: %s" archive-entry))
|
||||
(let ((archive-file (pb/archive-file-name archive-entry)))
|
||||
(when (file-exists-p archive-file)
|
||||
|
@ -523,10 +576,29 @@ of the same-named package which is to be kept."
|
|||
(remove archive-entry package-build-archive-alist))
|
||||
(pb/dump-archive-contents))
|
||||
|
||||
|
||||
(defun pb/read-recipe (file-name)
|
||||
(let ((pkg-info (pb/read-from-file file-name)))
|
||||
(if (string= (symbol-name (car pkg-info))
|
||||
(file-name-nondirectory file-name))
|
||||
pkg-info
|
||||
(error "Recipe '%s' contains mismatched package name '%s'"
|
||||
(file-name-nondirectory file-name)
|
||||
(car pkg-info)))))
|
||||
|
||||
(defun pb/read-recipes ()
|
||||
"Return a list of data structures for all recipes in `package-build-recipes-dir'."
|
||||
(mapcar 'pb/read-from-file
|
||||
(directory-files package-build-recipes-dir t "^[^.]")))
|
||||
(loop for file-name in (directory-files package-build-recipes-dir t "^[^.]")
|
||||
collect (pb/read-recipe file-name)))
|
||||
|
||||
(defun pb/read-recipes-ignore-errors ()
|
||||
"Return a list of data structures for all recipes in `package-build-recipes-dir'."
|
||||
(loop for file-name in (directory-files package-build-recipes-dir t "^[^.]")
|
||||
for pkg-info = (condition-case err (pb/read-recipe file-name)
|
||||
('error (message (error-message-string err))
|
||||
nil))
|
||||
when pkg-info
|
||||
collect pkg-info))
|
||||
|
||||
|
||||
(defun pb/expand-file-specs (dir specs &optional subdir)
|
||||
|
@ -583,6 +655,7 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
|
||||
(defun pb/package-name-completing-read ()
|
||||
"Prompt for a package name, returning a symbol."
|
||||
(package-build-initialize)
|
||||
(intern (completing-read "Package: " package-build-alist)))
|
||||
|
||||
(defun pb/find-source-file (target files)
|
||||
|
@ -595,6 +668,7 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
(defun package-build-archive (name)
|
||||
"Build a package archive for package NAME."
|
||||
(interactive (list (pb/package-name-completing-read)))
|
||||
(package-build-initialize)
|
||||
(let* ((file-name (symbol-name name))
|
||||
(cfg (or (cdr (assoc name package-build-alist))
|
||||
(error "Cannot find package %s" file-name)))
|
||||
|
@ -602,10 +676,11 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
(file-name-as-directory
|
||||
(expand-file-name file-name package-build-working-dir))))
|
||||
|
||||
(message (format "\n;;; %s\n" file-name))
|
||||
(message "\n;;; %s\n" file-name)
|
||||
(let* ((version (pb/checkout name cfg pkg-cwd))
|
||||
(files (pb/expand-config-file-list pkg-cwd cfg))
|
||||
(default-directory package-build-working-dir))
|
||||
(default-directory package-build-working-dir)
|
||||
(start-time (current-time)))
|
||||
(cond
|
||||
((not version)
|
||||
(message "Unable to check out repository for %s" name))
|
||||
|
@ -622,23 +697,34 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
(when (file-exists-p pkg-target)
|
||||
(delete-file pkg-target t))
|
||||
(copy-file pkg-source pkg-target)
|
||||
|
||||
(pb/write-pkg-readme (and (> (length pkg-info) 4) (aref pkg-info 4))
|
||||
file-name)
|
||||
|
||||
(pb/add-to-archive-contents pkg-info 'single)))
|
||||
((< 1 (length files))
|
||||
(let* ((pkg-dir (concat file-name "-" version))
|
||||
(pkg-file (concat file-name "-pkg.el"))
|
||||
(pkg-file-source (or (pb/find-source-file pkg-file files)
|
||||
pkg-file))
|
||||
(file-source (concat file-name ".el"))
|
||||
(pkg-source (or (pb/find-source-file file-source files)
|
||||
file-source))
|
||||
(pkg-info
|
||||
(pb/merge-package-info
|
||||
(let ((default-directory pkg-cwd))
|
||||
(or (pb/get-pkg-file-info pkg-file-source)
|
||||
;; some packages (like magit) provide name-pkg.el.in
|
||||
(pb/get-pkg-file-info (concat pkg-file ".in"))
|
||||
(pb/get-package-info (concat file-name ".el"))))
|
||||
(pb/get-package-info pkg-source)))
|
||||
file-name
|
||||
version
|
||||
cfg)))
|
||||
|
||||
(let ((default-directory pkg-cwd))
|
||||
(pb/write-pkg-readme (pb/find-package-commentary pkg-source)
|
||||
file-name))
|
||||
|
||||
(when (file-exists-p pkg-dir)
|
||||
(delete-directory pkg-dir t nil))
|
||||
|
||||
|
@ -662,6 +748,9 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
|
||||
(t (error "Unable to find files matching recipe patterns")))
|
||||
(pb/dump-archive-contents)
|
||||
(message "Built in %.3fs, finished at %s"
|
||||
(time-to-seconds (time-since start-time))
|
||||
(current-time-string))
|
||||
file-name)))
|
||||
|
||||
;;;###autoload
|
||||
|
@ -676,7 +765,7 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
(if (y-or-n-p (format "Save file %s? " buffer-file-name))
|
||||
(save-buffer)
|
||||
(error "Aborting")))
|
||||
(package-build-initialize)
|
||||
(package-build-reinitialize)
|
||||
(package-build-archive (intern (file-name-nondirectory (buffer-file-name)))))
|
||||
|
||||
(defun package-build-archive-ignore-errors (pkg)
|
||||
|
@ -698,6 +787,7 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
(defun package-build-all ()
|
||||
"Build all packages in the `package-build-alist'."
|
||||
(interactive)
|
||||
(package-build-initialize)
|
||||
(let ((failed (loop for pkg in (mapcar 'car package-build-alist)
|
||||
when (not (package-build-archive-ignore-errors pkg))
|
||||
collect pkg)))
|
||||
|
@ -711,22 +801,28 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
(defun package-build-cleanup ()
|
||||
"Remove previously-built packages that no longer have recipes."
|
||||
(interactive)
|
||||
(package-build-initialize)
|
||||
(let* ((known-package-names (mapcar 'car package-build-alist))
|
||||
(stale-archives (loop for built in package-build-archive-alist
|
||||
when (not (memq (car built) known-package-names))
|
||||
collect built)))
|
||||
(mapc 'pb/remove-archive stale-archives)))
|
||||
|
||||
(defun package-build-reinitialize ()
|
||||
(interactive)
|
||||
(setq package-build-initialized nil)
|
||||
(package-build-initialize))
|
||||
|
||||
(defun package-build-initialize ()
|
||||
"Load the recipe and archive-contents files."
|
||||
(interactive)
|
||||
(setq package-build-alist (pb/read-recipes)
|
||||
package-build-archive-alist
|
||||
(cdr (pb/read-from-file
|
||||
(expand-file-name "archive-contents"
|
||||
package-build-archive-dir)))))
|
||||
|
||||
(package-build-initialize)
|
||||
(unless package-build-initialized
|
||||
(setq package-build-initialized t
|
||||
package-build-alist (pb/read-recipes-ignore-errors)
|
||||
package-build-archive-alist
|
||||
(cdr (pb/read-from-file
|
||||
(expand-file-name "archive-contents"
|
||||
package-build-archive-dir))))))
|
||||
|
||||
;; Utility functions
|
||||
(autoload 'json-encode "json")
|
||||
|
@ -734,11 +830,13 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
|
||||
(defun package-build-alist-as-json (fn)
|
||||
(interactive)
|
||||
(package-build-initialize)
|
||||
(with-temp-file fn
|
||||
(insert (json-encode package-build-alist))))
|
||||
|
||||
(defun package-build-archive-alist-as-json (fn)
|
||||
(interactive)
|
||||
(package-build-initialize)
|
||||
(with-temp-file fn
|
||||
(insert (json-encode package-build-archive-alist))))
|
||||
|
||||
|
@ -747,6 +845,7 @@ FILES is a list of (SOURCE . DEST) relative filepath pairs."
|
|||
|
||||
;; Local Variables:
|
||||
;; coding: utf-8
|
||||
;; byte-compile-warnings: (not cl-functions)
|
||||
;; eval: (checkdoc-minor-mode 1)
|
||||
;; End:
|
||||
|
||||
|
|
1
recipes/ack-menu
Normal file
1
recipes/ack-menu
Normal file
|
@ -0,0 +1 @@
|
|||
(ack-menu :repo "chumpage/ack-menu" :fetcher github)
|
1
recipes/applescript-mode
Normal file
1
recipes/applescript-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(applescript-mode :fetcher github :repo "ieure/applescript-mode")
|
1
recipes/auto-indent-mode
Normal file
1
recipes/auto-indent-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(auto-indent-mode :fetcher github :repo "mlf176f2/auto-indent-mode.el")
|
1
recipes/awk-it
Normal file
1
recipes/awk-it
Normal file
|
@ -0,0 +1 @@
|
|||
(awk-it :fetcher wiki)
|
3
recipes/bbdb-vcard
Normal file
3
recipes/bbdb-vcard
Normal file
|
@ -0,0 +1,3 @@
|
|||
(bbdb-vcard :repo "tohojo/bbdb-vcard"
|
||||
:fetcher github
|
||||
:files ("bbdb-vcard.el" "vcard.el"))
|
|
@ -1,3 +1,4 @@
|
|||
(buster-snippets
|
||||
:repo "magnars/buster-snippets.el"
|
||||
:fetcher github)
|
||||
:fetcher github
|
||||
:files ("*.el" "snippets"))
|
||||
|
|
1
recipes/cache
Normal file
1
recipes/cache
Normal file
|
@ -0,0 +1 @@
|
|||
(cache :fetcher github :repo "nflath/cache")
|
1
recipes/chicken-scheme
Normal file
1
recipes/chicken-scheme
Normal file
|
@ -0,0 +1 @@
|
|||
(chicken-scheme :fetcher github :repo "dleslie/chicken-scheme.el")
|
1
recipes/circe
Normal file
1
recipes/circe
Normal file
|
@ -0,0 +1 @@
|
|||
(circe :fetcher github :repo "jorgenschaefer/circe" :files ("lisp/*.el"))
|
1
recipes/column-marker
Normal file
1
recipes/column-marker
Normal file
|
@ -0,0 +1 @@
|
|||
(column-marker :fetcher wiki)
|
1
recipes/creole
Normal file
1
recipes/creole
Normal file
|
@ -0,0 +1 @@
|
|||
(creole :fetcher github :repo "nicferrier/elwikicreole" :files ("creole.el"))
|
1
recipes/crosshairs
Normal file
1
recipes/crosshairs
Normal file
|
@ -0,0 +1 @@
|
|||
(crosshairs :fetcher wiki)
|
1
recipes/cursor-chg
Normal file
1
recipes/cursor-chg
Normal file
|
@ -0,0 +1 @@
|
|||
(cursor-chg :fetcher wiki)
|
1
recipes/dart-mode
Normal file
1
recipes/dart-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(dart-mode :fetcher github :repo "nex3/dart-mode")
|
4
recipes/dircmp
Normal file
4
recipes/dircmp
Normal file
|
@ -0,0 +1,4 @@
|
|||
(dircmp
|
||||
:fetcher github
|
||||
:repo "matthewlmcclure/dircmp-mode"
|
||||
:files ("*.el" "*.sh"))
|
1
recipes/dired-efap
Normal file
1
recipes/dired-efap
Normal file
|
@ -0,0 +1 @@
|
|||
(dired-efap :fetcher wiki)
|
1
recipes/dna-mode
Normal file
1
recipes/dna-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(dna-mode :fetcher github :repo "jhgorrell/dna-mode-el")
|
1
recipes/dropbox
Normal file
1
recipes/dropbox
Normal file
|
@ -0,0 +1 @@
|
|||
(dropbox :fetcher github :repo "pavpanchekha/dropbox.el")
|
1
recipes/easy-after-load
Normal file
1
recipes/easy-after-load
Normal file
|
@ -0,0 +1 @@
|
|||
(easy-after-load :fetcher github :repo "pd/easy-after-load")
|
1
recipes/el-mock
Normal file
1
recipes/el-mock
Normal file
|
@ -0,0 +1 @@
|
|||
(el-mock :fetcher wiki)
|
4
recipes/elmine
Normal file
4
recipes/elmine
Normal file
|
@ -0,0 +1,4 @@
|
|||
(elmine
|
||||
:repo "leoc/elmine"
|
||||
:fetcher github
|
||||
:files ("elmine.el"))
|
1
recipes/elpa-audit
Normal file
1
recipes/elpa-audit
Normal file
|
@ -0,0 +1 @@
|
|||
(elpa-audit :fetcher github :repo "purcell/elpa-audit")
|
1
recipes/elpy
Normal file
1
recipes/elpy
Normal file
|
@ -0,0 +1 @@
|
|||
(elpy :fetcher github :repo "jorgenschaefer/elpy")
|
3
recipes/emagician-fix-spell-memory
Normal file
3
recipes/emagician-fix-spell-memory
Normal file
|
@ -0,0 +1,3 @@
|
|||
(emagician-fix-spell-memory :repo "jonnay/emagicians-starter-kit"
|
||||
:fetcher github
|
||||
:files ("emagician-fix-spell-memory.el"))
|
3
recipes/ercn
Normal file
3
recipes/ercn
Normal file
|
@ -0,0 +1,3 @@
|
|||
(ercn
|
||||
:fetcher github
|
||||
:repo "leathekd/ercn")
|
|
@ -1 +0,0 @@
|
|||
(ergoemacs-keybindings :url "http://ergoemacs.googlecode.com/svn/trunk/ergoemacs/ergoemacs-keybindings" :fetcher svn)
|
8
recipes/ergoemacs-mode
Normal file
8
recipes/ergoemacs-mode
Normal file
|
@ -0,0 +1,8 @@
|
|||
(ergoemacs-mode
|
||||
:url "https://code.google.com/p/ergoemacs/"
|
||||
:files ("ergoemacs/ergoemacs-keybindings/*.el"
|
||||
"ergoemacs/ergoemacs-keybindings/*.svg"
|
||||
"ergoemacs/ergoemacs-keybindings/*.ahk"
|
||||
"ergoemacs/ergoemacs-keybindings/bash-us.txt"
|
||||
"ergoemacs/ergoemacs-keybindings/os_x_qwerty.dict.txt")
|
||||
:fetcher git)
|
4
recipes/es-auto-auto-indent
Normal file
4
recipes/es-auto-auto-indent
Normal file
|
@ -0,0 +1,4 @@
|
|||
(es-auto-auto-indent
|
||||
:repo "sabof/es-auto-auto-indent"
|
||||
:fetcher github
|
||||
:files ("*.el"))
|
4
recipes/es-edit-color-stamp
Normal file
4
recipes/es-edit-color-stamp
Normal file
|
@ -0,0 +1,4 @@
|
|||
(es-edit-color-stamp
|
||||
:repo "sabof/es-edit-color-stamp"
|
||||
:fetcher github
|
||||
:files ("*.el" ("qt_color_picker" "qt_color_picker/*.pro" "qt_color_picker/*.cpp")))
|
3
recipes/es-lib
Normal file
3
recipes/es-lib
Normal file
|
@ -0,0 +1,3 @@
|
|||
(es-lib :repo "sabof/es-lib"
|
||||
:fetcher github
|
||||
:files ("*.el"))
|
4
recipes/es-shift-text
Normal file
4
recipes/es-shift-text
Normal file
|
@ -0,0 +1,4 @@
|
|||
(es-shift-text
|
||||
:repo "sabof/es-shift-text"
|
||||
:fetcher github
|
||||
:files ("*.el"))
|
3
recipes/evil-paredit
Normal file
3
recipes/evil-paredit
Normal file
|
@ -0,0 +1,3 @@
|
|||
(evil-paredit :repo "roman/evil-paredit"
|
||||
:fetcher github
|
||||
:files ("evil-paredit.el"))
|
4
recipes/extend-dnd
Normal file
4
recipes/extend-dnd
Normal file
|
@ -0,0 +1,4 @@
|
|||
(extend-dnd
|
||||
:fetcher github
|
||||
:repo "mlf176f2/extend-dnd"
|
||||
:files ("extend-dnd.el" "dir" "extend-dnd.info"))
|
1
recipes/flex-autopair
Normal file
1
recipes/flex-autopair
Normal file
|
@ -0,0 +1 @@
|
|||
(flex-autopair :fetcher github :repo "uk-ar/flex-autopair")
|
1
recipes/flymake-easy
Normal file
1
recipes/flymake-easy
Normal file
|
@ -0,0 +1 @@
|
|||
(flymake-easy :fetcher github :repo "purcell/flymake-easy")
|
4
recipes/fold-this
Normal file
4
recipes/fold-this
Normal file
|
@ -0,0 +1,4 @@
|
|||
(fold-this
|
||||
:fetcher github
|
||||
:repo "magnars/fold-this.el"
|
||||
:files ("fold-this.el"))
|
4
recipes/fsharp-mode
Normal file
4
recipes/fsharp-mode
Normal file
|
@ -0,0 +1,4 @@
|
|||
(fsharp-mode
|
||||
:fetcher github
|
||||
:repo "fsharp/fsharpbinding"
|
||||
:files ("emacs/fsharp-mode*.el" "emacs/inf-fsharp-mode.el"))
|
|
@ -1,3 +1,4 @@
|
|||
(gap-mode
|
||||
:fetcher hg
|
||||
:url "https://bitbucket.org/gvol/gap-mode")
|
||||
:url "https://bitbucket.org/gvol/gap-mode"
|
||||
:files ("*.el" "emacs.gaprc"))
|
||||
|
|
1
recipes/gitty
Normal file
1
recipes/gitty
Normal file
|
@ -0,0 +1 @@
|
|||
(gitty :fetcher github :repo "jorgenschaefer/gitty")
|
1
recipes/gnus-alias
Normal file
1
recipes/gnus-alias
Normal file
|
@ -0,0 +1 @@
|
|||
(gnus-alias :fetcher wiki)
|
1
recipes/grep-a-lot
Normal file
1
recipes/grep-a-lot
Normal file
|
@ -0,0 +1 @@
|
|||
(grep-a-lot :fetcher github :repo "ZungBang/emacs-grep-a-lot")
|
2
recipes/guide-key
Normal file
2
recipes/guide-key
Normal file
|
@ -0,0 +1,2 @@
|
|||
(guide-key :repo "kbkbkbkb1/guide-key" :fetcher github)
|
||||
|
1
recipes/haste
Normal file
1
recipes/haste
Normal file
|
@ -0,0 +1 @@
|
|||
(haste :fetcher github :repo "rlister/emacs-haste-client")
|
|
@ -1 +1 @@
|
|||
(header-button :repo "tarsius/header-button" :fetcher github)
|
||||
(header-button :repo "emacsattic/header-button" :fetcher github)
|
||||
|
|
1
recipes/helm-ls-git
Normal file
1
recipes/helm-ls-git
Normal file
|
@ -0,0 +1 @@
|
|||
(helm-ls-git :repo "emacs-helm/helm-ls-git" :fetcher github)
|
1
recipes/helm-mercurial-queue
Normal file
1
recipes/helm-mercurial-queue
Normal file
|
@ -0,0 +1 @@
|
|||
(helm-git :repo "emacs-helm/helm-mercurial-queue" :fetcher github)
|
1
recipes/heroku
Normal file
1
recipes/heroku
Normal file
|
@ -0,0 +1 @@
|
|||
(heroku :fetcher github :repo "technomancy/heroku.el")
|
1
recipes/hide-lines
Normal file
1
recipes/hide-lines
Normal file
|
@ -0,0 +1 @@
|
|||
(hide-lines :fetcher wiki)
|
1
recipes/http-twiddle
Normal file
1
recipes/http-twiddle
Normal file
|
@ -0,0 +1 @@
|
|||
(http-twiddle :fetcher github :repo "hassy/http-twiddle")
|
1
recipes/idle-require
Normal file
1
recipes/idle-require
Normal file
|
@ -0,0 +1 @@
|
|||
(idle-require :fetcher github :repo "nschum/idle-require.el")
|
1
recipes/iflipb
Normal file
1
recipes/iflipb
Normal file
|
@ -0,0 +1 @@
|
|||
(iflipb :url "http://hg.rosdahl.net/iflipb" :fetcher hg)
|
3
recipes/instapaper
Normal file
3
recipes/instapaper
Normal file
|
@ -0,0 +1,3 @@
|
|||
(instapaper
|
||||
:fetcher hg
|
||||
:url "https://bitbucket.org/jfm/emacs-instapaper")
|
1
recipes/itail
Normal file
1
recipes/itail
Normal file
|
@ -0,0 +1 @@
|
|||
(itail :repo "re5et/itail" :fetcher github)
|
3
recipes/javadoc-lookup
Normal file
3
recipes/javadoc-lookup
Normal file
|
@ -0,0 +1,3 @@
|
|||
(javadoc-lookup :repo "skeeto/javadoc-lookup"
|
||||
:fetcher github
|
||||
:files ("*.el" ("webcache" "webcache/*")))
|
3
recipes/jedi
Normal file
3
recipes/jedi
Normal file
|
@ -0,0 +1,3 @@
|
|||
(jedi :fetcher github
|
||||
:repo "tkf/emacs-jedi"
|
||||
:files ("jedi*"))
|
1
recipes/key-chord
Normal file
1
recipes/key-chord
Normal file
|
@ -0,0 +1 @@
|
|||
(key-chord :fetcher wiki)
|
1
recipes/kill-ring-search
Normal file
1
recipes/kill-ring-search
Normal file
|
@ -0,0 +1 @@
|
|||
(kill-ring-search :fetcher github :repo "nschum/kill-ring-search.el")
|
1
recipes/lacarte
Normal file
1
recipes/lacarte
Normal file
|
@ -0,0 +1 @@
|
|||
(lacarte :fetcher wiki)
|
4
recipes/linear-undo
Normal file
4
recipes/linear-undo
Normal file
|
@ -0,0 +1,4 @@
|
|||
(linear-undo
|
||||
:fetcher github
|
||||
:repo "k-talo/linear-undo.el"
|
||||
:files ("linear-undo.el"))
|
1
recipes/macro-math
Normal file
1
recipes/macro-math
Normal file
|
@ -0,0 +1 @@
|
|||
(macro-math :fetcher github :repo "nschum/macro-math.el")
|
1
recipes/mag-menu
Normal file
1
recipes/mag-menu
Normal file
|
@ -0,0 +1 @@
|
|||
(mag-menu :repo "chumpage/mag-menu" :fetcher github)
|
1
recipes/magit-commit-training-wheels
Normal file
1
recipes/magit-commit-training-wheels
Normal file
|
@ -0,0 +1 @@
|
|||
(magit-commit-training-wheels :repo "re5et/magit-commit-training-wheels" :fetcher github)
|
4
recipes/markup
Normal file
4
recipes/markup
Normal file
|
@ -0,0 +1,4 @@
|
|||
(markup
|
||||
:repo "leoc/markup.el"
|
||||
:fetcher github
|
||||
:files ("markup.el"))
|
1
recipes/mongo
Normal file
1
recipes/mongo
Normal file
|
@ -0,0 +1 @@
|
|||
(mongo :fetcher github :repo "m2ym/mongo-el" :files ("mongo.el" "bson.el"))
|
4
recipes/namespaces
Normal file
4
recipes/namespaces
Normal file
|
@ -0,0 +1,4 @@
|
|||
(namespaces
|
||||
:fetcher github
|
||||
:repo "chrisbarrett/elisp-namespaces"
|
||||
:files ("namespaces.el"))
|
4
recipes/ncl-mode
Normal file
4
recipes/ncl-mode
Normal file
|
@ -0,0 +1,4 @@
|
|||
(ncl-mode
|
||||
:repo "yyr/ncl-mode"
|
||||
:fetcher github
|
||||
:files ("*.el"))
|
3
recipes/notmuch
Normal file
3
recipes/notmuch
Normal file
|
@ -0,0 +1,3 @@
|
|||
(notmuch :url "git://git.notmuchmail.org/git/notmuch"
|
||||
:fetcher git
|
||||
:files ("emacs/*.el"))
|
4
recipes/nyan-mode
Normal file
4
recipes/nyan-mode
Normal file
|
@ -0,0 +1,4 @@
|
|||
(nyan-mode
|
||||
:fetcher github
|
||||
:repo "TeMPOraL/nyan-mode"
|
||||
:files ("nyan-mode.el" "img"))
|
1
recipes/occidental-theme
Normal file
1
recipes/occidental-theme
Normal file
|
@ -0,0 +1 @@
|
|||
(occidental-theme :repo "olcai/occidental-theme" :fetcher github)
|
1
recipes/octomacs
Normal file
1
recipes/octomacs
Normal file
|
@ -0,0 +1 @@
|
|||
(octomacs :fetcher github :repo "jhelwig/octomacs")
|
1
recipes/org-bullets
Normal file
1
recipes/org-bullets
Normal file
|
@ -0,0 +1 @@
|
|||
(org-bullets :fetcher github :repo "sabof/org-bullets")
|
4
recipes/org-mac-iCal
Normal file
4
recipes/org-mac-iCal
Normal file
|
@ -0,0 +1,4 @@
|
|||
(org-mac-iCal
|
||||
:fetcher git
|
||||
:url "git://orgmode.org/org-mode.git"
|
||||
:files ("contrib/lisp/org-mac-iCal.el"))
|
4
recipes/org-mac-link-grabber
Normal file
4
recipes/org-mac-link-grabber
Normal file
|
@ -0,0 +1,4 @@
|
|||
(org-mac-link-grabber
|
||||
:fetcher git
|
||||
:url "git://orgmode.org/org-mode.git"
|
||||
:files ("contrib/lisp/org-mac-link-grabber.el"))
|
|
@ -1 +1,4 @@
|
|||
(org-outlook :fetcher github :repo "mlf176f2/org-outlook.el" :files ("*.el" "*.vbs"))
|
||||
(org-outlook
|
||||
:repo "mlf176f2/org-outlook.el"
|
||||
:fetcher github
|
||||
:files ("org-outlook.el" "dir" "org-outlook.info"))
|
|
@ -1 +1 @@
|
|||
(org-readme :fetcher github :repo "mlf176f2/org-readme")
|
||||
(org-readme :fetcher github :repo "mlf176f2/org-readme" :files ("org-readme.el" "dir" "org-readme.info"))
|
4
recipes/osx-location
Normal file
4
recipes/osx-location
Normal file
|
@ -0,0 +1,4 @@
|
|||
(osx-location
|
||||
:fetcher github
|
||||
:repo "purcell/osx-location"
|
||||
:files ("*.el" "EmacsLocationHelper"))
|
1
recipes/otter-mode
Normal file
1
recipes/otter-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(otter-mode :fetcher github :repo "scvalex/script-fu" :files ("otter-mode.el"))
|
4
recipes/pabbrev
Normal file
4
recipes/pabbrev
Normal file
|
@ -0,0 +1,4 @@
|
|||
(pabbrev
|
||||
:fetcher hg
|
||||
:url "https://code.google.com/p/phillord-emacs-packages/"
|
||||
:files ("pabbrev.el"))
|
1
recipes/page-break-lines
Normal file
1
recipes/page-break-lines
Normal file
|
@ -0,0 +1 @@
|
|||
(page-break-lines :fetcher github :repo "purcell/page-break-lines")
|
4
recipes/paredit-menu
Normal file
4
recipes/paredit-menu
Normal file
|
@ -0,0 +1,4 @@
|
|||
(paredit-menu
|
||||
:fetcher hg
|
||||
:url "https://code.google.com/p/phillord-emacs-packages/"
|
||||
:files ("paredit-menu.el"))
|
1
recipes/pcmpl-args
Normal file
1
recipes/pcmpl-args
Normal file
|
@ -0,0 +1 @@
|
|||
(pcmpl-args :fetcher github :repo "JonWaltman/pcmpl-args.el")
|
4
recipes/pcre2el
Normal file
4
recipes/pcre2el
Normal file
|
@ -0,0 +1,4 @@
|
|||
(pcre2el
|
||||
:fetcher github
|
||||
:repo "joddie/pcre2el"
|
||||
:files ("pcre2el.el"))
|
1
recipes/persp-mode
Normal file
1
recipes/persp-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(persp-mode :repo "Bad-ptr/persp-mode.el" :fetcher github)
|
|
@ -1 +1 @@
|
|||
(pomodoro :fetcher github :repo "docgnome/pomodoro.el")
|
||||
(pomodoro :fetcher github :repo "baudtack/pomodoro.el")
|
||||
|
|
4
recipes/pos-tip
Normal file
4
recipes/pos-tip
Normal file
|
@ -0,0 +1,4 @@
|
|||
(pos-tip
|
||||
:repo "syohex/pos-tip"
|
||||
:fetcher github
|
||||
:files ("pos-tip.el"))
|
1
recipes/pov-mode
Normal file
1
recipes/pov-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(pov-mode :fetcher git :url "git://gitorious.org/pov-mode/pov-mode.git")
|
4
recipes/pylint
Normal file
4
recipes/pylint
Normal file
|
@ -0,0 +1,4 @@
|
|||
(pylint
|
||||
:url "http://hg.logilab.org/pylint"
|
||||
:fetcher hg
|
||||
:files ("elisp/pylint.el"))
|
1
recipes/quickref
Normal file
1
recipes/quickref
Normal file
|
@ -0,0 +1 @@
|
|||
(quickref :fetcher "github" :repo "pd/quickref.el")
|
|
@ -1 +0,0 @@
|
|||
(rainbow-mode :repo "emacsmirror/rainbow-mode" :fetcher github)
|
1
recipes/request
Normal file
1
recipes/request
Normal file
|
@ -0,0 +1 @@
|
|||
(request :repo "tkf/emacs-request" :fetcher github)
|
1
recipes/rnc-mode
Normal file
1
recipes/rnc-mode
Normal file
|
@ -0,0 +1 @@
|
|||
(rnc-mode :fetcher github :repo "TreeRex/rnc-mode")
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue