Abo
  • Services:
Anzeige
Githubs Atom bildet auch die Grundlage für Visual Studio Code.
Githubs Atom bildet auch die Grundlage für Visual Studio Code. (Bild: Kristian Kißling - Linux Magazin)

Hackbar bis zum Kern und Fazit

Ein weiteres Plus von Atom ist die Möglichkeit, die Software weitgehend zu modifizieren. Ein Package Generator erzeugt dafür ein Skeleton für ein Paket, das im Test klassischerweise hello-world heißen soll. Das Paket tut nichts weiter, als ein Fenster mit der "Hallo-Welt"-Nachricht anzuzeigen.

Über Strg+Shift+P wird dann die Befehlssuche gestartet, um Package Generator: Generate Package aufzurufen. Der dabei erzeugte Boilerplate-Code landet im Verzeichnis github/Projektname, wobei der Projektname im Beispiel hello-world lautet. Zugleich erscheint der erzeugte Baum von Verzeichnissen in der Ansicht links.

Anzeige
  • Atom besteht aus mehreren flexibel verschiebbaren Bereichen, den sogenannten Panes. (Bild: Kristian Kißling - Linux Magazin)
  • Das Hello-world-Paket holt ein unspektakuläres Fenster mit den entsprechenden Worten in den Editor.  (Bild: Kristian Kißling - Linux Magazin)
  • In der Tree-View links lässt sich die Struktur des automatisch erzeugten Pakets betrachten. Rechts zu sehen ist der Code, der sich um die Programmlogik kümmert.  (Bild: Kristian Kißling - Linux Magazin)
  • Die Datei package.json liegt im Wurzelverzeichnis eines Pakets und enthält Metadaten wie den Pfad zur ausführbaren Datei und die Versionsnummer.  (Bild: Kristian Kißling - Linux Magazin)
Das Hello-world-Paket holt ein unspektakuläres Fenster mit den entsprechenden Worten in den Editor. (Bild: Kristian Kißling - Linux Magazin)

Die darin sichtbare vorletzte Datei heißt package.json. Sie enthält verschiedene Meta-Informationen zum Paket, darunter den Namen, die Versionsnummer, das potenzielle Github-Repository, aber auch den Pfad zu den ausführbaren Dateien im Unterverzeichnis lib.

Dieses Unterverzeichnis enthält gleich zwei Dateien: hello-world.coffee und hello-world-view.coffee. Während Letztere die Elemente für die grafische Oberfläche arrangiert, enthält erstere den Code mit der Logik für das Paket. Die Methoden activate, deactivate, serialize und toggle sind per Folding gekürzt, die Struktur des Codes wird im Folgenden sichtbar.

lib/hello-world.coffee

  1. [...]
  2. activate: (state) ->
  3. @helloWorldView = new HelloWorldView (state.helloWorldViewState)
  4. @modalPanel = atom.workspace.addModalPanel(
  5. item: @helloWorldView.getElement(),
  6. visible: false)
  7.  
  8. # Atom-Events lassen sich über CompositeDisposable einfach aufräumen
  9. @subscriptions = new CompositeDisposable
  10.  
  11. # @toggle()-Methode mit 'hello-world:toggle' verknüpfen
  12. @subscriptions.add atom.commands.add
  13. 'atom-workspace', 'hello-world:toggle': => @toggle()
  14.  
  15. deactivate: ->
  16. @modalPanel.destroy()
  17. @subscriptions.dispose()
  18. @helloWorldView.destroy()
  19.  
  20. serialize: ->
  21. helloWorldViewState: @helloWorldView.serialize()
  22.  
  23. toggle: ->
  24. console.log 'HelloWorld was toggled!'
  25.  
  26. if @modalPanel.isVisible()
  27. @modalPanel.hide()
  28. else
  29. @modalPanel.show()

