global.c 21.3 KB
Newer Older
Chris Allegretta's avatar
Chris Allegretta committed
1
/* $Id$ */
Chris Allegretta's avatar
Chris Allegretta committed
2
3
4
/**************************************************************************
 *   global.c                                                             *
 *                                                                        *
5
 *   Copyright (C) 1999-2002 Chris Allegretta                             *
Chris Allegretta's avatar
Chris Allegretta committed
6
7
 *   This program is free software; you can redistribute it and/or modify *
 *   it under the terms of the GNU General Public License as published by *
8
 *   the Free Software Foundation; either version 2, or (at your option)  *
Chris Allegretta's avatar
Chris Allegretta committed
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 *   any later version.                                                   *
 *                                                                        *
 *   This program 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.                         *
 *                                                                        *
 *   You should have received a copy of the GNU General Public License    *
 *   along with this program; if not, write to the Free Software          *
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.            *
 *                                                                        *
 **************************************************************************/

#include "config.h"
23
24

#include <sys/stat.h>
Chris Allegretta's avatar
Chris Allegretta committed
25
26
27
28
29
30
31
32
33
34
35
36
37
#include "nano.h"
#include "proto.h"

#ifndef NANO_SMALL
#include <libintl.h>
#define _(string) gettext(string)
#else
#define _(string) (string)
#endif

/*
 * Global variables
 */
38
int flags = 0;			/* Our new flag containing many options */
Chris Allegretta's avatar
Chris Allegretta committed
39
40
41
WINDOW *edit;			/* The file portion of the editor  */
WINDOW *topwin;			/* Top line of screen */
WINDOW *bottomwin;		/* Bottom buffer */
Chris Allegretta's avatar
Chris Allegretta committed
42
char *filename = NULL;		/* Name of the file */
Chris Allegretta's avatar
Chris Allegretta committed
43
44
45
46
47
48
49
50
51
52
53
54
55
56
int editwinrows = 0;		/* How many rows long is the edit
				   window? */
filestruct *current;		/* Current buffer pointer */
int current_x = 0, current_y = 0;	/* Current position of X and Y in
					   the editor - relative to edit
					   window (0,0) */
filestruct *fileage = NULL;	/* Our file buffer */
filestruct *edittop = NULL;	/* Pointer to the top of the edit
				   buffer with respect to the
				   file struct */
filestruct *editbot = NULL;	/* Same for the bottom */
filestruct *filebot = NULL;	/* Last node in the file struct */
filestruct *cutbuffer = NULL;	/* A place to store cut text */

57
#ifdef ENABLE_MULTIBUFFER
58
59
60
filestruct *open_files = NULL;	/* The list of open files */
#endif

61
char *answer = NULL;			/* Answer str to many questions */
Chris Allegretta's avatar
Chris Allegretta committed
62
int totlines = 0;		/* Total number of lines in the file */
63
long totsize = 0;		/* Total number of bytes in the file */
64
int placewewant = 0;		/* The column we'd like the cursor
Chris Allegretta's avatar
Chris Allegretta committed
65
66
67
				   to jump to when we go to the
				   next or previous line */

68
69
int tabsize = 8;		/* Our internal tabsize variable */

Chris Allegretta's avatar
Chris Allegretta committed
70
71
72
73
74
75
76
77
char *hblank;			/* A horizontal blank line */
char *help_text;		/* The text in the help window */

/* More stuff for the marker select */

filestruct *mark_beginbuf;	/* the begin marker buffer */
int mark_beginx;		/* X value in the string to start */

78
79
80
81
82
#ifndef DISABLE_OPERATINGDIR
char *operating_dir = NULL;	/* Operating directory, which we can't go
				   higher than */
#endif

83
84
85
86
#ifndef DISABLE_SPELLER
char *alt_speller;		/* Alternative spell command */
#endif

Chris Allegretta's avatar
Chris Allegretta committed
87
88
89
shortcut main_list[MAIN_LIST_LEN];
shortcut whereis_list[WHEREIS_LIST_LEN];
shortcut replace_list[REPLACE_LIST_LEN];
90
shortcut replace_list_2[REPLACE_LIST_LEN]; /* 2nd half of replace dialog */
Chris Allegretta's avatar
Chris Allegretta committed
91
shortcut goto_list[GOTO_LIST_LEN];
Rocco Corsi's avatar
   
Rocco Corsi committed
92
shortcut gotodir_list[GOTODIR_LIST_LEN];
Chris Allegretta's avatar
Chris Allegretta committed
93
shortcut writefile_list[WRITEFILE_LIST_LEN];
94
shortcut insertfile_list[INSERTFILE_LIST_LEN];
Chris Allegretta's avatar
Chris Allegretta committed
95
96
shortcut help_list[HELP_LIST_LEN];
shortcut spell_list[SPELL_LIST_LEN];
97
#ifndef DISABLE_BROWSER
Chris Allegretta's avatar
Chris Allegretta committed
98
99
100
shortcut browser_list[BROWSER_LIST_LEN];
#endif

101
102
#ifdef ENABLE_COLOR
    colorstruct colors[NUM_NCOLORS];
103
    colortype *colorstrings = NULL;
104
105
#endif

106
#if !defined(DISABLE_BROWSER) || !defined(DISABLE_MOUSE) || !defined (DISABLE_HELP)
107
108
shortcut *currshortcut = main_list;	/* Current shortcut list we're using */
int currslen = MAIN_VISIBLE;		/* Length of current shortcut list */
109
#endif
110

111
#ifndef NANO_SMALL
112
toggle toggles[TOGGLE_LEN];
113
#endif
Chris Allegretta's avatar
Chris Allegretta committed
114

115
116
/* Regular expressions */

117
#ifdef HAVE_REGEX_H
118
119
120
regex_t search_regexp;		/* Global to store compiled search regexp */
regmatch_t regmatches[10];	/* Match positions for parenthetical
				   subexpressions, max of 10 */
121
#endif
122

Chris Allegretta's avatar
Chris Allegretta committed
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/* Initialize a struct *without* our lovely braces =( */
void sc_init_one(shortcut * s, int key, char *desc, char *help, int alt,
		 int misc1, int misc2, int view, int (*func) (void))
{
    s->val = key;
    s->desc = desc;
    s->help = help;
    s->altval = alt;
    s->misc1 = misc1;
    s->misc2 = misc2;
    s->viewok = view;
    s->func = func;
}

137
#ifndef NANO_SMALL
138
/* Initialize the toggles in the same manner */
139
140
void toggle_init_one(toggle * t, int val, char *desc, int flag,
		     char override_ch)
141
142
143
144
{
    t->val = val;
    t->desc = desc;
    t->flag = flag;
145
    t->override_ch = override_ch;
146
}
147
#endif
148
149
150
151
152
153

void toggle_init(void)
{
#ifndef NANO_SMALL
    char *toggle_const_msg, *toggle_autoindent_msg, *toggle_suspend_msg,
	*toggle_nohelp_msg, *toggle_picomode_msg, *toggle_mouse_msg,
154
	*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg, 
155
156
	*toggle_backwards_msg, *toggle_dos_msg, *toggle_mac_msg,
	*toggle_smooth_msg;
157

158
#ifdef ENABLE_MULTIBUFFER
159
160
161
    char *toggle_load_msg, *nano_openprev_msg, *nano_opennext_msg;
#endif

162
#ifdef HAVE_REGEX_H
163
    char *toggle_regexp_msg;
164
#endif
165

166

167
    toggle_const_msg = _("Constant cursor position");
168
    toggle_autoindent_msg = _("Auto indent");
169
    toggle_suspend_msg = _("Suspend");
170
    toggle_nohelp_msg = _("Help mode");
171
    toggle_picomode_msg = _("Pico mode");
172
173
    toggle_mouse_msg = _("Mouse support");
    toggle_cuttoend_msg = _("Cut to end");
174
175
    toggle_backwards_msg = _("Backwards search");
    toggle_case_msg = _("Case sensitive search");
176
    toggle_dos_msg = _("Writing file in DOS format");
177
    toggle_mac_msg = _("Writing file in Mac format");
178
179
    toggle_smooth_msg = _("Smooth scrolling");

180
#ifdef HAVE_REGEX_H
181
    toggle_regexp_msg = _("Regular expressions");
182
#endif
183
    toggle_wrap_msg = _("Auto wrap");
184

185
186
#ifdef ENABLE_MULTIBUFFER
    toggle_load_msg = _("Multiple file buffers");
187
188
189
190
    nano_openprev_msg = _("Open previously loaded file");
    nano_opennext_msg = _("Open next loaded file");
#endif

191
    toggle_init_one(&toggles[0], TOGGLE_CONST_KEY, toggle_const_msg,
192
		    CONSTUPDATE, 0);
193
    toggle_init_one(&toggles[1], TOGGLE_AUTOINDENT_KEY,
194
		    toggle_autoindent_msg, AUTOINDENT, 0);
195
    toggle_init_one(&toggles[2], TOGGLE_SUSPEND_KEY, toggle_suspend_msg,
196
		    SUSPEND, 0);
197
    toggle_init_one(&toggles[3], TOGGLE_NOHELP_KEY, toggle_nohelp_msg,
198
		    NO_HELP, 0);
199
    toggle_init_one(&toggles[4], TOGGLE_PICOMODE_KEY, toggle_picomode_msg,
200
		    PICO_MODE, 0);
201
    toggle_init_one(&toggles[5], TOGGLE_WRAP_KEY, toggle_wrap_msg,
202
		    NO_WRAP, 0);
203
    toggle_init_one(&toggles[6], TOGGLE_MOUSE_KEY, toggle_mouse_msg,
204
		    USE_MOUSE, 0);
205
    toggle_init_one(&toggles[7], TOGGLE_CUTTOEND_KEY, toggle_cuttoend_msg,
206
		    CUT_TO_END, 0);
207
    toggle_init_one(&toggles[8], TOGGLE_BACKWARDS_KEY, toggle_backwards_msg,
208
		    REVERSE_SEARCH, 0);
209
    toggle_init_one(&toggles[9], TOGGLE_CASE_KEY, toggle_case_msg,
210
		    CASE_SENSITIVE, 0);
211
212
    toggle_init_one(&toggles[10], TOGGLE_DOS_KEY, toggle_dos_msg,
		    DOS_FILE, 0);
213
214
    toggle_init_one(&toggles[11], TOGGLE_MAC_KEY, toggle_mac_msg,
		    MAC_FILE, 0);
215
216
    toggle_init_one(&toggles[12], TOGGLE_SMOOTH_KEY, toggle_smooth_msg,
		    SMOOTHSCROLL, 0);
217

218
#ifdef ENABLE_MULTIBUFFER
219
    toggle_init_one(&toggles[13], TOGGLE_LOAD_KEY, toggle_load_msg,
220
		    MULTIBUFFER, 0);
221
    toggle_init_one(&toggles[14], NANO_OPENPREV_KEY, nano_openprev_msg,
222
		    0, '<');
223
    toggle_init_one(&toggles[15], NANO_OPENNEXT_KEY, nano_opennext_msg,
224
225
226
		    0, '>');
#endif

227
#ifdef HAVE_REGEX_H
228
229
    toggle_init_one(&toggles[TOGGLE_LEN - 1], TOGGLE_REGEXP_KEY,
		    toggle_regexp_msg, USE_REGEXP, 0);
230
#endif
231
#endif
232
233
}

