diff --git a/src/editor/logs.js b/src/editor/logs.js index 7d4ddf6..dcfce63 100644 --- a/src/editor/logs.js +++ b/src/editor/logs.js @@ -40,40 +40,44 @@ export class Logs { }) } + rerender_logs(logs) { + this.el.innerHTML = '' + this.render_logs(null, logs) + } + render_logs(prev_logs, logs) { - - if(prev_logs?.logs != logs.logs) { - - this.el.innerHTML = '' - for(let i = 0; i < logs.logs.length; i++) { - const log = logs.logs[i] - this.el.appendChild( - el('div', - 'log call_header ' - + (log.log_fn_name == 'error' ? 'error' : '') - // Currently console.log calls from native fns (like Array::map) - // are not recorded, so next line is dead code - + (log.module == null ? ' native' : '') - , - el('a', { - href: 'javascript: void(0)', - click: () => exec('calltree.navigate_logs_position', i), - }, - (log.module == '' ? '*scratch*' : log.module) - + ': ' - + ( - log.toplevel - ? 'toplevel' - : 'fn ' + (log.parent_name == '' ? 'anonymous' : log.parent_name) - ) - + ':' - ), - ' ', - log.args.map(a => header(a)).join(', ') - ) + for( + let i = prev_logs == null ? 0 : prev_logs.logs.length ; + i < logs.logs.length; + i++ + ) + { + const log = logs.logs[i] + this.el.appendChild( + el('div', + 'log call_header ' + + (log.log_fn_name == 'error' ? 'error' : '') + // Currently console.log calls from native fns (like Array::map) + // are not recorded, so next line is dead code + + (log.module == null ? ' native' : '') + , + el('a', { + href: 'javascript: void(0)', + click: () => exec('calltree.navigate_logs_position', i), + }, + (log.module == '' ? '*scratch*' : log.module) + + ': ' + + ( + log.toplevel + ? 'toplevel' + : 'fn ' + (log.parent_name == '' ? 'anonymous' : log.parent_name) + ) + + ':' + ), + ' ', + log.args.map(a => header(a)).join(', ') ) - } - + ) } if(prev_logs?.log_position != logs.log_position) { diff --git a/src/effects.js b/src/effects.js index e418304..f66b416 100644 --- a/src/effects.js +++ b/src/effects.js @@ -182,18 +182,14 @@ export const render_common_side_effects = (prev, next, command, ui) => { } else { - if( - // TODO refactor this condition - prev.current_calltree_node == null - || - prev.calltree_changed_token != next.calltree_changed_token - ) { + if(prev.calltree_changed_token != next.calltree_changed_token) { // Rerender entire calltree ui.render_debugger(next) ui.eval.clear_value_or_error() ui.editor.for_each_session(f => clear_coloring(ui, f)) render_coloring(ui, next) ui.editor.unembed_value_explorer() + ui.logs.rerender_logs(next.logs) } else { if(get_async_calls(prev) == null && get_async_calls(next) != null) { @@ -225,9 +221,7 @@ export const render_common_side_effects = (prev, next, command, ui) => { if(prev.calltree_node_by_loc != next.calltree_node_by_loc) { render_coloring(ui, next) } - } - if(prev.logs != next.logs) { ui.logs.render_logs(prev.logs, next.logs) } }