proto.h 21.8 KB
Newer Older
Chris Allegretta's avatar
Chris Allegretta committed
1
/**************************************************************************
2
 *   proto.h  --  This file is part of GNU nano.                          *
Chris Allegretta's avatar
Chris Allegretta committed
3
 *                                                                        *
4
 *   Copyright (C) 1999-2011, 2013-2017 Free Software Foundation, Inc.    *
Chris Allegretta's avatar
Chris Allegretta committed
5
 *                                                                        *
6
7
8
9
10
11
12
13
14
 *   GNU nano is free software: you can redistribute it and/or modify     *
 *   it under the terms of the GNU General Public License as published    *
 *   by the Free Software Foundation, either version 3 of the License,    *
 *   or (at your option) any later version.                               *
 *                                                                        *
 *   GNU nano is distributed in the hope that it will be useful,          *
 *   but WITHOUT ANY WARRANTY; without even the implied warranty          *
 *   of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.              *
 *   See the GNU General Public License for more details.                 *
Chris Allegretta's avatar
Chris Allegretta committed
15
16
 *                                                                        *
 *   You should have received a copy of the GNU General Public License    *
17
 *   along with this program.  If not, see http://www.gnu.org/licenses/.  *
Chris Allegretta's avatar
Chris Allegretta committed
18
19
20
 *                                                                        *
 **************************************************************************/

21
22
23
#ifndef PROTO_H
#define PROTO_H 1

Chris Allegretta's avatar
Chris Allegretta committed
24
25
#include "nano.h"

26
/* All external variables.  See global.c for their descriptions. */
27

28
#ifndef NANO_TINY
29
extern volatile sig_atomic_t the_window_resized;
30
31
#endif

32
#ifdef __linux__
33
extern bool console;
34
35
#endif

36
extern bool meta_key;
37
38
extern bool shift_held;

39
extern bool focusing;
40

41
42
extern bool as_an_at;

43
44
45
extern int margin;
extern int editwincols;

46
47
extern bool suppress_cursorpos;

48
extern message_type lastmessage;
49

50
51
extern filestruct *pletion_line;

52
53
54
extern bool inhelp;
extern char *title;

55
56
extern bool more_than_one;

57
58
extern int didfind;

59
60
extern int controlleft;
extern int controlright;
61
62
extern int controlup;
extern int controldown;
63
64
extern int controlhome;
extern int controlend;
65
#ifndef NANO_TINY
66
67
68
69
extern int shiftcontrolleft;
extern int shiftcontrolright;
extern int shiftcontrolup;
extern int shiftcontroldown;
70
71
extern int shiftcontrolhome;
extern int shiftcontrolend;
72
73
74
75
extern int altleft;
extern int altright;
extern int altup;
extern int altdown;
76
77
78
79
extern int shiftaltleft;
extern int shiftaltright;
extern int shiftaltup;
extern int shiftaltdown;
80
81
#endif

82
#ifdef ENABLED_WRAPORJUSTIFY
83
extern ssize_t fill;
84
extern ssize_t wrap_at;
85
#endif
86
87
88

extern char *last_search;

89
90
extern char *present_path;

91
extern unsigned flags[4];
92
93
94
95
96
97
extern WINDOW *topwin;
extern WINDOW *edit;
extern WINDOW *bottomwin;
extern int editwinrows;

extern filestruct *cutbuffer;
98
extern filestruct *cutbottom;
99
100
extern partition *filepart;
extern openfilestruct *openfile;
101
extern openfilestruct *firstfile;
Chris Allegretta's avatar
Chris Allegretta committed
102

103
104
#ifndef NANO_TINY
extern char *matchbrackets;
105
extern char *whitespace;
106
extern int whitespace_len[2];
107
108
#endif

109
110
extern const char *exit_tag;
extern const char *close_tag;
111
extern const char *uncut_tag;
112
#ifdef ENABLE_JUSTIFY
113
extern const char *unjust_tag;
114
115
extern char *punct;
extern char *brackets;
Chris Allegretta's avatar
Chris Allegretta committed
116
extern char *quotestr;
117
118
119
extern regex_t quotereg;
extern int quoterc;
extern char *quoteerr;
120
#endif
121

122
123
extern char *word_chars;

124
125
126
127
extern char *answer;

