• This repository has been archived on 21/Oct/2022
  • Stars
    star
    561
  • Rank 79,400 (Top 2 %)
  • Language
    Emacs Lisp
  • License
    GNU General Publi...
  • Created over 10 years ago
  • Updated about 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Project for modernizing Emacs' Package Menu. With package ratings, usage statistics, customizability, and more.

This package has been Archived

It is no longer being maintained.

Paradox

Build Status Melpa Melpa-stable Coverage Status License

Gratipay

Project for modernizing Emacs' Package Menu. With improved appearance, mode-line information. Github integration, customizability, asynchronous upgrading, and more.

Here are some visual comparisons:

Regular Package Menu

Regular Package Menu

Paradox

Paradox Package Menu

Paradox (multi-line)

Paradox Package Menu
These screenshots use smart-mode-line, but a similar effect is obtained with the regular mode-line.

Usage

Paradox can be installed from Melpa with

M-x package-install RET paradox

It can also be installed manually in the usual way, just be mindful of the dependencies.

To use it, simply call M-x paradox-list-packages (instead of the regular list-packages). This will give you most features out of the box. If you want to be able to star packages as well, just configure the paradox-github-token variable then call paradox-list-packages again.

If you'd like to stop using Paradox, you may call paradox-disable (or just restart Emacs) and go back to using the regular list-packages.

Use Paradox as the Default Interface

In order to use the Paradox interface by default (and just having to call the standard list-packages command), add the following in your init file:

