rainbow-mode.el

rainbow-mode is a minor mode for Emacs which displays strings representing colors with the color they represent as background.

rainbow-mode

Download It is available from [GNU

ELPA](http://git.savannah.gnu.org/cgit/emacs/elpa.git/tree/packages/rainbow-mode).

You can install it from M-x list-packages in Emacs 24.

Manual

Type M-x rainbow-mode. Rbow should be added to the mode-line, indicating that Rainbow mode is in effect. You can deactivate it with the same command.

When activated, all strings representing colors will be highlighted with the color they represent.

Some colors, like HTML colors name (yellow, red, …) and rgb() ones are automatically activated in some mode like html-mode or css-mode. On the other hand, the X colors are activated only in some mode like emacs-lisp-mode or c-mode. The hexadecimal ones (#aabbcc) are always activated.

All this can be configured via M-x customize-group rainbow.

org-contacts.el

The org-contacts Emacs extension allows to manage your contacts using Org-mode.

It can be a replacement to BBDB for people using Org.

Download

It is available in the contrib directory of Orgmode (version > 7.5).

Manual

Just load the file from your .emacs:

(require 'org-contacts)


There's a few variables you can customize. The main one is org-contacts-files which determines which file(s) will be used to get your contacts. If set to nil, all your Org agenda files will be used. If you set it to a list of files, they will be used to look for contacts. Specifying the list of files where contacts are rather than searching in all your Org files will speed-up org-contacts.

What a contact is is determined by the matching rule in org-contacts-matcher. By default, contacts are Org entry which have a EMAIL property set.

#+STARTUP: showeverything
* Friends
** Dave Null
:PROPERTIES:
:EMAIL: dave@null.com
:END:
This is one of my friend.
*** TODO Call him for the party

Now, if you do M-x org-contacts and search Dave you'll find Dave.

Gnus integration

Org-contacts support Gnus. You can use completion in message-mode in the To, Cc, etc headers. You can also complete with tags. For example:

#+STARTUP: showeverything
* Friends
** Dave Null                               :dumb:
:PROPERTIES:
:EMAIL: dave@null.com
:END:
This is one of my friend.
** Slash Bin                             :school:
:PROPERTIES:
:EMAIL: slash@localhost.com
:END:
That good old Slash.
* Family
** Exam Pelle                              :dumb:
:PROPERTIES:
:EMAIL: exam@pelle.com
:END:

If you type + in the To field and press <TAB> to complete, you'll get a list of tags. Finishing the completion using a tag will expand the completion to all the people having this tag. Therefore, typing +dumb and pressing <TAB> will expand to Dave Null <dave@null.com>, Exam Pelle <exam@pelle.com>.

When using Gnus, you'll also get a link to the last mail you read from your contact. A link to the email will be placed in the org-contacts-last-read-mail-property (default to LAST_READ_MAIL).

Capture

To add new contact, you can use org-capture. Here is an entry example for it:

(add-to-list 'org-capture-templates
'("c" "Contacts" entry (file "~/Org/contacts.org")
"* %(org-contacts-template-name)
:PROPERTIES:
:EMAIL: %(org-contacts-template-email)
:END:"))

The org-contacts-template-name and org-contacts-template-email functions will try to determine the name and email of your new contact, using the mail you are reading in Gnus, if possible.

Anniversaries

Org-contacts handles anniversaries as well. The default is birthday. Just press C-c C-x p to set a property and type BIRTHDAY. Chose date.

To see the birthday in your agenda, put such a line in one of you agenda file:

#+STARTUP: showeverything
* Birthdays
%%(org-contacts-anniversaries)

offlineimap.el

The offlineimap Emacs extension allows to run OfflineIMAP inside Emacs.

offlineimap.el example screenshot

Download

It is available from the Git repository.

There's no tagged release for now.

Manual

The easiest way to use it is to load it from your .emacs:

(require 'offlineimap)

You can then use M-x offlineimap. It will launch offlineimap in a background buffer.

If you want to run offlineimap when you launch Gnus, you can add the following to your .emacs:

(add-hook 'gnus-before-startup-hook 'offlineimap)

oauth2.el

oauth2.el is an implementation of the OAuth 2.0 protocol for Emacs.

Download

It is available from GNU ELPA.

You can install it from M-x list-packages in Emacs 24.

muse-blog.el

muse-blog is an extension to Emacs Muse, a publishing environment for Emacs.

It allows you to maintain a blog within Emacs, and produce HTML pages and RSS 2.0 feeds.

Download

It is available from its Git repository.

There's no tagged release for now.

Manual

Creating a blog project

You should load it from your Emacs start-up file:

(require 'muse-blog)


Then, you should define a project in `muse-project-alist'.

(add-to-list 'muse-project-alist
'("MyBlog"
;; Path to your blog
("~/Blog")
;; Always re-publish index
:force-publish ("index"))
(:base "blog-xhtml"
:base-url "http://www.example.com/blog/"
:path "~/Blog/output/")
(:base "blog-rss"
:base-url "http://www.example.com/blog/"
:path "~/Blog/output/"))


This will add a new project named MyBlog, which have files in ~/Blog and will publish all files (XHTML and RSS) to :path. All URL will be relative to :base-url.

Writing entries

You're free to split your blog entries like you want: either all of them in one Muse file, or a Muse file for each month, or even a file by entry.

The syntax for a blog entry is:

* 20100519-16:24:78 This is my first muse-blog entry

I'm very excited about all this. I think it's amazing to write a blog in
Emacs. Seriously. We should all thanks **jd** for his extraordinary work!

An entry should start with a first-level heading, with the following format:

* YYMMDD-HH:MM:SS Title

Date is mandatory, time and title are optional. If title is not specified, the date will be used as a title.

Building an index page

muse-blog provides you a way to create an index page and regroup all your entries in a front page.

Just create a front page like this:

#title This is my bloog!
#desc Blog of a new muse-blog user
<lisp>(muse-blog-make-index 0 9)</lisp>
----
Archives
<lisp>(muse-index-as-string t nil t)</lisp>

This will create an index page (HTML and RSS) with the 10 first entries from all files matching `muse-blog-make-index-files-regexp'.

You can even add a footer to add link from your archives. Footer is "----", i.e. an horizontal line, and such a line is not included in an entry. Muse provides a handy function to build page index, `muse-index-as-string'.

Warning! The Google Weather API has been shutdown in 2012. This package doesn't work anymore.

google-weather.el

The google-weather Emacs extension allows to run access the Google Weather API from Emacs.

It includes org-google-weather, which can be used to add weather forecast in your Org agenda.

org-google-weather.el screenshot

Download

It is available from the Git repository.

There's no tagged release for now.

Manual

The easiest way to use it is to load it from your .emacs:

(require 'google-weather)


The function are documented, therefore you should not have any difficulty to use them.

If you want to use org-google-weather to add weather forecasts in your agenda, just add the following in your .emacs.

(require 'org-google-weather)


Then, add the following in one of your Org file.

* Weather
%%(org-google-weather "New York")

You can set the language as second argument. You should know that the unit system used is language dependent. By default, American English is used, therefore with Fahrenheit degrees, but if you want to have English with Celsius degrees, you can use "en-gb".

* Weather
%%(org-google-weather "Paris 14" "en-gb")

google-maps.el

The google-maps Emacs extension allows to display Google Maps directly inside Emacs.

It fully implements the Google Static Maps API and the Google Maps Geocoding API.

Google Maps example screenshot

Download

It is available from the Git repository.

There's no tagged release for now.

Manual

The easiest way to use it is to load it from your .emacs:

(require 'google-maps)


You can then use M-x google-maps and type a location.

Various key bindings are available. Here's a few:

  • + or - to zoom in or out;
  • left, right, up, down to move;
  • z to set a zoom level via prefix;
  • q to quit;
  • m to add or remove markers;
  • c to center the map on a place;
  • C to remove centering;
  • t to change the maptype;
  • w to copy the URL of the map to the kill-ring;
  • h to show your home.

You can integrate directly Google Maps into Org-mode:

(require 'org-location-google-maps)


Then you can use C-c M-L to enter a location assisted by Google geocoding service. Pressing C-c M-l will show you a map.

If you want to use advanced feature, you should take a look at google-maps-static-show and google-maps-geocode-request functions.

google-contacts.el

The google-contacts for Emacs extension allows to display your Google Contacts directly inside Emacs.

Note that it is likely to only work with at least Emacs 24, since it's using oauth2 which is part of GNU ELPA.

Download

It is available from the Git repository.

There's no tagged release for now.

Manual

The easiest way to use it is to load it from your .emacs:

(require 'google-contacts)


You can then use M-x google-contacts and type a query string.

Various key bindings are available. Here's a few:

  • n or p to go the next or previous record;
  • g to refresh the result, bypassing the cache;
  • m to send an e-mail to a contact;
  • s to make a new search;
  • q to quit.

You can integrate directly Google Contacts into Gnus:

(require 'google-contacts-gnus)


Then you can use ; to go to a contact information while reading an e-mail.

You can integrate directly Google Contacts into message-mode;

(require 'google-contacts-message)


Then you can use TAB to go to complete e-mail addresses in the header fields.

erc-track-score.el

erc-track-score is a module for ERC, an IRC client for Emacs.

It allows you to see a dynamic score on each tracked channel by the erc-track.

The idea comes from the ERC channel tracking proposed features list.

Download

It is available from the Git repository.

There's no tagged release for now.

Manual

You should enable erc-track first, and configure it to your needs. You may also configure erc-match to have the score raised higher when some keywords are matched.

erc-track-score works by modifying dynamically the number of unread messages on channels. This is why you have to set erc-track-showcount to t to make erc-track-score shows something.

On each message received in a channel, the score will be incremented by 1 point. When a text match occurs with erc-match, erc-track-score will add score to the channel, based on the assoc list erc-track-channel-score-matched-text.

By default, the scores added are:

  • +1 for any message;
  • +20 if the message has your current nick in it
  • +5 if the message has a keyword in it;
  • +2 if the message has been sent by a pal (see erc-pals);
  • -1 if the message has been sent by a dangerous-host (see erc-dangerous-hosts);
  • -1 if the message has been sent by a fool (see erc-fools).

The score will reach 0 by adding the value erc-track-channel-score-reset-by (default is 1) every erc-track-channel-score-reset-every (default is 10).

That means that by default a channel will always lost 6 points per minute, until its score reaches 0.

On the other hand, if the score has been set negative because a lot of fools talked, the channel will gain 6 points per minute, until its score reaches 0.

When using erc-track-switch-buffer, you can jump to the most scored channel by setting erc-track-switch-direction to mostactive, since erc-track-score modifies the number of unread message in erc-modified-channels-alist directly.