blob: 887a6c16518fffaf7bf9c552927e726d57342ce2 [file] [log] [blame]
Chris Allegretta11b00112000-08-06 21:13:45 +00001/* $Id$ */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +00002/**************************************************************************
3 * proto.h *
4 * *
5 * Copyright (C) 1999 Chris Allegretta *
6 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
8 * the Free Software Foundation; either version 1, or (at your option) *
9 * any later version. *
10 * *
11 * This program is distributed in the hope that it will be useful, *
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
14 * GNU General Public License for more details. *
15 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
18 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
19 * *
20 **************************************************************************/
21
22/* Externs */
23
24#include <sys/stat.h>
Chris Allegretta805c26d2000-09-06 13:39:17 +000025
26#ifdef HAVE_REGEX_H
Chris Allegretta9fc8d432000-07-07 01:49:52 +000027#include <regex.h>
Chris Allegretta805c26d2000-09-06 13:39:17 +000028#endif
29
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000030#include "nano.h"
31
Chris Allegretta17dcb722001-01-20 21:40:07 +000032extern int editwinrows;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000033extern int current_x, current_y, posible_max, totlines;
34extern int placewewant;
35extern int mark_beginx, samelinewrap;
36extern int totsize, temp_opt;
Chris Allegretta6fe61492001-05-21 12:56:25 +000037extern int fill, wrap_at, flags,tabsize;
Chris Allegretta27eb13f2000-11-05 16:52:21 +000038extern int search_last_line;
Chris Allegretta6b58acd2001-04-12 03:01:53 +000039extern int currslen;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000040
41extern WINDOW *edit, *topwin, *bottomwin;
Chris Allegretta1a6e9042000-12-14 13:56:28 +000042extern char *filename;
Chris Allegretta31925e42000-11-02 04:40:39 +000043extern char *answer;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000044extern char *hblank, *help_text;
Chris Allegretta27eb13f2000-11-05 16:52:21 +000045extern char *last_search;
46extern char *last_replace;
Chris Allegretta8d8e0122001-04-18 04:28:54 +000047#ifndef DISABLE_SPELLER
48extern char *alt_speller;
49#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000050extern struct stat fileinfo;
51extern filestruct *current, *fileage, *edittop, *editbot, *filebot;
52extern filestruct *cutbuffer, *mark_beginbuf;
Chris Allegretta2d7893d2001-07-11 02:08:33 +000053
54#ifdef ENABLE_LOADONINSERT
55extern filestruct *open_files;
56#endif
57
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000058extern shortcut *shortcut_list;
59extern shortcut main_list[MAIN_LIST_LEN], whereis_list[WHEREIS_LIST_LEN];
60extern shortcut replace_list[REPLACE_LIST_LEN], goto_list[GOTO_LIST_LEN];
Chris Allegrettacc197ef2001-05-29 04:21:44 +000061extern shortcut writefile_list[WRITEFILE_LIST_LEN], insertfile_list[INSERTFILE_LIST_LEN];
Chris Allegretta105da332000-10-31 05:10:10 +000062extern shortcut spell_list[SPELL_LIST_LEN], replace_list_2[REPLACE_LIST_LEN];
Chris Allegrettacc197ef2001-05-29 04:21:44 +000063extern shortcut help_list[HELP_LIST_LEN];
Rocco Corsiaf5c3022001-01-12 07:51:05 +000064#ifndef DISABLE_BROWSER
Rocco Corsi12f294c2001-04-14 06:50:24 +000065extern shortcut browser_list[BROWSER_LIST_LEN], gotodir_list[GOTODIR_LIST_LEN];
Chris Allegrettaf4b96012001-01-03 07:11:47 +000066#endif
Chris Allegretta6b58acd2001-04-12 03:01:53 +000067extern shortcut *currshortcut;
Chris Allegretta805c26d2000-09-06 13:39:17 +000068
69#ifdef HAVE_REGEX_H
Chris Allegretta9fc8d432000-07-07 01:49:52 +000070extern int use_regexp, regexp_compiled;
71extern regex_t search_regexp;
72extern regmatch_t regmatches[10];
Chris Allegretta805c26d2000-09-06 13:39:17 +000073#endif
74
Chris Allegretta756f2202000-09-01 13:32:47 +000075extern toggle toggles[TOGGLE_LEN];
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000076
77/* Programs we want available */
78
Chris Allegrettae4933a32001-06-13 02:35:44 +000079char *revstrstr(char *haystack, char *needle, char *rev_start);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000080char *strcasestr(char *haystack, char *needle);
Chris Allegrettae4933a32001-06-13 02:35:44 +000081char *revstrcasestr(char *haystack, char *needle, char *rev_start);
82char *strstrwrapper(char *haystack, char *needle, char *rev_start);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000083int search_init(int replacing);
84int renumber(filestruct * fileptr);
85int free_filestruct(filestruct * src);
86int xplustabs(void);
87int do_yesno(int all, int leavecursor, char *msg, ...);
88int actual_x(filestruct * fileptr, int xplus);
89int strlenpt(char *buf);
Chris Allegretta7da4e9f2000-11-06 02:57:22 +000090int statusq(int allowtabs, shortcut s[], int slen, char *def, char *msg, ...);
Chris Allegrettaecc3d7f2001-06-05 23:24:55 +000091int write_file(char *name, int tmpfile, int append, int nonamechange);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000092int do_cut_text(void);
93int do_uncut_text(void);
94int no_help(void);
Chris Allegrettabceb1b22000-06-19 04:22:15 +000095int renumber_all(void);
96int open_file(char *filename, int insert, int quiet);
Chris Allegretta2d7893d2001-07-11 02:08:33 +000097int do_insertfile(int loading_file);
98
99#ifdef ENABLE_LOADONINSERT
100int add_open_file(int update, int dup_fix);
101#endif
102
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000103int do_writeout(char *path, int exiting, int append);
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000104int do_gotoline(long line, int save_pos);
Chris Allegretta27eb13f2000-11-05 16:52:21 +0000105int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
106 int wholewords, int *i);
Chris Allegrettabceb1b22000-06-19 04:22:15 +0000107/* Now in move.c */
108int do_up(void);
109int do_down(void);
110int do_left(void);
111int do_right(void);
Chris Allegretta04d848e2000-11-05 17:54:41 +0000112int check_wildcard_match(const char *text, const char *pattern);
Chris Allegrettabe77c612000-11-24 14:00:16 +0000113
Chris Allegrettab5b89ae2000-11-14 18:25:26 +0000114char *input_tab(char *buf, int place, int *lastWasTab, int *newplace);
Chris Allegrettabe77c612000-11-24 14:00:16 +0000115char *real_dir_from_tilde(char *buf);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000116
Chris Allegretta07798352000-11-27 22:58:23 +0000117void shortcut_init(int unjustify);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000118void lowercase(char *src);
119void blank_bottombars(void);
Robert Siemborski3f8c7a82000-06-07 04:24:02 +0000120void check_wrap(filestruct * inptr, char ch);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000121void dump_buffer(filestruct * inptr);
122void align(char **strp);
Chris Allegrettaf1d33d32000-08-19 03:53:39 +0000123void edit_refresh(void), edit_refresh_clearok(void);
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000124void edit_update(filestruct * fileptr, int topmidbotnone);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000125void update_cursor(void);
126void delete_node(filestruct * fileptr);
127void set_modified(void);
128void dump_buffer_reverse(filestruct * inptr);
129void reset_cursor(void);
130void check_statblank(void);
131void update_line(filestruct * fileptr, int index);
Robert Siemborskidd53ec22000-07-04 02:35:19 +0000132void fix_editbot(void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000133void statusbar(char *msg, ...);
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000134void blank_statusbar(void);
135void titlebar(char *path);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000136void previous_line(void);
137void center_cursor(void);
138void bottombars(shortcut s[], int slen);
139void blank_statusbar_refresh(void);
140void *nmalloc (size_t howmuch);
Chris Allegretta150469a2001-01-05 21:13:14 +0000141void *mallocstrcpy(char *dest, char *src);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000142void wrap_reset(void);
143void display_main_list(void);
144void nano_small_msg(void);
Chris Allegretta3bc8c722000-12-10 17:03:25 +0000145void nano_disable_msg(void);
Chris Allegrettabceb1b22000-06-19 04:22:15 +0000146void do_early_abort(void);
147void *nmalloc(size_t howmuch);
148void *nrealloc(void *ptr, size_t howmuch);
149void die(char *msg, ...);
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000150void die_save_file(char *die_filename);
Chris Allegrettabceb1b22000-06-19 04:22:15 +0000151void new_file(void);
Robert Siemborski63b3d7e2000-07-04 22:15:39 +0000152void new_magicline(void);
Chris Allegrettae3167732001-03-18 16:59:34 +0000153void splice_node(filestruct *begin, filestruct *newnode, filestruct *end);
Chris Allegretta29d90252000-07-28 01:48:43 +0000154void null_at(char *data, int index);
Chris Allegretta145a0452000-07-31 12:51:00 +0000155void page_up_center(void);
Chris Allegretta04d848e2000-11-05 17:54:41 +0000156void blank_edit(void);
Chris Allegretta27eb13f2000-11-05 16:52:21 +0000157void search_init_globals(void);
158void replace_abort(void);
Chris Allegretta9149e612000-11-27 00:23:41 +0000159void add_to_cutbuffer(filestruct * inptr);
Chris Allegrettad00e6df2000-11-29 04:33:26 +0000160void do_replace_highlight(int highlight_flag, char *word);
Chris Allegretta65121632000-12-18 07:05:27 +0000161void nano_disabled_msg(void);
Chris Allegretta70444892001-01-07 23:02:02 +0000162void window_init(void);
Chris Allegretta6b58acd2001-04-12 03:01:53 +0000163void do_mouse(void);
Chris Allegretta5050aa62001-04-22 07:10:21 +0000164void print_view_warning(void);
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000165void unlink_node(filestruct * fileptr);
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000166void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
167 int bot_x, int destructive);
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000168
Chris Allegretta7a500092001-04-19 21:13:46 +0000169#ifdef ENABLE_NANORC
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000170void do_rcfile(void);
171#endif
172
Chris Allegretta8a0de3b2000-11-24 20:45:14 +0000173#ifdef NANO_EXTRA
Chris Allegretta34318ed2001-01-31 23:22:36 +0000174void do_credits(void);
Chris Allegretta8a0de3b2000-11-24 20:45:14 +0000175#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000176
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000177
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000178int do_writeout_void(void), do_exit(void), do_gotoline_void(void);
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000179int do_insertfile_void(void), do_search(void);
180
181#ifdef ENABLE_LOADONINSERT
182int load_open_file(void), close_open_file(void);
183#endif
184
185int page_up(void), page_down(void);
Chris Allegretta145a0452000-07-31 12:51:00 +0000186int do_cursorpos(void), do_spell(void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000187int do_up(void), do_down (void), do_right(void), do_left (void);
188int do_home(void), do_end(void), total_refresh(void), do_mark(void);
189int do_delete(void), do_backspace(void), do_tab(void), do_justify(void);
190int do_first_line(void), do_last_line(void);
191int do_replace(void), do_help(void), do_enter_void(void);
Chris Allegrettae3167732001-03-18 16:59:34 +0000192int keypad_on(WINDOW * win, int newval);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000193
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000194#ifdef ENABLE_LOADONINSERT
195int open_file_dup_fix(int update);
196int open_prevfile(int closing_file), open_nextfile(int closing_file);
197#endif
198
Chris Allegretta88b09152001-05-17 11:35:43 +0000199char *charalloc (size_t howmuch);
200
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000201#ifdef ENABLE_LOADONINSERT
202char *get_full_path(const char *origpath);
203#endif
204
Rocco Corsiaf5c3022001-01-12 07:51:05 +0000205#ifndef DISABLE_BROWSER
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000206char *do_browser(char *path);
Chris Allegretta150469a2001-01-05 21:13:14 +0000207struct stat filestat(const char *path);
208char *do_browse_from(char *inpath);
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000209#endif
210
Chris Allegretta8ce24132001-04-30 11:28:46 +0000211#ifdef ENABLE_COLOR
212int do_colorinit(void);
213void color_on(WINDOW *win, int whatever);
214void color_off(WINDOW *win, int whatever);
215
216extern colorstruct colors[NUM_NCOLORS];
217#endif /* ENABLE_COLOR */
218
Chris Allegretta08020882001-01-29 23:37:54 +0000219RETSIGTYPE main_loop (int junk);
Chris Allegrettac08f50d2001-01-06 18:12:43 +0000220
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000221filestruct *copy_node(filestruct * src);
222filestruct *copy_filestruct(filestruct * src);
223filestruct *make_new_node(filestruct * prevnode);
Chris Allegretta27eb13f2000-11-05 16:52:21 +0000224filestruct *findnextstr(int quiet, filestruct * begin,
225 int beginx, char *needle);
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000226
227#ifdef ENABLE_LOADONINSERT
228filestruct *open_file_dup_search(void);
229#endif