1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
/************************************************************************/
/* */
/* Find: Look for something inside paragraphs. */
/* */
/************************************************************************/
# include "tedConfig.h"
# include <stdlib.h>
# include <string.h>
# include <stdio.h>
# include <ctype.h>
# include <appDebugon.h>
# include "docBuf.h"
# include "docFind.h"
# include <reg.h>
# include <charnames.h>
/************************************************************************/
/* */
/* Find the first occurrence of a regular expression in a paragraph. */
/* */
/************************************************************************/
int docFindParaFindNext( DocumentSelection * ds,
BufferItem * bi,
const BufferDocument * bd,
const DocumentPosition * dpFrom,
void * through )
{
regProg * prog= (regProg *)through;
int res;
const int direction= 1;
if ( bi->biParaStrlen == 0 )
{ return 1; }
res= regFindLeftToRight( prog, bi->biParaString+ dpFrom->dpStroff );
if ( ! res )
{ return 1; }
docSetParaSelection( ds, bi, direction,
prog->rpStartp[0]- bi->biParaString,
prog->rpEndp[0]- prog->rpStartp[0] );
return 0;
}
int docFindParaFindPrev( DocumentSelection * ds,
BufferItem * bi,
const BufferDocument * bd,
const DocumentPosition * dpFrom,
void * through )
{
regProg * prog= (regProg *)through;
int res;
const int direction= -1;
if ( bi->biParaStrlen == 0 )
{ return 1; }
res= regFindRightToLeft( prog, bi->biParaString, dpFrom->dpStroff );
if ( ! res )
{ return 1; }
docSetParaSelection( ds, bi, direction,
prog->rpStartp[0]- bi->biParaString,
prog->rpEndp[0]- prog->rpStartp[0] );
return 0;
}
|