def run(self, with_confirmation=True):
build_folder = sublime.expand_variables(
self.window.project_data()["settings"]["cmake"]["build_folder"],
self.window.extract_variables())
files_to_remove = []
dirs_to_remove = []
cmakefiles_dir = os.path.join(build_folder, 'CMakeFiles')
if os.path.exists(cmakefiles_dir):
for root, dirs, files in os.walk(cmakefiles_dir, topdown=False):
files_to_remove.extend([os.path.join(root, name) for name in files])
dirs_to_remove.extend([os.path.join(root, name) for name in dirs])
dirs_to_remove.append(cmakefiles_dir)
def append_file_to_remove(relative_name):
abs_path = os.path.join(build_folder, relative_name)
if os.path.exists(abs_path):
files_to_remove.append(abs_path)
for file in TRY_TO_REMOVE:
append_file_to_remove(file)
if not with_confirmation:
self.remove(files_to_remove, dirs_to_remove)
return
panel = self.window.create_output_panel('files_to_be_deleted')
self.window.run_command('show_panel',
{'panel': 'output.files_to_be_deleted'})
panel.run_command('insert',
{'characters': 'Files to remove:\n' +
'\n'.join(files_to_remove + dirs_to_remove)})
def on_done(selected):
if selected != 0: return
self.remove(files_to_remove, dirs_to_remove)
panel.run_command('append',
{'characters': '\nCleared CMake cache files!',
'scroll_to_end': True})
self.window.show_quick_panel(['Do it', 'Cancel'], on_done,
sublime.KEEP_OPEN_ON_FOCUS_LOST)
评论列表
文章目录