global.c 17.7 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
char *answer = NULL;			/* Answer str to many questions */
Chris Allegretta's avatar
Chris Allegretta committed
58
59
int totlines = 0;		/* Total number of lines in the file */
int totsize = 0;		/* Total number of bytes in the file */
60
int placewewant = 0;		/* The column we'd like the cursor
Chris Allegretta's avatar
Chris Allegretta committed
61
62
63
				   to jump to when we go to the
				   next or previous line */

64
65
int tabsize = 8;		/* Our internal tabsize variable */

Chris Allegretta's avatar
Chris Allegretta committed
66
67
68
69
70
71
72
73
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 */

74
75
76
77
#ifndef DISABLE_SPELLER
char *alt_speller;		/* Alternative spell command */
#endif

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

92
93
94
95
#ifdef ENABLE_COLOR
    colorstruct colors[NUM_NCOLORS];
#endif

96
#ifndef DISABLE_MOUSE
97
98
shortcut *currshortcut = main_list;	/* Current shortcut list we're using */
int currslen = MAIN_VISIBLE;		/* Length of current shortcut list */
99
#endif
100

101
#ifndef NANO_SMALL
102
toggle toggles[TOGGLE_LEN];
103
#endif
Chris Allegretta's avatar
Chris Allegretta committed
104

105
106
/* Regular expressions */

107
#ifdef HAVE_REGEX_H
108
109
110
regex_t search_regexp;		/* Global to store compiled search regexp */
regmatch_t regmatches[10];	/* Match positions for parenthetical
				   subexpressions, max of 10 */
111
#endif
112

Chris Allegretta's avatar
Chris Allegretta committed
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/* 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;
}

127
#ifndef NANO_SMALL
128
129
130
131
132
133
134
/* Initialize the toggles in the same manner */
void toggle_init_one(toggle * t, int val, char *desc, int flag)
{
    t->val = val;
    t->desc = desc;
    t->flag = flag;
}
135
#endif
136
137
138
139
140
141

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,
142
143
	*toggle_cuttoend_msg, *toggle_wrap_msg, *toggle_case_msg, 
	*toggle_backwards_msg;
144
#ifdef HAVE_REGEX_H
145
    char *toggle_regexp_msg;
146
#endif
147
148

    toggle_const_msg = _("Constant cursor position");
149
    toggle_autoindent_msg = _("Auto indent");
150
    toggle_suspend_msg = _("Suspend");
151
    toggle_nohelp_msg = _("Help mode");
152
    toggle_picomode_msg = _("Pico mode");
153
154
    toggle_mouse_msg = _("Mouse support");
    toggle_cuttoend_msg = _("Cut to end");
155
156
    toggle_backwards_msg = _("Backwards Search");
    toggle_case_msg = _("Case Sensitive Search");
157
#ifdef HAVE_REGEX_H
158
    toggle_regexp_msg = _("Regular expressions");
159
#endif
160
    toggle_wrap_msg = _("Auto wrap");
161

162
163
164
165
166
167
168
169
170
    toggle_init_one(&toggles[0], TOGGLE_CONST_KEY, toggle_const_msg,
		    CONSTUPDATE);
    toggle_init_one(&toggles[1], TOGGLE_AUTOINDENT_KEY,
		    toggle_autoindent_msg, AUTOINDENT);
    toggle_init_one(&toggles[2], TOGGLE_SUSPEND_KEY, toggle_suspend_msg,
		    SUSPEND);
    toggle_init_one(&toggles[3], TOGGLE_NOHELP_KEY, toggle_nohelp_msg,
		    NO_HELP);
    toggle_init_one(&toggles[4], TOGGLE_PICOMODE_KEY, toggle_picomode_msg,
171
		    PICO_MODE);
172
173
174
175
176
177
    toggle_init_one(&toggles[5], TOGGLE_WRAP_KEY, toggle_wrap_msg,
		    NO_WRAP);
    toggle_init_one(&toggles[6], TOGGLE_MOUSE_KEY, toggle_mouse_msg,
		    USE_MOUSE);
    toggle_init_one(&toggles[7], TOGGLE_CUTTOEND_KEY, toggle_cuttoend_msg,
		    CUT_TO_END);