Die ersten drei der vier Methoden in hello-world.coffee gehören in der Regel fest zu einem Paket. Die activate()-Methode erzeugt ein modales UI-Element (ModalPanel) und pinnt es an Atoms Arbeitsfläche. Die subscriptions()-Methode ordnet den später definierten Menü-Eintrag der Methode @toggle() zu, die optional für ein Paket ist. Sie sorgt dafür, dass unter dem Menüpunkt Packages ein Eintrag für hello-world auftaucht. Wer in dessen Submenü auf Toggle klickt oder Alt+Strg+O drückt, sieht das entsprechende Fenster auftauchen oder verschwinden.

Die Details im Menü sind anpassbar, was das nachfolgende simple Schema zeigt. Es findet sich im Ordner menus in der Datei hello-world.cson und erzeugt einen Eintrag für das Kontextmenü und für das Atom-Menü.

menus/hello-world.cson

  1. 'context-menu':
  2. 'atom-text-editor': [
  3. {
  4. 'label': 'Toggle hello-world'
  5. 'command': 'hello-world:toggle'
  6. }
  7. ]
  8. 'menu': [
  9. {
  10. 'label': 'Packages'
  11. 'submenu': [
  12. 'label': 'hello-world'
  13. 'submenu': [
  14. {
  15. 'label': 'Toggle'
  16. 'command': 'hello-world:toggle'
  17. }
  18. ]
  19. ]
  20. }
  21. ]

Der nächste Codeblock erzeugt das Root-Element (@element) und ordnet diesem das Nachrichten-Element message als Child zu. Darunter legt der Code fest, wie das Element auf getElement()- und destroy()-Aufrufe reagiert.

lib/hello-world-view.coffee

  1. module.exports =
  2. class HelloWorldView
  3. constructor: (serializedState) ->
  4. # Root-Element erzeugen
  5. @element = document.createElement('div')
  6. @element.classList.add('hello-world')
  7.  
  8. # Nachrichten-Element erzeugen
  9. message = document.createElement('div')
  10. message.textContent = "Hallo Welt!"
  11. message.classList.add('message')
  12. @element.appendChild(message)
  13.  
  14. # Gibt ein Objekt zurück, wenn der Nutzer das Paket aktiviert
  15. serialize: ->
  16.  
  17. # Element entfernen
  18. destroy: ->
  19. @element.remove()
  20.  
  21. getElement: ->
  22. @element

Zusätzlich zu den gezeigten Optionen lässt sich noch der Stil in einer Less-Datei ändern (unter styles), ein Tastaturkürzel festlegen (keymaps) und Spezifikationen für Tests erstellen (spec). Mit den Specs lassen sich Funktionen gegen Regressionen testen, die Atom-Macher setzen dafür auf das hauseigene Javascript-Test-Framework Jasmine.

Fazit

Für eine Version 1.0 macht Atom bereits einen soliden Eindruck und ist tatsächlich einfach und tiefgehend konfigurierbar. Nutzern des Editors Sublime Text dürften viele Elemente bekannt vorkommen, offenbar haben sich die Entwickler kräftig bei der proprietären Python-Software bedient. Sicherlich versprechen sich die Macher dank der guten Github-Anbindung des Editors auch eine neue und dauerhafte Nutzerbasis für ihre Codeplattform.

Doch braucht auch Atom ein wenig Einarbeitungszeit. Defizite hat der Editor noch bei der Reaktionszeit des Use Interface und im Umgang mit großen Dateien. Auch die Installation zeigt sich etwas hakelig. Dafür hat Atom schon nach einem Jahr eine sehr aktive Community und wurde bereits 750.000-mal heruntergeladen. Die 803 Entwickler haben 1.861 Pakete ergänzt, offenbar trifft der Editor einen Bedarf.

Dieser Artikel erschien in der Ausgabe 07/15 des Linux Magazins, das seit September 2014 wie Golem.de zum Verlag Computec Media gehört. In dem Heft werden unter anderem verschiedene Verwendungsmöglichkeiten für LDAP beschrieben und die Insolvenzfestigkeit von Open Source Lizenzen in Deutschland geprüft.

 Einfach strukturierte Oberfläche mit Schwächen