(require 'paradox)
(paradox-enable)

Current Features

Several Improvements

Paradox implements many small improvements to the package menu itself. They all work out of the box and are completely customizable! (Also, hit h to see all keys.)

  • Visit the package's homepage with v (or just use the provided buttons).
  • View a list of recent commits with l.
  • Use paradox-require instead of require to automatically install absent packages.
  • Shortcuts for package filtering:
    • f r filters by regexp.
    • f u display only packages with upgrades.
    • f k filters by keyword.
    • f s filters by user starred packages.

And some more...

  • hl-line-mode enabled by default.
  • Display useful information on the mode-line and cleanup a bunch of useless stuff.
  • Customization! Just call M-x paradox-customize to see what you can do.
    • Customize column widths.
    • Customize faces (paradox-star-face, paradox-status-face-alist and paradox-archive-face).
    • Customize local variables.

Execution Hook

Paradox defines a hook called paradox-after-execute-functions. Functions added to this hook are run whenever packages are installed, deleted, or upgraded. This is used to implement part of the Paradox functionality, which makes it very easy to customize and extend.

  • A full report is available at the *Paradox Report* buffer. You can disable this feature with:

      (remove-hook 'paradox--report-buffer-print 'paradox-after-execute-functions)
    
  • If the upgrade was performed without querying the user (which happens when paradox-execute is called with a prefix argument), then the report buffer is displayed at the end. You can disable this feature with:

      (remove-hook 'paradox--report-buffer-display-if-noquery 'paradox-after-execute-functions)
    
  • A message is printed in the echo area with a brief summary of the transaction. You can disable this feature with:

      (remove-hook 'paradox--report-message 'paradox-after-execute-functions)
    

Package Ratings

Paradox also integrates with GitHub Stars, which works as rough package rating system. That is, Paradox package menu will:

  1. Display the number of GitHub Stars each package has (assuming it's in a github repo, of course);
  2. Possibly automatically star packages you install, and unstar packages you delete (you will be asked the first time whether you want this);
  3. Let you star and unstar packages by hitting the s key;
  4. Let you star all packages you have installed with M-x paradox-star-all-installed-packages.

Item 1. will work out of the box, the other items obviously require a github account (Paradox will help you generate a token the first time you call paradox-list-packages).

Known Bugs

  • On some cases there's an annoying gnutls error message after downloading the star counts gnutls.c: [0] (Emacs) fatal error: The TLS connection was non-properly terminated.. If anyone knows how to fix it, I'm all ears.

How Star Displaying Works

We generate a map of Package Name -> Repository from Melpa's recipe directory, some repos may correspond to more than one package. This map is used to count the stars a given package has. This doesn't mean you need Melpa to see the star counts, the numbers will be displayed regardless of what archives you use.

Currently, packages that are not hosted on GitHub are listed with a blank star count, which is clearly different from 0-star packages (which are displayed with a 0, obviously). If you know of an alternative that could be used for these packages, open an issue here, I'd love to hear.

More Repositories

1

smart-mode-line

A powerful and beautiful mode-line for Emacs.
Emacs Lisp
895
star
2

aggressive-indent-mode

Emacs minor mode that keeps your code always indented. More reliable than electric-indent-mode.
Emacs Lisp
850
star
3

beacon

A light that follows your cursor around so you don't lose it!
Emacs Lisp
657
star
4

elisp-bug-hunter

Hunt down errors in elisp files.
Emacs Lisp
271
star
5

emacs-google-this

A set of emacs functions and bindings to google under point.
Emacs Lisp
264
star
6

names

A Namespace implementation for Emacs-Lisp
Emacs Lisp
249
star
7

Nameless

Less is more. Hide package namespace in your emacs-lisp code
Emacs Lisp
134
star
8

fancy-narrow

Emacs package to immitate narrow-to-region with more eye-candy
Emacs Lisp
129
star
9

rich-minority

Emacs package for hiding and/or highlighting the list of minor-modes in the mode-line.
Emacs Lisp
108
star
10

camcorder.el

Tool for capturing screencasts directly from Emacs.
Emacs Lisp
108
star
11

spinner.el

Emacs mode-line spinner for operations in progress
Emacs Lisp
104
star
12

speed-of-thought-lisp

Write elisp at the speed of thought. Emacs minor mode with abbrevs and keybinds.
Emacs Lisp
73
star
13

latex-extra

A series of usability improvements for Emacs latex-mode.
Emacs Lisp
69
star
14

org-agenda-property

Display org properties in the agenda buffer.
Emacs Lisp
65
star
15

gmail-mode

A major-mode for editing gmail messages using markdown syntax (in emacs).
Emacs Lisp
57
star
16

lazy-map-clojure

Create Clojure maps whose values are only calculated when accessed, either from data or from java objects.
Clojure
49
star
17

ham-mode

Html As Markdown. Transparently edit an html file using markdown.
Emacs Lisp
42
star
18

control-pianobar

Pair of scripts that interact with pianobar entirely through notification bubbles and hotkeys. No terminal necessary.
Shell
35
star
19

ox-jekyll-subtree

Extension to ox-jexkyll for better export of subtrees
Emacs Lisp
30
star
20

audio-notes-mode

Emacs mode to play audio notes synced from somewhere else.
Emacs Lisp
26
star
21

speed-of-thought-clojure

Write clojure at the speed of thought.
Emacs Lisp
23
star
22

validate.el

Schema validator for Emacs-lisp
Emacs Lisp
23
star
23

emacs-online-documentation

A project meant to keep an updated online documentation of ALL emacs' built-in functions and variables.
Emacs Lisp
22
star
24

html-to-markdown

HTML to Markdown converter written in emacs-lisp.
Emacs Lisp
17
star
25

alpine-osd-notify

Script to run alpine mail client using a notify-osd notification system.
Shell
17
star
26

conkeror-minor-mode

Mode for editing conkeror javascript files.
Emacs Lisp
17
star
27

emacs-archive-tracker

A script in emacs-lisp to track some statistics about emacs package archives.
Emacs Lisp
14
star
28

comment-or-uncomment-sexp

Emacs-lisp command for inteligently commenting and commenting the sexp under point.
Emacs Lisp
9
star
29

org-bibtex

Simple example of combining a .bib file with org-mode.
8
star
30

emacs-documentation-android

Emacs Documentation android app. Search emacs variables/functions and view their documentations on android.
Java
5
star
31

HugeSQLiteCursor

A version of SQLiteCursor which remains fast even when the cursor is arbitrarily large.
Java
4
star
32

EndlessParentheses

Endless Parentheses blog. See http://endlessparentheses.com
HTML
4
star
33

lisp-assistant

A set of functions, variables, and snippets to assist in developing lisp code.
Emacs Lisp
3
star
34

threads-list-mode

tabulated-list-mode specialized at viewing threads
Emacs Lisp
3
star
35

Keystone

Play Hearthstone with the keyboard.
AutoHotkey
2
star
36

Zumi

Rails WebApp for apartment listings
Ruby
2
star
37

hdh

Ruby gem for rendering plain data into HTML
Ruby
2
star
38

Zumi-front

Frontend for https://github.com/Malabarba/Zumi
Vue
1
star
39

display-keys-emacs

Popup that displays keys pressed for certain commands
Emacs Lisp
1
star
40

greek-unicode-insert

Simple keymap to insert Unicode Greek characters in emacs.
Emacs Lisp
1
star