33import sublime , sublime_plugin
44import os
55import re
6+ import sys
67
7- NONE_COMMAND = (None , None , 0 )
8+ if sys .version_info < (3 , 0 ):
9+ NONE_COMMAND = (None , None , 0 )
10+ MAP = map (unichr , range (0x7f ))
11+ else :
12+ NONE_COMMAND = ('' , None , 0 )
13+ MAP = list (map (chr , list (range (0x7f ))))
814
915class UpperTable (dict ):
1016 def __missing__ (self , key ):
@@ -14,34 +20,37 @@ class LowerTable(dict):
1420 def __missing__ (self , key ):
1521 return u'\\ u%04x' % key
1622
17- MAP = map (unichr , range (0x7f ))
1823UPPER_TABLE = UpperTable (enumerate (MAP ))
1924LOWER_TABLE = LowerTable (enumerate (MAP ))
20- IS_UPPER = re .compile ('\\ u([A-F][A-Z0-9]{3,3}|[0-9][A-F][A-F0-9]{2,2}|[0-9]{2,2}[A-F][A-F0-9]|[0-9]{3,3}[A-F])' )
25+ IS_UPPER = re .compile ('\\ \\ u([A-F][A-Z0-9]{3,3}|[0-9][A-F][A-F0-9]{2,2}|[0-9]{2,2}[A-F][A-F0-9]|[0-9]{3,3}[A-F])' )
2126
22- class JavaPropertiesEditorListener (sublime_plugin .EventListener ):
23- def check_properties (self , view ):
24- file_name = view .file_name ()
25- result = file_name and file_name .endswith ('.properties' )
26- if result :
27- view .settings ().set ('is_properties' , True )
28- return result
29-
30- def replace_content (self , view , regions , contents ):
27+ class JavaPropertiesConvertCommand (sublime_plugin .TextCommand ):
28+ def run (self , edit , contents ):
29+ view = self .view
3130 sel = view .sel ()
3231 rs = [x for x in sel ]
3332 vp = view .viewport_position ()
3433 view .set_viewport_position (tuple ([0 , 0 ]))
35- edit = view .begin_edit ( )
34+ regions = sublime . Region ( 0 , view .size () )
3635 view .replace (edit , regions , contents )
37- view .end_edit (edit )
3836 sel .clear ()
3937 for x in rs :
4038 sel .add (sublime .Region (x .a , x .b ))
4139 view .set_viewport_position (vp )
4240 view .set_scratch (True )
4341 view .settings ().set ('set_scratch' , True )
4442
43+ class JavaPropertiesEditorListener (sublime_plugin .EventListener ):
44+ def check_properties (self , view ):
45+ file_name = view .file_name ()
46+ result = file_name and file_name .endswith ('.properties' )
47+ if result :
48+ view .settings ().set ('is_properties' , True )
49+ return result
50+
51+ def replace_content (self , view , contents ):
52+ view .run_command ('java_properties_convert' , {'contents' : contents })
53+
4554 def on_load (self , view ):
4655 if not self .check_properties (view ):
4756 return
@@ -52,7 +61,7 @@ def on_load(self, view):
5261 return
5362 if IS_UPPER .search (orignal_contents ) == None :
5463 view .settings ().set ('use_lower' , True )
55- self .replace_content (view , regions , contents )
64+ self .replace_content (view , contents )
5665
5766 def on_modified (self , view ):
5867 if not view .settings ().get ('is_properties' ):
@@ -82,7 +91,7 @@ def on_pre_save(self, view):
8291 if contents == orignal_contents :
8392 return
8493 self .contents = contents
85- self .replace_content (view , regions , orignal_contents )
94+ self .replace_content (view , orignal_contents )
8695
8796 def on_post_save (self , view ):
8897 if not view .settings ().get ('is_properties' ):
@@ -91,5 +100,4 @@ def on_post_save(self, view):
91100 return
92101 contents = self .contents
93102 del self .contents
94- regions = sublime .Region (0 , view .size ())
95- self .replace_content (view , regions , contents )
103+ self .replace_content (view , contents )
0 commit comments