global.c 18.9 KB
Newer Older
Chris Allegretta's avatar
Chris Allegretta committed
1
/* $Id$ */
Chris Allegretta's avatar
Chris Allegretta committed
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
/**************************************************************************
 *   global.c                                                             *
 *                                                                        *
 *   Copyright (C) 1999 Chris Allegretta                                  *
 *   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 *
 *   the Free Software Foundation; either version 1, or (at your option)  *
 *   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
63
int totlines = 0;		/* Total number of lines in the file */
int 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
#ifndef DISABLE_SPELLER
char *alt_speller;		/* Alternative spell command */
#endif

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

96
97
98
99
#ifdef ENABLE_COLOR
    colorstruct colors[NUM_NCOLORS];
#endif

100
#ifndef DISABLE_MOUSE
101
102
shortcut *currshortcut = main_list;	/* Current shortcut list we're using */
int currslen = MAIN_VISIBLE;		/* Length of current shortcut list */
103
#endif
104

105
#ifndef NANO_SMALL
106
toggle toggles[TOGGLE_LEN];
107
#endif
Chris Allegretta's avatar
Chris Allegretta committed
108

109
110
/* Regular expressions */

111
#ifdef HAVE_REGEX_H
112
113
114
regex_t search_regexp;		/* Global to store compiled search regexp */
regmatch_t regmatches[10];	/* Match positions for parenthetical
				   subexpressions, max of 10 */
115
#endif
116

Chris Allegretta's avatar
Chris Allegretta committed
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* 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;
}

131
#ifndef NANO_SMALL
132
/* Initialize the toggles in the same manner */
133
134
void toggle_init_one(toggle * t, int val, char *desc, int flag,
		     char override_ch)
135
136
137
138
{
    t->val = val;
    t->desc = desc;
    t->flag = flag;
139
    t->override_ch = override_ch;
140
}
141
#endif
142
143
144
145
146
147

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,
148
149
	*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg, 
	*toggle_backwards_msg;
150

151
#ifdef ENABLE_MULTIBUFFER
152
153
154
    char *toggle_load_msg, *nano_openprev_msg, *nano_opennext_msg;
#endif

155
#ifdef HAVE_REGEX_H
156
    char *toggle_regexp_msg;
157
#endif
158
159

    toggle_const_msg = _("Constant cursor position");
160
    toggle_autoindent_msg = _("Auto indent");
161
    toggle_suspend_msg = _("Suspend");
162
    toggle_nohelp_msg = _("Help mode");
163
    toggle_picomode_msg = _("Pico mode");
164
165
    toggle_mouse_msg = _("Mouse support");
    toggle_cuttoend_msg = _("Cut to end");
166
167
    toggle_backwards_msg = _("Backwards Search");
    toggle_case_msg = _("Case Sensitive Search");
168
#ifdef HAVE_REGEX_H
169
    toggle_regexp_msg = _("Regular expressions");
170
#endif
171
    toggle_wrap_msg = _("Auto wrap");
172

173
174
#ifdef ENABLE_MULTIBUFFER
    toggle_load_msg = _("Multiple file buffers");
175
176
177
178
    nano_openprev_msg = _("Open previously loaded file");
    nano_opennext_msg = _("Open next loaded file");
#endif

179
    toggle_init_one(&toggles[0], TOGGLE_CONST_KEY, toggle_const_msg,
180
		    CONSTUPDATE, 0);
181
    toggle_init_one(&toggles[1], TOGGLE_AUTOINDENT_KEY,
182
		    toggle_autoindent_msg, AUTOINDENT, 0);
183
    toggle_init_one(&toggles[2], TOGGLE_SUSPEND_KEY, toggle_suspend_msg,
184
		    SUSPEND, 0);
185
    toggle_init_one(&toggles[3], TOGGLE_NOHELP_KEY, toggle_nohelp_msg,
186
		    NO_HELP, 0);
187
    toggle_init_one(&toggles[4], TOGGLE_PICOMODE_KEY, toggle_picomode_msg,
188
		    PICO_MODE, 0);
189
    toggle_init_one(&toggles[5], TOGGLE_WRAP_KEY, toggle_wrap_msg,
190
		    NO_WRAP, 0);