extern ssize_t tabsize;

128
#ifndef NANO_TINY
129
extern char *backup_dir;
130
131
extern const char *locking_prefix;
extern const char *locking_suffix;
132
#endif
133
#ifdef ENABLE_OPERATINGDIR
134
135
extern char *operating_dir;
#endif
136

137
#ifdef ENABLE_SPELLER
138
extern char *alt_speller;
Chris Allegretta's avatar
Chris Allegretta committed
139
140
#endif

141
#ifdef ENABLE_COLOR
142
143
extern syntaxtype *syntaxes;
extern char *syntaxstr;
144
extern bool have_palette;
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
145
#endif
146

147
extern bool refresh_needed;
148

149
extern int currmenu;
150
151
152
153
extern sc *sclist;
extern subnfunc *allfuncs;
extern subnfunc *exitfunc;
extern subnfunc *uncutfunc;
154

155
extern filestruct *search_history;
156
157
extern filestruct *replace_history;
extern filestruct *execute_history;
158
#ifdef ENABLE_HISTORIES
159
extern filestruct *searchtop;
160
extern filestruct *searchbot;
161
extern filestruct *replacetop;
162
extern filestruct *replacebot;
163
164
extern filestruct *executetop;
extern filestruct *executebot;
165
extern poshiststruct *position_history;
166
167
#endif

168
169
170
extern regex_t search_regexp;
extern regmatch_t regmatches[10];

171
extern int hilite_attribute;
172
#ifdef ENABLE_COLOR
173
174
extern char* specified_color_combo[NUMBER_OF_ELEMENTS];
#endif
175
extern int interface_color_pair[NUMBER_OF_ELEMENTS];
176

177
extern char *homedir;
178
extern char *statedir;
179
extern char *rcfile_with_errors;
180

181
182
typedef void (*functionptrtype)(void);

183
/* Most functions in browser.c. */
184
#ifdef ENABLE_BROWSER
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
185
char *do_browse_from(const char *inpath);
186
void read_the_list(const char *path, DIR *dir);
187
functionptrtype parse_browser_input(int *kbinput);
188
void browser_refresh(void);
189
void browser_select_dirname(const char *needle);
190
void do_filesearch(void);
191
void do_fileresearch(bool forwards);
192
193
void do_first_file(void);
void do_last_file(void);
194
char *strip_last_component(const char *path);
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
195
196
#endif

197
/* Most functions in chars.c. */
198
199
200
201
#ifdef ENABLE_UTF8
void utf8_init(void);
bool using_utf8(void);
#endif
202
char *addstrings(char* str1, size_t len1, char* str2, size_t len2);
203
bool is_byte(int c);
204
bool is_alpha_mbchar(const char *c);
205
bool is_blank_mbchar(const char *c);
206
bool is_ascii_cntrl_char(int c);
207
bool is_cntrl_mbchar(const char *c);
208
bool is_word_mbchar(const char *c, bool allow_punct);
209
char control_mbrep(const char *c, bool isdata);
210
int length_of_char(const char *c, int *width);
211
int mbwidth(const char *c);
212
char *make_mbchar(long chr, int *chr_mb_len);
213
int parse_mbchar(const char *buf, char *chr, size_t *col);
214
215
size_t move_mbleft(const char *buf, size_t pos);
size_t move_mbright(const char *buf, size_t pos);
216
217
int mbstrcasecmp(const char *s1, const char *s2);
int mbstrncasecmp(const char *s1, const char *s2, size_t n);
218
char *mbstrcasestr(const char *haystack, const char *needle);
219
220
char *revstrstr(const char *haystack, const char *needle, const char *index);
char *mbrevstrcasestr(const char *haystack, const char *needle, const char *index);
221
size_t mbstrlen(const char *s);
222
size_t mbstrnlen(const char *s, size_t maxlen);
223
#if !defined(NANO_TINY) || defined(ENABLE_JUSTIFY)
224
225
char *mbstrchr(const char *s, const char *c);
#endif
226
#ifndef NANO_TINY
227
char *mbstrpbrk(const char *s, const char *accept);
228
229
char *revstrpbrk(const char *head, const char *accept, const char *index);
char *mbrevstrpbrk(const char *head, const char *accept, const char *index);
230
#endif
231
#if defined(ENABLE_NANORC) && (!defined(NANO_TINY) || defined(ENABLE_JUSTIFY))
232
233
bool has_blank_mbchars(const char *s);
#endif
234
235
236
#ifdef ENABLE_UTF8
bool is_valid_unicode(wchar_t wc);
#endif
237
#ifdef ENABLE_NANORC
238
239
bool is_valid_mbstring(const char *s);
#endif
240

