Advertisement
Guest User

Untitled

a guest
Mar 10th, 2016
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.01 KB | None | 0 0
  1. # -*- coding: utf-8 -*-
  2.  
  3. import sublime
  4. import sublime_plugin
  5.  
  6. _KEY = 'marking_changed'
  7. _MARK_STYLE = sublime.DRAW_NO_FILL | sublime.DRAW_NO_OUTLINE | sublime.HIDDEN
  8. _SCOPE = 'markup.deleted'
  9. _SCOPE_SAVED = 'markup.inserted'
  10. _KEY_SAVED = 'changed_saved'
  11.  
  12. settings2 = sublime.load_settings("MarkChanges.sublime-settings")
  13. _ICON = "dot"
  14.  
  15. class MarkingChangedRowsCommand(sublime_plugin.EventListener):
  16.  
  17.     def __init__(self):
  18.         self.changed_lines = []
  19.         self.saved_lines = []
  20.  
  21.     def on_modified(self, view):
  22.         if not view.file_name():
  23.             return
  24.  
  25.         if view.is_dirty():
  26.             for sel in view.sel():
  27.                 for r in view.lines(sel):
  28.                     ln, _ = view.rowcol(r.begin())
  29.  
  30.                     if ln in self.saved_lines:
  31.                         self.saved_lines.remove(ln)
  32.  
  33.                     if not ln in self.changed_lines:
  34.                         self.changed_lines.append(ln)
  35.  
  36.             self.display_saved_regions(view)
  37.             self.display_changed_regions(view)
  38.         else:
  39.             view.erase_regions(_KEY);
  40.  
  41.     def on_post_save(self, view):
  42.         view.erase_regions(_KEY)
  43.  
  44.  
  45.         for ln in self.changed_lines:
  46.             self.saved_lines.append(ln)
  47.         self.changed_lines = []
  48.  
  49.         self.display_saved_regions(view)
  50.  
  51.     def on_load(self, view):
  52.         view.erase_regions(_KEY)
  53.  
  54.  
  55.     def display_saved_regions(self, view):
  56.         view.erase_regions(_KEY_SAVED)
  57.         rgns = []
  58.         for ln in self.saved_lines:
  59.             a = view.text_point(ln, 0)
  60.             r = sublime.Region(a, a)
  61.             rgns.append(r)
  62.         view.add_regions(_KEY_SAVED, rgns, _SCOPE_SAVED, _ICON, _MARK_STYLE)
  63.  
  64.     def display_changed_regions(self, view):
  65.         view.erase_regions(_KEY);
  66.         rgns = []
  67.         for ln in self.changed_lines:
  68.             a = view.text_point(ln, 0)
  69.             r = sublime.Region(a, a)
  70.             rgns.append(r)
  71.         view.add_regions(_KEY, rgns, _SCOPE, _ICON, _MARK_STYLE)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement