While I'm a big fan of Emacs as a general purpose text editor, there are a few things it just doesn't handle very well. Among its major weaknesses is that it largely lacks graphical interface APIs, a holdover from its origins as a terminal editor where text was the only medium. There are features for viewing images and PDFs in Emacs, but not for drawing them; and the APIs these features depend on are built in at the native level and are not accessible via Emacs Lisp. This means that if you want to show something to the user, you need to do it as text.
Fortunately, getting an Elm view set up in Atom is really not particularly difficult: you just need to bind to an HTML element in Atom like you would any other web page, and you're off to the races.
var Elm = require('../build/my-elm-app.js'); var app = Elm.MyApp.embed(this.myView.getElement()); this.setupPorts(app.ports);