added new function

added fetchNumberOfSelectedLines and getNumberOfSelectedLines
This commit is contained in:
tel0065 2022-04-27 12:00:59 -05:00 committed by GitHub
parent 16869aa5b6
commit 5d3dc7acea
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,6 +16,10 @@ export const textCommands: CommandEntry[] = [
name: 'mind-reader.getLeadingSpaces', name: 'mind-reader.getLeadingSpaces',
callback: getLeadingSpaces, callback: getLeadingSpaces,
}, },
{
name: 'mind-reader.getNumberOfSelectedLines',
callback: getNumberOfSelectedLines,
},
{ {
name: 'mind-reader.runLineContext', name: 'mind-reader.runLineContext',
callback: runLineContext, callback: runLineContext,
@ -27,20 +31,54 @@ export const textCommands: CommandEntry[] = [
]; ];
/* Helper Function /* Helper Function
* This function returns the line number of the active text editor window * This function returns the number of selected lines in the active text editor window
*/
function fetchNumberOfSelectedLines(editor: vscode.TextEditor | undefined): number {
let numberOfSelectedLines: number = 0;
if (editor) {
numberOfSelectedLines = editor.selections.reduce((prev, curr) => prev + (curr.end.line - curr.start.line), 1);
}
return numberOfSelectedLines;
}
/* Helper Function
* This function returns the line number of the active text editor window
*/ */
function fetchLineNumber(editor: any): number { function fetchLineNumber(editor: any): number {
return editor.selection.active.line + 1; return editor.selection.active.line + 1;
} }
/* Helper Function /* Helper Function
* This function returns the text from the current line of the active text editor window * This function returns the text from the current line of the active text editor window
*/ */
function fetchTextLine(editor: any): string { function fetchTextLine(editor: any): string {
return editor.document.lineAt(fetchLineNumber(editor) - 1); return editor.document.lineAt(fetchLineNumber(editor) - 1);
} }
// Function that outputs the current line number the cursor is on /** Function
* Function to return the number of selected (highlighted) lines
* Changes output to 'Line' for 1 line and 'Lines' for all other instances
*/
function getNumberOfSelectedLines(): void {
const editor: any = vscode.window.activeTextEditor;
if (editor) {
const numberOfSelectedLines: number = fetchNumberOfSelectedLines(editor);
(numberOfSelectedLines !== 1)
? vscode.window.showInformationMessage(`${numberOfSelectedLines.toString()} Lines Selected`)
: vscode.window.showInformationMessage(`${numberOfSelectedLines.toString()} Line Selected`);
}
else {
vscode.window.showErrorMessage('No document currently active');
}
}
/** Function
* Outputs the current line number the cursor is on
*/
function getLineNumber(): void { function getLineNumber(): void {
const editor: any = vscode.window.activeTextEditor; const editor: any = vscode.window.activeTextEditor;
@ -54,6 +92,9 @@ function getLineNumber(): void {
} }
} }
/** Function
* Used to get the number of indents on a line
*/
function getIndent(): void { function getIndent(): void {
const editor: any = vscode.window.activeTextEditor; const editor: any = vscode.window.activeTextEditor;
@ -72,7 +113,9 @@ function getIndent(): void {
}; };
const i: number = pl.Lexer.getIndent(textLine.text, tabFmt); const i: number = pl.Lexer.getIndent(textLine.text, tabFmt);
vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${i.toString()} indents`); (i !== 1)
? vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${i.toString()} indents`)
: vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${i.toString()} indent`);
} }
} }
else { else {
@ -100,8 +143,8 @@ function getLeadingSpaces(): void {
const editor: any = vscode.window.activeTextEditor; const editor: any = vscode.window.activeTextEditor;
if (editor) { if (editor) {
const lineNum: number = fetchLineNumber(editor); const lineNum : number = fetchLineNumber(editor);
const textLine: any = fetchTextLine(editor); const textLine: any = fetchTextLine(editor);
if (textLine.isEmptyOrWhitespace) { if (textLine.isEmptyOrWhitespace) {
vscode.window.showInformationMessage(`Line ${lineNum.toString()} is empty`); vscode.window.showInformationMessage(`Line ${lineNum.toString()} is empty`);
@ -114,14 +157,14 @@ function getLeadingSpaces(): void {
* default: false * default: false
*/ */
const calculateLeadingSpaces: boolean = false; // change boolean value to change method const calculateLeadingSpaces: boolean = false; // change boolean value to change method
const numSpaces: number = (calculateLeadingSpaces) ? const numSpaces: number = (calculateLeadingSpaces)
pl.Lexer.getLeadingSpacesByArithmetic(textLine) : ? pl.Lexer.getLeadingSpacesByArithmetic(textLine)
pl.Lexer.getLeadingSpacesByIndex(textLine); : pl.Lexer.getLeadingSpacesByIndex(textLine);
/* Ternary operator to change the tense of 'space' to 'spaces' for the output if numSpaces is 0 or greater than 1 */ /* Ternary operator to change the tense of 'space' to 'spaces' for the output if numSpaces is 0 or greater than 1 */
(numSpaces !== 1) ? (numSpaces !== 1)
vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${numSpaces.toString()} spaces`): ? vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${numSpaces.toString()} spaces`)
vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${numSpaces.toString()} space`); : vscode.window.showInformationMessage(`Line ${lineNum.toString()}: ${numSpaces.toString()} space`);
} }
} }
else { else {
@ -134,13 +177,13 @@ function runLineContext(): void {
if (editor) { if (editor) {
// current text and line number // current text and line number
const editorText: string = editor.document.getText(); const editorText: string = editor.document.getText();
const line: string = editor.selection.active.line; const line : string = editor.selection.active.line;
// get tab info settings // get tab info settings
const size: number = parseInt(editor.options.tabSize); const size : number = parseInt(editor.options.tabSize);
const hard: boolean = !editor.options.insertSpaces; const hard : boolean = !editor.options.insertSpaces;
// initialize parser // initialize parser
const parser: any = new pl.Parser(editorText, { const parser : any = new pl.Parser(editorText, {
size, size,
hard hard
}); });
@ -199,15 +242,15 @@ function runCursorContext(): void {
return; return;
} }
const cursorPos: any = editor.selection.active; const cursorPos : any = editor.selection.active;
const text: string = editor.document.lineAt(cursorPos).text; const text : string = editor.document.lineAt(cursorPos).text;
const windowSize: any = vscode.workspace.getConfiguration('mindReader').get('reader.contextWindow'); const windowSize : any = vscode.workspace.getConfiguration('mindReader').get('reader.contextWindow');
let trimmedText: string = text.trimStart(); // trim leading whitespace let trimmedText: string = text.trimStart(); // trim leading whitespace
const leadingWS: number = text.length - trimmedText.length; // # of characters of leading whitespace const leadingWS : number = text.length - trimmedText.length; // # of characters of leading whitespace
let pos: number = leadingWS; let pos : number = leadingWS;
const maxPos: number = text.length; const maxPos : number = text.length;
// clamp cursor start/end to new range // clamp cursor start/end to new range
let col: number = cursorPos.character; // effective column of the cursor position let col : number = cursorPos.character; // effective column of the cursor position
trimmedText = trimmedText.trimEnd(); // trim trailing whitespace trimmedText = trimmedText.trimEnd(); // trim trailing whitespace
@ -242,7 +285,7 @@ function runCursorContext(): void {
// find word the user is in // find word the user is in
let contextStart: number = -1; let contextStart: number = -1;
let contextEnd: number = -1; let contextEnd : number = -1;
for (let i: number = 0; i < spaceWords.length; i++) { for (let i: number = 0; i < spaceWords.length; i++) {
if (col >= spaceWords[i].start && col <= spaceWords[i].end) { if (col >= spaceWords[i].start && col <= spaceWords[i].end) {