1
0
mirror of https://github.com/rfivet/uemacs.git synced 2024-12-24 18:16:35 -05:00
uemacs/line.h

56 lines
1.8 KiB
C
Raw Normal View History

#ifndef LINE_H_
#define LINE_H_
#include "retcode.h"
#include "utf8.h"
/*
2016-03-25 02:56:34 -04:00
* All text is kept in circularly linked lists of "struct line" structures.
* These begin at the header line (which is the blank line beyond the end of the
* buffer). This line is pointed to by the "struct buffer". Each line contains a
* number of bytes in the line (the "used" size), the size of the text array,
* and the text. The end of line is not stored as a byte; it's implied. Future
* additions will include update hints, and a list of marks into the line.
*/
2016-03-25 02:56:34 -04:00
typedef struct line {
struct line *l_fp ; /* Forward link to the next line */
struct line *l_bp ; /* Backward link to the previous line */
int l_size ; /* Allocated size */
int l_used ; /* Used size */
char l_text[ 1] ; /* A bunch of characters */
} *line_p ;
#define lforw(lp) ((lp)->l_fp)
#define lback(lp) ((lp)->l_bp)
#define lgetc(lp, n) ((lp)->l_text[(n)]&0xFF)
#define lputc(lp, n, c) ((lp)->l_text[(n)]=(c))
#define llength(lp) ((lp)->l_used)
2016-03-25 02:56:34 -04:00
extern int tabwidth ; /* Map to $tab, default to 8, can be set to [1, .. */
2013-09-25 01:23:52 -04:00
char *getkill( void) ;
2016-05-19 09:27:26 -04:00
boolean backchar( int f, int n) ;
boolean forwchar( int f, int n) ;
2013-06-13 23:53:59 -04:00
2016-03-25 02:56:34 -04:00
void lfree( line_p lp) ;
2013-05-18 20:43:30 -04:00
void lchange( int flag) ;
int insspace( int f, int n) ;
int linstr( char *instr) ;
int linsert( int n, unicode_t c) ;
boolean linsert_byte( int n, int c) ;
2013-05-18 20:43:30 -04:00
int lover( char *ostr) ;
int lnewline( void) ;
2016-05-19 02:02:43 -04:00
boolean ldelete( long n, boolean kflag) ;
boolean ldelchar( long n, boolean kflag) ;
2013-05-18 20:43:30 -04:00
int lgetchar( unicode_t *) ;
char *getctext( void) ;
void kdelete( void) ;
int kinsert( int c) ;
int yank( int f, int n) ;
2016-03-25 02:56:34 -04:00
line_p lalloc( int minsize) ; /* Allocate a line of at least minsize chars. */
boolean rdonly( void) ; /* Read Only error message */
#endif /* LINE_H_ */