Skip to content

Commit 930b64f

Browse files
azizkprincemaple
authored andcommitted
Commands: improvements to mix_format panel.
* Added create_mix_format_panel() function. * Auto-scroll output every 2 sec. * Output a timestamp. * Destroy the panel when error-free.
1 parent e653b75 commit 930b64f

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

commands/mix_format.py

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
import subprocess
44
import shlex
55
from .utils import *
6+
from time import time as now
7+
from datetime import datetime
68

79
__author__ = 'Aziz Köksal'
810
__email__ = '[email protected]'
@@ -87,25 +89,40 @@ def call_mix_format(window, **kwargs):
8789
window.run_command('erase_view', panel_params)
8890
output_view = None
8991

92+
past_timestamp = now()
93+
panel_update_interval = 2
94+
9095
while proc.poll() is None:
9196
stderr_line = proc.stderr.readline().decode(encoding='UTF-8')
9297

9398
if stderr_line:
9499
if not output_view:
95-
first_lines = '$ cd %s && %s\n\n' % (shlex.quote(cwd), ' '.join(map(shlex.quote, cmd)))
96-
output_view = window.create_output_panel(panel_name)
97-
output_view.settings().set('result_file_regex', r'/([^/]+):(\d+):(\d+)')
98-
output_view.set_read_only(False)
99-
output_view.run_command('append', {'characters': first_lines})
100+
output_view = create_mix_format_panel(window, panel_name, cmd, cwd)
100101
window.run_command('show_panel', panel_params)
101102

102103
output_view.run_command('append', {'characters': stderr_line})
103104

105+
if now() - past_timestamp > panel_update_interval:
106+
output_view.show(output_view.size())
107+
past_timestamp = now()
108+
104109
if output_view:
105110
output_view.set_read_only(True)
106111
else:
107112
if window.active_panel() == panel_params['panel']:
108113
window.run_command('hide_panel', panel_params)
114+
window.destroy_output_panel(panel_name)
109115

110116
msg = 'Formatted %s %s!' % (file_path and 'file' or 'directory', repr(file_path or cwd))
111117
print_status_msg(msg)
118+
119+
def create_mix_format_panel(window, panel_name, cmd_args, cwd):
120+
first_lines = '$ cd %s && %s' % (shlex.quote(cwd), ' '.join(map(shlex.quote, cmd_args)))
121+
first_lines += '\n# Timestamp: %s\n\n' % datetime.now().replace(microsecond=0)
122+
123+
output_view = window.create_output_panel(panel_name)
124+
output_view.settings().set('result_file_regex', r'/([^/]+):(\d+):(\d+)')
125+
output_view.set_read_only(False)
126+
output_view.run_command('append', {'characters': first_lines})
127+
128+
return output_view

0 commit comments

Comments
 (0)