87 lines
2 KiB
Python
87 lines
2 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
# The path to a copy of Atom that's been installed globally, if one exists.
|
||
|
# This is overidden by RENPY_ATOM, if set. If either is given, that is used
|
||
|
# and no special handing of the .atom directory is performed.
|
||
|
ATOM = None
|
||
|
|
||
|
import sys
|
||
|
import os
|
||
|
import subprocess
|
||
|
import platform
|
||
|
import shutil
|
||
|
|
||
|
import renpy
|
||
|
|
||
|
|
||
|
class Editor(renpy.editor.Editor):
|
||
|
|
||
|
has_projects = True
|
||
|
|
||
|
def get_atom(self):
|
||
|
"""
|
||
|
Returns the path to the atom executable, if None. Also takes care
|
||
|
of setting up the .atom directory if it's not available.
|
||
|
"""
|
||
|
|
||
|
atom = os.environ.get("RENPY_ATOM", ATOM)
|
||
|
|
||
|
if atom is not None:
|
||
|
return atom
|
||
|
|
||
|
DIR = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
|
||
|
DIR = os.path.join(renpy.exports.fsdecode(DIR), "atom")
|
||
|
|
||
|
if renpy.windows:
|
||
|
atom = os.path.join(DIR, "atom-windows", "atom.exe")
|
||
|
elif renpy.macintosh:
|
||
|
atom = os.path.join(DIR, "Atom.app", "Contents", "Resources", "app", "atom.sh")
|
||
|
else:
|
||
|
atom = os.path.join(DIR, "atom-linux-" + platform.machine(), "atom")
|
||
|
|
||
|
default_dot_atom = os.path.join(DIR, "default-dot-atom")
|
||
|
dot_atom = os.path.join(DIR, ".atom")
|
||
|
|
||
|
if not os.path.exists(dot_atom) and os.path.exists(default_dot_atom):
|
||
|
shutil.copytree(default_dot_atom, dot_atom)
|
||
|
|
||
|
return atom
|
||
|
|
||
|
def begin(self, new_window=False, **kwargs):
|
||
|
self.args = [ ]
|
||
|
|
||
|
def open(self, filename, line=None, **kwargs):
|
||
|
|
||
|
if line:
|
||
|
filename = "{}:{}".format(filename, line)
|
||
|
|
||
|
self.args.append(filename)
|
||
|
|
||
|
def open_project(self, project):
|
||
|
self.args.append(project)
|
||
|
|
||
|
def end(self, **kwargs):
|
||
|
|
||
|
atom = self.get_atom()
|
||
|
|
||
|
self.args.reverse()
|
||
|
|
||
|
args = [ atom ] + self.args
|
||
|
args = [ renpy.exports.fsencode(i) for i in args ]
|
||
|
|
||
|
subprocess.Popen(args)
|
||
|
|
||
|
|
||
|
def main():
|
||
|
e = Editor()
|
||
|
e.begin()
|
||
|
|
||
|
for i in sys.argv[1:]:
|
||
|
e.open(i)
|
||
|
|
||
|
e.end()
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
main()
|