The list below of QuickNotes commands and reserved variables gives an idea of the current state of play. Download the QuickNotes text editor (beta) here: Save quicknotes.py to a directory of your choice. Launch with: Python v3.9 or later must be installed Commands: ?, ABOUT Show Help -> About AB, AB/NV, AB/V Abort, with/without verification ABD Abort current file and delete it APPEND Append selected text to clipboard BD Backspace-Delete BF Cursor to bottom of file BS Cursor to bottom of screen CA, ED, EDIT Open a file for editing CALL Call a subroutine CC Change Case CCL, SCL, TCL Caps Lock clear / set / toggle CD, CD/D Change directory CH, CHA, CI, CIA Change commands CIN, SIN, TIN Insert typing mode clear / set / toggle SOV, TOV Overstrike typing mode toggles CL, PC Cursor left (wrap) CLERR Clear the error flag ($ERROR) CNL, SNL, TNL Num Lock clear / set / toggle) COMMANDS Show the Command Reference COPY, COPY/NV File copy CP Copy selected text CPS, SPS, TPS Persistent-selection clear / set / toggle CR, NC Cursor right (wrap) CSL, SSL, TSL (Scroll Lock clear / set / toggle) CV, CVA Change-verify, with optional /T /W DA Insert date DEL, DEL/NV, ERNV File delete DF Start/End DeFine (selection) DFA Select All DL Select line DN Delete, no clipboard DP Select paragraph DS Select sentence DW Select word + trailing whitespace DWONLY Select word only ELSE, ELSEIF Conditional branching statements ENDIF, EI End IF statement ENDSUB, ES End Subroutine ENDWHILE, EW End WHILE ENV Save OS environment variable to QPL variable EXISTS File-exists boolean EXIT, QUIT, EX Quit QuickNotes ET Insert elapsed time in text ETS Show elapsed time on status line GH, GT Focus CMline / text GOTO Go to :label HELP Show the Usage Summary HM Cursor to top of screen IF, IFNOT Conditional branching INPUT Save user input to a variable JMP Move cursor to char offset LB, LE Move cursor to Line Begin / Line End LC, UC Lowercase / Upper case character or selected text LD, LU Line Down / Line Up LL, LR (left / right, no wrap) LN (toggle line numbers) LOCAL Declare local variable in subroutine LS, DIR Directory listing MD, MU (screen-line down / up) ME, MERGE Merge file contents at cursor position ME/NV, MERGE/NV Merge, preserve cursor position MSG (with optional /T:N) MV (move selection to cursor) NE (new tab / open file) NL, PL (start of next / prev line) NP, PP (next / prev paragraph) NS, PS (next / prev sentence) NW, PW (next / prev word) NX, PX (next / prev tab) PD, PU (PageDown / PageUp) PDF, PDFS, PDFSTYLED Print to PDF PR Display text on status (PRompt) line PREPEND Prepend selected text to clipboard PRINTS, RV, TYS Markdown preview toggle QUIET Suppress status-line message (scripting) RD Delete selection, save to clipboard RE, READ Open file as Read-Only READFILE, RF Read file contents into a variable READWRITE, RW Toggle Read|Read-Only attribute of current file REC, RECALL ReCAll current file (abandon changes) REDO Ctrl-Y redo RETURN Return from subroutine RL Delete (rub out) line under cursor RS Delete (rub out) sentence under cursor RUN Run a script RUNHERE Run a fenced block of QPL code SA, SAAS, SAD Save As SE, SEB, SEA, SEBA Search, with optional /T /W SET Assign to a variable SF, SL Save all open files SORT Sort selected text, with optional /W /R /D /F:n /N:n) SUB Subroutine TF Move cursor to top of file UNDO [n] Ctrl-Z undo (to n levels) WAIT [<ms>] Pause script execution [milliseconds] WF, WRITEFILE Write variable contents to file WF/V, WRITEFILE/V WRITEFILE with overwrite confirmation WHILE Condition execution/flow control command WR, WRITE Write text at the cursor position WRL, WRITELN Write text and trailing newline X, XY, XV eXecute Windows/Linux command XD, YD Cancel selection ZT Reset stopwatch Reserved Variables: $# Number of positional args ($1..$N) in the active scope $* All positional args joined with single spaces $1..$N positional args of the active scope (RUN / CALL) $CB Clipboard text (truncated past 4096 chars) $CP Char offset of cursor (insert mark) from start of buffer $CT Current tab number (1-based) $CWD Current CMline path (same as $PA) $CX Cursor column (0-based) $CY Cursor row (0-based) $DA Today's date (ISO YYYY-MM-DD) $DF Text selection exists (0|1) $DN Char offset of sel.last (or insert if no sel) $DS Char offset of sel.first (or insert if no sel) $ED Absolute path to quicknotes.py $ERROR "1" if last action failed (trappable), "0" otherwise $ET Elapsed seconds since last ZT (integer) $FB Cursor is at File Beginning (0|1) $FE Cursor is at File End (0|1) $FI Active note's filename (basename) $FP Active note's full path $FS File size in bytes $LC Line count of active editor $LN Cursor line number (1-based) $LS Last status-bar message $MO Modified flag of active tab (0|1) $PA Current CMline path (same as $CWD) $PS "1" if persistent-selection mode is on, "0" otherwise $RC Last X / XY / XV exit code (integer) $RE Current file is Read-Only (0|1) $RV Last RETURN value (string) $SE Selected text (truncated past 4096 chars) $SF Scripts folder path $SL Selected text length in chars $TC Total tab count $TM Current time (HH:MM:SS) $TX Cursor is in text area (0|1) $TX Text under cursor? - see docs $VE QuickNotes revision string (date-time) -- Carl Distefano cld@xxxxxxxxxx