241
/* Most functions in color.c. */
242
#ifdef ENABLE_COLOR
243
void set_colorpairs(void);
244
void color_init(void);
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
245
void color_update(void);
246
void check_the_multis(filestruct *line);
247
248
void alloc_multidata_if_needed(filestruct *fileptr);
void precalc_multicolorinfo(void);
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
249
#endif
250

251
/* Most functions in cut.c. */
252
void cutbuffer_reset(void);
253
bool keeping_cutbuffer(void);
254
#ifndef NANO_TINY
255
void cut_marked(bool *right_side_up);
256
#endif
257
void do_cut_text(bool copy_text, bool cut_till_eof);
258
259
260
void do_cut_text_void(void);
#ifndef NANO_TINY
void do_copy_text(void);
261
void do_cut_till_eof(void);
262
#endif
263
void do_uncut_text(void);
Chris Allegretta's avatar
Chris Allegretta committed
264

265
/* Most functions in files.c. */
266
void initialize_buffer_text(void);
267
void set_modified(void);
268
bool open_buffer(const char *filename, bool undoable);
269
#ifdef ENABLE_SPELLER
270
void replace_buffer(const char *filename);
271
272
273
274
#ifndef NANO_TINY
void replace_marked_buffer(const char *filename, filestruct *top, size_t top_x,
	filestruct *bot, size_t bot_x);
#endif
275
#endif
276
void prepare_for_display(void);
277
#ifdef ENABLE_MULTIBUFFER
278
279
void switch_to_prev_buffer(void);
void switch_to_next_buffer(void);
280
bool close_buffer(void);
281
#endif
282
283
void read_file(FILE *f, int fd, const char *filename, bool undoable,
		bool checkwritable);
284
int open_file(const char *filename, bool newfie, bool quiet, FILE **f);
285
char *get_next_filename(const char *name, const char *suffix);
286
void do_insertfile_void(void);
287
char *get_full_path(const char *origpath);
288
char *safe_tempfile(FILE **f);
289
#ifdef ENABLE_OPERATINGDIR
290
void init_operating_dir(void);
291
bool outside_of_confinement(const char *currpath, bool allow_tabcomp);
292
#endif
293
#ifndef NANO_TINY
294
void init_backup_dir(void);
295
int delete_lockfile(const char *lockfilename);
296
int write_lockfile(const char *lockfilename, const char *origfilename, bool modified);
297
#endif
298
int copy_file(FILE *inn, FILE *out, bool close_out);
299
bool write_file(const char *name, FILE *f_open, bool tmp,
300
	kind_of_writing_type method, bool fullbuffer);
301
#ifndef NANO_TINY
302
bool write_marked_file(const char *name, FILE *f_open, bool tmp,
303
	kind_of_writing_type method);
304
#endif
305
int do_writeout(bool exiting, bool withprompt);
306
void do_writeout_void(void);
307
void do_savefile(void);
308
char *real_dir_from_tilde(const char *buf);
309
#if defined(ENABLE_TABCOMP) || defined(ENABLE_BROWSER)
310
311
int diralphasort(const void *va, const void *vb);
#endif
312
#ifdef ENABLE_TABCOMP
313
char *input_tab(char *buf, bool allow_files, size_t *place,
314
	bool *lastwastab, void (*refresh_func)(void), bool *listed);
Chris Allegretta's avatar
Chris Allegretta committed
315
#endif
316

317
/* Some functions in global.c. */
318
size_t length_of_list(int menu);
319
const sc *first_sc_for(int menu, void (*func)(void));
320
int the_code_for(void (*func)(void), int defaultval);
321
functionptrtype func_from_key(int *kbinput);
322
int keycode_from_string(const char *keystring);
323
void assign_keyinfo(sc *s, const char *keystring, const int keycode);
324
void print_sclist(void);
325
void shortcut_init(void);
326
#ifdef ENABLE_COLOR
327
void set_lint_or_format_shortcuts(void);
328
329
void set_spell_shortcuts(void);
#endif
330
const subnfunc *sctofunc(const sc *s);
331
const char *flagtostr(int flag);
332
333
sc *strtosc(const char *input);
int strtomenu(const char *input);
Chris Allegretta's avatar
Chris Allegretta committed
334
335
#ifdef DEBUG
void thanks_for_all_the_fish(void);
336
337
#endif

338
/* All functions in help.c. */
339
#ifdef ENABLE_HELP
340
void wrap_the_help_text(bool redisplaying);
341
void do_help(void);
342
void help_init(void);
343
functionptrtype parse_help_input(int *kbinput);
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
344
size_t help_line_len(const char *ptr);
345
#endif
346
void do_help_void(void);
347

348
/* Most functions in history.c. */
349
#ifdef ENABLE_HISTORIES
350
351
352
353
354
355
356
357
358
359
void history_init(void);
void history_reset(const filestruct *h);
void update_history(filestruct **h, const char *s);
char *get_history_older(filestruct **h);
char *get_history_newer(filestruct **h);
void get_history_older_void(void);
void get_history_newer_void(void);
#ifdef ENABLE_TABCOMP
char *get_history_completion(filestruct **h, char *s, size_t len);
#endif
360
bool have_statedir(void);
361
362
363
364
365
366
367
void load_history(void);
void save_history(void);
void load_poshistory(void);
void update_poshistory(char *filename, ssize_t lineno, ssize_t xpos);
bool has_old_position(const char *file, ssize_t *line, ssize_t *column);
#endif

368
/* Most functions in move.c. */
369
370
371
372
void do_first_line(void);
void do_last_line(void);
void do_page_up(void);
void do_page_down(void);
373
#ifdef ENABLE_JUSTIFY
374
375
void do_para_begin(bool update_screen);
void do_para_end(bool update_screen);
376
void do_para_begin_void(void);
377
378
void do_para_end_void(void);
#endif
379
380
void do_prev_block(void);
void do_next_block(void);
381
382
void do_prev_word(bool allow_punct, bool update_screen);
bool do_next_word(bool allow_punct, bool update_screen);
383
void do_prev_word_void(void);
384
void do_next_word_void(void);
385
386
void do_home(void);
void do_end(void);
387
388
void do_up(bool scroll_only);
void do_down(bool scroll_only);
389
void do_up_void(void);
390
void do_down_void(void);
391
#ifndef NANO_TINY
392
void do_scroll_up(void);
393
394
void do_scroll_down(void);
#endif
395
396
void do_left(void);
void do_right(void);
Chris Allegretta's avatar
Chris Allegretta committed
397

398
/* Most functions in nano.c. */
399
filestruct *make_new_node(filestruct *prevnode);
400
void splice_node(filestruct *afterthis, filestruct *newnode);
401
void unlink_node(filestruct *fileptr);
402
403
void delete_node(filestruct *fileptr);
filestruct *copy_filestruct(const filestruct *src);
Chris Allegretta's avatar
Chris Allegretta committed
404
void free_filestruct(filestruct *src);
405
void renumber(filestruct *fileptr);
406
407
partition *partition_filestruct(filestruct *top, size_t top_x,
	filestruct *bot, size_t bot_x);
408
void unpartition_filestruct(partition **p);
409
void extract_buffer(filestruct **file_top, filestruct **file_bot,
410
	filestruct *top, size_t top_x, filestruct *bot, size_t bot_x);
411
void ingraft_buffer(filestruct *somebuffer);
412
void copy_from_buffer(filestruct *somebuffer);
413
414
415
openfilestruct *make_new_opennode(void);
void unlink_opennode(openfilestruct *fileptr);
void delete_opennode(openfilestruct *fileptr);
416
void print_view_warning(void);
417
void show_restricted_warning(void);
418
#ifndef ENABLE_HELP
419
420
void say_there_is_no_help(void);
#endif
421
422
void finish(void);
void die(const char *msg, ...);
423
void die_save_file(const char *die_filename, struct stat *die_stat);
424
void window_init(void);
425
void do_exit(void);
426
void close_and_go(void);
427
428
429
RETSIGTYPE handle_hupterm(int signal);
RETSIGTYPE do_suspend(int signal);
RETSIGTYPE do_continue(int signal);
430
#ifndef NANO_TINY
431
RETSIGTYPE handle_sigwinch(int signal);
432
void regenerate_screen(void);
433
void allow_sigwinch(bool allow);
434
void do_toggle(int flag);
435
void do_toggle_void(void);
436
437
438
439
void enable_signals(void);
#endif
void disable_flow_control(void);
void enable_flow_control(void);
440
void terminal_init(void);
441
void unbound_key(int code);
442
int do_input(bool allow_funcs);
443
#ifdef ENABLE_MOUSE
444
int do_mouse(void);
445
#endif
446
void do_output(char *output, size_t output_len, bool allow_cntrls);
447

