From 8b106231838838f9c8fe49c983144eb8623d6200 Mon Sep 17 00:00:00 2001 From: Gergely Polonkai Date: Tue, 4 Oct 2016 14:36:37 +0200 Subject: [PATCH] Add post about GobGen --- ...package-to-generate-gobject-boilerplate.md | 46 ++++++++++++++++++ images/screenshot-gobgen.png | Bin 0 -> 33464 bytes 2 files changed, 46 insertions(+) create mode 100644 _posts/2016-09-28-emacs-package-to-generate-gobject-boilerplate.md create mode 100644 images/screenshot-gobgen.png diff --git a/_posts/2016-09-28-emacs-package-to-generate-gobject-boilerplate.md b/_posts/2016-09-28-emacs-package-to-generate-gobject-boilerplate.md new file mode 100644 index 0000000..36722e8 --- /dev/null +++ b/_posts/2016-09-28-emacs-package-to-generate-gobject-boilerplate.md @@ -0,0 +1,46 @@ +--- +layout: post +title: "Emacs package to generate GObject boilerplate" +date: 2016-09-28 15:40:15 +tags: [gnome, development] +published: true +author: + name: Gergely Polonkai + email: gergely@polonkai.eu +--- + +Before I started using Vala (and sometimes even after that) I often +needed to generate new classes based +on [GObject](https://developer.gnome.org/gobject/stable/). + +If you have ever worked with GObject in C, you know how tedious it can +be. You need a pretty long boilerplate just to register your class, +and, if you want to be introspectable (and readable, actually), your +function names can grow really long. + +To overcome this problem back in my ViM days, I used template files, +where I could replace class prefixes and names with a few keyboard +macros. As I never really dug into ViM scripting other than using some +plugins, I never got farther than +that. [Then came Emacs]({% post_url 2014-09-17-nyanmacs %}). + +I use Emacs for about two years now very extensively, up to and +including GLib-based development. I tried the template approach, but +it felt to be a really poor experience, especially given that I made +my feet wet with Emacs Lisp. So I dug deeper, and created a package +for that. + +![A screenshot of GobGen in action]({{ site_url }}/images/screenshot-gobgen.png) + +GobGen has its own buffer with some widgets, a bit similar to +`customize`. You can enter the name of your new object and its parent, +specify some settings. Then you press Generate, and you are presented +with two new buffers, one for the `.c` and another for the `.h` +boilerplate. + +There are a lot of things to do, actually. There is already an open +issue for creating a major mode for this buffer, and there are some +minor switches I’d like to add, but it is already usable. You can grab +it from [MELPA](https://melpa.org/#/gobgen) (my first package there; +woo!) or from +my [GitHub account](https://github.com/gergelypolonkai/gobgen.el). diff --git a/images/screenshot-gobgen.png b/images/screenshot-gobgen.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1e8e276bc601f524208af01bd1308713648a79 GIT binary patch literal 33464 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 H>-+p4OJ3kp literal 0 HcmV?d00001