43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
|
import sublime, sublime_plugin
|
||
|
import os.path
|
||
|
import platform
|
||
|
|
||
|
def compare_file_names(x, y):
|
||
|
if platform.system() == 'Windows' or platform.system() == 'Darwin':
|
||
|
return x.lower() == y.lower()
|
||
|
else:
|
||
|
return x == y
|
||
|
|
||
|
class SwitchFileCommand(sublime_plugin.WindowCommand):
|
||
|
def run(self, extensions=[]):
|
||
|
if not self.window.active_view():
|
||
|
return
|
||
|
|
||
|
fname = self.window.active_view().file_name()
|
||
|
if not fname:
|
||
|
return
|
||
|
|
||
|
path = os.path.dirname(fname)
|
||
|
base, ext = os.path.splitext(fname)
|
||
|
|
||
|
start = 0
|
||
|
count = len(extensions)
|
||
|
|
||
|
if ext != "":
|
||
|
ext = ext[1:]
|
||
|
|
||
|
for i in xrange(0, len(extensions)):
|
||
|
if compare_file_names(extensions[i], ext):
|
||
|
start = i + 1
|
||
|
count -= 1
|
||
|
break
|
||
|
|
||
|
for i in xrange(0, count):
|
||
|
idx = (start + i) % len(extensions)
|
||
|
|
||
|
new_path = base + '.' + extensions[idx]
|
||
|
|
||
|
if os.path.exists(new_path):
|
||
|
self.window.open_file(new_path)
|
||
|
break
|