def regex_exec(pattern, flags): try: matches = [] for i in range(1): editor1.research(pattern, lambda m: matches.append(m), flags) console.write('matches found:{}\n'.format(len(matches))) return True except: return False
def outBuffer(self, buffer): console.editor.beginUndoAction() out = [] mode = True for err, line in buffer: if err: console.writeError(line) else: console.write(line) console.editor.endUndoAction() console.editor.setReadOnly(0)
def regex(): global PREVIOUS_REGEX global NO_MATCH_FOUND global MATCH_POSITIONS global IS_ODD IS_ODD = False MATCH_POSITIONS[CURRENT_BUFFER_ID] = [] clear_indicator() pattern = '' if (editor2.getSelections() == 1) and (editor2.getSelectionEmpty() == False): start = editor2.lineFromPosition(editor2.getSelectionNStart(0)) end = editor2.lineFromPosition(editor2.getSelectionNEnd(0)) for i in range(start,end+1): pattern += editor2.getLine(i).rstrip('\r\n') else: pattern = current_regex() PREVIOUS_REGEX[CURRENT_BUFFER_ID] = pattern NO_MATCH_FOUND = True if (pattern != '' and pattern != '.' and pattern != '()' and not pattern.startswith(COMMENT_CHAR) and not pattern.isspace() and re.match('^\(\?[mis-]*\)$',pattern) is None and editor2.lineFromPosition(editor2.getCurrentPos()) > 0): regex_flag = get_regex_flags() if TIME_REGEX: if regex_exec(pattern,regex_flag): track_document() else: NO_MATCH_FOUND = None else: try: if USE_PYTHON_ENGINE: map(match_found, re.finditer(pattern, editor1.getText(), regex_flag)) else: editor1.research(pattern, match_found, regex_flag) track_document() except Exception as e: console.write('Exception:{}\n'.format(e)) NO_MATCH_FOUND = None else: NO_MATCH_FOUND = None
def run_command(command, __cwd): _startupinfo = subprocess.STARTUPINFO() _startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW process = subprocess.Popen(shlex.split(command), startupinfo=_startupinfo, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=__cwd) _stdout, _stderr = process.communicate() console.show() if _stdout: console.write(_stdout) if _stderr: console.write(_stderr)
def outBuffer(self, buffer): console.editor.beginUndoAction() out = [] mode = True collect = [] collectErr = None for err, line in buffer: collect.append(line) if collectErr is None: collectErr = err if collectErr != err: if collectErr: console.writeError(''.join(collect)) else: console.write(''.join(collect)) collectErr = err collect = [] if collectErr: console.writeError(''.join(collect)) else: console.write(''.join(collect)) console.editor.endUndoAction() console.editor.setReadOnly(0)
def match_found(m): _m = m.span() if IGNORE_0_LENGTH_MATCHES and (_m[0] == _m[1]): return global IS_ODD global MATCH_POSITIONS global NO_MATCH_FOUND _match_positions = [] if REPORT_MATCHES: console.show() editor.grabFocus() console.write('Match:{} = {}\n'.format(_m, editor1.getTextRange(*_m))) if m.lastindex > 0: editor1.setIndicatorCurrent(8) editor1.indicatorFillRange(m.span(0)[0], m.span(0)[1] - m.span(0)[0]) _match_positions.append(m.span()) for i in range(1, m.lastindex + 1): if (m.span(i)[0] != m.span(0)[0]) or (m.span(i)[1] != m.span(0)[1]): editor1.setIndicatorCurrent(9 if IS_ODD else 10) editor1.indicatorFillRange(m.span(i)[0], m.span(i)[1] - m.span(i)[0]) IS_ODD = not IS_ODD if REPORT_MATCHES: _textrange = editor1.getTextRange(*m.span(i)) if -1 not in m.span(i) else '' console.write(' SubMatch:{} = {}\n'.format(m.span(i), _textrange)) else: editor1.setIndicatorCurrent(9 if IS_ODD else 10) editor1.indicatorFillRange(_m[0], _m[1] - _m[0]) IS_ODD = not IS_ODD _match_positions.append(m.span()) MATCH_POSITIONS[CURRENT_BUFFER_ID].extend(_match_positions) NO_MATCH_FOUND = False
def stdout(self, s): console.editor.beginUndoAction() console.write(s) console.editor.endUndoAction() console.editor.setReadOnly(0)