47 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| import bh_plugin
 | |
| import sublime
 | |
| 
 | |
| DEFAULT_TAGS = ["cfml", "html", "angle"]
 | |
| 
 | |
| 
 | |
| class SelectBracket(bh_plugin.BracketPluginCommand):
 | |
|     def run(self, edit, name, select='', tags=DEFAULT_TAGS):
 | |
|         current_left, current_right = self.selection[0].begin(), self.selection[0].end()
 | |
|         left, right = self.left, self.right
 | |
|         first, last = left.end, right.begin
 | |
|         if select == 'left':
 | |
|             if name in tags and left.size() > 1:
 | |
|                 first, last = left.begin + 1, left.begin + 1
 | |
|                 if first == current_left and last == current_right:
 | |
|                     first, last = left.begin, left.begin
 | |
|             else:
 | |
|                 first, last = left.end, left.end
 | |
|                 if first == current_left and last == current_right:
 | |
|                     first, last = left.begin, left.begin
 | |
|         elif select == 'right':
 | |
|             if left.end != right.end:
 | |
|                 if name in tags and left.size() > 1:
 | |
|                     first, last = right.begin + 1, right.begin + 1
 | |
|                     if first == current_left and last == current_right:
 | |
|                         first, last = right.end, right.end
 | |
|                 else:
 | |
|                     first, last = right.begin, right.begin
 | |
|                     if first == current_left and last == current_right:
 | |
|                         first, last = right.end, right.end
 | |
|             else:
 | |
|                 # There is no second bracket, so just select the first
 | |
|                 if name in tags and left.size() > 1:
 | |
|                     first, last = left.begin + 1, left.begin + 1
 | |
|                 else:
 | |
|                     first, last = right.end, right.end
 | |
|                     if first == current_left and last == current_right:
 | |
|                         first, last = right.end, right.end
 | |
|         elif first == current_left and last == current_right:
 | |
|             first, last = left.begin, right.end
 | |
| 
 | |
|         self.selection = [sublime.Region(first, last)]
 | |
| 
 | |
| 
 | |
| def plugin():
 | |
|     return SelectBracket
 |