--- app.before.mjs +++ app.mjs @@ -12,7 +12,7 @@ try { const files = inventory(el('diff').value); const added = files.reduce((s,f)=>s+f.added,0), removed = files.reduce((s,f)=>s+f.removed,0), hunks = files.reduce((s,f)=>s+f.hunks,0); - el('summary').append(node('span',`${files.length} file${files.length===1?'':'s'}`),node('span',`+${added}`,'addition'),node('span',`−${removed}`,'deletion'),node('span',`${hunks} hunks`)); + el('summary').append(node('span',`${files.length} file${files.length===1?'':'s'}`),node('span',`+${added}`,'addition'),node('span',`−${removed}`,'deletion'),node('span',`${hunks} hunk${hunks===1?'':'s'}`)); let shown = 0; for (const f of files) { if (shown >= 120) break; @@ -42,6 +42,11 @@ } el('sample').addEventListener('click',loadSample); el('analyze').addEventListener('click',analyze); +el('diff').addEventListener('keydown',event=>{ + if((event.ctrlKey||event.metaKey)&&event.key==='Enter'){ + event.preventDefault();analyze(); + } +}); el('diff').addEventListener('input',()=>{invalidate();message('Input changed. Build the inventory to update the report.');}); el('clear').addEventListener('click',()=>{invalidate();el('diff').value='';el('upload').value='';message('Ready for a unified text diff.');el('diff').focus();}); el('upload').addEventListener('change',async event=>{