removing historical buffer names from the ido buffer list

ido-mode in emacs has this great feature where it remembers old buffers you have had open in the past and offers then as choices when switching buffer using C-x b. The problem is that sometimes it will have names in the list you’d rather it didn’t remember. The solution is easy, simply hit C-k to instantly kill the entry under point.

gnus, imap and gnutls in win32

I’ve been trying to get gnus working in emacs in win32 for the past few days. There were a number of obstacles to overcome:

  1. Install gnutls
  2. The gnus README.w32 says gnutls should be installed and in the path. I found that it must be in the windows system path to make it work. Setting the path within emacs was not good enough. So add C:\Program Files (x86)\gnutls\bin;C:\Program Files (x86)\gnutls\lib to your system path by going to Start/Edit System Environment Variables then click Environment Variables and edit Path in System Variables
  3. you need to edit the emacs variable gnutls-trustfiles to point to windows paths to .crt files. by default it had paths to unix locations. The only way I could find to get these files was to install cygwin and then make gnutls-trustfiles equal to ("C:/cygwin/usr/ssl/certs/ca-bundle.trust.crt" "C:/cygwin/usr/ssl/certs/ca-bundle.crt")

Unfortunately these last two steps were not obvious to me and it took me quite some time to work through them.

Tip: if you need to debug gnutls, try setting (setq gnutls-log-level 50).

Now all I need to do is learn gnus!

Clickable links in OSX Terminal

For some reason I never thought to search for this before. It turns out, if you CMD+double click on a web link in Terminal.app it opens the link in your browser. Very handy. CMD+Shift+double click for OSs older than Lion.

Converting lines of text into a numbered list in org-mode

Recently I had a list of things in a org buffer that I wanted to turn into a numbered list but couldn’t find an elegant way to do it.

The solution I came up with was to use a regex-replace to insert 1. in front of each line. Then I used org-mode’s C-c C-c to renumber the lines.

I also asked on #org-mode on irc. Two interesting solutions were suggested.

  1. use string-rectangle
  2. use the string-rectangle function via the keyboard shortcuts: C-x r t 1 . <SPC>

    string-rectangle is new to me but seems as though it could be very useful. Thanks quicksilver for that suggestion.

  3. use org-mode’s org-toggle-item
  4. which is described as:
    Insert separator line in table or modify bullet status of line.
    Also turns a plain line or a region of lines into list items.
    Calls `org-table-insert-hline', `org-toggle-item', or
    `org-cycle-list-bullet', depending on context.

    The trick is to prefix it with C-u which supplies ARG to the function org-toggle-item which changes each line in a region into an item.

    C-u C-c - then S-right until you get to the list type you want.

    Thanks Thumper_ for that suggestion.

UPDATE: zhen pointed me to rectangle-number-lines, which I did look at before but it’s default option numbers the lines without the full stop after each number. As I wanted this for org-mode, I really wanted the numbers to be formatted as “1. “. After reading the help on rectangle-number-lines though, I found that if you prefix it with the argument command C-u it will ask you for a starting number and the format of the numbers.

∴ Select a rectangle at least one column wide of the lines you want to number then
C-u C-x r N <ENTER><backspace>.<spc><ENTER>

Delete white space around insertion point in emacs

A while ago I discovered M-\ deletes white space between point and text.

Now I just discovered M-spc replaces tabs and spaces around point with just 1 space.

M-SPC runs the command just-one-space, which is an interactive
compiled Lisp function in `simple.el'.

It is bound to M-SPC.

(just-one-space &optional N)

Delete all spaces and tabs around point, leaving one space (or N spaces).
If N is negative, delete newlines as well.

openscad is cool

UPDATE: You might also be interested in my list of programmatic CAD tools.

Brendan introduced me to openscad while we were at the hacker space last night. I really like it and I can’t believe I didn’t try this tool out before. You essentially write your solid design in a programming language. Its simple to learn and very easy to get up and running.

There is even a scad-mode for it in emacs which I added to the marmalade repo for easy installation. Anyway here is a screenshot of a display stand I am working on.