Вызов window.get_layout()
возвращает объект, подобный этому:
{
"cells": [[0,0,1,1],[1,0,2,2]],
"cols": [0.0, 0.5, 1],
"rows", [0.0, 1.0]
}
Атрибут cells
содержит список списков, где каждый внутренний список является координатой этой ячейки.
cols
содержит относительную позицию Y от (0 - 1) каждого места, чтобы разделить экран по вертикали на
rows
аналогично cols
, но вместо горизонтальных разрывов
Для краткости приведу ссылку на документы для получения дополнительной информации.
Итак, теперь мы хотим вставить дополнительный ряд в середине последнего ряда и 1 (внизу экрана):
terminalPos = round(1 - ((1 - layout["rows"][-2]) / 2), 1)
Мы также хотим указать его координаты:
terminalCoords = [0, len(layout["rows"]) - 1 , len(layout["cols"]) - 1, len(layout["rows"])]
Тогда вы можете поместить их в правильное положение объекта, и Presto! Вы сделали!
Вот полный код:
import sublime
import sublime_plugin
import subprocess
class CreateTerminalCommand(sublime_plugin.WindowCommand):
def run(self):
layout = self.window.get_layout()
terminalPos = round(1 - ((1 - layout["rows"][-2]) / 2), 1)
terminalCoords = [0, len(layout["rows"]) - 1 , len(layout["cols"]) - 1, len(layout["rows"])]
newLayout = layout
newLayout["rows"].insert(-1, terminalPos)
newLayout["cells"].append(terminalCoords)
self.window.run_command("set_layout", newLayout)