mirror of
https://github.com/correl/melpa.git
synced 2024-11-24 19:19:52 +00:00
30e61252f7
Adds an additional column to the table on http://melpa.milkbox.net which provides a link directly to the github or emacswiki page for a recipe. My main gripe with using both `package-list-packages` and the web UI is the extra effort required just to go check out a project's README or similar. This should now be easier for the vast majority of recipes in MELPA. For emacswiki pages, only those recipes whose file matches the name of the recipe are linked (ie, if the recipe uses :files, then no link will be generated). This is Not Perfect(tm), but not bad either.
150 lines
5.5 KiB
Text
150 lines
5.5 KiB
Text
%% MELPA
|
|
|
|
*MELPA* or *Milkypostman's ELPA* or *Milkypostman's Experimental Lisp Package Repository* if you're not into the whole brevity thing.
|
|
|
|
[ [Packages](#current-list-of-packages) ]
|
|
[ [Installing](#installing) ]
|
|
[ [Known Issues](#known-issues) ]
|
|
[ [Updating Packages](#updating-packages) ]
|
|
[ [Development](#development) ]
|
|
|
|
**Last Update:** *<%= Time.now.strftime("%Y.%m.%d %H:%M %z") %>* -- follow [@melpa_emacs on Twitter](https://twitter.com/melpa_emacs) for updates
|
|
|
|
<%
|
|
require 'json'
|
|
archive_json = JSON.parse(File.open("../archive.json").read)
|
|
recipe_json = JSON.parse(File.open("../recipes.json").read)
|
|
|
|
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}"
|
|
source = 'unknown'
|
|
if descr =~ /(.*?)(\s*-\*-.*?)?\s*\[source:\s*(\w+)\]\s*/
|
|
descr, source = $1, $3
|
|
end
|
|
|
|
case source
|
|
when 'github' then source_url = "https://github.com/#{recipe['repo']}"
|
|
when 'wiki' then source_url = recipe.key?('files') ? nil : "http://www.emacswiki.org/emacs/#{pkgname}.el"
|
|
else source_url = nil
|
|
end
|
|
|
|
["<a name=\"#{pkgname}\"></a>[#{pkgname}](#{pkgurl})", version, descr, "[recipe](#{recipe_url})", source_url ? "[#{source}](#{source_url})" : ""]
|
|
end
|
|
|
|
colwidth = [0,0,0,0, 9]
|
|
|
|
data.map do |row|
|
|
row.to_enum(:each_with_index).map do |e,i|
|
|
colwidth[i] = [colwidth[i], e.length].max
|
|
end
|
|
end
|
|
%>
|
|
<%= "## Current List of #{data.size} Packages" %>
|
|
<%=
|
|
headers.to_enum(:each_with_index).map{
|
|
|h,i| h + " "*(colwidth[i]-h.length) }.join(" ")
|
|
%>
|
|
<%= colwidth.map{ |w| "-"*w }.join(" ") %>
|
|
<%=
|
|
data.map{ |row|
|
|
row.to_enum(:each_with_index).map{ |c,i|
|
|
c + " "*(colwidth[i]-c.length)
|
|
}.join(" ")
|
|
}.join("\n")
|
|
%>
|
|
|
|
|
|
## Installing
|
|
|
|
To add the repository put this before the call to `package-initialize`
|
|
in your `init.el` file.
|
|
|
|
<!-- <script src="https://gist.github.com/1679158.js"> </script> -->
|
|
|
|
(add-to-list 'package-archives
|
|
'("melpa" . "http://melpa.milkbox.net/packages/") t)
|
|
|
|
|
|
Please read about [known issues](#known-issues) below before
|
|
attempting to install multiple packages at once.
|
|
|
|
### Customizations
|
|
|
|
There is currently no way in `package.el` to exclude or include versions. So to remedy this there is a `melpa.el` package--available in MELPA--that will allow you to enable only certain packages or exclude certain packages. You can install the package manually by pasting this into yoru `*scratch*` buffer and evaluating it.
|
|
|
|
(progn
|
|
(switch-to-buffer
|
|
(url-retrieve-synchronously
|
|
"https://raw.github.com/milkypostman/melpa/master/melpa.el"))
|
|
(package-install-from-buffer (package-buffer-info) 'single))
|
|
|
|
|
|
You can then customize two variables:
|
|
|
|
`package-archive-enable-alist`
|
|
: Optional Alist of enabled packages used by `package-filter'.
|
|
The format is (ARCHIVE . PACKAGE ...), where ARCHIVE is a string
|
|
matching an archive name in `package-archives', PACKAGE is a
|
|
symbol of a package in ARCHIVE to enable.
|
|
|
|
If no ARCHIVE exists in the alist, all packages are enabled.
|
|
|
|
|
|
`package-archive-exclude-alist`
|
|
: Alist of packages excluded by `package-filter'.
|
|
The format is (ARCHIVE . PACKAGE ...), where ARCHIVE is a string
|
|
matching an archive name in `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'
|
|
|
|
|
|
|
|
## Known Issues
|
|
|
|
**Note:** *This fix are included in the `melpa.el` package.*
|
|
|
|
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> -->
|
|
|
|
(defadvice package-compute-transaction
|
|
(before
|
|
package-compute-transaction-reverse (package-list requirements)
|
|
activate compile)
|
|
"reverse the requirements"
|
|
(setq requirements (reverse requirements))
|
|
(print requirements))
|
|
|
|
|
|
|
|
## Updating Packages
|
|
|
|
`package.el` now includes a mechanism to upgrade packages. After running `package-list-packages`, type *u* (mark Upgradable packages) and then *x* (eXecute the installs and deletions). When it's done installing all the packages it will ask if you want to delete the obsolete packages and so you can hit *y* (Yes).
|
|
|
|
If you run into a problem installing or upgrading, you may need to go into your `~/.emacs.d/elpa/` directory and delete packages that are installed multiple times. This can happen when the install times out (see [Known Issues](#known-issues)).
|
|
|
|
## Development
|
|
|
|
[https://github.com/milkypostman/melpa](https://github.com/milkypostman/melpa)
|
|
|
|
Contributions are welcome. Currently, the builder only supports
|
|
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>
|