mirror of
https://github.com/We-Dont-Byte/Mind_Reader.git
synced 2024-11-15 03:35:59 +00:00
added new function
added fetchNumberOfSelectedLines and getNumberOfSelectedLines
This commit is contained in:
parent
16869aa5b6
commit
5d3dc7acea
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user