125 lines
4.7 KiB
Org Mode
125 lines
4.7 KiB
Org Mode
#+TITLE: Mike Gerwitz's Emacs Mail Configuration
|
|
#+AUTHOR: Mike Gerwitz
|
|
#+EMAIL: mtg@gnu.org
|
|
|
|
I used to be a user of [[http://irssi.org/][irssi]], which is a damn good IRC client. But now that
|
|
I'm using Emacs for many other things---including [[file:mail.org][e-mail]]---I am comfortable
|
|
exploring it for other uses.
|
|
|
|
Emacs is an ideal platform for many things because of the flexibility that
|
|
Elisp provides---being able to hook and modify anything at runtime. For
|
|
IRC, I'm giving [[https://www.gnu.org/software/emacs/manual/html_node/erc/index.html][ERC]] a try, which is distributed with Emacs.
|
|
|
|
Unfortunately, I began this transition after I had already been away from
|
|
IRC (and therefore irssi) for a few years, so I won't be drawing many
|
|
parallels. Feel free to submit patches to this documentation.
|
|
|
|
You can find me on Freenode, user =mikegerwitz=.
|
|
|
|
As always with my code, I use lexical variable binding:
|
|
|
|
#+BEGIN_SRC emacs-lisp :padline no
|
|
;; -*- lexical-binding: t -*-
|
|
#+END_SRC
|
|
|
|
* User Information
|
|
I am =mikegerwitz= on any service I use.[fn:: (unless I forgot my password
|
|
and can't recover the account...e.g. Reddit, on which I'm =mgerwitz=)]
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq erc-nick "mikegerwitz"
|
|
erc-email-userid "mtg@gnu.org"
|
|
erc-user-full-name "Mike Gerwitz")
|
|
#+END_SRC
|
|
|
|
|
|
* Auto-Join
|
|
The =join= module distributed (and enabled by default) with Emacs can
|
|
auto-join channels on start.o
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(erc-autojoin-mode t)
|
|
(setq erc-autojoin-channels-alist
|
|
'(("freenode.net" "#fsf" "#fsf-members" "#gnu" "#libreplanet")))
|
|
#+END_SRC
|
|
|
|
Interestingly, this works even though I proxy to Freenode through a
|
|
=fencepost= SSH tunnel[fn:fencepost-tunnel], connecting to =localhost=; it
|
|
properly detects the server name.[fn:server-name]
|
|
|
|
|
|
* Tracking
|
|
ERC can use the modeline to notify the user [[http://www.emacswiki.org/emacs/ErcChannelTracking][when channels/queries have
|
|
activity]]. This is absolutely necessary---channel and query buffers can
|
|
easily be hidden, either intentionally or accidentally.
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(erc-track-mode t)
|
|
#+END_SRC
|
|
|
|
The default positioning in the modeline is before the list of modes:
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq erc-track-position-in-mode-line 'before-modes)
|
|
#+END_SRC
|
|
|
|
I have a wide terminal, so I can also benefit from knowing how many
|
|
messages I've missed, mixed into a delicious [[www.catb.org/jargon/html/A/angry-fruit-salad.html][angry fruit salad]]:
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq erc-track-showcount t
|
|
erc-track-use-faces t)
|
|
#+END_SRC
|
|
|
|
The rooms I participate in are generally large, so it is not useful for me
|
|
to be notified of =JOIN=, =PART=, etc. Below, =333= and =353= (present in
|
|
the default) represent, respectively, notice of who set the channel topic
|
|
and the user listing.
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq erc-track-exclude-types
|
|
'("NICK" "JOIN" "PART" "QUIT" "333" "353"))
|
|
#+END_SRC
|
|
|
|
It is easy to ignore messages from the server by setting
|
|
=erc-track-exclude-server-buffer=, but I would like to be notified.
|
|
|
|
|
|
[fn:fencepost-tunnel] The =fencepost= proxy (a GNU server) is for privacy
|
|
and GNU recognition---Freenode states that it spoofs the IP Address, and it
|
|
provides a cloak in the form of =gateway/shell/gnu/x-*=. Other GNU hackers
|
|
on =fencepost= would be able to see my real IP (unless I =torify= it), but
|
|
that's okay. I used to have an FSF cloak until my Freenode account expired,
|
|
but I find this to be more appropriate.
|
|
|
|
[fn:server-name] =erc-autojoin-after-ident= in =er-join.el= considers
|
|
both =erc-server-announced-name= and =erc-session-server=, with the former
|
|
taking precedence. In my case, the former is ="foo.freenode.net"= (varies),
|
|
and the latter is ="localhost"=.
|
|
|
|
|
|
* Flood Protection
|
|
/Flooding/ occurs when too much text is send to a channel. Some channels
|
|
protect against this, some don't. The issue I am more concerned with is
|
|
whether flooding from myself is actually intentional.
|
|
|
|
For example, I have a lot going on in my terminal (everything except
|
|
graphical web browsing), and I will occasionally paste text into the wrong
|
|
buffer/window, or I will simply paste when that was not the intent (fat
|
|
fingers; mouse middle-click). I have also had situations in the past where
|
|
my children get to the mouse or keyboard.[fn:kids-paste]
|
|
|
|
ERC offers an "accidental paste threshold" that will signal an error if
|
|
lines are entered within N seconds of one-another. I set this to a
|
|
threshold that I think will be reasonable, and one that will definitely be
|
|
reached on paste.
|
|
|
|
#+BEGIN_SRC emacs-lisp
|
|
(setq erc-accidental-paste-threshold-seconds 1)
|
|
#+END_SRC
|
|
|
|
[fn:kids-paste] One incident was my son---one year old at the time---playing
|
|
with the mouse that had fallen under my desk. He caused a bunch of text in
|
|
the terminal to be selected, and then subsequently pasted into an IRC
|
|
channel.
|