<?xml version="1.0" encoding="UTF-8"?> <rss
version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
> <channel><title>skweez.net</title> <atom:link href="http://skweez.net/feed/" rel="self" type="application/rss+xml" /><link>http://skweez.net</link> <description>Alles skweez?</description> <lastBuildDate>Tue, 09 Apr 2013 15:12:05 +0000</lastBuildDate> <language>de-DE</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <atom:link rel="search"
href="http://skweez.net/opensearch"
type="application/opensearchdescription+xml"
title="Content Search" /> <item><title>How to let XBMC scan for new content on network connect</title><link>http://skweez.net/how-to-let-xbmc-scan-for-new-conten-on-network-connect/</link> <comments>http://skweez.net/how-to-let-xbmc-scan-for-new-conten-on-network-connect/#comments</comments> <pubDate>Thu, 17 Jan 2013 09:03:08 +0000</pubDate> <dc:creator>elm</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[linux]]></category> <category><![CDATA[raspberry pi]]></category> <category><![CDATA[xbmc]]></category> <guid
isPermaLink="false">http://skweez.net/?p=2240</guid> <description><![CDATA[I have a Raspberry Pi with Raspbmc in my living room to watch tv shows and stuff. XBMC is really great software. I have the Pi hooked up to an Airport Express and there is a problem. The Airport Express takes some time to connect to my wifi network. This takes so long that the [...]]]></description> <content:encoded><![CDATA[<p><img
class="alignleft size-full wp-image-2243" alt="" src="/wp-content/uploads/2013/01/raspbmc-logo.png" width="150" height="150" />I have a <a
href="http://www.raspberrypi.org" target="_blank">Raspberry Pi</a> with <a
href="http://www.raspbmc.com" target="_blank">Raspbmc</a> in my living room to watch tv shows and stuff. <a
href="http://xbmc.org" target="_blank">XBMC</a> is really great software. I have the Pi hooked up to an Airport Express and there is a problem. The Airport Express takes some time to connect to my wifi network. This takes so long that the Pi is done booting and XBMC is running for some minutes by the time the network comes up. This disables one very useful feature of XBMC: the automatic library scan. When XBMC tries to scan all the sources for new content the network is not available and so it does nothing or at least does not find anything new.</p><p>The solution is to set the network manager to send a command to XBMC to scan the video sources when the network comes up.</p><p>You need to place the following script in <code>/etc/network/if-up.d/</code>. Each script in this folder is called on network up. This script sends a JSON request to XBMC to scan all video sources for new content. You may need to change the user, password or the port if you changed them in the XBMC settings. This are the default settings.</p><table><tr><td
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">#!/bin/bash</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Don't run if the loopback device comes up</span>
<span style="color: #7a0874; font-weight: bold;">&#91;</span> <span style="color: #ff0000;">&quot;<span style="color: #007800;">$IFACE</span>&quot;</span> <span style="color: #000000; font-weight: bold;">!</span>= <span style="color: #ff0000;">&quot;lo&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#93;</span> <span style="color: #000000; font-weight: bold;">||</span> <span style="color: #7a0874; font-weight: bold;">exit</span> <span style="color: #000000;">0</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># Send JSON command to XBMC to scan video sources</span>
<span style="color: #000000; font-weight: bold;">/</span>usr<span style="color: #000000; font-weight: bold;">/</span>bin<span style="color: #000000; font-weight: bold;">/</span><span style="color: #c20cb9; font-weight: bold;">wget</span> <span style="color: #660033;">--header</span>=<span style="color: #ff0000;">&quot;Content-Type: application/json&quot;</span> <span style="color: #660033;">--post-data</span>=<span style="color: #ff0000;">&quot;{<span style="color: #000099; font-weight: bold;">\&quot;</span>jsonrpc<span style="color: #000099; font-weight: bold;">\&quot;</span>: <span style="color: #000099; font-weight: bold;">\&quot;</span>2.0<span style="color: #000099; font-weight: bold;">\&quot;</span>, <span style="color: #000099; font-weight: bold;">\&quot;</span>method<span style="color: #000099; font-weight: bold;">\&quot;</span>: <span style="color: #000099; font-weight: bold;">\&quot;</span>VideoLibrary.Scan<span style="color: #000099; font-weight: bold;">\&quot;</span>}&quot;</span> http:<span style="color: #000000; font-weight: bold;">//</span>xbmc:xbmc<span style="color: #000000; font-weight: bold;">@</span>127.0.0.1:<span style="color: #000000;">9090</span><span style="color: #000000; font-weight: bold;">/</span>jsonrpc <span style="color: #660033;">--spider</span></pre></td></tr></table><p>To install this script you need to ssh into the Pi and place it in <code>/etc/network/if-up.d/xbmcupdate</code>. Now you can enjoy your latest <del
datetime="2013-01-14T21:33:34+00:00">downloads</del> linux distributions without any hazzle.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/how-to-let-xbmc-scan-for-new-conten-on-network-connect/feed/</wfw:commentRss> <slash:comments>3</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fhow-to-let-xbmc-scan-for-new-conten-on-network-connect%2F&amp;language=de_DE&amp;category=text&amp;title=How+to+let+XBMC+scan+for+new+content+on+network+connect&amp;description=I+have+a+Raspberry+Pi+with+Raspbmc+in+my+living+room+to+watch+tv+shows+and+stuff.+XBMC+is+really+great+software.+I+have+the+Pi+hooked+up+to+an...&amp;tags=linux%2Craspberry+pi%2Cxbmc%2Cblog" type="text/html" /> </item> <item><title>Erfahrungsbericht über Google Summer of Code</title><link>http://skweez.net/erfahrungsbericht-uber-google-summer-of-code/</link> <comments>http://skweez.net/erfahrungsbericht-uber-google-summer-of-code/#comments</comments> <pubDate>Mon, 26 Nov 2012 08:00:47 +0000</pubDate> <dc:creator>ritze</dc:creator> <category><![CDATA[Deutsche Beiträge]]></category> <category><![CDATA[anjuta]]></category> <category><![CDATA[gsoc]]></category> <category><![CDATA[ide]]></category> <guid
isPermaLink="false">http://skweez.net/?p=2154</guid> <description><![CDATA[Diesen Artikel habe ich ursprünglich für ubuntuusers.de verfasst und möchte somit meine Erfahrungen im Rahmen des Google Summer of Code schildern. Alles begann als ich Anfang des Jahres bei heise online mal wieder über Google Summer of Code las. Ich wollte schon immer meinen Teil zum Projekt Gnome beitragen und so etwas an die Gemeinschaft [...]]]></description> <content:encoded><![CDATA[<p><em>Diesen Artikel habe ich ursprünglich für ubuntuusers.de <a
href="http://ikhaya.ubuntuusers.de/2012/11/26/erfahrungsbericht-ueber-google-summer-of-code/">verfasst</a> und möchte somit meine Erfahrungen im Rahmen des Google Summer of Code schildern.</em></p><p><img
src="http://skweez.net/wp-content/uploads/2012/11/GSoC_2012_leaderboard.png" alt="" class="aligncenter size-full wp-image-2171" /></p><p>Alles begann als ich Anfang des Jahres bei <a
href="http://heise.de">heise online</a> mal wieder über Google Summer of Code <a
href="http://www.heise.de/developer/meldung/Auftakt-fuer-Googles-Summer-of-Code-2012-1428606.html">las</a>. Ich wollte schon immer meinen Teil zum Projekt Gnome beitragen und so etwas an die Gemeinschaft zurückzugeben. Ich benutze den Desktop nun schon seit mehr als vier Jahre. Also fing ich an im Wiki von Gnome ein wenig herumzustöbern und stieß auf eine Seite mit <a
href="https://live.gnome.org/SummerOfCode2012/Ideas">Ideen</a> zum diesjährigen Google Summer of Code. Nach längerer Überlegung dachte ich mir, ich versuch es einfach einmal bei <a
href="http://www.anjuta.org">Anjuta</a>.</p><p><span
id="more-2154"></span></p><p><img
src="http://skweez.net/wp-content/uploads/2012/11/anjuta_logo.png" alt="" class="alignleft size-full wp-image-2182" /></p><p>Anjuta ist eine IDE, die das Leben eines Programmierers erleichtern soll. Eine IDE beherbergt in der Regel viele nützliche Werkzeuge, sodass man beim Programmieren nicht durch Trivialitäten abgelenkt oder gar aufgehalten wird. Ein Beispiel wäre das markieren von Syntaxfehlern. Auch Programmierer sind nur Menschen und machen somit auch Leichtsinnsfehler indem sie sich vertippen oder einfach ein Zeichen vergessen. Die IDE markiert diese Fehler und macht damit den Programmierer darauf aufmerksam. Dadurch werden sehr viele Fehler im Vorhinein verhindert.</p><p>Projekt gefunden – was nun? Als Mentor für das Projekt Anjuta wurde <a
href="https://live.gnome.org/JohannesSchmid">Johannes Schmid</a> angegeben. Zudem fand ich die Entwickler-Mailingliste von Anjuta heraus und trug mich auch gleich dort ein. Mein Englisch ist nicht gerade das beste und nun soll ich eine E-Mail in Englisch verfassen? Natürlich war das für mich eine der größten Hürden bei der Teilnahme an Google Summer of Code. Dennoch wagte ich mich dran und so <a
href="https://mail.gnome.org/archives/anjuta-devel-list/2012-March/msg00000.html">folgte</a> eine kurze E-Mail, mit der ich mein Interesse kundgetan hatte. Johannes antwortete mir innerhalb von zwei Stunden und erklärte mir, dass ich als erstes etwas zum Projekt beitragen sollte. Das einfachste wäre einen kleinen Bug zu beheben. Damit soll sichergestellt werden, dass ich es ernst meine.</p><p>Ich <a
href="https://bugzilla.gnome.org/show_bug.cgi?id=594912">behebte</a> also einen kleinen Bug und konnte somit auch gleich den Quelltext von Anjuta ein wenig kennen lernen. Ich hatte zuvor schon von der Uni aus mit ein paar Kommilitonen ein größeres Programm geschrieben, jedoch war Anjuta das bisher größte Projekte und hatte dementsprechend auch mehr Zeilen Code, mehr Klassen und demzufolge auch mehr &#8220;Infrastruktur&#8221;.</p><p>Anschließend suchte ich mir ein Thema aus, das ich über die nächsten drei Monate ausarbeiten werde. Ehrlich gesagt, ist mir nichts dazu eingefallen, allerdings gab es bereits einen Vorschlag von Johannes auf der Gnome-Wikiseite, auf der alle Google-Summer-of-Code-Projekte von Gnome aufgelistet wurden. Dort stand etwas von &#8220;<a
href="http://de.wikipedia.org/wiki/Clang">Clang</a>&#8220;.</p><p>Clang ist ein Frontend vom <a
href="http://de.wikipedia.org/wiki/LLVM">LLVM</a> Compiler. Wie auch der <a
href="http://de.wikipedia.org/wiki/GNU_Compiler_Collection">GNU Compiler</a> (kurz: <em>GCC</em>) übersetzt der LLVM Code von den Programmiersprachen <a
href="http://de.wikipedia.org/wiki/C_(Programmiersprache)">C</a>, <a
href="http://de.wikipedia.org/wiki/C++">C++</a> <a
href="http://de.wikipedia.org/wiki/Objective-C">Objective-C</a> und Objective-C++ in Maschinencode. Das ist längst nicht alles. LLVM bringt auch viele Werkzeuge mit, die es ermöglichen, den Quelltext nach Fehlern zu durchsuchen und den Programmierer beim compilieren darauf aufmerksam zu machen. Das macht LLVM sehr effizient und in manchen Bereichen sogar besser als der GCC. Mit Clang können nun Programmierer auf diese Funktionalität vom LLVM zurückgreifen und sie mit ihren Programmen kombinieren.</p><p>In meiner <a
href="https://google-melange.appspot.com/gsoc/project/google/gsoc2012/ritze/8001">offizielle Bewerbung</a> schrieb ich kurz etwas zu meiner Person und erklärte anschließend, wie Clang Anjuta bereichern kann. Dabei werden mehr Fehler von der IDE erkannt und der Programmierer kann diese gleich bei der Entstehung korrigieren. Dies hat zur Folge, dass in den Programmen weniger Fehler vorliegen und somit wird die Qualität der einzelnen Programmen gesteigert. Außerdem verbringt der Programmierer weniger Zeit mit Fehlerbehebung vom Code, was mehr als die Hälfte beim Programmieren aus macht. Diese Zeit kann also in neue Funktionen gesteckt werden, was wiederum den Endbenutzer glücklich macht. Mit diesem Vorhaben schlage ich also mehrere Fliegen auf einmal.</p><p>Es verstrich ein wenig Zeit bis ich die Zusage an Google Summer of Code bekommen hatte. Das Programm war in mehreren Phasen eingeteilt. Die erste Phase war die Community-Phase, in der man die Menschen hinter den Nicknames kennen lernen soll. Dazu gehört natürlich auch, dass man sich selber vorstellt und über den ganzen Zeitraum des Projektes hinweg Berichte schreibt, in denen man den aktuellen Stand der Dinge, sowie Probleme und eventuell auch deren Lösungen beschreibt. Meine Berichte hatte ich auf meinem Blog <a
href="http://skweez.net/tag/gsoc"> verfasst</a>, die wiederum über <a
href="http://planet.gnome.org">Planet Gnome</a> publiziert wurden. Daneben <a
href="https://live.gnome.org/SummerOfCode2012/Projects/MoritzLuedecke_Anjuta_Clang">richtete</a> ich eine Seite im Gnome-Wiki ein, die über das Projekt hinweg immer aktuell gehalten wurde.</p><p>Wie bei jedem neuen Projekt ist auch bei Anjuta aller Anfang schwer. Man muss sich in den Quellcode einlesen. Dazu gehört auch das Lesen von Dokumentationen, die Handhabe von Bibliotheken wie beispielsweise <a
href="http://de.wikipedia.org/wiki/GLib">GLib</a> und Allgemein das objektorientierte Programmieren mit einer Programmiersprache C, die ursprünglich dafür gar nicht ausgelegt wurde. In dieser Phase lernte ich unglaublich viel über allerlei Dinge und genau das ist auch der große Pluspunkt bei Google Summer of Code.</p><p>Der Rest ist Geschichte. Mein ursprüngliches Ziel Clang nach Anjuta zu bringen, konnte ich leider nicht erreichen, jedoch habe ich eine gute Grundlage dafür gelegt und habe auch die Absicht, das Plugin in naher Zukunft fertig zu schreiben. Nichtsdestotrotz habe ich unter der Haube von Anjuta vieles vereinfacht und zusammengelegt, was die meiste Zeit meines Projektes in Anspruch genommen hat. Es ist nun leichter ein Plugin für eine Programmiersprache zu schreiben als zuvor. Zudem sind nun Eigenschaften wie zum Beispiel das automatische hinzufügen von einer schließenden Klammer &#8216;)&#8217; nach der Eingabe einer offenen Klammer &#8216;(&#8216; für alle unterstützten Programmiersprachen von Anjuta <a
href="http://skweez.net/improve-completion-behaviour-for-cc-in-anjuta">vorhanden</a>. Auch das Verhalten ist jetzt überall gleich.</p><p>Ich für meinen Teil Bereue es nicht, dass ich an diesem Programm teilgenommen habe. Ich konnte dadurch sehr viel neues Lernen, zumal ich mich mittlerweile im Quelltext von Anjuta größtenteils auskenne und ich auch Vorhabe dem Projekt weiterhin Code beizusteuern, sofern ich genügend Zeit finde.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/erfahrungsbericht-uber-google-summer-of-code/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Ferfahrungsbericht-uber-google-summer-of-code%2F&amp;language=de_DE&amp;category=text&amp;title=Erfahrungsbericht+%C3%BCber+Google+Summer+of+Code&amp;description=Diesen+Artikel+habe+ich+urspr%C3%BCnglich+f%C3%BCr+ubuntuusers.de+verfasst+und+m%C3%B6chte+somit+meine+Erfahrungen+im+Rahmen+des+Google+Summer+of+Code+schildern.+Alles+begann+als+ich+Anfang+des+Jahres+bei+heise...&amp;tags=anjuta%2Cgsoc%2Cide%2Cblog" type="text/html" /> </item> <item><title>Sudowars on Google Play</title><link>http://skweez.net/sudowars-on-google-play/</link> <comments>http://skweez.net/sudowars-on-google-play/#comments</comments> <pubDate>Sat, 20 Oct 2012 11:55:18 +0000</pubDate> <dc:creator>ritze</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[android]]></category> <category><![CDATA[app]]></category> <category><![CDATA[planet gnome]]></category> <category><![CDATA[sudoku]]></category> <category><![CDATA[sudowars]]></category> <guid
isPermaLink="false">http://skweez.net/?p=2110</guid> <description><![CDATA[It is done. Finally we have published Sudowars on Google Play and you no longer have to download it from the Website and install the apk manually. I hope that more people encounter Sudowars now. And the best thing about it is you can read the source code, write more code or fork it. I [...]]]></description> <content:encoded><![CDATA[<p><a
href="http://skweez.net/wp-content/uploads/2012/10/sudowars_logo.png"><img
src="http://skweez.net/wp-content/uploads/2012/10/sudowars_logo.png" alt="" title="Sudowars logo" width="128" height="128" class="alignleft size-full wp-image-2114" /></a>It is done. Finally we have <a
href="https://play.google.com/store/apps/details?id=org.sudowars" title="published">published</a> Sudowars on Google Play and you no longer have to download it from the <a
href="http://sudowars.org/" title="Website">Website</a> and install the apk manually. I hope that more people encounter Sudowars now. And the best thing about it is you can read the <a
href="https://github.com/sudowars/sudowars" title="source code">source code</a>, write more code or fork it.</p><p>I have many new ideas for Sudowars, but I don&#8217;t know when I will find the time for it. Meanwhile, you can play the multiplayer.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/sudowars-on-google-play/feed/</wfw:commentRss> <slash:comments>4</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fsudowars-on-google-play%2F&amp;language=en_GB&amp;category=text&amp;title=Sudowars+on+Google+Play&amp;description=It+is+done.+Finally+we+have+published+Sudowars+on+Google+Play+and+you+no+longer+have+to+download+it+from+the+Website+and+install+the+apk+manually.+I+hope+that...&amp;tags=android%2Capp%2Cplanet+gnome%2Csudoku%2Csudowars%2Cblog" type="text/html" /> </item> <item><title>Status report: Final spurt</title><link>http://skweez.net/status-report-final-spurt/</link> <comments>http://skweez.net/status-report-final-spurt/#comments</comments> <pubDate>Sun, 19 Aug 2012 11:30:11 +0000</pubDate> <dc:creator>ritze</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[anjuta]]></category> <category><![CDATA[gnome]]></category> <category><![CDATA[gsoc]]></category> <category><![CDATA[planet gnome]]></category> <guid
isPermaLink="false">http://skweez.net/?p=2088</guid> <description><![CDATA[Three week ago I wrote two exams, which I had to learn. Therefore I had no time for Anjuta. My energy for this semester was as well as consumed and the documentation for Clang is not really the best. Finally the Olympic games were no help, because that were too exciting to ignore that games. [...]]]></description> <content:encoded><![CDATA[<p>Three week ago I wrote two exams, which I had to learn. Therefore I had no time for Anjuta. My energy for this semester was as well as consumed and the documentation for Clang is not really the best. Finally the Olympic games were no help, because that were too exciting to ignore that games. So a TV in my room interrupted me frequently from programming. ;-)</p><p>Thus after finish <a
href="http://skweez.net/status-report-the-new-architecture-of-the-language-support-plugins">merging same code of the language support plugins</a> I hadn&#8217;t find many time to write the Clang plugin. As you can see my <a
href="https://bugzilla.gnome.org/show_bug.cgi?id=682139">code</a> this plugin isn&#8217;t complete, but it&#8217;s a good base to complete it.</p><p>Unfortunately I won&#8217;t have time for Anjuta in the near future, because I have to write some exams and add some new feature to my other project <a
href="http://sudowars.org">Sudowars</a>, which is <a
href="https://github.com/sudowars">open source</a> since a couple of weeks. But I&#8217;m going to complete the Clang plugin and fix some bugs in Anjuta.</p><p>My thanks goes to the Anjuta team and specially on my mentor Johannes. They helped me a lot and I learned many things during Google Summer of Code. I would do it again at any time.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/status-report-final-spurt/feed/</wfw:commentRss> <slash:comments>1</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fstatus-report-final-spurt%2F&amp;language=en_GB&amp;category=text&amp;title=Status+report%3A+Final+spurt&amp;description=Three+week+ago+I+wrote+two+exams%2C+which+I+had+to+learn.+Therefore+I+had+no+time+for+Anjuta.+My+energy+for+this+semester+was+as+well+as+consumed+and...&amp;tags=anjuta%2Cgnome%2Cgsoc%2Cplanet+gnome%2Cblog" type="text/html" /> </item> <item><title>Status report: The new architecture of the language support plugins</title><link>http://skweez.net/status-report-the-new-architecture-of-the-language-support-plugins/</link> <comments>http://skweez.net/status-report-the-new-architecture-of-the-language-support-plugins/#comments</comments> <pubDate>Thu, 26 Jul 2012 07:35:43 +0000</pubDate> <dc:creator>ritze</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[anjuta]]></category> <category><![CDATA[gnome]]></category> <category><![CDATA[gsoc]]></category> <category><![CDATA[planet gnome]]></category> <guid
isPermaLink="false">http://skweez.net/?p=2037</guid> <description><![CDATA[I&#8217;m finished with merging same code of the language support plugins. Now all same behaviour of the language plugins like when you start typing and got proposals are merged to one code base. The language support plugins implement their language-specific code through the new subinterface IAnjutaLanguageProvider. The support class AnjutaLanguageProvider uses this implemented interface and [...]]]></description> <content:encoded><![CDATA[<p>I&#8217;m finished with <a
title="merging same code of the language support plugins" href="https://bugzilla.gnome.org/show_bug.cgi?id=680466">merging same code of the language support plugins</a>.</p> <a
href="http://skweez.net/wp-content/uploads/2012/07/provider.png"><img
src="http://skweez.net/wp-content/uploads/2012/07/provider-612x323.png" alt="" title="The language support plugins" width="612" height="323" class="size-full_width wp-image-2040" /></a><p
class="wp-caption-text">The new architecture of the language support plugins</p><p><span
id="more-2037"></span></p><p>Now all same behaviour of the language plugins like when you start typing and got proposals are merged to one code base. The language support plugins implement their language-specific code through the new subinterface <code>IAnjutaLanguageProvider</code>.</p><p><a
href="http://skweez.net/wp-content/uploads/2012/07/new_language_plugin.png"><img
src="http://skweez.net/wp-content/uploads/2012/07/new_language_plugin-612x329.png" alt="" title="The language support plugin" width="612" height="329" class="aligncenter size-full_width wp-image-2039" /></a></p><p>The support class <code>AnjutaLanguageProvider</code> uses this implemented interface and executes the mechanism, which is all the same in each language support plugin. Additionally the language support plugins implement the <code>IAnjutaLanguageProvider</code> with the methods of <code>AnjutaLanguageProvider</code>. It&#8217;s a little bit complicated, but look at the examples below.</p><p>I have one bad news: The vala plugin doesn&#8217;t use the new architecture yet, because there are some problems with generating the GIR files, which I couldn&#8217;t solve in the last week.</p><h2>Implementation of preference keys</h2><p>The following keys have to be implemented as <code>boolean</code> in a GSetting file:</p><ul><li><code>calltip-enable</code></li><li><code>completion-enable</code></li><li><code>completion-space-after-func</code></li><li><code>completion-brace-after-func</code></li><li><code>completion-closebrace-after-func</code></li></ul><h2>Implementation of IAnjutaProvider</h2><p><code>assist-&gt;lang_prov</code> is an AnjutaLanguageProvider object.</p><table><tr><td
class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">static</span> <span style="color: #993333;">void</span>
iprovider_activate <span style="color: #009900;">&#40;</span>IAnjutaProvider<span style="color: #339933;">*</span> self<span style="color: #339933;">,</span>
                    IAnjutaIterable<span style="color: #339933;">*</span> iter<span style="color: #339933;">,</span>
                    gpointer data<span style="color: #339933;">,</span>
                    GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	LanguageAssist<span style="color: #339933;">*</span> assist <span style="color: #339933;">=</span> LANGUAGE_ASSIST <span style="color: #009900;">&#40;</span>self<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	anjuta_language_provider_activate <span style="color: #009900;">&#40;</span>assist<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>lang_prov<span style="color: #339933;">,</span> self<span style="color: #339933;">,</span> iter<span style="color: #339933;">,</span> data<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span>