234
void shortcut_init(int unjustify)
Chris Allegretta's avatar
Chris Allegretta committed
235
236
237
238
239
240
241
242
243
244
245
246
{
    char *nano_help_msg = "", *nano_writeout_msg = "", *nano_exit_msg = "",
	*nano_goto_msg = "", *nano_justify_msg = "", *nano_replace_msg =
	"", *nano_insert_msg = "", *nano_whereis_msg =
	"", *nano_prevpage_msg = "", *nano_nextpage_msg =
	"", *nano_cut_msg = "", *nano_uncut_msg = "", *nano_cursorpos_msg =
	"", *nano_spell_msg = "", *nano_up_msg = "", *nano_down_msg =
	"", *nano_forward_msg = "", *nano_back_msg = "", *nano_home_msg =
	"", *nano_end_msg = "", *nano_firstline_msg =
	"", *nano_lastline_msg = "", *nano_refresh_msg =
	"", *nano_mark_msg = "", *nano_delete_msg =
	"", *nano_backspace_msg = "", *nano_tab_msg =
247
248
	"", *nano_enter_msg = "", *nano_cancel_msg = 
	"", *nano_unjustify_msg = "", *nano_append_msg = ""; 
Chris Allegretta's avatar
Chris Allegretta committed
249
250

#ifndef NANO_SMALL
251
    char *nano_tofiles_msg = "", *nano_gotodir_msg = "", *nano_case_msg =
252
253
254
255
	"", *nano_reverse_msg = "";
#ifdef HAVE_REGEX_H
    char *nano_regexp_msg = "", *nano_bracket_msg = "";
#endif
256

Chris Allegretta's avatar
Chris Allegretta committed
257
258
    nano_help_msg = _("Invoke the help menu");
    nano_writeout_msg = _("Write the current file to disk");
259

260
#ifdef ENABLE_MULTIBUFFER
261
262
    nano_exit_msg = _("Close currently loaded file/Exit from nano");
#else
Chris Allegretta's avatar
Chris Allegretta committed
263
    nano_exit_msg = _("Exit from nano");
264
265
#endif

Chris Allegretta's avatar
Chris Allegretta committed
266
267
    nano_goto_msg = _("Goto a specific line number");
    nano_justify_msg = _("Justify the current paragraph");
268
    nano_unjustify_msg = _("Unjustify after a justify");
Chris Allegretta's avatar
Chris Allegretta committed
269
270
271
272
273
274
275
    nano_replace_msg = _("Replace text within the editor");
    nano_insert_msg = _("Insert another file into the current one");
    nano_whereis_msg = _("Search for text within the editor");
    nano_prevpage_msg = _("Move to the previous screen");
    nano_nextpage_msg = _("Move to the next screen");
    nano_cut_msg = _("Cut the current line and store it in the cutbuffer");
    nano_uncut_msg = _("Uncut from the cutbuffer into the current line");
276
    nano_cursorpos_msg = _("Show the position of the cursor");
Chris Allegretta's avatar
Chris Allegretta committed
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
    nano_spell_msg = _("Invoke the spell checker (if available)");
    nano_up_msg = _("Move up one line");
    nano_down_msg = _("Move down one line");
    nano_forward_msg = _("Move forward one character");
    nano_back_msg = _("Move back one character");
    nano_home_msg = _("Move to the beginning of the current line");
    nano_end_msg = _("Move to the end of the current line");
    nano_firstline_msg = _("Go to the first line of the file");
    nano_lastline_msg = _("Go to the last line of the file");
    nano_refresh_msg = _("Refresh (redraw) the current screen");
    nano_mark_msg = _("Mark text at the current cursor location");
    nano_delete_msg = _("Delete the character under the cursor");
    nano_backspace_msg =
	_("Delete the character to the left of the cursor");
    nano_tab_msg = _("Insert a tab character");
    nano_enter_msg = _("Insert a carriage return at the cursor position");
    nano_case_msg =
	_("Make the current search or replace case (in)sensitive");
Chris Allegretta's avatar
Chris Allegretta committed
295
    nano_tofiles_msg = _("Go to file browser");
Rocco Corsi's avatar
   
Rocco Corsi committed
296
    nano_gotodir_msg = _("Goto Directory");
Chris Allegretta's avatar
Chris Allegretta committed
297
    nano_cancel_msg = _("Cancel the current function");
298
    nano_append_msg = _("Append to the current file");
299
    nano_reverse_msg = _("Search backwards");
300
#ifdef HAVE_REGEX_H
301
302
    nano_regexp_msg = _("Use Regular expressions");
    nano_bracket_msg = _("Find other bracket");
303
#endif
Chris Allegretta's avatar
Chris Allegretta committed
304
305
306
#endif

	sc_init_one(&main_list[0], NANO_HELP_KEY, _("Get Help"),
307
		    nano_help_msg, 0, NANO_HELP_FKEY, 0, VIEW, do_help);
Chris Allegretta's avatar
Chris Allegretta committed
308

309
#ifdef ENABLE_MULTIBUFFER
310
311
312
313
314
315
    if (open_files != NULL && (open_files->prev || open_files->next))
	sc_init_one(&main_list[1], NANO_EXIT_KEY, _("Close"),
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);
    else
#endif
	sc_init_one(&main_list[1], NANO_EXIT_KEY, _("Exit"),
Chris Allegretta's avatar
Chris Allegretta committed
316
317
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);

318
    sc_init_one(&main_list[2], NANO_WRITEOUT_KEY, _("WriteOut"),
Chris Allegretta's avatar
Chris Allegretta committed
319
320
321
		    nano_writeout_msg,
		    0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void);

322
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
323
	sc_init_one(&main_list[3], NANO_JUSTIFY_KEY, _("Justify"),
324
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
325
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
326
    else
327
328
329
330
331
332
333

#ifdef ENABLE_MULTIBUFFER
	/* this is so we can view multiple files */
	sc_init_one(&main_list[3], NANO_INSERTFILE_KEY, _("Read File"),
		nano_insert_msg,
		0, NANO_INSERTFILE_FKEY, 0, VIEW, do_insertfile_void);
#else
334
335
	sc_init_one(&main_list[3], NANO_INSERTFILE_KEY, _("Read File"),
		nano_insert_msg,
336
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
337
#endif
338
339

    if (ISSET(PICO_MODE))
340
341
342
343
344
345
346

#ifdef ENABLE_MULTIBUFFER
	/* this is so we can view multiple files */
	sc_init_one(&main_list[4], NANO_INSERTFILE_KEY, _("Read File"),
		nano_insert_msg,
		0, NANO_INSERTFILE_FKEY, 0, VIEW, do_insertfile_void);
#else
347
	sc_init_one(&main_list[4], NANO_INSERTFILE_KEY, _("Read File"),
Chris Allegretta's avatar
Chris Allegretta committed
348
		nano_insert_msg,
349
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
350
351
#endif

352
353
354
    else
	sc_init_one(&main_list[4], NANO_REPLACE_KEY, _("Replace"),
		    nano_replace_msg,
355
		    NANO_ALT_REPLACE_KEY, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace);
Chris Allegretta's avatar
Chris Allegretta committed
356
357
358
359
360
361
362

    sc_init_one(&main_list[5], NANO_WHEREIS_KEY, _("Where Is"),
		nano_whereis_msg,
		0, NANO_WHEREIS_FKEY, 0, VIEW, do_search);

    sc_init_one(&main_list[6], NANO_PREVPAGE_KEY, _("Prev Page"),
		nano_prevpage_msg,
363
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
Chris Allegretta's avatar
Chris Allegretta committed
364
365
366

    sc_init_one(&main_list[7], NANO_NEXTPAGE_KEY, _("Next Page"),
		nano_nextpage_msg,
367
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
Chris Allegretta's avatar
Chris Allegretta committed
368
369
370
371

    sc_init_one(&main_list[8], NANO_CUT_KEY, _("Cut Text"),
		nano_cut_msg, 0, NANO_CUT_FKEY, 0, NOVIEW, do_cut_text);

372
373
374
375
376
    if (unjustify)
	sc_init_one(&main_list[9], NANO_UNJUSTIFY_KEY, _("UnJustify"),
		nano_unjustify_msg, 0, 0, 0, NOVIEW, do_uncut_text);
    else
	sc_init_one(&main_list[9], NANO_UNCUT_KEY, _("UnCut Txt"),
Chris Allegretta's avatar
Chris Allegretta committed
377
378
379
380
381
		nano_uncut_msg,
		0, NANO_UNCUT_FKEY, 0, NOVIEW, do_uncut_text);

    sc_init_one(&main_list[10], NANO_CURSORPOS_KEY, _("Cur Pos"),
		nano_cursorpos_msg,
382
		0, NANO_CURSORPOS_FKEY, 0, VIEW, do_cursorpos_void);
Chris Allegretta's avatar
Chris Allegretta committed
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409

    sc_init_one(&main_list[11], NANO_SPELL_KEY, _("To Spell"),
		nano_spell_msg, 0, NANO_SPELL_FKEY, 0, NOVIEW, do_spell);


    sc_init_one(&main_list[12], NANO_UP_KEY, _("Up"),
		nano_up_msg, 0, KEY_UP, 0, VIEW, do_up);

    sc_init_one(&main_list[13], NANO_DOWN_KEY, _("Down"),
		nano_down_msg, 0, KEY_DOWN, 0, VIEW, do_down);

    sc_init_one(&main_list[14], NANO_FORWARD_KEY, _("Forward"),
		nano_forward_msg, 0, KEY_RIGHT, 0, VIEW, do_right);

    sc_init_one(&main_list[15], NANO_BACK_KEY, _("Back"),
		nano_back_msg, 0, KEY_LEFT, 0, VIEW, do_left);

    sc_init_one(&main_list[16], NANO_HOME_KEY, _("Home"),
		nano_home_msg, 0, KEY_HOME, 362, VIEW, do_home);

    sc_init_one(&main_list[17], NANO_END_KEY, _("End"),
		nano_end_msg, 0, KEY_END, 385, VIEW, do_end);

    sc_init_one(&main_list[18], NANO_REFRESH_KEY, _("Refresh"),
		nano_refresh_msg, 0, 0, 0, VIEW, total_refresh);

    sc_init_one(&main_list[19], NANO_MARK_KEY, _("Mark Text"),
410
		nano_mark_msg, NANO_ALT_MARK_KEY, 0, 0, NOVIEW, do_mark);
Chris Allegretta's avatar
Chris Allegretta committed
411
412
413
414
415
416
417
418
419
420
421
422

    sc_init_one(&main_list[20], NANO_DELETE_KEY, _("Delete"),
		nano_delete_msg, 0, KEY_DC,
		NANO_CONTROL_D, NOVIEW, do_delete);

    sc_init_one(&main_list[21], NANO_BACKSPACE_KEY, _("Backspace"),
		nano_backspace_msg, 0,
		KEY_BACKSPACE, 127, NOVIEW, do_backspace);

    sc_init_one(&main_list[22], NANO_TAB_KEY, _("Tab"),
		nano_tab_msg, 0, 0, 0, NOVIEW, do_tab);

423
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
424
425
	sc_init_one(&main_list[23], NANO_REPLACE_KEY, _("Replace"),
		    nano_replace_msg,
426
		    NANO_ALT_REPLACE_KEY, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace);
Chris Allegretta's avatar
Chris Allegretta committed
427
428
    else
	sc_init_one(&main_list[23], NANO_JUSTIFY_KEY, _("Justify"),
429
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
430
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
431
432
433
434
435

    sc_init_one(&main_list[24], NANO_ENTER_KEY, _("Enter"),
		nano_enter_msg,
		0, KEY_ENTER, NANO_CONTROL_M, NOVIEW, do_enter_void);

436
437
    sc_init_one(&main_list[25], NANO_GOTO_KEY, _("Goto Line"),
		    nano_goto_msg,
438
		    NANO_ALT_GOTO_KEY, NANO_GOTO_FKEY, 0, VIEW, do_gotoline_void);
439

440
#if (!defined NANO_SMALL) && (defined HAVE_REGEX_H)
441
    sc_init_one(&main_list[26], -9, _("Find Other Bracket"),
442
443
444
		    nano_bracket_msg,
		    NANO_BRACKET_KEY, 0, 0, VIEW, do_find_bracket);
#endif
Chris Allegretta's avatar
Chris Allegretta committed
445

446
447
448
449
450
451
452
453

    sc_init_one(&whereis_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);

    sc_init_one(&whereis_list[1], NANO_CANCEL_KEY,
		_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);

    sc_init_one(&whereis_list[2], NANO_FIRSTLINE_KEY, _("First Line"),
Chris Allegretta's avatar
Chris Allegretta committed
454
455
		nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);

456
    sc_init_one(&whereis_list[3], NANO_LASTLINE_KEY, _("Last Line"),
Chris Allegretta's avatar
Chris Allegretta committed
457
458
		nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);

459
    sc_init_one(&whereis_list[4], NANO_OTHERSEARCH_KEY, _("Replace"),
Chris Allegretta's avatar
Chris Allegretta committed
460
461
		nano_replace_msg, 0, 0, 0, VIEW, do_replace);

462
    sc_init_one(&whereis_list[5], NANO_FROMSEARCHTOGOTO_KEY,
463
464
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
465

466
#ifndef NANO_SMALL
467
    sc_init_one(&whereis_list[6], TOGGLE_CASE_KEY, _("Case Sens"),
468
469
		nano_case_msg, 0, 0, 0, VIEW, 0);

470
    sc_init_one(&whereis_list[7], TOGGLE_BACKWARDS_KEY, _("Direction"),
Chris Allegretta's avatar
Chris Allegretta committed
471
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
Chris Allegretta's avatar
Chris Allegretta committed
472

473
#ifdef HAVE_REGEX_H
474
    sc_init_one(&whereis_list[REPLACE_LIST_LEN - 1], TOGGLE_REGEXP_KEY,
475
		_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
476
#endif
477
478
479
#endif /* NANO_SMALL */


480
481
482
483
484
    sc_init_one(&replace_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);

    sc_init_one(&replace_list[1], NANO_CANCEL_KEY,
		_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
Chris Allegretta's avatar
Chris Allegretta committed
485

486
    sc_init_one(&replace_list[2], NANO_FIRSTLINE_KEY, _("First Line"),
Chris Allegretta's avatar
Chris Allegretta committed
487
488
		nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);

489
    sc_init_one(&replace_list[3], NANO_LASTLINE_KEY, _("Last Line"),
Chris Allegretta's avatar
Chris Allegretta committed
490
491
		nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);

492
    sc_init_one(&replace_list[4], NANO_OTHERSEARCH_KEY, _("No Replace"),
Chris Allegretta's avatar
Chris Allegretta committed
493
494
		nano_whereis_msg, 0, 0, 0, VIEW, do_search);

495
    sc_init_one(&replace_list[5], NANO_FROMSEARCHTOGOTO_KEY,
496
497
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
498

499
#ifndef NANO_SMALL
500
    sc_init_one(&replace_list[6], TOGGLE_CASE_KEY, _("Case Sens"),
501
502
		nano_case_msg, 0, 0, 0, VIEW, 0);

503
    sc_init_one(&replace_list[7], TOGGLE_BACKWARDS_KEY, _("Direction"),
Chris Allegretta's avatar
Chris Allegretta committed
504
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
505

506
#ifdef HAVE_REGEX_H
507
    sc_init_one(&replace_list[REPLACE_LIST_LEN - 1], TOGGLE_REGEXP_KEY, 
508
		_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
509
#endif
510
511
#endif /* NANO_SMALL */

512

513
514
515
516
517
    sc_init_one(&replace_list_2[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);

    sc_init_one(&replace_list_2[1], NANO_CANCEL_KEY,
		_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
518

519
    sc_init_one(&replace_list_2[2], NANO_FIRSTLINE_KEY, _("First Line"),
520
521
		nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);

522
    sc_init_one(&replace_list_2[3], NANO_LASTLINE_KEY, _("Last Line"),
523
524
		nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);

Chris Allegretta's avatar
Chris Allegretta committed
525

526
527
528
529
530
    sc_init_one(&goto_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);

    sc_init_one(&goto_list[1], NANO_CANCEL_KEY, _("Cancel"),
		nano_cancel_msg, 0, 0, 0, VIEW, 0);
Chris Allegretta's avatar
Chris Allegretta committed
531

532
    sc_init_one(&goto_list[2], NANO_FIRSTLINE_KEY, _("First Line"),
Chris Allegretta's avatar
Chris Allegretta committed
533
534
		nano_firstline_msg, 0, 0, 0, VIEW, &do_first_line);

535
    sc_init_one(&goto_list[3], NANO_LASTLINE_KEY, _("Last Line"),
Chris Allegretta's avatar
Chris Allegretta committed
536
537
538
539
540
		nano_lastline_msg, 0, 0, 0, VIEW, &do_last_line);


    sc_init_one(&help_list[0], NANO_PREVPAGE_KEY, _("Prev Page"),
		nano_prevpage_msg,
541
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
Chris Allegretta's avatar
Chris Allegretta committed
542
543
544

    sc_init_one(&help_list[1], NANO_NEXTPAGE_KEY, _("Next Page"),
		nano_nextpage_msg,
545
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
Chris Allegretta's avatar
Chris Allegretta committed
546
547
548
549
550

    sc_init_one(&help_list[2], NANO_EXIT_KEY, _("Exit"),
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);


551
552
553
554
555
556
    sc_init_one(&writefile_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);

    sc_init_one(&writefile_list[1], NANO_CANCEL_KEY, _("Cancel"),
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

557
#ifndef DISABLE_BROWSER
558
    sc_init_one(&writefile_list[2], NANO_TOFILES_KEY, _("To Files"),
Chris Allegretta's avatar
Chris Allegretta committed
559
560
		nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif
Chris Allegretta's avatar
Chris Allegretta committed
561

562
    sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 1], NANO_APPEND_KEY, _("Append"),
563
564
		nano_append_msg, 0, 0, 0, NOVIEW, 0);

565
566
567
568
    sc_init_one(&insertfile_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);

    sc_init_one(&insertfile_list[1], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
569
570
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

571
#ifndef DISABLE_BROWSER
572
    sc_init_one(&insertfile_list[2], NANO_TOFILES_KEY, _("To Files"),
573
574
575
		nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif

576
577
    sc_init_one(&spell_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
578

579
    sc_init_one(&spell_list[1], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
580
581
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

582

583
#ifndef DISABLE_BROWSER
584
585
586
587
588
589
590
    sc_init_one(&browser_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);

    sc_init_one(&browser_list[1], NANO_EXIT_KEY, _("Exit"),
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0);

    sc_init_one(&browser_list[2], NANO_PREVPAGE_KEY, _("Prev Page"),
Chris Allegretta's avatar
Chris Allegretta committed
591
592
593
		nano_prevpage_msg,
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, 0);

594
    sc_init_one(&browser_list[3], NANO_NEXTPAGE_KEY, _("Next Page"),
Chris Allegretta's avatar
Chris Allegretta committed
595
596
597
		nano_nextpage_msg,
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, 0);

598
    sc_init_one(&browser_list[4], NANO_GOTO_KEY, _("Goto"),
599
600
		nano_gotodir_msg, NANO_ALT_GOTO_KEY, NANO_GOTO_FKEY, 0, 
		VIEW, 0);
Rocco Corsi's avatar
   
Rocco Corsi committed
601

602
603
    sc_init_one(&gotodir_list[0], NANO_HELP_KEY,
		_("Get Help"), nano_help_msg, 0, 0, 0, VIEW, do_help);
Chris Allegretta's avatar
Chris Allegretta committed
604

605
    sc_init_one(&gotodir_list[1], NANO_CANCEL_KEY, _("Cancel"),
Rocco Corsi's avatar
   
Rocco Corsi committed
606
607
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

Chris Allegretta's avatar
Chris Allegretta committed
608
609
610
#endif


611
    toggle_init();
Chris Allegretta's avatar
Chris Allegretta committed
612
}