small fixes

This commit is contained in:
Jon Eugster
2023-09-01 20:09:49 +02:00
parent 22f0bac569
commit 98ea870a43
9 changed files with 75 additions and 80 deletions
@@ -64,7 +64,7 @@ config.autoClosingPairs = config.autoClosingPairs.map(
monaco.languages.setLanguageConfiguration('lean4cmd', config);
/** The input field */
export function CommandLine({proofPanelRef, hidden}: {proofPanelRef: React.MutableRefObject<HTMLDivElement>, hidden?: boolean}) {
export function CommandLine({hidden}: {hidden?: boolean}) {
/** Reference to the hidden multi-line editor */
const editor = React.useContext(MonacoEditorContext)
@@ -179,11 +179,9 @@ export function CommandLine({proofPanelRef, hidden}: {proofPanelRef: React.Mutab
})
// Save the proof to the context
setProof(tmpProof)
console.debug('updated proof')
proofPanelRef.current?.lastElementChild?.scrollIntoView()
})
})
}, [editor, rpcSess, uri, model, proofPanelRef])
}, [editor, rpcSess, uri, model])
// Run the command
const runCommand = React.useCallback(() => {
+8 -8
View File
@@ -295,11 +295,6 @@ export function CommandLineInterface(props: { world: string, level: number, data
const proofPanelRef = React.useRef<HTMLDivElement>(null)
// React.useEffect(() => {
// console.debug('updated proof')
// // proofPanelRef.current?.lastElementChild?.scrollIntoView() //scrollTo(0,0)
// }, [proof])
/** Delete all proof lines starting from a given line.
* Note that the first line (i.e. deleting everything) is `1`!
*/
@@ -338,6 +333,11 @@ export function CommandLineInterface(props: { world: string, level: number, data
}
}
// Scroll to the end of the proof if it is updated.
React.useEffect(() => {
proofPanelRef.current?.lastElementChild?.scrollIntoView() //scrollTo(0,0)
}, [proof])
// Scroll to element if selection changes
React.useEffect(() => {
if (typeof selectedStep !== 'undefined') {
@@ -412,13 +412,13 @@ export function CommandLineInterface(props: { world: string, level: number, data
let lastStepErrors = proof.length ? hasInteractiveErrors(proof[proof.length - 1].errors) : false
return <div className="commandline-interface">
<div className="content" ref={proofPanelRef}>
<div className="content">
<div className="tmp-pusher">
{!proof.length &&
<CircularProgress />
}
</div>
<div className='proof'>
<div className='proof' ref={proofPanelRef}>
<ExerciseStatement data={props.data} />
{proof.length ?
<>
@@ -483,6 +483,6 @@ export function CommandLineInterface(props: { world: string, level: number, data
}
</div>
</div>
<CommandLine proofPanelRef={proofPanelRef} hidden={!withErr && proof[proof.length - 1]?.goals.length == 0}/>
<CommandLine hidden={!withErr && proof[proof.length - 1]?.goals.length == 0}/>
</div>
}