def alignAssetKey(self, view, assets): ext = view.viewport_extent() if self.needLongPanel: viewportRate = (ext[0] + self.getLineNumerExt(view) ) / self.vOpts("screen_param") panelWidth = int(viewportRate * self.vOpts("panel_param")) else: panelWidth = self.vOpts("panel_width") assetKeys = [] for asset in assets: infoCount = len(asset.keyInfo) if asset.keyInfo else 0 if infoCount == 0: assetKeys.append(asset.key) elif infoCount == 1: lkey, rkey = asset.key, asset.keyInfo[0] assetKeys.append(Str.alignmentBothSide(lkey, rkey, panelWidth)) elif infoCount == 2: lkey, rkey, tip = asset.key, asset.keyInfo[0], asset.keyInfo[1] keyArr = [Str.alignmentBothSide(lkey, rkey, panelWidth)] tipArr = tip.split("\n") for idx in range(len(tipArr), 3): tipArr.append("") keyArr.extend(tipArr[:3]) assetKeys.append(keyArr) else: raise Exp.WrongCallError( "key item count: {} is not support!".format(len(keyArr))) return assetKeys
def alignAssetKey(self, view, assets): ext = view.viewport_extent() if self.needLongPanel: viewportRate = (ext[0]+self.getLineNumerExt(view))/self.vOpts("screen_param") panelWidth = int(viewportRate * self.vOpts("panel_param")) else: panelWidth = self.vOpts("panel_width") assetKeys = [] for asset in assets: infoCount = len(asset.keyInfo) if asset.keyInfo else 0 if infoCount == 0: assetKeys.append(asset.key) elif infoCount == 1: lkey, rkey = asset.key, asset.keyInfo[0] assetKeys.append(Str.alignmentBothSide(lkey, rkey, panelWidth)) elif infoCount == 2: lkey, rkey, tip = asset.key, asset.keyInfo[0], asset.keyInfo[1] keyArr = [Str.alignmentBothSide(lkey, rkey, panelWidth)] tipArr = tip.split("\n") for idx in range(len(tipArr), 3): tipArr.append("") keyArr.extend(tipArr[:3]) assetKeys.append(keyArr) else: raise Exp.WrongCallError("key item count: {} is not support!".format(len(keyArr))) return assetKeys
def run(self, qAndaDict=None, **kwds): content = kwds.get("content") ignore_target = kwds.get("ignore_target", []) self.transfKey = "key" not in ignore_target self.transfVal = "val" not in ignore_target self.ignoreKeys = kwds.get("ignore_keys", []) self.need_expand_variables = kwds.get("need_expand_variables", True) belong_to_project = kwds.get("belong_to_project", False) record_mode = kwds.get("record_mode", "record") self.qAndaDict = qAndaDict key = content["key"] if self.qAndaDict is not None: key = Str.renderText(key, **self.qAndaDict) key = key.lower() if record_mode == "erase": self.vEraseContent(key, belong_to_project) return elif record_mode == "toggle": self.vEraseContent(key, belong_to_project) elif record_mode == "record": pass else: sublime.error_message( "record_mode: {} is not allowed".format(record_mode)) self.vPreTransContent(key, content) content = Data.transfJsonObj(content, self.needTransf, self.transf) self.vPostTransContent(content) self.vRecordContent(key, content, belong_to_project)
def run(self, qAndaDict=None, **kwds): _async = kwds.pop("async", True) commands = kwds.pop("commands") run_mode = kwds.pop("run_mode", "capture_both") win_mode = kwds.pop("win_mode", "hide") run_opts = kwds.pop("run_opts", {}) dyn_report_mul = kwds.pop("dyn_report_mul", True) if qAndaDict: commands = [Str.renderText(cmd, **qAndaDict) for cmd in commands] commands = Setting.expandVariables(self.window, *commands) cwd, = Setting.expandVariables(self.window, run_opts.get("cwd", "${file_path}")) if cwd: run_opts["cwd"] = cwd workParams = dict(commands=commands, run_mode=run_mode, win_mode=win_mode, run_opts=run_opts, dyn_report_mul=dyn_report_mul ) print(workParams) if _async: view = self.window.active_view() self.asncCmdCount += 1 if run_mode != "run": view.set_status(ASYNC_STATUS_KEY, "***asnc command running***") self.doWorkAsnc(view, workParams, **kwds) else: self.doWork(**Data.mergeDicts(kwds, workParams))
def transf(self, obj, _): if self.qAndaDict is not None: obj = Str.renderText(obj, **self.qAndaDict) if self.need_expand_variables: obj, = Setting.expandVariables(self.window, obj) return obj
def run(self, qAndaDict=None, **kwds): _async = kwds.pop("async", True) self.code = kwds.pop("code") if qAndaDict: self.code = Str.renderText(self.code, **qAndaDict) if _async: view = self.window.active_view() self.asncCmdCount += 1 view.set_status(ASYNC_STATUS_KEY, "***asnc code running***") self.doWorkAsnc(view, **kwds) else: self.doWork(**kwds)
from MUtils import Os, Str from . import WView, Selection _extendVariableKeys = { "m_sel_row": lambda vw: str(Selection.getRowCols(vw)[0][0]), "m_sel_col": lambda vw: str(Selection.getRowCols(vw)[0][1]), "m_sel_text": lambda vw: Selection.getSelTexts(vw)[0], "m_sel_lefttext": lambda vw: Selection.getLeftTexts(vw)[0], "m_sel_righttext": lambda vw: Selection.getRightTexts(vw)[0], "m_sel_line": lambda vw: Selection.getLines(vw)[0], } _extendVariableCmds = { "!lower": lambda v: v.lower(), "!upper": lambda v: v.upper(), "!unixpath": lambda v: v.replace("\\", "/"), "!020": lambda v: Str.padWithChar(v, "0", 20), } @WView.fwPrepareWindow def expandVariables(window, *strs, forSublime=True, forEnv=True): view = window.active_view() sublimeVariables = window.extract_variables() extendVariables = {k: kFn(view) for k, kFn in _extendVariableKeys.items()} for cmd, cmdFn in _extendVariableCmds.items(): extendVariables.update( {k + cmd: cmdFn(v) for k, v in sublimeVariables.items()})
from MUtils import Os, Str from . import WView, Selection _extendVariableKeys = { "m_sel_row": lambda vw: str(Selection.getRowCols(vw)[0][0]), "m_sel_col": lambda vw: str(Selection.getRowCols(vw)[0][1]), "m_sel_text": lambda vw: Selection.getSelTexts(vw)[0], "m_sel_lefttext": lambda vw: Selection.getLeftTexts(vw)[0], "m_sel_righttext": lambda vw: Selection.getRightTexts(vw)[0], "m_sel_line": lambda vw: Selection.getLines(vw)[0], } _extendVariableCmds = { "!lower": lambda v: v.lower(), "!upper": lambda v: v.upper(), "!unixpath": lambda v: v.replace("\\", "/"), "!020": lambda v: Str.padWithChar(v, "0", 20), } @WView.fwPrepareWindow def expandVariables(window, *strs, forSublime=True, forEnv=True): view = window.active_view() sublimeVariables = window.extract_variables() extendVariables = {k: kFn(view) for k, kFn in _extendVariableKeys.items()} for cmd, cmdFn in _extendVariableCmds.items(): extendVariables.update({ k+cmd: cmdFn(v) for k, v in sublimeVariables.items() }) sublimeVariables.update(extendVariables)