39 lines
2.0 KiB
ReStructuredText
39 lines
2.0 KiB
ReStructuredText
|
Emacs package to generate GObject boilerplate
|
|||
|
#############################################
|
|||
|
|
|||
|
:date: 2016-09-28T15:40:15Z
|
|||
|
:category: blog
|
|||
|
:tags: gnome,development
|
|||
|
:url: 2016/09/28/emacs-package-to-generate-gobject-boilerplate/
|
|||
|
:save_as: 2016/09/28/emacs-package-to-generate-gobject-boilerplate/index.html
|
|||
|
:status: published
|
|||
|
:author: Gergely Polonkai
|
|||
|
|
|||
|
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
|
|||
|
<{filename}2014-09-17-nyanmacs.rst>`_.
|
|||
|
|
|||
|
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.
|
|||
|
|
|||
|
.. image:: {static}../images/screenshot-gobgen.png
|
|||
|
:alt: A screenshot of GobGen in action
|
|||
|
|
|||
|
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>`_.
|