-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSmartPathCopy.py
More file actions
33 lines (24 loc) · 993 Bytes
/
SmartPathCopy.py
File metadata and controls
33 lines (24 loc) · 993 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import sublime, sublime_plugin
import re
class SmartPathCopyCommand(sublime_plugin.TextCommand):
def run(self, edit):
current_filepath = self.view.file_name()
user_rules = self.view.settings().get('smart_path_copy_user_rules') or []
default_rules = self.view.settings().get('smart_path_copy_default_rules') or []
rules = user_rules + default_rules
subs = {
'filepath': current_filepath,
'line_number': self.view.rowcol(self.view.sel()[0].begin())[0] + 1
}
for rule in rules:
result = re.search(rule[0], current_filepath)
if result is not None:
ret = rule[1]
for key, val in subs.items():
ret = re.sub(r'\${0}\b'.format(key), str(val), ret)
for group_idx, group in enumerate(result.groups()):
group_number = group_idx + 1
ret = re.sub(r'\${0}'.format(group_number), str(group), ret)
sublime.set_clipboard(ret)
return
sublime.set_clipboard(current_filepath)