def run(self, edit, forward=None): assert forward in (True, False), 'forward must be set to True or False' count = self.view.settings().get('dired_project_count', 0) files = Region(self.view.text_point(3, 0), self.view.text_point(count + 3 - 1, 0)) if files.empty(): return pt = self.view.sel()[0].a if files.contains(pt): # Try moving by one line. line = self.view.line(pt) pt = forward and (line.b + 1) or (line.a - 1) if not files.contains(pt): # Not (or no longer) in the list of files, so move to the closest edge. pt = (pt > files.b) and files.b or files.a # print(pt) line = self.view.line(pt) self.view.sel().clear() self.view.sel().add(Region(line.a, line.a))
def toggle_word(self, view, region, words_dict, cursorPos=-1): editor_word = self.view.substr(region) toggle_groups = words_dict for toggle_group in toggle_groups: toggle_group_word_count = len(toggle_group) toggle_group.sort(key=len, reverse=True) for cur_word in range(0, toggle_group_word_count): next_word = (cur_word + 1) % toggle_group_word_count if cursorPos != -1: #selected == false lineRegion = self.view.line(region) line = self.view.substr(lineRegion) lineBegin = lineRegion.a for line_finding in re.finditer(re.escape( toggle_group[cur_word]), line, flags=re.IGNORECASE): lf_a = line_finding.span()[0] lf_b = line_finding.span()[1] finding_region = Region(lineBegin + lf_a, lineBegin + lf_b) if finding_region.contains(cursorPos): # sublime.status_message("{0}: hurray, one of line_findings, namely '{5}' at '{1}', contains cursor at '{2}'. Line begins at '{3}'".format(PLUGIN_NAME, finding_region, cursorPos, lineBegin,line_finding.span(),toggle_group[cur_word])) editor_word = self.view.substr(finding_region) region = finding_region if editor_word == toggle_group[cur_word]: self.view.replace(view, region, toggle_group[next_word]) # sublime.status_message("{0}, code 1: word under cursor '{1}' is equal to toggle '{2}', changed to next toggle '{3}'".format(PLUGIN_NAME, editor_word, toggle_group[cur_word], toggle_group[next_word])) return if editor_word == toggle_group[cur_word].lower(): self.view.replace(view, region, toggle_group[next_word].lower()) # sublime.status_message("{0}, code 2: word under cursor '{1}' is almost equal to lowercase toggle '{2}', changed to next toggle '{3}' (lowercased)".format(PLUGIN_NAME, editor_word, toggle_group[cur_word], toggle_group[next_word])) return if editor_word == toggle_group[cur_word].capitalize(): self.view.replace(view, region, toggle_group[next_word].capitalize()) # sublime.status_message("{0}, code 3: word under cursor '{1}' is almost equal to capitalized toggle '{2}', changed to next toggle '{3}' (capitalized)".format(PLUGIN_NAME, editor_word, toggle_group[cur_word], toggle_group[next_word])) return if editor_word == toggle_group[cur_word].upper(): self.view.replace(view, region, toggle_group[next_word].upper()) # sublime.status_message("{0}, code 4: word under cursor '{1}' is almost equal to uppercase toggle '{2}', changed to next toggle '{3}' (uppercased)".format(PLUGIN_NAME, editor_word, toggle_group[cur_word], toggle_group[next_word])) return # Word not found? Show message sublime.status_message("{0}: Can't find toggles for '{1}'".format( PLUGIN_NAME, editor_word))
def run(self, edit, forward=None): assert forward in (True, False), 'forward must be set to True or False' count = self.view.settings().get('dired_project_count', 0) files = Region(self.view.text_point(3, 0), self.view.text_point(count+3-1, 0)) if files.empty(): return pt = self.view.sel()[0].a if files.contains(pt): # Try moving by one line. line = self.view.line(pt) pt = forward and (line.b + 1) or (line.a - 1) if not files.contains(pt): # Not (or no longer) in the list of files, so move to the closest edge. pt = (pt > files.b) and files.b or files.a # print(pt) line = self.view.line(pt) self.view.sel().clear() self.view.sel().add(Region(line.a, line.a))
def toggle_word(self, view, region, words_dict, cursorPos=-1): editor_word = self.view.substr(region) toggle_groups = words_dict for toggle_group in toggle_groups: toggle_group_word_count = len(toggle_group) toggle_group.sort(key=len, reverse=True) for cur_word in range(0,toggle_group_word_count): next_word = (cur_word+1) % toggle_group_word_count if cursorPos != -1: #selected == false lineRegion = self.view.line(region) line = self.view.substr(lineRegion) lineBegin = lineRegion.a for line_finding in re.finditer(re.escape(toggle_group[cur_word]), line, flags=re.IGNORECASE): lf_a = line_finding.span()[0] lf_b = line_finding.span()[1] finding_region = Region(lineBegin + lf_a, lineBegin + lf_b) if finding_region.contains(cursorPos): editor_word = self.view.substr(finding_region) region = finding_region if editor_word == toggle_group[cur_word]: self.view.replace(view, region, toggle_group[next_word]) return if editor_word == toggle_group[cur_word].lower(): self.view.replace(view, region, toggle_group[next_word].lower()) return if editor_word == toggle_group[cur_word].capitalize(): self.view.replace(view, region, toggle_group[next_word].capitalize()) return if editor_word == toggle_group[cur_word].upper(): self.view.replace(view, region, toggle_group[next_word].upper()) return # Word not found? Show message sublime.status_message( "{0}: Can't find toggles for '{1}'".format(PLUGIN_NAME, editor_word) )
def toggle_word(self, view, region, words_dict, cursorPos=-1): editor_word = self.view.substr(region) toggle_groups = words_dict for toggle_group in toggle_groups: toggle_group_word_count = len(toggle_group) # toggle_group.sort(key=len, reverse=True) for cur_word in range(0, toggle_group_word_count): next_word = (cur_word + 1) % toggle_group_word_count if cursorPos != -1: #selected == false lineRegion = self.view.line(region) line = self.view.substr(lineRegion) lineBegin = lineRegion.a for line_finding in re.finditer(re.escape(toggle_group[cur_word]), line, flags=re.IGNORECASE): lf_a = line_finding.span()[0] lf_b = line_finding.span()[1] finding_region = Region(lineBegin + lf_a, lineBegin + lf_b) if finding_region.contains(cursorPos): editor_word = self.view.substr(finding_region) region = finding_region if editor_word == toggle_group[cur_word]: self.view.replace(view, region, toggle_group[next_word]) return if editor_word == toggle_group[cur_word].lower(): self.view.replace(view, region, toggle_group[next_word].lower()) return if editor_word == toggle_group[cur_word].capitalize(): self.view.replace(view, region, toggle_group[next_word].capitalize()) return if editor_word == toggle_group[cur_word].upper(): self.view.replace(view, region, toggle_group[next_word].upper()) return # Word not found? Show message sublime.status_message( "{0}: Can't find toggles for '{1}'".format(PLUGIN_NAME, editor_word) )