eye home zur Startseite
nw42 08. Jul 2015

vor der version 1.0 schon aufgegeben? Man kann auch unrealistische Erwartungen haben...

nw42 08. Jul 2015

Texteditoren werden auch nur von Entwicklern eingesetzt... Ich muß ständig auf...

flow77 08. Jul 2015

Danke für die ausführliche Erklärung! Jetzt sind wir aber genau da angekommen wo ich...

sehr_interessant 08. Jul 2015

In vielen Kommentaren wird hier sehr offensichtlich für Int*** von Je*** geworben. Die...

d0p3fish 08. Jul 2015

Haha. Weiter,weiter,weiter, ja, weiter, ok, weiter,weiter akzeptieren, neustarten



Anzeige

Stellenmarkt
  1. über Ratbacher GmbH, München
  2. Bosch SoftTec GmbH, Hildesheim
  3. Robert Bosch GmbH, Reutlingen
  4. über Hays AG, Hamburg


Anzeige
Top-Angebote
  1. (-40%) 17,99€
  2. 15€ sparen mit Gutscheincode GTX15 (Bestpreis laut Preisvergleich)
  3. (u. a. 3x B12-PS 120mm für 49,90€, 3x B14-1 140mm für 63,90€ statt 71,70€)

Folgen Sie uns
       


  1. Künstliche Intelligenz

    Go Weltmeisterschaft mit Menschen und KI

  2. Redox OS

    Wer nicht rustet, rostet

  3. Star-Wars-Fanfilm

    Luke und Leia fliegen übers Wasser

  4. Sony

    Screen für Android Auto und Carplay kommt für 500 Euro

  5. Patent

    Samsung zeigt konkrete Idee für faltbares Smartphone

  6. Smarter Lautsprecher

    Google will Home intelligenter machen

  7. Samsung 960 Evo im Test

    Die NVMe-SSD mit dem besten Preis-Leistungs-Verhältnis

  8. Projekt Titan

    Apple will Anti-Kollisionssystem für Autos patentieren

  9. Visualisierungsprogramm

    Microsoft bringt Visio für iOS

  10. Auftragsfertiger

    TSMC investiert 16 Milliarden US-Dollar in neue Fab



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Super Mario Bros. (1985): Fahrt ab auf den Bruder!
Super Mario Bros. (1985)
Fahrt ab auf den Bruder!
  1. Quake (1996) Urknall für Mouselook, Mods und moderne 3D-Grafik
  2. NES Classic Mini im Vergleichstest Technischer K.o.-Sieg für die Original-Hardware

HPE: Was The Machine ist und was nicht
HPE
Was The Machine ist und was nicht
  1. IaaS und PaaS Suse bekommt Cloudtechnik von HPE und wird Lieblings-Linux
  2. Memory-Driven Computing HPE zeigt Prototyp von The Machine
  3. HPE Hikari Dieser Supercomputer wird von Solarenergie versorgt

Seoul-Incheon Ecobee ausprobiert: Eine sanfte Magnetbahnfahrt im Nirgendwo
Seoul-Incheon Ecobee ausprobiert
Eine sanfte Magnetbahnfahrt im Nirgendwo
  1. Transport Hyperloop One plant Trasse in Dubai

  1. Wenn wir schon beim Thema Fanfilmen sind: Mario...

    kabauterman | 12:25

  2. Re: Jetzt mal ohne zu lachen...das ist ein Klapphandy

    Endwickler | 12:23

  3. Re: Kein Kopfhöreranschluß? Unglaublich..

    Trollversteher | 12:22

  4. Wie funktionierts?

    FileLife | 12:22

  5. Re: oder direct den Pioneer SPH-DA120?

    RicoBrassers | 12:21


  1. 12:30

  2. 12:01

  3. 11:35

  4. 11:31

  5. 10:40

  6. 10:23

  7. 09:00

  8. 08:48


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel