TEACL is a fork of TECOC created for the purpose of describing diffs in a document being collaboratively edited
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

45 lines
1.4 KiB

/*****************************************************************************
Ln2Chr()
This function converts an edit buffer offset represented by a line
number into the corresponding character number. It basically performs the
function of the control-Q command.
The returned character offset is minimized with the edge of the
buffer. This means that if there are 10 lines in the edit buffer and this
function is called to compute the character offset of the 100th line, the
character offset of the 10th line is returned. Of course, this happens
whether the argument is positive or negative.
*****************************************************************************/
#include "zport.h" /* define portability identifiers */
#include "tecoc.h" /* define general identifiers */
#include "defext.h" /* define external global variables */
#include "dchars.h" /* define identifiers for characters */
#include "chmacs.h" /* define character processing macros */
LONG Ln2Chr(Value)
LONG Value;
{
charptr TmpPtr;
if (Value > 0) {
TmpPtr = GapEnd;
while ((TmpPtr < EBfEnd) && (Value > 0)) {
++TmpPtr;
if (IsEOL(*TmpPtr)) {
--Value;
}
}
return TmpPtr-GapEnd;
}
TmpPtr = GapBeg;
while ((TmpPtr > EBfBeg) && (Value <= 0)) {
--TmpPtr;
if (IsEOL(*TmpPtr)) {
++Value;
}
}
/*
* at this point (Value > 0 OR TmpPtr == EBfBeg)
*/
if ((TmpPtr != EBfBeg) || (IsEOL(*TmpPtr))) {
++TmpPtr;
}
return TmpPtr-GapBeg;
}