Last edit
Sammanfattning: about my emacs build and my git mirror
Tillagd:
> == Building Emacs from source ==
> I mostly always build Emacs from source (though I think the emacs-snapshot packages are great) so I use this [[EmacsSnapshotAndDebian|page]] to track what I need to do.
> I keep a [[https://github.com/nicferrier/emacs|git mirror]] of the Emacs sources irregularly up to date.
I am nicferrier, a hacker trying to do interesting things. I use Emacs every day all the time. Here's my blog.
I’ve used Emacs in some form since 1989. And GNU-Emacs every day, all the time for the last 15 years. I’ve done extensive Java, C, Python, ActionScript? and Shell development inside Emacs, as well as a bunch of other languages.
The last couple of years I’ve started to look at ELisp as a practical language (since it had closures basically) in which I might one day do all my work.
I work for ThoughtWorks doing DevOps stuff.
I am trying to start TeamChat.net, a ChatOps company for teams built on Elnode, ShoesOff and other Emacs technology.
I used to be the CTO at woome.com where we built video tools to help people get laid.
I maintain the marmalade Emacs package repo and am porting it to Elnode.
I am the author and maintainer of Elnode, the Emacs Async Webserver; more information about that in this page.
I hang out on #emacs a lot, I’m listed here and here. I wish that both of those references could be auto-generated.
My CSS is here.
Use it by clicking here here
I mostly always build Emacs from source (though I think the emacs-snapshot packages are great) so I use this page to track what I need to do.
I keep a git mirror of the Emacs sources irregularly up to date.
... or node.js for Emacs
Elnode is an asynchronous TCP server handling HTTP.
Elnode is in the marmalade repository
As of now Elnode is functional. I am starting to write things with it:
Other stuff I am considering:
Creole is a Wiki markup language very like the one used here on EmacsWiki.
I develop and maintain the EmacsLisp version of a Creole parser and HTML exporter.
We are using Creole to develop Elwiki, an EmacsWiki engine in EmacsLisp run with Elnode.
Changing font size is a pain so I wrote FrameSize.
I’ve never liked gnus. But I do like Emacs as a mail platform so I’ve always maintained my own mail code.
Back in the 90s I wrote an Emacs IMAP user agent based on the GNUs IMAP library. It worked ok but I found that IMAP doesn’t scale to big inboxes.
I’ve worked on a succession of different email clients since then, the current incarnation being Emacs Maildir. It’s fast, it’s simple, it’s easy.
Here’s my daemon rc script:
#!/bin/bash
WHO=$(whoami)
[ "$WHO" != "nferrier" ] && exec su -c "$0 $*" - nferrier
EMACS=/home/nferrier/usr/emacs/bin/emacs
SERVERNAME=elnode
SOCKETPATH=/tmp/emacs$UID/$SERVERNAME
case $1 in
start)
${EMACS}client -s $SOCKETPATH -e '(print (emacs-version))'
if [ $? -ne 0 ] ; then $EMACS --daemon=$SERVERNAME ; fi
;;
stop)
${EMACS}client -s $SOCKETPATH -e '(print (emacs-version))'
if [ $? -eq 0 ] ; then ${EMACS}client -s $SOCKETPATH -e '(kill-emacs)' *scratch* ; fi
;;
status)
if [ ! -S $SOCKETPATH ] ; then exit 1 ; fi
${EMACS}client -s $SOCKETPATH -e '(print (emacs-version))'
;;
esac
# End
Here's the GIST of the same script.
I do some remote pair programming inside screen. I would like to use emacs. Standard colors are too difficult for me to read (my eyes are going!).
vim has the very nice:
set background=dark
which turns up the brightness on dark font faces. According to #emacs we have no equivalent.
So I wrote one:
(defvar dark-background nil)
(defun toggle-dark-background ()
(interactive)
(let ((difficult-colors
'("red" "blue" "medium blue")))
(mapc
(lambda (face)
(and (member (face-attribute face :foreground) difficult-colors)
(set-face-bold-p face (not dark-background))))
(face-list)))
(setq dark-background (not dark-background)))
This toggles bold on the dark ones, which I think is all the vim thing is doing.
Another interest of mine is achieving portable Emacs config. My plan is to achieve this through use of packages.
The idea is to:
This gist shows my self installing Emacs config except for the customizations. The customizations are insecure because they contain passwords and such, hence the need for encrypted packages.
Solving the problem of what is machine specific and what is not is hard.
The image above is my Gravatar. It’s a useful service that ties an email address to an image, so if someone gives you an email you can maybe find a picture of them.
You need to hash the email to generate the url though, here’s how in EmacsLisp:
(print (md5 (downcase "nic@example.com")) (current-buffer))
Here’s another plan of mine:
Difficult bits about this are how to co-ordinate the ui, it’s ok to have emacs being the collection point for data but you want the webkit window on the screen at the same time. Maybe most ui should still be done in the webkit window.
I’ve done quite a few other packages for Emacs, most are on github but check these out:
And some other stuff I haven’t packaged and probably never will:
I used to maintain a mercurial copy of the emacs bzr repo at bitbucket.
here is the update script I used.
I no longer maintain that, people weren’t interested.