448
/* Most functions in prompt.c. */
449
#ifdef ENABLE_MOUSE
450
int do_statusbar_mouse(void);
451
#endif
452
void do_statusbar_output(int *the_input, size_t input_len, bool filtering);
453
454
455
void do_statusbar_home(void);
void do_statusbar_end(void);
void do_statusbar_left(void);
456
void do_statusbar_right(void);
457
458
459
void do_statusbar_backspace(void);
void do_statusbar_delete(void);
void do_statusbar_cut_text(void);
460
void do_statusbar_uncut_text(void);
461
#ifndef NANO_TINY
462
void do_statusbar_prev_word(void);
463
void do_statusbar_next_word(void);
464
#endif
465
void do_statusbar_verbatim_input(void);
466
467
size_t statusbar_xplustabs(void);
size_t get_statusbar_page_start(size_t start_col, size_t column);
468
void reinit_statusbar_x(void);
469
void update_the_statusbar(void);
470
int do_prompt(bool allow_tabs, bool allow_files,
471
	int menu, const char *curranswer, filestruct **history_list,
472
	void (*refresh_func)(void), const char *msg, ...);
473
int do_yesno_prompt(bool all, const char *msg);
474

475
/* Most functions in rcfile.c. */
476
#ifdef ENABLE_NANORC
477
#ifdef ENABLE_COLOR
478
bool parse_color_names(char *combostr, short *fg, short *bg, bool *bright);
479
void grab_and_store(const char *kind, char *ptr, regexlisttype **storage);
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
480
#endif
481
void parse_rcfile(FILE *rcstream, bool syntax_only);
482
void do_rcfiles(void);
483
#endif /* ENABLE_NANORC */
484

485
/* Most functions in search.c. */
486
void not_found_msg(const char *str);
487
void search_replace_abort(void);
488
int findnextstr(const char *needle, bool whole_word_only, int modus,
489
	size_t *match_len, bool skipone, const filestruct *begin, size_t begin_x);
490
void do_search(void);
491
492
void do_search_forward(void);
void do_search_backward(void);
493
494
495
496
#ifndef NANO_TINY
void do_findprevious(void);
void do_findnext(void);
#endif
497
void do_research(void);
498
void go_looking(void);
499
500
ssize_t do_replace_loop(const char *needle, bool whole_word_only,
	const filestruct *real_current, size_t *real_current_x);
501
void do_replace(void);
502
void goto_line_posx(ssize_t line, size_t pos_x);
503
void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
504
	bool interactive);
505
void do_gotolinecolumn_void(void);
506
#ifndef NANO_TINY
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
507
void do_find_bracket(void);
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
508
#endif
Chris Allegretta's avatar
Chris Allegretta committed
509