191
    toggle_init_one(&toggles[6], TOGGLE_MOUSE_KEY, toggle_mouse_msg,
192
		    USE_MOUSE, 0);
193
    toggle_init_one(&toggles[7], TOGGLE_CUTTOEND_KEY, toggle_cuttoend_msg,
194
		    CUT_TO_END, 0);
195
    toggle_init_one(&toggles[8], TOGGLE_BACKWARDS_KEY, toggle_backwards_msg,
196
		    REVERSE_SEARCH, 0);
197
    toggle_init_one(&toggles[9], TOGGLE_CASE_KEY, toggle_case_msg,
198
199
		    CASE_SENSITIVE, 0);

200
#ifdef ENABLE_MULTIBUFFER
201
    toggle_init_one(&toggles[10], TOGGLE_LOAD_KEY, toggle_load_msg,
202
		    MULTIBUFFER, 0);
203
204
205
206
207
208
    toggle_init_one(&toggles[11], NANO_OPENPREV_KEY, nano_openprev_msg,
		    0, '<');
    toggle_init_one(&toggles[12], NANO_OPENNEXT_KEY, nano_opennext_msg,
		    0, '>');
#endif

209
#ifdef HAVE_REGEX_H
210
211
    toggle_init_one(&toggles[TOGGLE_LEN - 1], TOGGLE_REGEXP_KEY,
		    toggle_regexp_msg, USE_REGEXP, 0);
212
#endif
213
#endif
214
215
}

216
void shortcut_init(int unjustify)
Chris Allegretta's avatar
Chris Allegretta committed
217
218
219
220
221
222
223
224
225
226
227
228
{
    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 =
229
230
	"", *nano_enter_msg = "", *nano_cancel_msg = 
	"", *nano_unjustify_msg = "", *nano_append_msg = ""; 
Chris Allegretta's avatar
Chris Allegretta committed
231
232

#ifndef NANO_SMALL
233
234
    char *nano_tofiles_msg = "", *nano_gotodir_msg = "", *nano_case_msg =
	"", *nano_reverse_msg = "", *nano_regexp_msg = "";
235

Chris Allegretta's avatar
Chris Allegretta committed
236
237
    nano_help_msg = _("Invoke the help menu");
    nano_writeout_msg = _("Write the current file to disk");
238

239
#ifdef ENABLE_MULTIBUFFER
240
241
    nano_exit_msg = _("Close currently loaded file/Exit from nano");
#else
Chris Allegretta's avatar
Chris Allegretta committed
242
    nano_exit_msg = _("Exit from nano");
243
244
#endif

Chris Allegretta's avatar
Chris Allegretta committed
245
246
    nano_goto_msg = _("Goto a specific line number");
    nano_justify_msg = _("Justify the current paragraph");
247
    nano_unjustify_msg = _("Unjustify after a justify");
Chris Allegretta's avatar
Chris Allegretta committed
248
249
250
251
252
253
254
    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");
255
    nano_cursorpos_msg = _("Show the position of the cursor");
Chris Allegretta's avatar
Chris Allegretta committed
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
    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
274
    nano_tofiles_msg = _("Go to file browser");
Rocco Corsi's avatar
   
Rocco Corsi committed
275
    nano_gotodir_msg = _("Goto Directory");
Chris Allegretta's avatar
Chris Allegretta committed
276
    nano_cancel_msg = _("Cancel the current function");
277
    nano_append_msg = _("Append to the current file");
Chris Allegretta's avatar
Chris Allegretta committed
278
    nano_reverse_msg = _("Search Backwards");
279
    nano_regexp_msg = _("Use Regular Expressions");
Chris Allegretta's avatar
Chris Allegretta committed
280
281
282
#endif

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

285
#ifdef ENABLE_MULTIBUFFER
286
287
288
289
290
291
    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
292
293
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);

294
    sc_init_one(&main_list[2], NANO_WRITEOUT_KEY, _("WriteOut"),
Chris Allegretta's avatar
Chris Allegretta committed
295
296
297
		    nano_writeout_msg,
		    0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void);

