Lines Matching refs:ln

40 typedef void (*function)(Line ln, int chr);	/* edit-function */
84 make_room(Line ln, size_t room) in make_room() argument
85 { while ( ln->size + room + 1 > ln->allocated ) in make_room()
86 { if ( !ln->data ) in make_room()
87 { ln->data = rlc_malloc(256 * sizeof(TCHAR)); in make_room()
88 ln->allocated = 256; in make_room()
90 { ln->allocated *= 2; in make_room()
91 ln->data = rlc_realloc(ln->data, ln->allocated * sizeof(TCHAR)); in make_room()
95 memmove(&ln->data[ln->point + room], &ln->data[ln->point], in make_room()
96 (ln->size - ln->point)*sizeof(TCHAR)); in make_room()
97 ln->size += room; in make_room()
99 ln->change_start = min(ln->change_start, ln->point); in make_room()
104 set_line(Line ln, const TCHAR *s) in set_line() argument
107 ln->size = ln->point = 0; in set_line()
108 make_room(ln, len); in set_line()
109 _tcsncpy(ln->data, s, len); in set_line()
114 terminate(Line ln) in terminate() argument
115 { if ( !ln->data ) in terminate()
116 { ln->data = rlc_malloc(sizeof(TCHAR)); in terminate()
117 ln->allocated = 1; in terminate()
119 ln->data[ln->size] = EOS; in terminate()
124 delete(Line ln, size_t from, size_t len) in delete() argument
125 { if ( from < 0 || from > ln->size || len < 0 || from + len > ln->size ) in delete()
128 _tcsncpy(&ln->data[from], &ln->data[from+len], ln->size - (from+len)); in delete()
129 ln->size -= len; in delete()
138 back_word(Line ln, size_t from) in back_word() argument
139 { from = min(from, ln->size); in back_word()
142 if ( ln->data ) in back_word()
143 { while(!rlc_is_word_char(ln->data[from-1]) && from > 0 ) in back_word()
145 while(rlc_is_word_char(ln->data[from-1]) && from > 0 ) in back_word()
153 forw_word(Line ln, size_t from) in forw_word() argument
154 { from = min(from, ln->size); in forw_word()
157 if ( ln->data ) in forw_word()
158 { while(!rlc_is_word_char(ln->data[from]) && from < ln->size ) in forw_word()
160 while(rlc_is_word_char(ln->data[from]) && from < ln->size ) in forw_word()
172 changed(Line ln, size_t from) in changed() argument
173 { ln->change_start = min(ln->change_start, from); in changed()
178 insert_self(Line ln, int chr) in insert_self() argument
179 { make_room(ln, 1); in insert_self()
180 ln->data[ln->point++] = chr; in insert_self()
185 backward_delete_character(Line ln, int chr) in backward_delete_character() argument
186 { if ( ln->point > 0 ) in backward_delete_character()
187 { memmove(&ln->data[ln->point-1], &ln->data[ln->point], in backward_delete_character()
188 (ln->size - ln->point)*sizeof(TCHAR)); in backward_delete_character()
189 ln->size--; in backward_delete_character()
190 ln->point--; in backward_delete_character()
193 changed(ln, ln->point); in backward_delete_character()
198 delete_character(Line ln, int chr) in delete_character() argument
199 { if ( ln->point < ln->size ) in delete_character()
200 { ln->point++; in delete_character()
201 backward_delete_character(ln, chr); in delete_character()
207 backward_character(Line ln, int chr) in backward_character() argument
208 { if ( ln->point > 0 ) in backward_character()
209 ln->point--; in backward_character()
214 forward_character(Line ln, int chr) in forward_character() argument
215 { if ( ln->point < ln->size ) in forward_character()
216 ln->point++; in forward_character()
221 backward_word(Line ln, int chr) in backward_word() argument
222 { ln->point = back_word(ln, ln->point); in backward_word()
227 forward_word(Line ln, int chr) in forward_word() argument
228 { ln->point = forw_word(ln, ln->point); in forward_word()
233 backward_delete_word(Line ln, int chr) in backward_delete_word() argument
234 { size_t from = back_word(ln, ln->point); in backward_delete_word()
236 memmove(&ln->data[from], &ln->data[ln->point], in backward_delete_word()
237 (ln->size - ln->point)*sizeof(TCHAR)); in backward_delete_word()
238 ln->size -= ln->point - from; in backward_delete_word()
239 ln->point = from; in backward_delete_word()
240 changed(ln, from); in backward_delete_word()
245 forward_delete_word(Line ln, int chr) in forward_delete_word() argument
246 { size_t to = forw_word(ln, ln->point); in forward_delete_word()
248 memmove(&ln->data[ln->point], &ln->data[to], (ln->size - to)*sizeof(TCHAR)); in forward_delete_word()
249 ln->size -= to - ln->point; in forward_delete_word()
250 changed(ln, ln->point); in forward_delete_word()
255 transpose_chars(Line ln, int chr) in transpose_chars() argument
256 { if ( ln->point > 0 && ln->point < ln->size ) in transpose_chars()
257 { int c0 = ln->data[ln->point-1]; in transpose_chars()
258 ln->data[ln->point-1] = ln->data[ln->point]; in transpose_chars()
259 ln->data[ln->point] = c0; in transpose_chars()
260 changed(ln, ln->point-1); in transpose_chars()
266 start_of_line(Line ln, int chr) in start_of_line() argument
267 { ln->point = 0; in start_of_line()
272 end_of_line(Line ln, int chr) in end_of_line() argument
273 { ln->point = ln->size; in end_of_line()
278 kill_line(Line ln, int chr) in kill_line() argument
279 { ln->size = ln->point; in kill_line()
280 changed(ln, ln->size); in kill_line()
285 empty_line(Line ln, int chr) in empty_line() argument
286 { ln->size = ln->point = 0; in empty_line()
287 changed(ln, 0); in empty_line()
292 enter(Line ln, int chr) in enter() argument
293 { ln->point = ln->size; in enter()
295 make_room(ln, 2); in enter()
296 ln->data[ln->point++] = '\r'; in enter()
297 ln->data[ln->point++] = '\n'; in enter()
299 make_room(ln, 1); in enter()
300 ln->data[ln->point++] = '\n'; in enter()
302 terminate(ln); in enter()
303 ln->complete = COMPLETE_NEWLINE; in enter()
308 eof(Line ln, int chr) in eof() argument
309 { ln->point = ln->size; in eof()
310 terminate(ln); in eof()
311 ln->complete = COMPLETE_EOF; in eof()
316 delete_character_or_eof(Line ln, int chr) in delete_character_or_eof() argument
317 { if ( ln->size == 0 ) in delete_character_or_eof()
318 { ln->point = ln->size; in delete_character_or_eof()
319 terminate(ln); in delete_character_or_eof()
320 ln->complete = COMPLETE_EOF; in delete_character_or_eof()
322 delete_character(ln, chr); in delete_character_or_eof()
327 undefined(Line ln, int chr) in undefined() argument
333 interrupt(Line ln, int chr) in interrupt() argument
354 backward_history(Line ln, int chr) in backward_history() argument
357 if ( rlc_at_head_history(ln->console) && ln->size > 0 ) in backward_history()
358 { terminate(ln); in backward_history()
359 add_history(ln->console, ln->data); in backward_history()
362 if ( (h = rlc_bwd_history(ln->console)) ) in backward_history()
363 { set_line(ln, h); in backward_history()
364 ln->point = ln->size; in backward_history()
370 forward_history(Line ln, int chr) in forward_history() argument
371 { if ( !rlc_at_head_history(ln->console) ) in forward_history()
372 { const TCHAR *h = rlc_fwd_history(ln->console); in forward_history()
375 { set_line(ln, h); in forward_history()
376 ln->point = ln->size; in forward_history()
379 empty_line(ln, chr); in forward_history()
420 complete(Line ln, int chr) in complete() argument
426 data->line = ln; in complete()
433 size_t patlen = ln->point - data->replace_from; in complete()
446 delete(ln, data->replace_from, patlen); in complete()
447 ln->point = data->replace_from; in complete()
448 make_room(ln, ncommon); in complete()
449 _tcsncpy(&ln->data[data->replace_from], match, ncommon); in complete()
450 ln->point += ncommon; in complete()
452 insert_self(ln, data->quote); in complete()
460 list_completions(Line ln, int chr) in list_completions() argument
466 data->line = ln; in list_completions()
492 rlc_putchar(ln->console, *msg++); in list_completions()
493 ln->reprompt = TRUE; in list_completions()
502 cols = ScreenCols(ln->console) / longest; in list_completions()
503 rlc_putchar(ln->console, '\r'); in list_completions()
504 rlc_putchar(ln->console, '\n'); in list_completions()
512 rlc_putchar(ln->console, *s++); in list_completions()
518 { rlc_putchar(ln->console, '\r'); in list_completions()
519 rlc_putchar(ln->console, '\n'); in list_completions()
522 rlc_putchar(ln->console, ' '); in list_completions()
526 { rlc_putchar(ln->console, '\r'); in list_completions()
527 rlc_putchar(ln->console, '\n'); in list_completions()
530 ln->reprompt = TRUE; in list_completions()
551 update_display(Line ln) in update_display() argument
552 { if ( ln->reprompt ) in update_display()
553 { const TCHAR *prompt = rlc_prompt(ln->console, NULL); in update_display()
556 rlc_putchar(ln->console, '\r'); in update_display()
558 rlc_putchar(ln->console, *s++); in update_display()
560 rlc_get_mark(ln->console, &ln->origin); in update_display()
562 ln->change_start = 0; in update_display()
563 ln->reprompt = FALSE; in update_display()
566 rlc_goto_mark(ln->console, &ln->origin, ln->data, ln->change_start); in update_display()
567 output(ln->console, in update_display()
568 &ln->data[ln->change_start], ln->size - ln->change_start); in update_display()
569 rlc_erase_from_caret(ln->console); in update_display()
570 rlc_goto_mark(ln->console, &ln->origin, ln->data, ln->point); in update_display()
571 rlc_update(ln->console); in update_display()
573 ln->change_start = ln->size; in update_display()
582 { line ln; in read_line() local
586 memset(&ln, 0, sizeof(line)); in read_line()
587 ln.console = b; in read_line()
588 rlc_get_mark(b, &ln.origin); in read_line()
590 while(!ln.complete) in read_line()
600 { eof(&ln, c); in read_line()
601 update_display(&ln); in read_line()
619 (*func)(&ln, c); in read_line()
621 ln.reprompt = TRUE; in read_line()
622 update_display(&ln); in read_line()
626 add_history(b, ln.data); in read_line()
628 return ln.data; in read_line()