For this reason, we didn't build Atom as a traditional web application. Instead, Atom is a specialized variant of Chromium designed to be a text editor rather than a web browser. Every Atom window is essentially a locally-rendered web page.
Looks like they've open-sourced a lot of the libraries (80+) but not the whole thing.
One of my editor use-cases is dealing with multi-megabyte UTF-8 polytonic Greek in syntax-highlighted formats. I've filed bugs with other editors in the past where they've performed poorly with these files.
Will be interesting to see how Atom goes.
Atom is free during the beta period.
...suggests it won't be after.
cmd-shift-P
to get the command palette. Sounds familiar.
Unsurprisingly, one of the first things I noticed opening up an existing project was the integrated Git support.
I guess this answers my earlier question about multi-megabyte files:
Uncaught Error: Atom can only handle files < 1MB, for now.
A lot to like if you're coming from ST*, notably:
I would like to be able to hide *.pyc files from the tree though. Might dig into the tree view if I can find it.
Atom makes use of CSON which seems to be to JSON what CoffeeScript is to JSON.
Disturbingly, reading it seems to involve an eval:
result = coffee.eval(src, opts)
(see https://github.com/bevry/cson/issues/32 for details)
The extreme modularity of Atom reminds me a little of Eclipse. In fact, I wonder if it could be said that Atom is to the modern world of CoffeeScript, Node, etc what Eclipse is to the world of Java.
$ atom /path/to/project
works out of the box. nice polish.
To give some perspective on my thoughts about Atom here is my text editor background:
I've occasionally used vim, specifically on servers, and did attempt to use it full-time a few times, but was never successful.
I am a web developer so a text editor built on the same technology I build with everyday excites me.
I am waiting on pins and needles for my invite!
I love having the ability to configure Atom with a configuration file. It is in a format called CSON. Looks like JSON, but more towards YAML.
I am not a huge fan of the default theme, but can get used to it. I might try looking for alternatives.
Ran apm
from command line and it resulted in:
env: node: No such file or directory
After installing node.js from Homebrew everything worked.
Discovered that there are two themes. A UI theme and a syntax theme. The UI theme controls everything except the editor. The syntax theme controls the editor.
Looks like the Atom Light UI theme works nicely with the Atom Dark syntax theme.
The Base16 Tomorrow Dark theme is the promising for me personally.
I figured out how to get split panes last night:
command+shift+P
to get the command palette and then type split and you'll have options for various splits.
This will split the current file to view it at the same time in multiple views, which can be useful in it's own right but I generally prefer to have multiple related files open at the same time so I just use this to get a new pane open and then while a file is selected, any file you click on your project nav will open that file in that pane.
It would be nice to have the panes setup before opening files.
I wonder how hard it would be to write a package for flake8
.
So it seems that I'll need to reverse engineer some other packages to figure out how to write a plugin.
There is both the reverse engineering CoffeeScript, and writing a Node.js package that executes a Python script that will prove challenging.
I think using the key will be figuring out how best to interop with Python (or any binary that can execute on your machine). Need to find an example of this to reduce experimentation.
Does Atom Editor have an equivalent of option-click-drag?
cmd-shift-w
is the first big workflow change I need to make.
I am used to cmd-w
closing the current tab and when no tabs remain it closes the window.
Due to the distinction Atom makes between a window and buffer (within a tab) the close action was promoted to its own key mapping.
I like the distinction and can certainly get used to it, but will require changing that muscle memory.
Protip: export EDITOR="atom -nw"
For anyone questioning Atom being an odd tangent for GitHub, here's how I see it:
Chrome:Google::Atom:GitHub
cmd-D
is handy for additively selecting multiple occurrences of a string for simultaneous editing of them.
For anyone questioning Atom being an odd tangent for GitHub, here's how I see it:
Chrome:Google::Atom:GitHub
Is there a way to update all packages with newer versions?
[edit] found: http://discuss.atom.io/t/command-to-update-all-installed-packages/1408
[edit] see: https://thoughtstreams.io/brosner/atom-editor/#card-3826
Did a bit of tweaking today. I am getting very comfortable with Atom.
I noticed that in the last couple versions of Atom, packages no longer showed if there was an update in the settings view.
It appears it has moved to apm upgrade
or I missed it earlier. This works much better as you can upgrade all packages at once.
My current themes are:
spacegray-dark-ui
twilight-syntax-spacegray-ui
cmd-r
has become my new best friend.
Made a start on a flake8
package last night. As soon as I have a prototype working I'll publish to Github so others can see/help.
Really want to contribute a thought on Atom, if I only had an invite :)
It still a bit early for atom-flake8. It is crashing my editor and reports from others that it's not working too well when it doesn't crash. But good to see there is a start on it. Perhaps I'll fork it and help.
As of 0.71.0 the tree view can be shown on the right side. Win.
Here are a few packages I have found very useful recently:
There have been a few cases when I run apm upgrade
and the latest plugin versions are not compatible with Atom. The version required hasn't been released by Github causing a broken editor temporarily.
I've been frustrated with the lack of per-window environment variables. It renders my Go workflow nearly impossible.
In my most recent attempt to fix it, I discovered the init.coffee
hook. This runs after each window is loaded. Perfect!
Take a look at my first stab at CoffeeScript to solve my problem:
This reads a file in the project directory and sets the environment. I added a quick hack for resolving relative paths inside the project.
Works like a charm!