global.c 19.8 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
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
103
104
#ifdef ENABLE_COLOR
    colorstruct colors[NUM_NCOLORS];
#endif

105
#ifndef DISABLE_MOUSE
106
107
shortcut *currshortcut = main_list;	/* Current shortcut list we're using */
int currslen = MAIN_VISIBLE;		/* Length of current shortcut list */
108
#endif
109

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

114
115
/* Regular expressions */

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

Chris Allegretta's avatar
Chris Allegretta committed
122
123
124
125
126
127
128
129
130
131
132
133
134
135
/* 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;
}

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

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,
153
	*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg, 
154
155
	*toggle_backwards_msg, *toggle_dos_msg, *toggle_mac_msg,
	*toggle_smooth_msg;
156

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

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

165

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

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

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

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

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

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

233
void shortcut_init(int unjustify)
Chris Allegretta's avatar
Chris Allegretta committed
234
235
236
237
238
239
240
241
242
243
244
245
{
    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 =
246
247
	"", *nano_enter_msg = "", *nano_cancel_msg = 
	"", *nano_unjustify_msg = "", *nano_append_msg = ""; 
Chris Allegretta's avatar
Chris Allegretta committed
248
249

#ifndef NANO_SMALL
250
    char *nano_tofiles_msg = "", *nano_gotodir_msg = "", *nano_case_msg =
251
	"", *nano_reverse_msg = "", *nano_regexp_msg = "",
252
	*nano_bracket_msg = "";
253

Chris Allegretta's avatar
Chris Allegretta committed
254
255
    nano_help_msg = _("Invoke the help menu");
    nano_writeout_msg = _("Write the current file to disk");
256

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

Chris Allegretta's avatar
Chris Allegretta committed
263
264
    nano_goto_msg = _("Goto a specific line number");
    nano_justify_msg = _("Justify the current paragraph");
265
    nano_unjustify_msg = _("Unjustify after a justify");
Chris Allegretta's avatar
Chris Allegretta committed
266
267
268
269
270
271
272
    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");
273
    nano_cursorpos_msg = _("Show the position of the cursor");
Chris Allegretta's avatar
Chris Allegretta committed
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
    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
292
    nano_tofiles_msg = _("Go to file browser");
Rocco Corsi's avatar
   
Rocco Corsi committed
293
    nano_gotodir_msg = _("Goto Directory");
Chris Allegretta's avatar
Chris Allegretta committed
294
    nano_cancel_msg = _("Cancel the current function");
295
    nano_append_msg = _("Append to the current file");
296
297
298
    nano_reverse_msg = _("Search backwards");
    nano_regexp_msg = _("Use Regular expressions");
    nano_bracket_msg = _("Find other bracket");
Chris Allegretta's avatar
Chris Allegretta committed
299
300
301
#endif

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

304
#ifdef ENABLE_MULTIBUFFER
305
306
307
308
309
310
    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
311
312
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, do_exit);

313
    sc_init_one(&main_list[2], NANO_WRITEOUT_KEY, _("WriteOut"),
Chris Allegretta's avatar
Chris Allegretta committed
314
315
316
		    nano_writeout_msg,
		    0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void);

317
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
318
	sc_init_one(&main_list[3], NANO_JUSTIFY_KEY, _("Justify"),
319
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
320
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
321
    else
322
323
	sc_init_one(&main_list[3], NANO_INSERTFILE_KEY, _("Read File"),
		nano_insert_msg,
324
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
Chris Allegretta's avatar
Chris Allegretta committed
325

326
327
328

    if (ISSET(PICO_MODE))
	sc_init_one(&main_list[4], NANO_INSERTFILE_KEY, _("Read File"),
Chris Allegretta's avatar
Chris Allegretta committed
329
		nano_insert_msg,
330
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile_void);
331
332
333
334
    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
335
336
337
338
339
340
341

    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,
342
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
Chris Allegretta's avatar
Chris Allegretta committed
343
344
345

    sc_init_one(&main_list[7], NANO_NEXTPAGE_KEY, _("Next Page"),
		nano_nextpage_msg,
346
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
Chris Allegretta's avatar
Chris Allegretta committed
347
348
349
350

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

351
352
353
354
355
    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
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
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
		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);

402
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
403
404
405
406
407
	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"),
408
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
409
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
410
411
412
413
414

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

415
416
417
418
    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);

419
420
421
422
423
#if (!defined NANO_SMALL) && (defined HAVE_REGEX_H)
    sc_init_one(&main_list[26], 0, _("Find Other Bracket"),
		    nano_bracket_msg,
		    NANO_BRACKET_KEY, 0, 0, VIEW, do_find_bracket);
#endif
Chris Allegretta's avatar
Chris Allegretta committed
424
425
426
427
428
429
430

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

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

434
    sc_init_one(&whereis_list[3], NANO_FROMSEARCHTOGOTO_KEY,
435
436
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
437

438
439
#ifndef NANO_SMALL
    sc_init_one(&whereis_list[4], TOGGLE_CASE_KEY, _("Case Sens"),
440
441
		nano_case_msg, 0, 0, 0, VIEW, 0);

442
    sc_init_one(&whereis_list[5], TOGGLE_BACKWARDS_KEY, _("Direction"),
Chris Allegretta's avatar
Chris Allegretta committed
443
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
Chris Allegretta's avatar
Chris Allegretta committed
444

445
#ifdef HAVE_REGEX_H
446
447
    sc_init_one(&whereis_list[REPLACE_LIST_LEN - 2], TOGGLE_REGEXP_KEY,
		_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
448
#endif
449
450
451
452
453
#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
454
455
456
457
458
459
460

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

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

464
    sc_init_one(&replace_list[3], NANO_FROMSEARCHTOGOTO_KEY,
465
466
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
467

468
469
#ifndef NANO_SMALL
    sc_init_one(&replace_list[4], TOGGLE_CASE_KEY, _("Case Sens"),
470
471
		nano_case_msg, 0, 0, 0, VIEW, 0);

472
    sc_init_one(&replace_list[5], TOGGLE_BACKWARDS_KEY, _("Direction"),
Chris Allegretta's avatar
Chris Allegretta committed
473
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
474

475
#ifdef HAVE_REGEX_H
476
477
    sc_init_one(&replace_list[REPLACE_LIST_LEN - 2], TOGGLE_REGEXP_KEY, 
		_("Regexp"), nano_regexp_msg, 0, 0, 0, VIEW, 0);
478
#endif
479
480
481
482
#endif /* NANO_SMALL */

    sc_init_one(&replace_list[REPLACE_LIST_LEN - 1], NANO_CANCEL_KEY,
		_("Cancel"), nano_cancel_msg, 0, 0, 0, VIEW, 0);