iprovider_populate <span style="color: #009900;">&#40;</span>IAnjutaProvider<span style="color: #339933;">*</span> self<span style="color: #339933;">,</span>
                    IAnjutaIterable<span style="color: #339933;">*</span> cursor<span style="color: #339933;">,</span>
                    GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	LanguageAssist<span style="color: #339933;">*</span> assist <span style="color: #339933;">=</span> LANGUAGE_ASSIST <span style="color: #009900;">&#40;</span>self<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	anjuta_language_provider_populate <span style="color: #009900;">&#40;</span>assist<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>lang_prov<span style="color: #339933;">,</span> self<span style="color: #339933;">,</span> cursor<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">const</span> gchar<span style="color: #339933;">*</span>
iprovider_get_name <span style="color: #009900;">&#40;</span>IAnjutaProvider<span style="color: #339933;">*</span> self<span style="color: #339933;">,</span>
                    GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">return</span> _<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Language name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> IAnjutaIterable<span style="color: #339933;">*</span>
iprovider_get_start_iter <span style="color: #009900;">&#40;</span>IAnjutaProvider<span style="color: #339933;">*</span> self<span style="color: #339933;">,</span>
                          GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	LanguageAssist<span style="color: #339933;">*</span> assist <span style="color: #339933;">=</span> LANGUAGE_ASSIST <span style="color: #009900;">&#40;</span>self<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">return</span> anjuta_language_provider_get_start_iter <span style="color: #009900;">&#40;</span>assist<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>lang_prov<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span>
