Tuesday, May 20, 2014

Is Atom extensible enough to compete with emacs?



Github: https://github.com/callahanrts/slack-chat
Atom Package: https://atom.io/packages/slack-chat

I recently set out to create my first package for Atom. I started by looking through their documentation on how to create packages and was surprised how easy Atom was to work with. I also took a look at the api (https://atom.io/docs/api/v0.96.0/api/) to see what other models existed and what could be done with them.

We've been using Slack as our in house messaging client for a while now and I've wanted to be able to send code snippets and messages to my colleagues from Atom. Since there was no slack package for Atom, it seemed like a prime opportunity to create one. I started by mimicking the tree-view package created by the atom team (https://github.com/atom/tree-view) where you can see the coffeescript source of the package.

It was relatively easy to follow the code and create my own Slack tree-view where the channels and members of my slack account are the items in the list. Selecting a user or channel opens the chat history as well as an input for sending messages. Creating commands for users to call from their keymaps and the command palette was also very easy. There are currently default keymaps for toggling the side view, navigating up and down through the members and channels, and opening and closing conversations.  It's still fairly undeveloped, but the main functionality of sending and viewing messages is working.

The thought of complex add-ons reminds me of the spirit of my emacs-using friends. They will do anything to use terminal, return emails, listen to music, and manage a shuttle on a voyage to mars from their text editors. So it begs the question, is Atom extensible enough to compete with emacs? And, will Atom be the emacs of the future?

No comments:

Post a Comment