46 lines
1.4 KiB
C
46 lines
1.4 KiB
C
|
/*****************************************************************************
|
||
|
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;
|
||
|
}
|