iprovider_iface_init <span style="color: #009900;">&#40;</span>IAnjutaProviderIface<span style="color: #339933;">*</span> iface<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>activate            <span style="color: #339933;">=</span> iprovider_activate<span style="color: #339933;">;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>populate            <span style="color: #339933;">=</span> iprovider_populate<span style="color: #339933;">;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>get_name            <span style="color: #339933;">=</span> iprovider_get_name<span style="color: #339933;">;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>get_start_iter      <span style="color: #339933;">=</span> iprovider_get_start_iter<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table><h2>Implementation of IAnjutaLanguageProvider</h2><table><tr><td
class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">static</span> GList<span style="color: #339933;">*</span>
ilanguage_provider_get_calltip_cache <span style="color: #009900;">&#40;</span>IAnjutaLanguageProvider<span style="color: #339933;">*</span> self<span style="color: #339933;">,</span>
                                      gchar<span style="color: #339933;">*</span> call_context<span style="color: #339933;">,</span>
                                      GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* language-specific code */</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> gchar<span style="color: #339933;">*</span>
ilanguage_provider_get_calltip_context <span style="color: #009900;">&#40;</span>IAnjutaLanguageProvider <span style="color: #339933;">*</span>self<span style="color: #339933;">,</span>
                                        IAnjutaIterable <span style="color: #339933;">*</span>iter<span style="color: #339933;">,</span>
                                        GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* language-specific code */</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span>