510
/* Most functions in text.c. */
511
#ifndef NANO_TINY
512
513
514
515
void do_mark(void);
#endif
void do_delete(void);
void do_backspace(void);
516
517
518
519
#ifndef NANO_TINY
void do_cut_prev_word(void);
void do_cut_next_word(void);
#endif
520
void do_tab(void);
521
#ifndef NANO_TINY
522
523
void do_indent(void);
void do_unindent(void);
524
#endif
525
526
bool white_string(const char *s);
#ifdef ENABLE_COMMENT
527
void do_comment(void);
528
bool comment_line(undo_type action, filestruct *f, const char *comment_seq);
529
#endif
530
531
void do_undo(void);
void do_redo(void);
532
void do_enter(void);
533
#ifndef NANO_TINY
534
RETSIGTYPE cancel_command(int signal);
535
bool execute_command(const char *command);
536
void discard_until(const undo *thisitem, openfilestruct *thefile, bool keep);
537
void add_undo(undo_type action);
538
void update_multiline_undo(ssize_t lineno, char *indentation);
539
540
void update_undo(undo_type action);
#endif /* !NANO_TINY */
541
#ifdef ENABLE_WRAPPING
542
void wrap_reset(void);
543
bool do_wrap(filestruct *line);
544
#endif
545
#if defined(ENABLE_HELP) || defined(ENABLED_WRAPORJUSTIFY)
546
ssize_t break_line(const char *line, ssize_t goal, bool snap_at_nl);
547
#endif
548
#if !defined(NANO_TINY) || defined(ENABLE_JUSTIFY)
549
550
size_t indent_length(const char *line);
#endif
551
#ifdef ENABLE_JUSTIFY
552
553
554
555
556
557
void justify_format(filestruct *paragraph, size_t skip);
bool begpar(const filestruct *const foo);
bool inpar(const filestruct *const foo);
void do_justify(bool full_justify);
void do_justify_void(void);
void do_full_justify(void);
David Lawrence Ramsey's avatar
David Lawrence Ramsey committed
558
#endif
559
#ifdef ENABLE_SPELLER
560
561
void do_spell(void);
#endif
562
#ifdef ENABLE_COLOR
563
void do_linter(void);
564
void do_formatter(void);
565
#endif
566
#ifndef NANO_TINY
567
void do_wordlinechar_count(void);
568
#endif
569
void do_verbatim_input(void);
570
void complete_a_word(void);
571

572
/* All functions in utils.c. */
573
void get_homedir(void);
574
const char *tail(const char *path);
575
char *concatenate(const char *path, const char *name);
576
577
578
#ifdef ENABLE_LINENUMBERS
int digits(ssize_t n);
#endif
579
bool parse_num(const char *str, ssize_t *val);
580
bool parse_line_column(const char *str, ssize_t *line, ssize_t *column);
581
void snuggly_fit(char **str);
Chris Allegretta's avatar
Chris Allegretta committed
582
583
584
void null_at(char **data, size_t index);
void unsunder(char *str, size_t true_len);
void sunder(char *str);
585
586
587
#if !defined(ENABLE_TINY) || defined(ENABLE_TABCOMP) || defined(ENABLE_BROWSER)
void free_chararray(char **array, size_t len);
#endif
588
const char *fixbounds(const char *r);
589
#ifdef ENABLE_SPELLER
590
bool is_separate_word(size_t position, size_t length, const char *buf);
591
#endif
592
const char *strstrwrapper(const char *haystack, const char *needle,
593
	const char *start);
Chris Allegretta's avatar
Chris Allegretta committed
594
595
596
void nperror(const char *s);
void *nmalloc(size_t howmuch);
void *nrealloc(void *ptr, size_t howmuch);
597
char *mallocstrncpy(char *dest, const char *src, size_t n);
598
char *mallocstrcpy(char *dest, const char *src);
599
char *free_and_assign(char *dest, char *src);
600
size_t get_page_start(size_t column);
601
size_t xplustabs(void);
602
603
604
size_t actual_x(const char *text, size_t column);
size_t strnlenpt(const char *text, size_t maxlen);
size_t strlenpt(const char *text);
Chris Allegretta's avatar
Chris Allegretta committed
605
void new_magicline(void);
606
#if !defined(NANO_TINY) || defined(ENABLE_HELP)
607
void remove_magicline(void);
608
609
#endif
#ifndef NANO_TINY
610
void mark_order(const filestruct **top, size_t *top_x, const filestruct
611
	**bot, size_t *bot_x, bool *right_side_up);
612
void get_region(const filestruct **top, const filestruct **bot);
613
#endif
614
size_t get_totsize(const filestruct *begin, const filestruct *end);
615
#ifndef NANO_TINY
616
filestruct *fsfromline(ssize_t lineno);
617
#endif
618
619
620
#ifdef DEBUG
void dump_filestruct(const filestruct *inptr);
#endif
Chris Allegretta's avatar
Chris Allegretta committed
621