178
179
180
181
    toggle_init_one(&toggles[8], TOGGLE_BACKWARDS_KEY, toggle_backwards_msg,
		    REVERSE_SEARCH);
    toggle_init_one(&toggles[9], TOGGLE_CASE_KEY, toggle_case_msg,
		    CASE_SENSITIVE);    
182
#ifdef HAVE_REGEX_H
183
    toggle_init_one(&toggles[10], TOGGLE_REGEXP_KEY, toggle_regexp_msg,
184
		    USE_REGEXP);
185
#endif
186
#endif
187
188
}

189
void shortcut_init(int unjustify)
Chris Allegretta's avatar
Chris Allegretta committed
190
191
192
193
194
195
196
197
198
199
200
201
202
{
    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 =
	"", *nano_enter_msg = "", *nano_case_msg =
203
	"", *nano_cancel_msg = "", *nano_unjustify_msg = 
204
205
	"", *nano_append_msg = "", *nano_reverse_msg = 
	"", *nano_regexp_msg = "";
Chris Allegretta's avatar
Chris Allegretta committed
206
207

#ifndef NANO_SMALL
208
    char *nano_tofiles_msg = "";
Rocco Corsi's avatar
   
Rocco Corsi committed
209
    char *nano_gotodir_msg = "";
210

Chris Allegretta's avatar
Chris Allegretta committed
211
212
213
214
215
    nano_help_msg = _("Invoke the help menu");
    nano_writeout_msg = _("Write the current file to disk");
    nano_exit_msg = _("Exit from nano");
    nano_goto_msg = _("Goto a specific line number");
    nano_justify_msg = _("Justify the current paragraph");
216
    nano_unjustify_msg = _("Unjustify after a justify");
Chris Allegretta's avatar
Chris Allegretta committed
217
218
219
220
221
222
223
    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");
224
    nano_cursorpos_msg = _("Show the position of the cursor");
Chris Allegretta's avatar
Chris Allegretta committed
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
    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
243
    nano_tofiles_msg = _("Go to file browser");
Rocco Corsi's avatar
   
Rocco Corsi committed
244
    nano_gotodir_msg = _("Goto Directory");
Chris Allegretta's avatar
Chris Allegretta committed
245
    nano_cancel_msg = _("Cancel the current function");
246
    nano_append_msg = _("Append to the current file");
Chris Allegretta's avatar
Chris Allegretta committed
247
    nano_reverse_msg = _("Search Backwards");
248
    nano_regexp_msg = _("Use Regular Expressions");
Chris Allegretta's avatar
Chris Allegretta committed
249
250
251
#endif

	sc_init_one(&main_list[0], NANO_HELP_KEY, _("Get Help"),
252
		    nano_help_msg, 0, NANO_HELP_FKEY, 0, VIEW, do_help);
Chris Allegretta's avatar
Chris Allegretta committed
253
254
255
256

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

257
    sc_init_one(&main_list[2], NANO_WRITEOUT_KEY, _("WriteOut"),
Chris Allegretta's avatar
Chris Allegretta committed
258
259
260
		    nano_writeout_msg,
		    0, NANO_WRITEOUT_FKEY, 0, NOVIEW, do_writeout_void);

261
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
262
	sc_init_one(&main_list[3], NANO_JUSTIFY_KEY, _("Justify"),
263
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
264
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
265
    else
266
267
268
	sc_init_one(&main_list[3], NANO_INSERTFILE_KEY, _("Read File"),
		nano_insert_msg,
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile);
Chris Allegretta's avatar
Chris Allegretta committed
269

270
271
272

    if (ISSET(PICO_MODE))
	sc_init_one(&main_list[4], NANO_INSERTFILE_KEY, _("Read File"),
Chris Allegretta's avatar
Chris Allegretta committed
273
274
		nano_insert_msg,
		0, NANO_INSERTFILE_FKEY, 0, NOVIEW, do_insertfile);
275
276
277
278
    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
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294

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

295
296
297
298
299
    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
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
		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);

346
    if (ISSET(PICO_MODE))
Chris Allegretta's avatar
Chris Allegretta committed
347
348
349
350
351
	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"),
352
		    nano_justify_msg, 0, NANO_JUSTIFY_FKEY, 0,
353
		    NOVIEW, do_justify);