ilanguage_provider_new_calltip <span style="color: #009900;">&#40;</span>IAnjutaLanguageProvider<span style="color: #339933;">*</span> self<span style="color: #339933;">,</span>
                                gchar<span style="color: #339933;">*</span> call_context<span style="color: #339933;">,</span>
                                IAnjutaIterable<span style="color: #339933;">*</span> cursor<span style="color: #339933;">,</span>
                                GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* language-specific code */</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> IAnjutaIterable<span style="color: #339933;">*</span>
ilanguage_provider_populate_language <span style="color: #009900;">&#40;</span>IAnjutaLanguageProvider<span style="color: #339933;">*</span> self<span style="color: #339933;">,</span>
                                      IAnjutaIterable<span style="color: #339933;">*</span> cursor<span style="color: #339933;">,</span>
                                      GError<span style="color: #339933;">**</span> e<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #808080; font-style: italic;">/* language-specific code */</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #993333;">static</span> <span style="color: #993333;">void</span>
ilanguage_provider_iface_init <span style="color: #009900;">&#40;</span>IAnjutaLanguageProviderIface<span style="color: #339933;">*</span> iface<span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>get_calltip_cache   <span style="color: #339933;">=</span> ilanguage_provider_get_calltip_cache<span style="color: #339933;">;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>get_calltip_context <span style="color: #339933;">=</span> ilanguage_provider_get_calltip_context<span style="color: #339933;">;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>new_calltip         <span style="color: #339933;">=</span> ilanguage_provider_new_calltip<span style="color: #339933;">;</span>
	iface<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>populate_language   <span style="color: #339933;">=</span> ilanguage_provider_populate_language<span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></td></tr></table><p>When you call <code>ianjuta_editor_assist_proposals ()</code> you have to set the elements of the proposal list in the right way:</p><table><tr><td
