Line ending sequences for the current tab are included in the deep link URL

This commit is contained in:
n1474335 2022-10-28 12:44:06 +01:00
parent f6ae89587c
commit 570206af77
4 changed files with 41 additions and 4 deletions

View file

@ -502,6 +502,16 @@ class App {
this.manager.output.chrEncChange(parseInt(this.uriParams.oenc, 10)); this.manager.output.chrEncChange(parseInt(this.uriParams.oenc, 10));
} }
// Input EOL sequence
if (this.uriParams.ieol) {
this.manager.input.eolChange(this.uriParams.ieol);
}
// Output EOL sequence
if (this.uriParams.oeol) {
this.manager.output.eolChange(this.uriParams.oeol);
}
// Read in input data from URI params // Read in input data from URI params
if (this.uriParams.input) { if (this.uriParams.input) {
try { try {

View file

@ -140,12 +140,16 @@ class ControlsWaiter {
const inputChrEnc = this.manager.input.getChrEnc(); const inputChrEnc = this.manager.input.getChrEnc();
const outputChrEnc = this.manager.output.getChrEnc(); const outputChrEnc = this.manager.output.getChrEnc();
const inputEOLSeq = this.manager.input.getEOLSeq();
const outputEOLSeq = this.manager.output.getEOLSeq();
const params = [ const params = [
includeRecipe ? ["recipe", recipeStr] : undefined, includeRecipe ? ["recipe", recipeStr] : undefined,
includeInput && input.length ? ["input", Utils.escapeHtml(input)] : undefined, includeInput && input.length ? ["input", Utils.escapeHtml(input)] : undefined,
inputChrEnc !== 0 ? ["ienc", inputChrEnc] : undefined, inputChrEnc !== 0 ? ["ienc", inputChrEnc] : undefined,
outputChrEnc !== 0 ? ["oenc", outputChrEnc] : undefined outputChrEnc !== 0 ? ["oenc", outputChrEnc] : undefined,
inputEOLSeq !== "\n" ? ["ieol", inputEOLSeq] : undefined,
outputEOLSeq !== "\n" ? ["oeol", outputEOLSeq] : undefined
]; ];
const hash = params const hash = params

View file

@ -142,6 +142,14 @@ class InputWaiter {
this.setInput(oldInputVal); this.setInput(oldInputVal);
} }
/**
* Getter for the input EOL sequence
* @returns {string}
*/
getEOLSeq() {
return this.inputEditorView.state.lineBreak;
}
/** /**
* Handler for Chr Enc change events * Handler for Chr Enc change events
* Sets the input character encoding * Sets the input character encoding
@ -179,7 +187,7 @@ class InputWaiter {
*/ */
getInput() { getInput() {
const doc = this.inputEditorView.state.doc; const doc = this.inputEditorView.state.doc;
const eol = this.inputEditorView.state.lineBreak; const eol = this.getEOLSeq();
return doc.sliceString(0, doc.length, eol); return doc.sliceString(0, doc.length, eol);
} }
@ -644,7 +652,7 @@ class InputWaiter {
buffer: buffer, buffer: buffer,
stringSample: stringSample, stringSample: stringSample,
encoding: this.getChrEnc(), encoding: this.getChrEnc(),
eolSequence: this.inputEditorView.state.lineBreak eolSequence: this.getEOLSeq()
} }
}, transferable); }, transferable);
} }

View file

@ -142,7 +142,22 @@ class OutputWaiter {
}); });
// Reset the output so that lines are recalculated, preserving the old EOL values // Reset the output so that lines are recalculated, preserving the old EOL values
this.setOutput(oldOutputVal); this.setOutput(oldOutputVal, true);
// Update the URL manually since we aren't firing a statechange event
this.app.updateURL(true);
}
/**
* Getter for the output EOL sequence
* Prefer reading value from `this.outputs` since the editor may not have updated yet.
* @returns {string}
*/
getEOLSeq() {
const currentTabNum = this.manager.tabs.getActiveTab("output");
if (currentTabNum < 0) {
return this.outputEditorConf.state.lineBreak;
}
return this.outputs[currentTabNum].eolSequence;
} }
/** /**