대문 최근에 바뀐 글 새소식 찾기 하우투 문제 제안

NicFerrier

최근 편집

요약: about my emacs build and my git mirror

추가됨:

> == 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.


Portrait

I a€™m 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.

About me

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.

Recent Emacs related blog posts

My CSS for the EmacsWiki

My CSS is here.

The GitHub is here

Use it by clicking here here

Building Emacs from source

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.

Elnode: an asynchronous HTTP server for Emacs

... 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

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.

Frame size

Changing font size is a pain so I wrote FrameSize.

Email under Emacs

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.

Emacs Daemon RC

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.

Emacs in a screen terminal: colors

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.

Packages For Config - Small, Portable Init Files

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.

Gravatar from Emacs

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))

How to write a modern browser for Emacs

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.

List of various other ELisp bits and pieces

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:

Emacs under Mercurial

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.


CategoryHomepage