class="code"><pre class="c" style="font-family:monospace;">GList<span style="color: #339933;">*</span> list <span style="color: #339933;">=</span> NULL<span style="color: #339933;">;</span>
IAnjutaEditorAssistProposal<span style="color: #339933;">*</span> proposal <span style="color: #339933;">=</span> g_new0 <span style="color: #009900;">&#40;</span>IAnjutaEditorAssistProposal<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
AnjutaLanguageProviderProposalData<span style="color: #339933;">*</span> data <span style="color: #339933;">=</span> g_new0 <span style="color: #009900;">&#40;</span>AnjutaLanguageProviderProposalData<span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">/* set data-&amp;gt;name, data-&amp;gt;is_func and data-&amp;gt;has_para */</span>
&nbsp;
proposal<span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>data <span style="color: #339933;">=</span> data<span style="color: #339933;">;</span>
list <span style="color: #339933;">=</span> g_list_append <span style="color: #009900;">&#40;</span>list<span style="color: #339933;">,</span> proposal<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></td></tr></table> ]]></content:encoded> <wfw:commentRss>http://skweez.net/status-report-the-new-architecture-of-the-language-support-plugins/feed/</wfw:commentRss> <slash:comments>2</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fstatus-report-the-new-architecture-of-the-language-support-plugins%2F&amp;language=en_GB&amp;category=text&amp;title=Status+report%3A+The+new+architecture+of+the+language+support+plugins&amp;description=I%26%238217%3Bm+finished+with+merging+same+code+of+the+language+support+plugins.+Now+all+same+behaviour+of+the+language+plugins+like+when+you+start+typing+and+got+proposals+are+merged+to...&amp;tags=anjuta%2Cgnome%2Cgsoc%2Cplanet+gnome%2Cblog" type="text/html" /> </item> <item><title>List the git repository changes during the last week</title><link>http://skweez.net/list-the-git-repository-changes-during-the-last-week/</link> <comments>http://skweez.net/list-the-git-repository-changes-during-the-last-week/#comments</comments> <pubDate>Tue, 17 Jul 2012 07:00:17 +0000</pubDate> <dc:creator>ritze</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[awk]]></category> <category><![CDATA[git]]></category> <category><![CDATA[planet gnome]]></category> <category><![CDATA[script]]></category> <category><![CDATA[sed]]></category> <category><![CDATA[terminal]]></category> <guid
isPermaLink="false">http://skweez.net/?p=1978</guid> <description><![CDATA[Today I hacked a little bit on a modify git command. I read the blog article List the modified files on your repository from Filipe Kiss and thought, I could improve his command. The basis is this: git whatchanged --since=&#34;1 week ago&#34; --format=oneline &#124; grep &#34;^:&#34; &#124; \ sed 's:.*[DAM][ \\''t]*\([^ \\''t]*\):\1:g' I want to [...]]]></description> <content:encoded><![CDATA[<p>Today I hacked a little bit on a modify git command. I read the blog article <a
href="http://coderwall.com/p/8syvsa" title="List the modified files on your repository">List the modified files on your repository</a> from Filipe Kiss and thought, I could improve his command.</p><p><span
id="more-1978"></span></p><p>The basis is this:</p><table><tr><td
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git whatchanged</span> <span style="color: #660033;">--since</span>=<span style="color: #ff0000;">&quot;1 week ago&quot;</span> <span style="color: #660033;">--format</span>=oneline <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;^:&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'s:.*[DAM][ \\'</span><span style="color: #ff0000;">'t]*\([^ \\'</span><span style="color: #ff0000;">'t]*\):\1:g'</span></pre></td></tr></table><p>I want to see, if a file was modified, attached or deleted, therefore I left the letters <strong>M</strong>, <strong>A</strong> and <strong>D</strong> and, in addition to that, I replaced the tab after the letter with a space:</p><table><tr><td
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git whatchanged</span> <span style="color: #660033;">--since</span>=<span style="color: #ff0000;">&quot;1 week ago&quot;</span> <span style="color: #660033;">--format</span>=oneline <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;^:&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>A\\t<span style="color: #000000; font-weight: bold;">/</span>s::A\ :g<span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>M\\t<span style="color: #000000; font-weight: bold;">/</span>s::M\ :g<span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>D\\t<span style="color: #000000; font-weight: bold;">/</span>s::D\ :g<span style="color: #ff0000;">''</span></pre></td></tr></table><p>But we live in the year 2012, so we need color:</p><table><tr><td
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git whatchanged</span> <span style="color: #660033;">--since</span>=<span style="color: #ff0000;">&quot;1 week ago&quot;</span> <span style="color: #660033;">--format</span>=oneline <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;^:&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>A\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[33mA\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>M\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[32mM\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>D\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[31mD\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span></pre></td></tr></table><p>I don&#8217;t want to see duplicate entries. The next is to delete the duplicate entries:</p><table><tr><td
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git whatchanged</span> <span style="color: #660033;">--since</span>=<span style="color: #ff0000;">&quot;1 week ago&quot;</span> <span style="color: #660033;">--format</span>=oneline <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;^:&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>A\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[33mA\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>M\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[32mM\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>D\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[31mD\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'!x[$0]++'</span></pre></td></tr></table><p>This method has one problem: The list could have two or even three entries of one file. One for modifiy, attach and delete. If you prefer to see only the latest action on this file, you can use <code>awk '!x[$2]++'</code> instead of the last awk command.</p><p>Now we only have to sort the list without being considerate to the action on the file:</p><table><tr><td
class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git whatchanged</span> <span style="color: #660033;">--since</span>=<span style="color: #ff0000;">&quot;1 week ago&quot;</span> <span style="color: #660033;">--format</span>=oneline <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">grep</span> <span style="color: #ff0000;">&quot;^:&quot;</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>A\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[33mA\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>M\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[32mM\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">''</span><span style="color: #000000; font-weight: bold;">/</span>.<span style="color: #000000; font-weight: bold;">*</span>D\\t<span style="color: #000000; font-weight: bold;">/</span>s<span style="color: #000000; font-weight: bold;">//`</span><span style="color: #7a0874; font-weight: bold;">printf</span> <span style="color: #ff0000;">&quot;\033[31mD\033[0m&quot;</span><span style="color: #000000; font-weight: bold;">`</span>\ <span style="color: #000000; font-weight: bold;">/</span><span style="color: #ff0000;">''</span> <span style="color: #000000; font-weight: bold;">|</span> \
<span style="color: #c20cb9; font-weight: bold;">awk</span> <span style="color: #ff0000;">'!x[$0]++'</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sort</span> <span style="color: #660033;">--key</span>=<span style="color: #000000;">2</span></pre></td></tr></table><p>The command executed on my parser branch:<br
/> <a
href="http://skweez.net/wp-content/uploads/2012/07/example1.png"><img
src="http://skweez.net/wp-content/uploads/2012/07/example1.png" title="An example"class="size-large wp-image-2034 aligncenter" /></a></p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/list-the-git-repository-changes-during-the-last-week/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Flist-the-git-repository-changes-during-the-last-week%2F&amp;language=en_GB&amp;category=text&amp;title=List+the+git+repository+changes+during+the+last+week&amp;description=Today+I+hacked+a+little+bit+on+a+modify+git+command.+I+read+the+blog+article+List+the+modified+files+on+your+repository+from+Filipe+Kiss+and+thought%2C+I+could...&amp;tags=awk%2Cgit%2Cplanet+gnome%2Cscript%2Csed%2Cterminal%2Cblog" type="text/html" /> </item> <item><title>Highlevel GUI Inconsistencies: Tabbing</title><link>http://skweez.net/highlevel-gui-inconsistencies-tabbing/</link> <comments>http://skweez.net/highlevel-gui-inconsistencies-tabbing/#comments</comments> <pubDate>Tue, 10 Jul 2012 21:59:50 +0000</pubDate> <dc:creator>T_UNIX</dc:creator> <category><![CDATA[Uncategorized]]></category> <guid
isPermaLink="false">http://skweez.net/?p=1970</guid> <description><![CDATA[Everybody knows tabs and tabbed applications like webbrowsers or OO Calc. The grouping of multiple instances/windows of a single application makes perfect sense and removes clutter from the user&#8217;s workspace. So what&#8217;s wrong with it? Its implementation! Basically tabs are nothing but window management + radio buttons. Somehow toolkit developers started to implement their own [...]]]></description> <content:encoded><![CDATA[<p>Everybody knows tabs and tabbed applications like webbrowsers or OO Calc.</p><p>The grouping of multiple instances/windows of a single application makes perfect sense and removes clutter from the user&#8217;s workspace.</p><p><a
href="http://skweez.net/wp-content/uploads/2012/07/firefox-tabbed-view.jpg"><img
src="http://skweez.net/wp-content/uploads/2012/07/firefox-tabbed-view.jpg" alt="Firefox Tabbing" title="Firefox Tabbed View" width="500" height="370" class="aligncenter size-full wp-image-1971" /></a></p><h2>So what&#8217;s wrong with it?</h2><p>Its implementation! Basically tabs are nothing but window management + radio buttons. Somehow toolkit developers started to <strong>implement their own</strong> tabbed view and handled the window management. Everybody who&#8217;s familiar with the X protocol (widely used under Linux/Unix) might have figured out already, what I&#8217;ll be complaining about.<br
/> <strong>X windows have properties</strong>. One of them is the window class. This window class property could allow a composite manager to provide a tab view. The tabview could provide a consistent look and feel accross toolkits and even expose tabs in a new (maybe even better) way. Seriously, all a window manager should be doing is handling windows/window groups. It&#8217;s not the job of a toolkit! Toolkits may proxy tabbing for platforms like Windows, but they shouldn&#8217;t implement their own!</p><h2>Why are things the way they are right now?</h2><p>I guess nobody can tell for sure. But I&#8217;d put my bet on a situation where developers said: &#8220;Let&#8217;s implement our own tabview, so <strong>we&#8217;re more awesome than the others</strong>.&#8221;. And maybe they thought: &#8220;Our usecase for tabs is <strong>waaaay different</strong> than those of other applications.&#8221;. Really? If I had to guess I&#8217;d say you&#8217;d need a text preview (maybe even a livethumb) connected to a &#8216;show window&#8217; like mechanism.</p><h2>Are only application/toolkit developers to blame?</h2><p>No, I think it&#8217;s mostly the fault of desktop environment/shell developers (I&#8217;m looking at you GNOME/KDE/Enlightenment/Cinnamon) who didn&#8217;t show off how <strong>nicely</strong> tabview/application could be done in a <strong>generic</strong> fashion yet a bit customizable for using apps.<br
/> I hope that will change and developers start to use infrastructure that is already there (e.g. PID+window class) instead of propagating inconsistency while making the world a &#8216;better&#8217; place.</p><p>Maybe I&#8217;ll even get around to implement some prototype &#8216;generic tabbing&#8217; for Enlightenment and it&#8217;ll gain traction and inspire developers of other desktop environments.</p><p>As an outlook of how I &#8211; personally &#8211; could imagine consistent tab experience, I&#8217;d like to refer to Clayton Miller&#8217;s concept, he presents at <a
title="10gui" href="http://10gui.com/" target="_blank">10gui</a>. It already takes the transition of modern input technologies from hard buttons to more touch-based into account.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/highlevel-gui-inconsistencies-tabbing/feed/</wfw:commentRss> <slash:comments>12</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fhighlevel-gui-inconsistencies-tabbing%2F&amp;language=de_DE&amp;category=text&amp;title=Highlevel+GUI+Inconsistencies%3A+Tabbing&amp;description=Everybody+knows+tabs+and+tabbed+applications+like+webbrowsers+or+OO+Calc.+The+grouping+of+multiple+instances%2Fwindows+of+a+single+application+makes+perfect+sense+and+removes+clutter+from+the+user%26%238217%3Bs+workspace....&amp;tags=blog" type="text/html" /> </item> <item><title>Status report: Step by step</title><link>http://skweez.net/status-report-step-by-step/</link> <comments>http://skweez.net/status-report-step-by-step/#comments</comments> <pubDate>Mon, 09 Jul 2012 07:52:15 +0000</pubDate> <dc:creator>ritze</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[anjuta]]></category> <category><![CDATA[gnome]]></category> <category><![CDATA[gsoc]]></category> <category><![CDATA[planet gnome]]></category> <guid
isPermaLink="false">http://skweez.net/?p=1964</guid> <description><![CDATA[The cache behaviour for each language plugin is still the same as before, because the procedure is partial very different. However where I could find similarities, I merged the code to the new parser-engine plugin. From time to time it&#8217;s a little bit troublesome. For example yesterday the editor didn&#8217;t show the proposals for the [...]]]></description> <content:encoded><![CDATA[<p>The cache behaviour for each language plugin is still the same as before, because the procedure is partial very different. However where I could find similarities, I merged the code to the new parser-engine plugin.</p><p>From time to time it&#8217;s a little bit troublesome. For example yesterday the editor didn&#8217;t show the proposals for the word, which I started to type. I searched about six hours to find a solution for the problem. Finally I read the source code of given methods, which I used in my code and couldn&#8217;t find any documentation. I found out what each method does exactly and could solve the problem.</p><p>I hope that I finish my work on merging the language plugins very soon and devote my time to the real work: the clang plugin.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/status-report-step-by-step/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fstatus-report-step-by-step%2F&amp;language=en_GB&amp;category=text&amp;title=Status+report%3A+Step+by+step&amp;description=The+cache+behaviour+for+each+language+plugin+is+still+the+same+as+before%2C+because+the+procedure+is+partial+very+different.+However+where+I+could+find+similarities%2C+I+merged+the+code...&amp;tags=anjuta%2Cgnome%2Cgsoc%2Cplanet+gnome%2Cblog" type="text/html" /> </item> <item><title>My ramblings about the Unity global menu pt. 2</title><link>http://skweez.net/my-ramblings-about-the-unity-global-menu-pt-2/</link> <comments>http://skweez.net/my-ramblings-about-the-unity-global-menu-pt-2/#comments</comments> <pubDate>Tue, 26 Jun 2012 16:29:00 +0000</pubDate> <dc:creator>mks</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[rant]]></category> <category><![CDATA[ubuntu]]></category> <category><![CDATA[unity]]></category> <guid
isPermaLink="false">http://skweez.net/?p=1956</guid> <description><![CDATA[Did you ever try to work with the Gimp with Ubuntu&#8217;s global menu activated? It doesn&#8217;t work! I try to open the menu and fail so literally everytime because it&#8217;s not there when the tool windows have the focus. However you will notice that when you already moved the mouse all the way up, because [...]]]></description> <content:encoded><![CDATA[<p>Did you ever try to work with the Gimp with Ubuntu&#8217;s global menu activated?</p><p>It doesn&#8217;t work! I try to open the menu and fail so <em>literally everytime</em> because it&#8217;s not there  when the tool windows have the focus. However you will notice that when you already moved the mouse all the way up, because the f**king thing is hidden as long as the mouse is not over it.</p><p>I seriously hate this thing! This is the work of morons who do not use the computer for actual work. I have no other explanation for that.</p><p>For everybody like me, who believes window menus should be in the window they belong to:<br
/> <code
lang=bash><br
/> sudo apt-get autoremove appmenu-gtk appmenu-gtk3 appmenu-qt<br
/> </code></p><p>From now on this is the first thing I have to do on every Ubuntu machine I use.</p><p>This message was brought to you by the minstry of rants.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/my-ramblings-about-the-unity-global-menu-pt-2/feed/</wfw:commentRss> <slash:comments>2</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fmy-ramblings-about-the-unity-global-menu-pt-2%2F&amp;language=de_DE&amp;category=text&amp;title=My+ramblings+about+the+Unity+global+menu+pt.+2&amp;description=Did+you+ever+try+to+work+with+the+Gimp+with+Ubuntu%26%238217%3Bs+global+menu+activated%3F+It+doesn%26%238217%3Bt+work%21+I+try+to+open+the+menu+and+fail+so+literally+everytime+because+it%26%238217%3Bs...&amp;tags=rant%2Cubuntu%2Cunity%2Cblog" type="text/html" /> </item> <item><title>Status report: Vala and Python</title><link>http://skweez.net/status-report-vala-and-python/</link> <comments>http://skweez.net/status-report-vala-and-python/#comments</comments> <pubDate>Tue, 26 Jun 2012 10:00:50 +0000</pubDate> <dc:creator>ritze</dc:creator> <category><![CDATA[English posts]]></category> <category><![CDATA[anjuta]]></category> <category><![CDATA[gnome]]></category> <category><![CDATA[gsoc]]></category> <category><![CDATA[planet gnome]]></category> <guid
isPermaLink="false">http://skweez.net/?p=1881</guid> <description><![CDATA[As part of merging code and unifying the behaviour of each language plugin I improved the Vala plugin. Calltips show method names and return types now instead of only the parameters of the function as it was before. Additionally the vala plugin has its own preferences widget now. Before it used the preferences of the [...]]]></description> <content:encoded><![CDATA[<p>As part of merging code and unifying the behaviour of each language plugin I <a
href="https://bugzilla.gnome.org/show_bug.cgi?id=678551" title="improved">improved</a> the Vala plugin. Calltips show method names and return types now instead of only the parameters of the function as it was before.</p> <a
href="http://skweez.net/wp-content/uploads/2012/06/python-preferences-before-and-after.png"><img
src="http://skweez.net/wp-content/uploads/2012/06/python-preferences-before-and-after-283x300.png" alt="" title="Python preferences: before and after" width="283" height="300" class="size-medium wp-image-1940" /></a><p
class="wp-caption-text">The Python preferences before and after</p><p>Additionally the vala plugin has its own preferences widget now. Before it used the preferences of the cpp-java plugin. As a consequence the Vala plugin no longer depends on the cpp-java plugin. While doing this work I learned, how I can integrate C interfaces in a plugin, which is written in Vala.</p><p>But the Vala plugin is not the only one which got an update. The Python plugin has the &#8220;Add &#8216;)&#8217; after function call autocompletion&#8221; option now. With this new option the Python plugin has the same functionality as the other language plugins and so I made the preference widget looking like the preferences widget of the other plugins.</p><p>Moreover I added the new <a
href="http://skweez.net/improve-completion-behaviour-for-cc-in-anjuta/" title="behaviour">behaviour</a> of C/C++ in Python and cleaned up the Python plugin a little bit for example of deleting unused variables.</p> ]]></content:encoded> <wfw:commentRss>http://skweez.net/status-report-vala-and-python/feed/</wfw:commentRss> <slash:comments>1</slash:comments> <atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=skweeznet&amp;popout=1&amp;url=http%3A%2F%2Fskweez.net%2Fstatus-report-vala-and-python%2F&amp;language=en_GB&amp;category=text&amp;title=Status+report%3A+Vala+and+Python&amp;description=As+part+of+merging+code+and+unifying+the+behaviour+of+each+language+plugin+I+improved+the+Vala+plugin.+Calltips+show+method+names+and+return+types+now+instead+of+only+the...&amp;tags=anjuta%2Cgnome%2Cgsoc%2Cplanet+gnome%2Cblog" type="text/html" /> </item> </channel> </rss>
<!-- Dynamic page generated in 2.262 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2013-05-18 05:11:10 -->

<!-- Compression = gzip -->