Solarized — A Balanced Color Scheme for Text Editors

Col­ors schemes for text edi­tors is just like the favorite edi­tor itself a con­tro­ver­sial­ly dis­cussed and often very per­son­al mat­ter. Speak­ing about col­ors often the per­son­al taste is the main rea­son for a cus­tom col­or scheme or why a spe­cial scheme was cho­sen. How­ev­er the rela­tion between dif­fer­ent col­ors has been stud­ied by artists for a very long time. Col­or the­o­ry with things like the tri­ad, tetrad or com­ple­men­tary col­ors which was all relat­ed to the col­or cir­cle has been the foun­da­tion design­ers worked on a dai­ly basis.

Now these prin­ci­ples have been applied to col­or schemes in text edi­tors. The arrange­ment of col­ors is called Solar­ized and can be found on the pro­jec­t’s home­page. Besides the col­or scheme itself, which is avail­able for a wide range of edi­tors, start­ing from VIM, Emacs to Net­beans, Xcode, SubEthaEd­it or text­mate, the author Ethan Schoonover also explains the prin­ci­ples of why the col­ors were cho­sen that way. The scheme is avail­able in two vari­ants: one for a light back­ground and one for a black background.

What I like about this scheme is how the a good con­trast between fore­ground and back­ground is giv­en with­out over­do­ing it. You can cre­ate the largest con­trast by using a white text col­or on a black back­ground. This how­ev­er would tire your eyes very quick­ly, as the con­trast is too high. Solar­ized in the dark back­ground vari­ant is using a dark grey as a back­ground col­or and a very light grey as the text col­or. What I also like is that if syn­tax high­light­ing is acti­vat­ed com­ment blocks are shad­ed in a dark­er ver­sion of the text col­or to make your code more promi­nent which is great in heav­i­ly com­ment­ed files.

So if you are look­ing for a new col­or scheme for your favorite edi­tor or IDE, check out Solar­ized.

Erste Schritte mit Xcode 4

Ein grosser Schritt vorwärts

Am 09.03.2011 veröf­fentlichte Apple nach ein­er neun­monati­gen Beta Phase Xcode in der neusten Ver­sion 4.0. Xcode bein­hal­tet eine inte­grat­ed devel­op­ment envi­ron­ment, welch­es auf der Fron­tend­seite die Pro­jek­tver­wal­tungs- und Edi­tierumge­bung beste­ht und für die eigentliche Kom­pi­la­tion eine GCC Tool­chain in Ver­sion 4.2.1, sowie den neuen Apple LLVM Kom­pilier­er in Ver­sion 2.0 zur Ver­fü­gung stellt. Als weit­eres Fea­ture wurde eben­falls das clang Fron­tend für LLVM in den Edi­tor inte­gri­ert. Im Fol­gen­den werde ich kurz bericht­en, welche Aspek­te bei Xcode 4 pos­i­tiv auf­fall­en und an welchen noch Arbeit nötig ist.

Die neue GUI

Die auf­fäl­lig­ste Neuerung wird mit Sicher­heit das neue Fen­ster von Xcode sein. Auf den ersten Blick sieht es etwas so aus wie iTunes mit einem Texte­d­i­tor. So ver­fügt das Fen­ster über einen Play und Stop Knopf, sowie ein Dis­play in dem bei iTunes Titel­na­men und die Time­line dargestellt wür­den. In diesem Haupt­fen­ster find­et nun der Haupt­teil der Entwick­lungsar­beit statt. Es kön­nen mehrere Dateien gle­ichzeit­ig dargestellt wer­den, die Benutze­r­ober­fläche ent­wor­fen und in alten Ver­sio­nen der Datei gesucht wer­den. Dies bedeutet im Ver­gle­ich zu Xcode3 eine grosse Umstel­lung, da vorher mein Work­flow so war, daß ich mit einem con­densed Xcode pro­jek­t­fen­ster gear­beit­et habe, in dem ich jede Datei ein neues Fen­ster geöffnet hat­te. Natür­lich bekommt man so sehr schnell ein Fen­ster­chaos wo das Navigieren schw­er fall­en kön­nte. Vor allem hat mich gestört, dass es in Mac OS X keine native Möglichkeit gibt, Fen­ster an einan­der auszuricht­en. Abhil­fe schaffe da das sehr prak­tis­che Tool Opti­mal Lay­out. Dieses Pro­gramm nutzt die Bedi­enung­shil­fe Schnittstelle des Betrieb­ssys­tems, um mit der Tas­tatur Fen­ster ver­schieben und ver­grössern zu kön­nen. Darüber hin­aus ermöglich dieses Pro­gramm auch bis zu vier Fen­ster auszuwählen und die dann nach einem fest­gelegten Schema auf dem Bild­schirm anzuord­nen. In meinem Fall war das das head­er file links und die Imple­men­tierung rechts. So kon­nte ich mich sehr gut auf den Code konzentrieren.