622
/* Most functions in winio.c. */
623
624
void record_macro(void);
void run_macro(void);
625
626
void get_key_buffer(WINDOW *win);
size_t get_key_buffer_len(void);
627
void unget_kbinput(int kbinput, bool metakey);
628
int get_kbinput(WINDOW *win, bool showcursor);
629
int parse_kbinput(WINDOW *win);
630
631
int arrow_from_abcd(int kbinput);
int parse_escape_sequence(WINDOW *win, int kbinput);
632
int get_byte_kbinput(int kbinput);
633
634
int get_control_kbinput(int kbinput);
int *get_verbatim_kbinput(WINDOW *win, size_t *kbinput_len);
635
int *parse_verbatim_kbinput(WINDOW *win, size_t *count);
636
#ifdef ENABLE_MOUSE
637
int get_mouseinput(int *mouse_x, int *mouse_y, bool allow_shortcuts);
638
#endif
639
const sc *get_shortcut(int *kbinput);
640
void blank_row(WINDOW *win, int y, int x, int n);
641
642
void blank_edit(void);
void blank_statusbar(void);
643
void blank_bottombars(void);
644
void check_statusblank(void);
645
char *display_string(const char *buf, size_t column, size_t span, bool isdata);
646
void titlebar(const char *path);
647
void statusbar(const char *msg);
648
void warn_and_shortly_pause(const char *msg);
649
void statusline(message_type importance, const char *msg, ...);
650
void bottombars(int menu);
651
void post_one_key(const char *keystroke, const char *tag, int width);
652
void place_the_cursor(void);
653
654
void edit_draw(filestruct *fileptr, const char *converted,
	int line, size_t from_col);
655
int update_line(filestruct *fileptr, size_t index);
656
657
658
#ifndef NANO_TINY
int update_softwrapped_line(filestruct *fileptr);
#endif
659
bool line_needs_update(const size_t old_column, const size_t new_column);
660
661
int go_back_chunks(int nrows, filestruct **line, size_t *leftedge);
int go_forward_chunks(int nrows, filestruct **line, size_t *leftedge);
662
bool less_than_a_screenful(size_t was_lineno, size_t was_leftedge);
663
void edit_scroll(bool direction, int nrows);
664
#ifndef NANO_TINY
665
666
size_t get_softwrap_breakpoint(const char *text, size_t leftedge,
				bool *end_of_line);
667
668
669
670
size_t get_chunk_and_edge(size_t column, filestruct *line, size_t *leftedge);
size_t chunk_for(size_t column, filestruct *line);
size_t leftedge_for(size_t column, filestruct *line);
size_t number_of_chunks_in(filestruct *line);
671
void ensure_firstcolumn_is_aligned(void);
672
#endif
673
size_t actual_last_column(size_t leftedge, size_t column);
674
void edit_redraw(filestruct *old_current, update_type manner);
Chris Allegretta's avatar
Chris Allegretta committed
675
void edit_refresh(void);
676
void adjust_viewport(update_type location);
677
void total_redraw(void);
678
void total_refresh(void);
679
void display_main_list(void);
680
void do_cursorpos(bool force);
681
void do_cursorpos_void(void);
682
683
684
685
void spotlight(bool active, size_t from_col, size_t to_col);
#ifndef NANO_TINY
void spotlight_softwrapped(bool active, size_t from_col, size_t to_col);
#endif
686
void do_suspend_void(void);
687
688
void disable_waiting(void);
void enable_waiting(void);
689
#ifdef ENABLE_EXTRA
Chris Allegretta's avatar
Chris Allegretta committed
690
void do_credits(void);
691
#endif
692

693
/* These are just name definitions. */
694
695
696
void do_cancel(void);
void case_sens_void(void);
void regexp_void(void);
697
698
void backwards_void(void);
void flip_replace(void);
699
void gototext_void(void);
700
#ifdef ENABLE_BROWSER
701
void to_files_void(void);
702
703
void goto_dir_void(void);
#endif
704
#ifndef NANO_TINY
705
706
707
708
709
void dos_format_void(void);
void mac_format_void(void);
void append_void(void);
void prepend_void(void);
void backup_file_void(void);
710
void flip_execute(void);
711
#endif
712
#ifdef ENABLE_MULTIBUFFER
713
void flip_newbuffer(void);
714
#endif
715
void discard_buffer(void);
716

717
#endif /* !PROTO_H */