298
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
299
	sc_init_one(&main_list[3], NANO_JUSTIFY_KEY, _("Justify"),
300
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
301
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
302
    else
303
304
	sc_init_one(&main_list[3], NANO_INSERTFILE_KEY, _("Read File"),
		nano_insert_msg,
305
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
Chris Allegretta's avatar
Chris Allegretta committed
306

307
308
309

    if (ISSET(PICO_MODE))
	sc_init_one(&main_list[4], NANO_INSERTFILE_KEY, _("Read File"),
Chris Allegretta's avatar
Chris Allegretta committed
310
		nano_insert_msg,
311
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
312
313
314
315
    else
	sc_init_one(&main_list[4], NANO_REPLACE_KEY, _("Replace"),
		    nano_replace_msg,
		    NANO_ALT_R, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace);
Chris Allegretta's avatar
Chris Allegretta committed
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331

    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,
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, page_up);

    sc_init_one(&main_list[7], NANO_NEXTPAGE_KEY, _("Next Page"),
		nano_nextpage_msg,
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, page_down);

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

332
333
334
335
336
    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
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
		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,
		0, NANO_CURSORPOS_FKEY, 0, VIEW, do_cursorpos);

    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"),
		nano_mark_msg, 0, 0, 0, NOVIEW, do_mark);

    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);

