Journal GSoC sur GtkSourceView/gedit

Posté par  . Licence CC By‑SA.
55
21
sept.
2013

Me voilà arrivé à la fin du Google Summer of Code chez GNOME. C'est un bon moment pour faire un récapitulatif de mes aventures GNOMEsques.

Tout a commencé un beau^W jour pluvieux d'été, en 2009, où je voulais me lancer dans un projet de programmation. J'aimais bien GNOME, donc développer une application en GTK+ me paraissait un choix judicieux. Qu'est-ce qu'il me manquait dans GNOME ? Un bon éditeur LaTeX, pardi ! J'utilisais Kile à l'époque. Me voilà donc parti pour LaTeXila.

Ayant aucune expérience dans le développement de logiciel libre, et peu d'expérience en programmation, les premières versions (en langage C) étaient plus ou moins un échec point de vue évolutivité du code. Mais avec un brin de persévérance, beaucoup de temps libre en été, après une réécriture en langage Vala, et après avoir appris à ne pas coder avec les pieds, je suis maintenant assez satisfait de LaTeXila (et peut-être que d'autres le sont aussi).

Que viennent faire gedit et GtkSourceView dans cette histoire, me direz-vous ? Simple, GtkSourceView est la bibliothèque qui gère l'affichage de code source (ainsi que d'autres fonctionnalités amusantes), qui est justement utilisé pour LaTeXila. gedit, c'est l'éditeur de texte généraliste (oui, comme un médecin) de GNOME, qui utilise aussi GtkSourceView, et qui est développé par les mêmes personnes. Et il se fait que le système de complétion de GtkSourceView était assez buggé. J'ai donc commencé, en 2012, par corriger certains bugs. Ensuite j'ai trouvé sympa d'apprendre à programmer correctement en C pour GNOME (oui, avec le boilerplate/code de remplissage GObject, ce n'est pas si horrible que ça en a l'air), et à apprendre les difficultés de développer une bibliothèque plutôt qu'une simple application (il faut notamment faire attention à l'API). Bref, j'ai pratiquement réécris une grande partie du code pour le système de complétion, tout en améliorant la documentation.

Pour créer un éditeur de texte spécialisé (par exemple pour le LaTeX), GtkSourceView n'est pas suffisant. C'est là qu'intervient gedit. Un de mes projets à long terme est de rendre le code de gedit réutilisable. C'est d'ailleurs pour cette raison qu'initialement GtkSourceView a été créé, en 2001 (gedit date de 1998, aux débuts de GNOME).

Le GSoC consistait, entre autre, à implémenter dans GtkSourceView une API de haut niveau pour la recherche et remplacement. Une implémentation basique existait dans gedit, mais ne permettait pas la recherche par regex, et ne retournait pas le nombre total d'occurrences dans le fichier (ce qui implique de scanner l'entièreté du fichier de manière asynchrone). Plus de détails sur mon blog.

Le résultat (la partie visible de l'iceberg):

Recherche par regex dans gedit

Pour terminer ce journal, j'encourage d'autres étudiants à se lancer, et à contribuer au libre. On apprend plein de choses, c'est gratifiant, et c'est bien plus utile que de jouer à des jeux-vidéos.

  • # Oh merci !

    Posté par  (site web personnel) . Évalué à 10.

    Ah super, j'ai utilisé ça pour la première fois hier avec gedit, et en voyant cette fonctionnalité je me suis demandé depuis quand c'était là parce que je ne me souvenais pas que c'était possible !

    Je te dis donc merci !

    (oui ma machine est synchronisée sur une poignée de ppa unstable, ça a des inconvénients mais aussi beaucoup d'avantages, comme le fait d'avoir déjà pu me servir de ton travail avant même de savoir à qui je le devais. :D)

    ce commentaire est sous licence cc by 4 et précédentes

    • [^] # Re: Oh merci !

      Posté par  . Évalué à 6.

      De rien ;-) J'espère que je ne verrai pas arriver trop de rapports de bugs une fois que gedit 3.10 débarquera dans les versions stables des distributions. Donc merci pour beta tester avec le PPA.

  • # Humour geek

    Posté par  . Évalué à -1.

    Le GSoC consistait, entre autre, à implémenter dans GtkSourceView une API de haut niveau pour la recherche et remplacement. Une implémentation basique existait dans gedit, mais ne permettait pas la recherche par regex, et ne retournait pas le nombre total d'occurrences dans le fichier (ce qui implique de scanner l'entièreté du fichier de manière asynchrone).

    M-x query-replace-regexp ne marchait pas?

  • # Merci

    Posté par  . Évalué à 5.

    C'est toujours agréable de lire quelqu'un qui contribue activement à ces softs préférés :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.