Home

Awesome

Script

Build Status

Run code in Atom!

Run scripts based on file name, a selection of code, or by line number.

Currently supported grammars are:

GrammarFile BasedSelection BasedRequired PackageRequired in PATHNotes
Assembly (NASM)YesYeslanguage-x86-64-assemblynasm, binutils
1C (BSL)Yeslanguage-1c-bsloscript
AnsibleYeslanguage-ansibleansible-playbook
AutoHotKeyYesYeslanguage-autohotkeyAutoHotKey.exe
AppleScriptYesYeslanguage-applescriptosascript
Babel ES6 JSYesYeslanguage-babelnode
BashYesYesRuns if your SHELL or #! line is bash.
Bats (Bash Automated Test System)YesYeslanguage-batsbats
Windows Batch (cmd.exe)Yeslanguage-batch/file
BehatYesbehat-atombehat
BuckleScriptYesYesbs-platformbsc
CYesYesxcrun clang/ccAvailable only on macOS and Linux.
C#YesYescsc.exe
C# ScriptYesYesscriptcs
C++YesYesxcrun clang++/g++Available only on macOS and Linux. Run with -std=c++14.
ClojureYesYeslein execRequires Leiningen with the lein-exec plugin.
CoffeeScript (Literate)YesYescoffee
CrystalYesYeslanguage-crystal-actualcrystal
Cucumber (Gherkin)Yeslanguage-gherkincucumber
DYesYeslanguage-drdmd
DartYesYesdartlangdart
DOT (Graphviz)YesYeslanguage-dotdot
ElixirYesYeslanguage-elixirelixir
ErlangYeslanguage-erlangerlLimited selection based runs only (see #70).
F*Yesatom-fstarfstar
F#Yeslanguage-fsharpfsharpi/fsi.exe
FishYesYeslanguage-fish-shellfish
ForthYeslanguage-forthgforth
FortranYeslanguage-fortrangfortran
GnuplotYeslanguage-gnuplot-atomgnuplot
GoYesgo
GroovyYesYeslanguage-groovygroovy
Haskell (Literate)YesYeslanguage-haskellrunhaskell/ghc
HTMLYesOpens the current HTML file in your default browser.
HyYesYeslanguage-hyhy.exe
IcedCoffeeScriptYesYeslanguage-iced-coffee-scripticed
Inno SetupYeslanguage-innosetupISCC.exe
IdrisYeslanguage-idrisidris
ioYesYesatom-language-ioio
JavaYes*\jdk1.x.x_xx\binProject directory should be the source directory; subfolders imply packaging.
JavascriptYesYesnode
JavaScript for Automation (JXA)YesYeslanguage-javascript-jxaosascript -l JavaScriptAvailable on macOS only.
JolieYeslanguage-joliejolie
JuliaYesYeslanguage-juliajulia
KotlinYesYeslanguage-kotlinkotlinc
LAMMPSYeslanguage-lammpslammpsAvailable only on macOS and Linux.
LaTeXYeslanguage-latexlatexmk
LilyPondYesatlilypondlilypond
LispYesYeslanguage-lispsbclSelection based runs are limited to a single line.
LiveScriptYesYeslanguage-livescriptlsc
LuaYesYeslanguage-lua[-wow]lua
MakefileYesYes
MATLABYesYeslanguage-matlabmatlab
MIPSYeslanguage-mipsspim
MongoDBYesYeslanguage-mongodbmongo
MoonScriptYesYeslanguage-moonscriptmoon
NCLYesYeslanguage-nclnclScripts must end with an exit command for file based runs.
newLISPYesYeslanguage-newlispnewlisp
Nim[Script]Yeslanguage-nimnim
NSISYesYeslanguage-nsismakensis
Objective-C[++]Yesxcrun clang[++]Available on macOS only.
OCamlYeslanguage-ocamlocaml
OctaveYesYeslanguage-matlaboctave
OzYesYeslanguage-ozozc
Pandoc MarkdownYeslanguage-pfmpanzer
PascalYesYeslanguage-pascalfpc
PerlYesYes
PHPYesYes
PostgreSQLYesYeslanguage-pgsqlpsqlConnects as user PGUSER to database PGDATABASE. Both default to your operating system's USERNAME, but can be set in the process environment or in Atom's init file: process.env.PGUSER = {user name} and process.env.PGDATABASE = {database name}
POV-RayYesatom-language-povraypovengine/povray
PowerShellYesYeslanguage-powershellpowershell
ProcessingYesprocessing-languageprocessing-java
PrologYeslanguage-prologswiplScripts must contain a rule with the head main (e.g.main:- parent(X,lucas),writeln(X).). The script is executed with the goal main and exits after the first result is found. The output is produced by the writeln/1 predicates.
PureScriptYeslanguage-purescriptpulp
PythonYesYes
RYesYeslanguage-rRscript
RacketYesYeslanguage-racketracket
RakuYesYesraku
ReasonYesYeslanguage-reasonrebuild
Ren'PyYesNolanguage-renpyrenpyRuns your project at the root of the current file.
Robot FrameworkYesNolanguage-robot-frameworkrobotThe output location depends on the CWD behaviour which can be altered in settings.
RSpecYesYeslanguage-rspecrspec
RubyYesYes
Ruby on RailsYesYes
RustYeslanguage-rustrustc
SageYesYeslanguage-sagesage
Sass/SCSSYessass
ScalaYesYeslanguage-scalascala
SchemeYesYeslangauge-schemeguile
Shell ScriptYesYesSHELLRuns according to your default SHELL, or #! line.
Standard MLYeslanguage-smlsml
StataYesYeslanguage-statastata
SwiftYeslanguage-swiftswift
TclYesYeslanguage-tcltktclsh
TypeScriptYesYests-node
VBScriptYesYeslanguage-vbscriptcscript
ZshYesYesRuns if your SHELL or #! line is zsh.

NOTE: Some grammars may require you to install a custom language package.

You only have to add a few lines in a PR to support another.

Installation

apm install script

or

Search for script within package search in the Settings View.

Atom can't find node | ruby | python | my socks

Make sure to launch Atom from the console/terminal. This gives atom all your useful environment variables. Additionally, make sure to run it with the project path you need. For example, use

atom .

to get it to run with the current directory as the default place to run scripts from.

If you really wish to open atom from a launcher/icon, see this issue for a variety of workarounds that have been suggested.

Usage

Make sure to run atom from the command line to get full access to your environment variables. On macOS, running Atom from the icon will launch using launchctl's environment.

Script: Run will perform a "File Based" run when no text is selected (default).

Script: Run while text is selected will perform a "Selection Based" run executing just the highlighted code.

Script: Run by Line Number to run using the specified line number. Note that if you select an entire line this number could be off by one due to the way Atom detects numbers while text is selected.

Script: Run Options should be used to configure command options, program arguments, and environment variables overrides. Environment variables may be input into the options view in the form VARIABLE_NAME_ONE=value;VARIABLE_NAME_TWO="other value";VARIABLE_NAME_3='test'.

Also, in this dialog you can save options as a profile for future use. For example, you can add two profiles, one for python2.7 and another for python3 and run scripts with a specified profile, which will be more convinient than entering options every time you want to switch python versions.

Change Default Language by opening Atom Settings as follows: Atom→Preferences→Open Config Folder. Then, you can use the tree-view to navigate to and open packages→script→lib→grammar→python.js to make your edits. It is also possible to directly edit the code under .atom/packages/script/lib/grammars/python.js

Script: Run With Profile allows you to run scripts with saved profiles. Profiles can be added in Script: Run Options dialog.

Script: Kill Process will kill the process but leaves the pane open.

Script: Close View closes the pane and kills the process.

To kill everything, click the close icon in the upper right and just go back to coding.

Script: Copy Run Results copies everything written to the output pane to the clipboard, allowing you to paste it into the editor.

Command and shortcut reference

CommandmacOSLinux/WindowsNotes
Script: Run<kbd>cmd-i</kbd><kbd>shift-ctrl-b</kbd>If text is selected a "Selection Based" is used instead of a "File Based" run
Script: Run by Line Number<kbd>shift-cmd-j</kbd><kbd>shift-ctrl-j</kbd>If text is selected the line number will be the last
Script: Run Options<kbd>shift-cmd-i</kbd><kbd>shift-ctrl-alt-o</kbd>Runs the selection or whole file with the given options
Script: Run with profile<kbd>shift-cmd-k</kbd><kbd>shift-ctrl-alt-b</kbd>Runs the selection or whole file with the specified profile
Script: Close View<kbd>esc</kbd> or <kbd>ctrl-w</kbd><kbd>esc</kbd>Closes the script view window
Script: Kill Process<kbd>ctrl-c</kbd><kbd>ctrl-q</kbd>Kills the current script process

Replacements

The following parameters will be replaced in any entry in args (command and program arguments). They should all be enclosed in curly brackets {}

Parameters are compatible with atom-build package.

Development

This is an Open Open Source Project, which means:

Individuals making significant and valuable contributions are given commit-access to the project to contribute as they see fit.

As for coding and contributing, rely on the atom contributing guidelines. They're pretty solid.

Quick and dirty setup

apm develop script

This will clone the script repository to ~/github unless you set the ATOM_REPOS_HOME environment variable.

I already cloned it!

If you cloned it somewhere else, you'll want to use apm link --dev within the package directory, followed by apm install to get dependencies.

Workflow

After pulling upstream changes, make sure to run apm update.

To start hacking, make sure to run atom --dev from the package directory. Cut a branch while you're working then either submit a Pull Request when done or when you want some feedback!