From 318245d6d90407315045141fe022076746cbda4b Mon Sep 17 00:00:00 2001 From: lightningtgc Date: Tue, 30 Dec 2014 13:56:24 +0800 Subject: [PATCH] Using diff match to avoid replace whole file will go back to top --- cssorder.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/cssorder.py b/cssorder.py index 1732419..9f48543 100644 --- a/cssorder.py +++ b/cssorder.py @@ -2,8 +2,9 @@ import os import json -import platform import sublime +import platform +import merge_utils import sublime_plugin from subprocess import Popen, PIPE @@ -29,20 +30,35 @@ def run(self, edit): config = self.get_config() + if not self.has_selection(): region = sublime.Region(0, self.view.size()) originalBuffer = self.view.substr(region) - combed = self.comb(originalBuffer, syntax, config) - if combed: - self.view.replace(edit, region, combed) + destFile = self.comb(originalBuffer, syntax, config) + if destFile: + self.replace_whole_css(edit, destFile) return + + # if user select some block for region in self.view.sel(): if region.empty(): continue + originalBuffer = self.view.substr(region) - combed = self.comb(originalBuffer, syntax, config) - if combed: - self.view.replace(edit, region, combed) + destFile = self.comb(originalBuffer, syntax, config) + if destFile: + self.view.replace(edit, region, destFile) + + + def replace_whole_css(self, edit, destFile): + view = self.view + wholeRegion = sublime.Region(0, view.size()) + code = view.substr(wholeRegion) + + # Avoid replace file will go back to top + _, err = merge_utils.merge_code(view, edit, code, destFile) + if err: + sublime.error_message("CSSOrder: Merge failure: '%s'" % err) def comb(self, css, syntax, config): config = json.dumps(config)