Chris Allegretta's avatar
Chris Allegretta committed
354
355
356
357
358

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

359
360
361
362
    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
363
364
365
366
367
368
369
370


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

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

374
    sc_init_one(&whereis_list[3], NANO_FROMSEARCHTOGOTO_KEY,
375
376
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
377

378
379
380
381
382
383
384
    sc_init_one(&whereis_list[4], NANO_CANCEL_KEY, _("Cancel"),
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

    sc_init_one(&whereis_list[5], TOGGLE_CASE_KEY, _("Case Sens"),
		nano_case_msg, 0, 0, 0, VIEW, 0);

    sc_init_one(&whereis_list[6], TOGGLE_BACKWARDS_KEY, _("Backward"),
Chris Allegretta's avatar
Chris Allegretta committed
385
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
Chris Allegretta's avatar
Chris Allegretta committed
386

387
388
389
390
#ifdef HAVE_REGEX_H
    sc_init_one(&whereis_list[7], TOGGLE_REGEXP_KEY, _("Regexp"),
		nano_regexp_msg, 0, 0, 0, VIEW, 0);
#endif
Chris Allegretta's avatar
Chris Allegretta committed
391
392
393
394
395
396
397

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

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

401
    sc_init_one(&replace_list[3], NANO_FROMSEARCHTOGOTO_KEY,
402
403
		_("Goto Line"), nano_goto_msg, 0, 0, 0, VIEW,
		do_gotoline_void);
404

405
406
407
408
409
410
411
    sc_init_one(&replace_list[4], NANO_CANCEL_KEY, _("Cancel"),
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

    sc_init_one(&replace_list[5], TOGGLE_CASE_KEY, _("Case Sens"),
		nano_case_msg, 0, 0, 0, VIEW, 0);

    sc_init_one(&replace_list[6], TOGGLE_BACKWARDS_KEY, _("Backward"),
Chris Allegretta's avatar
Chris Allegretta committed
412
		nano_reverse_msg, 0, 0, 0, VIEW, 0);
413

414
415
416
417
#ifdef HAVE_REGEX_H
    sc_init_one(&replace_list[7], TOGGLE_REGEXP_KEY, _("Regexp"),
		nano_regexp_msg, 0, 0, 0, VIEW, 0);
#endif
418
419
420
421
422
423
424
425


    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
426
    sc_init_one(&replace_list_2[2], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
		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);


452
#ifndef DISABLE_BROWSER
Chris Allegretta's avatar
Chris Allegretta committed
453
454
455
    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
456

457
458
459
    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
460
    sc_init_one(&writefile_list[WRITEFILE_LIST_LEN - 1], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
461
462
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

463
464
465
466
467
468
469
470
#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);

471
    sc_init_one(&spell_list[0], NANO_CANCEL_KEY, _("Cancel"),
Chris Allegretta's avatar
Chris Allegretta committed
472
473
		nano_cancel_msg, 0, 0, 0, VIEW, 0);

474
#ifndef DISABLE_BROWSER
Chris Allegretta's avatar
Chris Allegretta committed
475
476
477
478
479
480
481
482
    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
483
484
485
486
    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
487
488
		nano_exit_msg, 0, NANO_EXIT_FKEY, 0, VIEW, 0);

Rocco Corsi's avatar
   
Rocco Corsi committed
489
490
491
    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
492
493
494
#endif


495
    toggle_init();
Chris Allegretta's avatar
Chris Allegretta committed
496
}