spacemacs/layers/+chat/erc
Miciah Masters e0b751bee3 Avoid non-idempotent use of push in init code
Replace push with add-to-list in layer init functions and related code.

Modify spacemacs|add-toggle to check for and update an existing toggle in
spacemacs-toggles and only create a new toggle if none already existed.

Replace a conditional push onto erc-packages with use of :toggle.

When initializing which-key, set which-key-replacement-alist to its default
or customized setting before adding all the Spacemacs replacements.  We
want to keep the stock replacements but avoid adding duplicates of the
Spacemacs replacements.

Replace the emacs-lisp-mode-hook lambda with a named function to avoid
adding duplicate hooks (which can add duplicate definitions of the
evil-surround pair).
2018-06-05 22:17:13 -04:00
..
local Remove trailing whitespace from all files 2017-03-26 13:06:43 -04:00
config.el Happy New Year 2018! 2018-01-04 02:00:25 -05:00
funcs.el Make custom layout configs consistent 2018-01-09 23:01:34 -05:00
packages.el Avoid non-idempotent use of push in init code 2018-06-05 22:17:13 -04:00
README.org erc: update documentation for layer variables 2017-08-27 22:54:04 -04:00

ERC layer

Description

Layer for ERC IRC chat.

Features:

  • Highlight nicks (using erc-hl-nicks)
  • Image inline support (using erc-image)
  • Logging to ~/.emacs.d/.cache/erc-logs and ViewLogMode for viewing logs (using erc-view-log)
  • YouTube videos Thumbnails inline (using erc-yt)
  • Social Graph for ERC messages (using erc-social-graph)
  • Optional SASL authentication via the variable erc-enable-sasl-auth (using erc-sasl)
  • D-BUS notifications via the variable erc-enable-notifications
  • Completion of Emojis using company-emoji (still needs a way of showing, either using the emoji layer or having a proper font) 👏

Install

Layer

To use this configuration layer, add it to your ~/.spacemacs. You will need to add erc to the existing dotspacemacs-configuration-layers list in this file.

OS X

It's recommended to install the terminal-notifier gem so that you get notifications via the OS X Notification Center.

Social graph

erc-social-graph needs graphviz to be installed on your system.

Disable notifications

By default D-BUS notifications are enabled, to disable them set the layer variable erc-enable-notifications to nil.

(setq-default dotspacemacs-configuration-layers
             '((erc :variables erc-enable-notifications nil)))

Enable SASL authentication

To enable SASL authentication set the layer variable erc-enable-sasl-auth to non nil.

(setq-default dotspacemacs-configuration-layers
             '((erc :variables erc-enable-sasl-auth t)))

Default servers

You can define the default servers in the ERC custom layout by setting the variable erc-server-list. Setting :ssl non nil will connect with erc-tls. You can also use <leader>aiD to connect to your default servers outside the custom layout.

(setq-default dotspacemacs-configuration-layers
             '((erc :variables
                    erc-server-list
                    '(("irc.freenode.net"
                       :port "6697"
                       :ssl t
                       :nick "some-user"
                       :password "secret")
                      ("irc.myworkirc.net"
                       :port "1234"
                       :nick "some-suit"
                       :password "hunter2")))))

Security Note

You should not store your passwords in the clear in your .spacemacs, and that goes double if you version your config file. ERC allows for a number of ways of protecting this information.

First, ERC will check your ~/.authinfo.gpg, looking for lines like

  machine <irc.server.url> login <yournick> password <yourpassword> port <portnumber>

You can omit :password in this case.

You could also set an environment variable (or otherwise secret variable) and read that in :password.

Key bindings

Key Binding Description
SPC a i e Starts ERC
SPC a i E Starts ERC via TLS/SSL
SPC a i i Switch to next active ERC buffer
SPC a i D Start ERC with default servers
SPC m b Switch between ERC buffers
SPC m d Interactively input a user action and send it to IRC.
SPC m D Draw Social Graph using erc-social-graph
SPC m j Join a channel, executes the /join command
SPC m n Run "/names #channel" in the current channel.
SPC m l Run the /list command
SPC m p Part from the channel
SPC m q Quit server

Note: If you want to connect securely to an IRC server, you must run erc-tls command on SPC a i E instead of the erc command.

Spacemacs Layout Support

ERC buffers are added automatically to the default layout for ERC controlled by the variable erc-spacemacs-layout-name (defaults to "@ERC") and the default binding ("E") is controlled by erc-spacemacs-layout-binding