Diese Jonglier­erei ist nun nicht mehr nötig. Xcode 4 stellt neben einem Stan­dard Modus, in dem die kom­plette Bre­ite des Fen­sters von einem Edi­tor­bere­ich gefüllt wird, auch einen Assis­tant Modus zur Ver­fü­gung, in dem das Haupt­fen­ster 2 oder mehr Untered­i­toren füllen kön­nen. Natür­lich ist die Möglichkeit Edi­tor­fen­ster zu split­ten und zwei Dateien gle­ichzeit­ig zu betra­cht­en nicht neu, Emacs und auch VIM kon­nten das schon seit ein­er gefühlten Ewigkeit. Was mir jedoch neu vorkam ist die Möglichkeit, im Hil­fsed­i­tor eine Datei anzeigen zu lassen, die in einem bes­timmten Ver­hält­nis zu der aus­gewählten Datei ste­ht. Das kann beispiel­sweise das head­er file zur gewählten Datei sein, aber auch beispiel­sweise die Eltern­klasse, was beson­ders dann nüt­zlich wird, wenn man eine neue Unterk­lasse imple­men­tieren möchte. Neben diesen Automa­tis­men kann man auch die Datei manuell auswählen.

Einen beson­deren Anwen­dungs­fall des Assis­tant Modus ist das Entwer­fen von graphis­chen Benutze­r­ober­flächen mit dem nun in Xcode inte­gri­erten Inter­face Builder. Man kann nun die XIB Datei öff­nen und daneben den Quell­text des zuständi­gen Con­trollers sehen. So kann man auch mit dieser neuen Ver­sion Out­lets erzeu­gen, indem man mit Recht­sklick von einem XIB Objekt direkt rüber in den Texte­d­i­tor zieht. Mit Sicher­heit ist dies eine grosse Verbesserung, da man vorher doch einige Zeit beschäftigt war, die graphis­chen Bedi­enele­mente und den Quell­text syn­chron zu hal­ten. Oft wur­den da beim Wech­sel der Pro­gramm ger­ade von Anfängern vergessen, Out­lets zu verbinden, was zu lustigem Nachricht­en­schick­en an nil führt, was zwar Objective‑C erlaubt, aber in diesem Falle recht zweck­los ist.

Das Beste ist unter der Haube

Was einem erst auf den zweit­en Blick und beim eigentlichen Ein­satz auf­fällt ist das sofor­tige Markieren von Fehlern während man den Code noch ein­gibt. So wird sofort markiert, wenn beispiel­sweise der Typ der Vari­ablen falsch ist oder wenn ein Tippfehler gemacht wurde. Bei offen­sichtlichen Fehlern schlägt Xcode4 sog­ar eine Lösung vor. Die Zeit­en, in denen man erst den Com­pil­er starten mußte, um rauszufind­en, daß man sich irgend­wo ver­tippt hat sind damit vor­bei. Die Tech­nik, die dahin­ter­steckt ist die mod­erne Com­pil­ertech­nik und der Clang sta­t­ic analyzer.

Neben den neuen Din­gen die dazugekom­men sind, sollte man auch mal erwäh­nen, was man nicht mehr mit Xcode4 machen kann: code für Pow­er­PC Prozes­soren com­pilieren, dafür fehlt die entsprechende GCC Tool­chain. Eben­falls wur­den auch die lega­cy optio­nen von Mac OS X 10.4 eingestellt. Es gibt anscheinend Möglichkeit­en, die fehlen­den Kom­po­nen­ten, beson­ders die PPC Unter­stützung aus einem alten Xcode3 dranzubasteln, ob das sich aber auf Dauer bewährt ist fraglich.

Apple macht in diesem release von Xcode4 auch einen klaren Schritt weg von GCC hin zu LLVM und damit auch weg von GDB hin zu LLDB. Das Pro­gramm ist schneller erzeugt, der Code läuft schneller und ist auch deut­lich kleiner.

Das Fazit

Xcode4 ist ein gross­er Schritt in die richtige Rich­tung. Über jeden Zweifel erhaben ist die neue Tool­chain, die mit LLVM und LLDB neueste Com­pil­ertech­nik ein­set­zen. Der schon von vorheri­gen Xcode Ver­sio­nen bekan­nte Clang sta­t­ic ana­lyz­er ist noch mal eine ganze Ecke bess­er gewor­den und der Edi­tor zeigt seine gefun­de­nen Fehler und War­nun­gen direkt an.

Über die Benutze­r­ober­fläche ist erst mal zu sagen, daß es ein­er­seits gut ist, daß es endlich mit dem Fen­ster­ver­hau vor­bei ist, jedoch wird dies durch ein riesiges mono­lithis­ches Fen­ster erkauft. Wer gerne mehrere Pro­gramme mit ihren Fen­stern kun­stvoll auf dem Bild­schirm anord­net, kann durch dieses neue Design gezwun­gen wer­den, seinen Arbeitsablauf umzustellen.

Gut gelun­gen ist die Inte­gra­tion von Inter­face Builder direkt in Xcode. Beson­ders das Erstellen von neuen Out­lets geht sehr schnell von der Hand und dort spielt auch der neue dop­pelte Assis­tant Edi­tor seine Vorzüge aus: Links die graphis­che Benutze­r­ober­fläche und rechts daneben ihr zuge­höriger Con­troller­code, so hat man alles direkt im Blick

Xcode4 hat noch seine Schwächen was die Sta­bil­ität ange­ht, aber das wird nur eine Frage der Zeit sein, bis Apple diese behoben hat. Mir gefällt es sehr gut, allerd­ings ist die Umstel­lung ger­ade was das Build Sys­tem und die Pro­jek­te­in­stel­lun­gen ange­ht nicht triv­ial. Nach­dem diese Hür­den über­wun­den sind ist pro­gram­mieren mit Xcode4 deut­lich effizien­ter als bei seinen Vorgängern. Inwiefern sich dies in besser­er Code- und damit let­z­ten­den­des auch Pro­gram­mqual­ität wider­spiegelt wird die Zukun­ft zeigen.