383
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
384
385
386
387
388
	sc_init_one(&main_list[23], NANO_REPLACE_KEY, _("Replace"),
		    nano_replace_msg,
		    NANO_ALT_R, NANO_REPLACE_FKEY, 0, NOVIEW, do_replace);
    else
	sc_init_one(&main_list[23], NANO_JUSTIFY_KEY, _("Justify"),
389
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
390
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
391
392
393
394
395

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

396
397
398
399
    sc_init_one(&main_list[25], NANO_GOTO_KEY, _("Goto Line"),
		    nano_goto_msg,
		    NANO_ALT_G, NANO_GOTO_FKEY, 0, VIEW, do_gotoline_void);

Chris Allegretta's avatar
Chris Allegretta committed
400
401
402
403
404
405
406
407


    sc_init_one(&whereis_list[0], NANO_FIRSTLINE_KEY, _("First Line"),
		nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);

    sc_init_one(&whereis_list[1], NANO_LASTLINE_KEY, _("Last Line"),
		nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);

408
    sc_init_one(&whereis_list[2], NANO_OTHERSEARCH_KEY, _("Replace"),
Chris Allegretta's avatar
Chris Allegretta committed
409
410
		nano_replace_msg, 0, 0, 0, VIEW, do_replace);

411
    sc_init_one(&whereis_list[3], NANO_FROMSEARCHTOGOTO_KEY,
412
413
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
414

415
416
#ifndef NANO_SMALL
    sc_init_one(&whereis_list[4], TOGGLE_CASE_KEY, _("Case Sens"),
417
418
		nano_case_msg, 0, 0, 0, VIEW, 0);

419
    sc_init_one(&whereis_list[5], TOGGLE_BACKWARDS_KEY, _("Backward"),
Chris Allegretta's avatar
Chris Allegretta committed
420
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
Chris Allegretta's avatar
Chris Allegretta committed
421

422
#ifdef HAVE_REGEX_H
423
424
    sc_init_one(&whereis_list[REPLACE_LIST_LEN - 2], TOGGLE_REGEXP_KEY,
		_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
425
#endif
426
427
428
429
430
#endif /* NANO_SMALL */

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

Chris Allegretta's avatar
Chris Allegretta committed
431
432
433
434
435
436
437

    sc_init_one(&replace_list[0], NANO_FIRSTLINE_KEY, _("First Line"),
		nano_firstline_msg, 0, 0, 0, VIEW, do_first_line);

    sc_init_one(&replace_list[1], NANO_LASTLINE_KEY, _("Last Line"),
		nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);

438
    sc_init_one(&replace_list[2], NANO_OTHERSEARCH_KEY, _("No Replace"),
Chris Allegretta's avatar
Chris Allegretta committed
439
440
		nano_whereis_msg, 0, 0, 0, VIEW, do_search);

441
    sc_init_one(&replace_list[3], NANO_FROMSEARCHTOGOTO_KEY,
442
443
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
444

445
446
#ifndef NANO_SMALL
    sc_init_one(&replace_list[4], TOGGLE_CASE_KEY, _("Case Sens"),
447
448
		nano_case_msg, 0, 0, 0, VIEW, 0);

449
    sc_init_one(&replace_list[5], TOGGLE_BACKWARDS_KEY, _("Backward"),
Chris Allegretta's avatar
Chris Allegretta committed
450
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
451

452
#ifdef HAVE_REGEX_H
453
454
    sc_init_one(&replace_list[REPLACE_LIST_LEN - 2], TOGGLE_REGEXP_KEY, 
		_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
455
#endif
456
457
458
459
#endif /* NANO_SMALL */

    sc_init_one(&replace_list[REPLACE_LIST_LEN - 1], NANO_CANCEL_KEY,
		_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
460
461
462
463
464
465
466
467


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

    sc_init_one(&replace_list_2[1], NANO_LASTLINE_KEY, _("Last Line"),
		nano_lastline_msg, 0, 0, 0, VIEW, do_last_line);

Chris Allegretta's avatar
Chris Allegretta committed
468
    sc_init_one(&replace_list_2[2], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
		nano_cancel_msg, 0, 0, 0, VIEW, 0);


    sc_init_one(&goto_list[0], NANO_FIRSTLINE_KEY, _("First Line"),
		nano_firstline_msg, 0, 0, 0, VIEW, &do_first_line);

    sc_init_one(&goto_list[1], NANO_LASTLINE_KEY, _("Last Line"),
		nano_lastline_msg, 0, 0, 0, VIEW, &do_last_line);

    sc_init_one(&goto_list[2], NANO_CANCEL_KEY, _("Cancel"),
		nano_cancel_msg, 0, 0, 0, VIEW, 0);


    sc_init_one(&help_list[0], NANO_PREVPAGE_KEY, _("Prev Page"),
		nano_prevpage_msg,
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, page_up);

    sc_init_one(&help_list[1], NANO_NEXTPAGE_KEY, _("Next Page"),
		nano_nextpage_msg,
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, page_down);

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


494
#ifndef DISABLE_BROWSER
Chris Allegretta's avatar
Chris Allegretta committed
495
496
497
    sc_init_one(&writefile_list[0], NANO_TOFILES_KEY, _("To Files"),
		nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif
Chris Allegretta's avatar
Chris Allegretta committed
498

499
500
501
    sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 2], NANO_APPEND_KEY, _("Append"),
		nano_append_msg, 0, 0, 0, NOVIEW, 0);

Chris Allegretta's avatar
Chris Allegretta committed
502
    sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 1], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
503
504
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

505
506
507
508
509
510
511
512
#ifndef DISABLE_BROWSER
    sc_init_one(&insertfile_list[0], NANO_TOFILES_KEY, _("To Files"),
		nano_tofiles_msg, 0, 0, 0, NOVIEW, 0);
#endif

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

513
    sc_init_one(&spell_list[0], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
514
515
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

516
#ifndef DISABLE_BROWSER
Chris Allegretta's avatar
Chris Allegretta committed
517
518
519
520
521
522
523
524
    sc_init_one(&browser_list[0], NANO_PREVPAGE_KEY, _("Prev Page"),
		nano_prevpage_msg,
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, 0);

    sc_init_one(&browser_list[1], NANO_NEXTPAGE_KEY, _("Next Page"),
		nano_nextpage_msg,
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, 0);

Rocco Corsi's avatar
   
Rocco Corsi committed
525
526
527
528
    sc_init_one(&browser_list[2], NANO_GOTO_KEY, _("Goto"),
		nano_gotodir_msg, 0, NANO_GOTO_FKEY, 0, VIEW, 0);

    sc_init_one(&browser_list[3], NANO_EXIT_KEY, _("Exit"),
Chris Allegretta's avatar
Chris Allegretta committed
529
530
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0);

Rocco Corsi's avatar
   
Rocco Corsi committed
531
532
533
    sc_init_one(&gotodir_list[0], NANO_CANCEL_KEY, _("Cancel"),
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

Chris Allegretta's avatar
Chris Allegretta committed
534
535
536
#endif


537
    toggle_init();
Chris Allegretta's avatar
Chris Allegretta committed
538
}