-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMymain.py
More file actions
133 lines (105 loc) · 4.63 KB
/
Mymain.py
File metadata and controls
133 lines (105 loc) · 4.63 KB
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# coding=utf8
import sublime
import sublime_plugin
import os
from datetime import datetime
from subprocess import Popen
# 覆盖`Default`插件中的同名`CopyPathCommand`定义
# 复制当前文件路径
class CopyPathCommand(sublime_plugin.TextCommand):
def run(self, edit):
if len(self.view.file_name()) > 0:
file_path = self.view.file_name()
sublime.set_clipboard('"%s"' % file_path)
sublime.status_message('Copied file path: "%s"' % file_path)
def is_enabled(self):
return self.view.file_name() is not None and len(self.view.file_name()) > 0
# 复制当前文件的文件名
class CopyFilenameCommand(sublime_plugin.TextCommand):
def run(self, edit):
if len(self.view.file_name()) > 0:
file_basename = os.path.basename(self.view.file_name())
sublime.set_clipboard('"%s"' % file_basename)
sublime.status_message('Copied file name: "%s"' % file_basename)
def is_enabled(self):
return self.view.file_name() is not None and len(self.view.file_name()) > 0
# 复制当前文件所在路径
class CopyDirectorynameCommand(sublime_plugin.TextCommand):
def run(self, edit):
if len(self.view.file_name()) > 0:
file_dirname = os.path.dirname(self.view.file_name())
sublime.set_clipboard('"%s"' % file_dirname)
sublime.status_message('Copied file directory: "%s"' % file_dirname)
def is_enabled(self):
return self.view.file_name() is not None and len(self.view.file_name()) > 0
# 在当前位置插入时间
class AddCurrentTimeCommand(sublime_plugin.TextCommand):
def run(self, edit):
self.view.run_command("insert_snippet", {
"contents": "%s" % datetime.now().strftime("%Y-%m-%d %H:%M:%S")
})
class ReadOnlyStatusListener(sublime_plugin.EventListener):
# 当载入只读文档时,在状态栏显示"【只读】"标识
def on_load_async(self, view):
if view.is_read_only():
view.set_status("file_status", "【只读】")
# view.window().status_message('注意:文件 '+ view.file_name() + ' 只读')
class ToggleReadOnlyStatusCommand(sublime_plugin.TextCommand):
# 对当前文件设置或取消只读, 并在状态栏显示或销毁'只读'标识
def run(self, edit):
if self.view.is_read_only():
# 取消只读
self.view.set_read_only(False)
# 毁掉状态栏'只读'标识
self.view.erase_status("file_status")
# 状态栏提示
# sublime.status_message("File unlocked!!")
else:
# 设置只读
self.view.set_read_only(True)
# 设置状态栏'只读'标识
self.view.set_status("file_status", '【只读】')
# sublime.status_message("File is locked!!")
def is_checked(self):
return self.view.is_read_only()
# 使用外部工具(默认)打开
class OpenFileWithExternalToolCommand(sublime_plugin.TextCommand):
def run(self, edit, **args):
file_path = self.view.file_name()
if len(file_path) > 0:
platform = sublime.platform()
if platform == "osx":
if "app" not in args:
Popen(['open', file_path])
else:
Popen(['open', '-a', args['app'], file_path])
elif platform == "windows":
os.startfile(file_path)
elif platform == "linux":
Popen(['xdg-open', file_path])
def is_enabled(self):
return True
# 浏览 Install Packages 目录
class OpenInstalledPackagesCommand(sublime_plugin.WindowCommand):
def run(self):
self.window.run_command("open_dir", {"dir": sublime.installed_packages_path()})
# 删除所有空行
class RemoveBlankLinesCommand(sublime_plugin.TextCommand):
def run(self, edit):
regions = self.view.find_all(r'\n\s*\n+')
for region in reversed(regions):
self.view.replace(edit, region, '\n')
# 删除多余空行
class RemoveExtraBlankLinesCommand(sublime_plugin.TextCommand):
def run(self, edit):
regions = self.view.find_all(r'\n\s*\n+')
for region in reversed(regions):
self.view.replace(edit, region, '\n\n')
# 复制当前文件内容
class CopyCurrentFileContentCommand(sublime_plugin.TextCommand):
def run(self, edit):
region = sublime.Region(0, self.view.size())
content = self.view.substr(region)
sublime.set_clipboard('%s' % content)
file_path = self.view.file_name() if self.view.file_name() else "untitled"
sublime.status_message('Copied file content: "%s"' % file_path)