功能说明
在sublime使用四分布局的时候可以自动扩大选中的窗口
效果
代码实现
import sublime, sublime_plugin
import os.path
# global last_focus_group
last_focus_group = -1
is_auto_scale_view = True
class AutoScaleViewCommand(sublime_plugin.EventListener):
def on_activated(self, view):
global is_auto_scale_view
#print(is_auto_scale_view)
if not is_auto_scale_view:
return
# global last_focus_group
win = sublime.active_window()
curActiveGroup = win.active_group()
# if (len(win.views_in_group(curActiveGroup)) <= 0 or last_focus_group != curActiveGroup) and last_focus_group != -1:
if len(win.views_in_group(curActiveGroup)) <= 0:
# last_focus_group = curActiveGroup
return
last_focus_group = curActiveGroup
layouts = win.get_layout()
# print(layouts,"len:",len(layouts['cells']))
if len(layouts['cells']) == 2 and len(layouts['rows']) == 3:
needBigScale = 0.35
if curActiveGroup == 0 :
layouts['rows'][1] = 0.5 + needBigScale
else:
layouts['rows'][1] = 0.5 - needBigScale
win.set_layout(layouts)
elif len(layouts['cells']) == 4 and len(layouts['rows']) == 3:
needBigScaleR = 0.35
needBigScaleC = 0.25
if curActiveGroup == 0 :
layouts['rows'][1] = 0.5 + needBigScaleR
layouts['cols'][1] = 0.5 + needBigScaleC
elif curActiveGroup == 1 :
layouts['rows'][1] = 0.5 + needBigScaleR
layouts['cols'][1] = 0.5 - needBigScaleC
elif curActiveGroup == 2 :
layouts['rows'][1] = 0.5 - needBigScaleR
layouts['cols'][1] = 0.5 + needBigScaleC
elif curActiveGroup == 3 :
layouts['rows'][1] = 0.5 - needBigScaleR
layouts['cols'][1] = 0.5 - needBigScaleC
win.set_layout(layouts)
elif len(layouts['cells']) == 2 and len(layouts['rows']) == 2:
needBigScaleR = 0.5
needBigScaleC = 0.25
if curActiveGroup == 0 :
layouts['cols'][1] = 0.5 + needBigScaleC
layouts['rows'][1] = 0.5 + needBigScaleR
elif curActiveGroup == 1 :
layouts['cols'][1] = 0.5 - needBigScaleC
layouts['rows'][1] = 0.5 + needBigScaleR
win.set_layout(layouts)
class TriggerAutoScaleViewCommand(sublime_plugin.TextCommand):
def run(self, edit):
global is_auto_scale_view
is_auto_scale_view = not is_auto_scale_view
吐槽
开发的时候经常要打开多个模块的文件,强迫症患者不喜欢不同模块的文件在一个窗口打开,所以就有了这段代码。十分方便,感觉生活都快乐了许多。