GTK+ hacking with Emacs, a small trick

I always like to read others people hacking tips, mostly because I suck a lot at using any tool correctly and I am almost always enlightened by them. Today I’ll try to contribute one small trick to the pool.

I remember the last time I posted something about gtk-look.el, someone asked me: “Why would you want to use that? You know about devhelp right?”. My answer at that point was “It’s faster and I like to get the help inside emacs if it’s possible”. Those are quite valid points on their own, but today I can add more benefits: meet Icicles.

The short description of Icicles is that it adds super-powers to any emacs mini-buffer interaction, among other things. But as always, an example is more instructive than a thousand words.

Say we are merrily hacking on our GTK+ application with GtkTreeView (a classical mistake), and we have, as always, forgotten how to set a treeview in multiple selection mode. No problem, let’s look it up. First, we press C-h C-j , bind in our box to ‘gtk-look’. After that we type ‘selection’, as we’re pretty sure the function will contain that name.

selection

Now we press S-TAB, which is Apropos-Complete in Icicles (ie, show me any string that contains my input).

S-TAB

Well, there’s quite a few huh? No problem, let’s narrow the search with M-*, aka Match-Also-Regexp. This will filter our result with everthing than does not match our input, akin to adding an extra grep to end of a pipe in a shell. So, as we are interested in GtkTreeView, we do M-* tree S-TAB:

Narrow it down

That’s better! In fact I think I see what I want now, gtk_tree_selection_set_mode. So once more… M-* set_mode S-TAB… There’s only one hit now, so Icicles will select it automatically for us in the mini-buffer:

Bingo

Enter, and we open it in our browser of choice (w3m for emacs here):

Doc

Yep, that was it.

Of course the beauty of this is that we did all that pretty fast and without moving our hands from the keyboard.

There are other cool things here, like the ability to save any completion to a cache to speed up things massively. Say, if you hack on GTK+ you are bound to cycle through its docs many times, so save only the gtk API reference search to a cache file and start your completions from there. See this for more details.

This of course barely scratches the surface, so if you use emacs I recommend you to spend some time in the Icicles wiki, install it and play with it. You won’t be disappointed.

This entry was posted in General. Bookmark the permalink.

3 Responses to GTK+ hacking with Emacs, a small trick

  1. hnanni says:

    Hello.

    So looks like you don’t have antialias in emacs.
    Even when coding, antialias makes a pleasant difference.

    To have the hinted fonts inside the emacs buffers, I’ve followed this guide:

    http://www.gentoo.org/proj/en/lisp/emacs/xft.xml

    Hopefully it will be useful to you too.

  2. xan says:

    Thanks for the tip, although I’m pretty happy with the fonts I have now 🙂

    I just noticed I mixed first and third person in a horrible way in the post, I need help.

  3. Tom says:

    Holy wow batman! Dare I admit I’ve always had a firefox buffer in the desktop next to my emacs with docs I was reading? You mean I could do it all in emacs? Like when I first learned to program with my “Intro to emacs lisp” book… this is awesome!

Leave a Reply

Your email address will not be published. Required fields are marked *