483
484
485
486
487
488
489
490


    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
491
    sc_init_one(&replace_list_2[2], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
		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,
507
		0, NANO_PREVPAGE_FKEY, KEY_PPAGE, VIEW, do_page_up);
Chris Allegretta's avatar
Chris Allegretta committed
508
509
510

    sc_init_one(&help_list[1], NANO_NEXTPAGE_KEY, _("Next Page"),
		nano_nextpage_msg,
511
		0, NANO_NEXTPAGE_FKEY, KEY_NPAGE, VIEW, do_page_down);
Chris Allegretta's avatar
Chris Allegretta committed
512
513
514
515
516

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


517
#ifndef DISABLE_BROWSER
Chris Allegretta's avatar
Chris Allegretta committed
518
519
520
    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
521

522
523
524
    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
525
    sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 1], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
526
527
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

528
529
530
531
532
533
534
535
#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);

536
    sc_init_one(&spell_list[0], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
537
538
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

539
#ifndef DISABLE_BROWSER
Chris Allegretta's avatar
Chris Allegretta committed
540
541
542
543
544
545
546
547
    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
548
549
550
551
    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
552
553
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0);

Rocco Corsi's avatar
   
Rocco Corsi committed
554
555
556
    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
557
558
559
#endif


560
    toggle_init();
Chris Allegretta's avatar
Chris Allegretta committed
561
}