feat(SublimeText2.GitPackages): cache packages
This commit is contained in:
		| @@ -0,0 +1,71 @@ | ||||
| import sublime_plugin | ||||
| from editorconfig import get_properties, EditorConfigError | ||||
|  | ||||
|  | ||||
| LINE_ENDINGS = { | ||||
| 	'lf': 'unix', | ||||
| 	'crlf': 'windows', | ||||
| 	'cr': 'cr' | ||||
| } | ||||
|  | ||||
| CHARSETS = { | ||||
| 	'latin1': 'Western (ISO 8859-1)', | ||||
| 	'utf-8': 'utf-8', | ||||
| 	'utf-8-bom': 'utf-8 with bom', | ||||
| 	'utf-16be': 'utf-16 be', | ||||
| 	'utf-16le': 'utf-16 le' | ||||
| } | ||||
|  | ||||
| class EditorConfig(sublime_plugin.EventListener): | ||||
| 	def on_load(self, view): | ||||
| 		self.init(view, False) | ||||
|  | ||||
| 	def on_pre_save(self, view): | ||||
| 		self.init(view, True) | ||||
|  | ||||
| 	def init(self, view, pre_save): | ||||
| 		path = view.file_name() | ||||
| 		if not path: | ||||
| 			return | ||||
| 		try: | ||||
| 			config = get_properties(path) | ||||
| 		except EditorConfigError: | ||||
| 			print 'Error occurred while getting EditorConfig properties' | ||||
| 		else: | ||||
| 			if config: | ||||
| 				if pre_save: | ||||
| 					self.apply_charset(view, config) | ||||
| 				else: | ||||
| 					self.apply_config(view, config) | ||||
|  | ||||
| 	def apply_charset(self, view, config): | ||||
| 		charset = config.get('charset') | ||||
| 		if charset in CHARSETS: | ||||
| 			view.set_encoding(CHARSETS[charset]) | ||||
|  | ||||
| 	def apply_config(self, view, config): | ||||
| 		settings = view.settings() | ||||
| 		indent_style = config.get('indent_style') | ||||
| 		indent_size = config.get('indent_size') | ||||
| 		end_of_line = config.get('end_of_line') | ||||
| 		trim_trailing_whitespace = config.get('trim_trailing_whitespace') | ||||
| 		insert_final_newline = config.get('insert_final_newline') | ||||
| 		if indent_style == 'space': | ||||
| 			settings.set('translate_tabs_to_spaces', True) | ||||
| 		elif indent_style == 'tab': | ||||
| 			settings.set('translate_tabs_to_spaces', False) | ||||
| 		if indent_size: | ||||
| 			try: | ||||
| 				settings.set('tab_size', int(indent_size)) | ||||
| 			except ValueError: | ||||
| 				pass | ||||
| 		if end_of_line in LINE_ENDINGS: | ||||
| 			view.set_line_endings(LINE_ENDINGS[end_of_line]) | ||||
| 		if trim_trailing_whitespace == 'true': | ||||
| 			settings.set('trim_trailing_white_space_on_save', True) | ||||
| 		elif trim_trailing_whitespace == 'false': | ||||
| 			settings.set('trim_trailing_white_space_on_save', False) | ||||
| 		if insert_final_newline == 'true': | ||||
| 			settings.set('ensure_newline_at_eof_on_save', True) | ||||
| 		elif insert_final_newline == 'false': | ||||
| 			settings.set('ensure_newline_at_eof_on_save', False) | ||||
		Reference in New Issue
	
	Block a user