Exemple #1
0
    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))
Exemple #3
0
    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)
		)
Exemple #5
0
	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)
		)