blob: d1fede031a0e8c30d86490082931734417ffb529 [file] [log] [blame]
Chris Allegretta11b00112000-08-06 21:13:45 +00001/* $Id$ */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +00002/**************************************************************************
3 * global.c *
4 * *
David Lawrence Ramseyc13b7f02005-01-01 07:28:15 +00005 * Copyright (C) 1999-2005 Chris Allegretta *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +00006 * This program is free software; you can redistribute it and/or modify *
7 * it under the terms of the GNU General Public License as published by *
Chris Allegretta3a24f3f2001-10-24 11:33:54 +00008 * the Free Software Foundation; either version 2, or (at your option) *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +00009 * any later version. *
10 * *
David Lawrence Ramsey6e925cf2005-05-15 19:57:17 +000011 * This program is distributed in the hope that it will be useful, but *
12 * WITHOUT ANY WARRANTY; without even the implied warranty of *
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
14 * General Public License for more details. *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000015 * *
16 * You should have received a copy of the GNU General Public License *
17 * along with this program; if not, write to the Free Software *
David Lawrence Ramsey6e925cf2005-05-15 19:57:17 +000018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
19 * 02110-1301, USA. *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000020 * *
21 **************************************************************************/
22
Jordi Mallach55381aa2004-11-17 23:17:05 +000023#ifdef HAVE_CONFIG_H
24#include <config.h>
25#endif
Chris Allegretta6efda542001-04-28 18:03:52 +000026
Chris Allegretta1dd0bc92002-10-13 18:43:45 +000027#include <stdlib.h>
Chris Allegrettadab017e2002-04-23 10:56:06 +000028#include <assert.h>
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000029#include "proto.h"
30
Chris Allegretta7662c862003-01-13 01:35:15 +000031/* Global variables */
Chris Allegretta48b06702002-02-22 04:30:50 +000032
David Lawrence Ramseyf5b256b2003-10-03 20:26:25 +000033#ifndef DISABLE_WRAPJUSTIFY
David Lawrence Ramsey49c3f242004-07-12 16:07:14 +000034/* wrap_at might be set in rcfile.c or nano.c. */
35ssize_t wrap_at = -CHARS_FROM_EOL; /* Right justified fill value,
36 allows resize */
David Lawrence Ramseyf5b256b2003-10-03 20:26:25 +000037#endif
38
Chris Allegretta6df90f52002-07-19 01:08:59 +000039char *last_search = NULL; /* Last string we searched for */
40char *last_replace = NULL; /* Last replacement string */
41int search_last_line; /* Is this the last search line? */
42
David Lawrence Ramsey23c44502005-01-27 20:49:07 +000043unsigned long flags = 0; /* Our flag containing many options */
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +000044WINDOW *topwin; /* Top buffer */
David Lawrence Ramseyf21cd102002-06-13 00:40:19 +000045WINDOW *edit; /* The file portion of the editor */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000046WINDOW *bottomwin; /* Bottom buffer */
Chris Allegretta1a6e9042000-12-14 13:56:28 +000047char *filename = NULL; /* Name of the file */
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +000048
49#ifndef NANO_SMALL
50struct stat originalfilestat; /* Stat for the file as we loaded it */
51#endif
52
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000053int editwinrows = 0; /* How many rows long is the edit
54 window? */
55filestruct *current; /* Current buffer pointer */
David Lawrence Ramsey7a97e182004-10-30 01:03:15 +000056size_t current_x = 0; /* Current x-coordinate in the edit
57 window */
58int current_y = 0; /* Current y-coordinate in the edit
59 window */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000060filestruct *fileage = NULL; /* Our file buffer */
61filestruct *edittop = NULL; /* Pointer to the top of the edit
62 buffer with respect to the
63 file struct */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000064filestruct *filebot = NULL; /* Last node in the file struct */
65filestruct *cutbuffer = NULL; /* A place to store cut text */
David Lawrence Ramsey93c84052004-11-23 04:08:28 +000066#ifndef DISABLE_JUSTIFY
67filestruct *jusbuffer = NULL; /* A place to store unjustified text */
68#endif
David Lawrence Ramsey40bdb682004-11-03 22:03:41 +000069partition *filepart = NULL; /* A place to store a portion of the
70 file struct */
David Lawrence Ramsey40bdb682004-11-03 22:03:41 +000071
Chris Allegretta355fbe52001-07-14 19:32:47 +000072#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey3ece0b92004-12-01 15:11:27 +000073openfilestruct *open_files = NULL; /* The list of open file
74 buffers */
Chris Allegretta2d7893d2001-07-11 02:08:33 +000075#endif
76
David Lawrence Ramsey89bb9372004-05-29 16:47:52 +000077#if !defined(NANO_SMALL) && defined(ENABLE_NANORC)
78char *whitespace = NULL; /* Characters used when displaying
79 the first characters of tabs and
80 spaces. */
David Lawrence Ramsey6e60db62005-03-10 22:52:21 +000081int whitespace_len[2]; /* The length of the characters. */
David Lawrence Ramsey89bb9372004-05-29 16:47:52 +000082#endif
83
Chris Allegrettae4f940d2002-03-03 22:36:36 +000084#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey2c62b072004-05-29 16:38:57 +000085char *punct = NULL; /* Closing punctuation that can end
86 sentences. */
87char *brackets = NULL; /* Closing brackets that can follow
88 closing punctuation and can end
89 sentences. */
Chris Allegretta7662c862003-01-13 01:35:15 +000090char *quotestr = NULL; /* Quote string. The default value is
91 set in main(). */
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +000092#ifdef HAVE_REGEX_H
93regex_t quotereg; /* Compiled quotestr regular expression. */
94int quoterc; /* Did it compile? */
95char *quoteerr = NULL; /* The error message. */
96#else
97size_t quotelen; /* strlen(quotestr) */
98#endif
Chris Allegretta6df90f52002-07-19 01:08:59 +000099#endif
Chris Allegrettae4f940d2002-03-03 22:36:36 +0000100
David Lawrence Ramsey04e42a62004-02-28 16:24:31 +0000101#ifndef NANO_SMALL
102char *backup_dir = NULL; /* Backup directory. */
103#endif
104
Chris Allegretta6df90f52002-07-19 01:08:59 +0000105char *answer = NULL; /* Answer str to many questions */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000106int totlines = 0; /* Total number of lines in the file */
David Lawrence Ramsey23c44502005-01-27 20:49:07 +0000107size_t totsize = 0; /* Total number of characters in the
108 file */
David Lawrence Ramsey86e851b2004-07-28 20:46:25 +0000109size_t placewewant = 0; /* The column we'd like the cursor
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000110 to jump to when we go to the
111 next or previous line */
112
David Lawrence Ramsey49c3f242004-07-12 16:07:14 +0000113ssize_t tabsize = -1; /* Our internal tabsize variable. The
114 default value is set in main(). */
Chris Allegretta6d690a32000-08-03 22:51:21 +0000115
Chris Allegretta7662c862003-01-13 01:35:15 +0000116char *hblank = NULL; /* A horizontal blank line */
Chris Allegretta6df90f52002-07-19 01:08:59 +0000117#ifndef DISABLE_HELP
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000118char *help_text; /* The text in the help window */
Chris Allegretta6df90f52002-07-19 01:08:59 +0000119#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000120
121/* More stuff for the marker select */
122
Chris Allegretta7662c862003-01-13 01:35:15 +0000123#ifndef NANO_SMALL
David Lawrence Ramseyf28f50e2004-01-09 23:04:55 +0000124filestruct *mark_beginbuf; /* The begin marker buffer */
David Lawrence Ramsey687776b2004-10-30 01:16:08 +0000125size_t mark_beginx; /* X value in the string to start */
Chris Allegretta7662c862003-01-13 01:35:15 +0000126#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000127
Chris Allegrettae1f14522001-09-19 03:19:43 +0000128#ifndef DISABLE_OPERATINGDIR
Chris Allegrettaf5de33a2002-02-27 04:14:16 +0000129char *operating_dir = NULL; /* Operating directory, which we can't */
130char *full_operating_dir = NULL;/* go higher than */
Chris Allegrettae1f14522001-09-19 03:19:43 +0000131#endif
132
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000133#ifndef DISABLE_SPELLER
Chris Allegretta7c27be42002-05-05 23:03:54 +0000134char *alt_speller = NULL; /* Alternative spell command */
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000135#endif
136
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000137shortcut *main_list = NULL;
138shortcut *whereis_list = NULL;
139shortcut *replace_list = NULL;
Chris Allegretta48b06702002-02-22 04:30:50 +0000140shortcut *replace_list_2 = NULL; /* 2nd half of replace dialog */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000141shortcut *gotoline_list = NULL;
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000142shortcut *writefile_list = NULL;
143shortcut *insertfile_list = NULL;
Chris Allegretta7662c862003-01-13 01:35:15 +0000144#ifndef DISABLE_HELP
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000145shortcut *help_list = NULL;
Chris Allegretta7662c862003-01-13 01:35:15 +0000146#endif
147#ifndef DISABLE_SPELLER
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000148shortcut *spell_list = NULL;
Chris Allegretta7662c862003-01-13 01:35:15 +0000149#endif
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000150#ifndef NANO_SMALL
Chris Allegretta52c5a6e2002-03-21 05:07:28 +0000151shortcut *extcmd_list = NULL;
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000152#endif
Rocco Corsiaf5c3022001-01-12 07:51:05 +0000153#ifndef DISABLE_BROWSER
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000154shortcut *browser_list = NULL;
Chris Allegretta201f1d92003-02-05 02:51:19 +0000155shortcut *gotodir_list = NULL;
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000156#endif
Chris Allegretta201f1d92003-02-05 02:51:19 +0000157
Chris Allegretta8ce24132001-04-30 11:28:46 +0000158#ifdef ENABLE_COLOR
David Lawrence Ramsey9b13ff32002-12-22 16:30:00 +0000159const colortype *colorstrings = NULL;
160syntaxtype *syntaxes = NULL;
161char *syntaxstr = NULL;
Chris Allegretta8ce24132001-04-30 11:28:46 +0000162#endif
163
Chris Allegretta6df90f52002-07-19 01:08:59 +0000164const shortcut *currshortcut; /* Current shortcut list we're using */
Chris Allegretta6b58acd2001-04-12 03:01:53 +0000165
Chris Allegrettaf0b26df2001-01-20 22:18:18 +0000166#ifndef NANO_SMALL
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000167toggle *toggles = NULL;
Chris Allegrettaf0b26df2001-01-20 22:18:18 +0000168#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000169
David Lawrence Ramsey1addd602005-06-03 19:28:30 +0000170#ifndef NANO_SMALL
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000171filestruct *search_history = NULL;
172filestruct *searchage = NULL;
173filestruct *searchbot = NULL;
174filestruct *replace_history = NULL;
175filestruct *replaceage = NULL;
176filestruct *replacebot = NULL;
Chris Allegretta5beed502003-01-05 20:41:21 +0000177#endif
178
Chris Allegretta9fc8d432000-07-07 01:49:52 +0000179/* Regular expressions */
Chris Allegretta805c26d2000-09-06 13:39:17 +0000180#ifdef HAVE_REGEX_H
Chris Allegrettabd9e7c32000-10-26 01:44:42 +0000181regex_t search_regexp; /* Global to store compiled search regexp */
182regmatch_t regmatches[10]; /* Match positions for parenthetical
183 subexpressions, max of 10 */
Chris Allegretta6df90f52002-07-19 01:08:59 +0000184#endif
Chris Allegretta3533a342002-03-24 23:19:32 +0000185
David Lawrence Ramsey82dc1c12004-08-12 03:27:54 +0000186bool curses_ended = FALSE; /* Indicates to statusbar() to simply
Chris Allegrettaa0d89972003-02-03 03:32:08 +0000187 * write to stderr, since endwin() has
188 * ended curses mode. */
189
David Lawrence Ramseya27bd652004-08-17 05:23:38 +0000190char *homedir = NULL; /* $HOME or from /etc/passwd. */
David Lawrence Ramseya27bd652004-08-17 05:23:38 +0000191
David Lawrence Ramseyebd0d7c2004-07-01 18:59:52 +0000192size_t length_of_list(const shortcut *s)
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000193{
David Lawrence Ramseyebd0d7c2004-07-01 18:59:52 +0000194 size_t i = 0;
David Lawrence Ramseye21adfa2002-09-13 18:14:04 +0000195
Chris Allegrettadab017e2002-04-23 10:56:06 +0000196 for (; s != NULL; s = s->next)
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000197 i++;
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000198 return i;
199}
200
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000201/* Initialize a struct *without* our lovely braces =( */
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000202void sc_init_one(shortcut **shortcutage, int ctrlval, const char *desc,
Chris Allegrettadab017e2002-04-23 10:56:06 +0000203#ifndef DISABLE_HELP
Chris Allegrettaf717f982003-02-13 22:25:01 +0000204 const char *help,
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000205#endif
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000206 int metaval, int funcval, int miscval, bool view, void
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000207 (*func)(void))
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000208{
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000209 shortcut *s;
210
211 if (*shortcutage == NULL) {
David Lawrence Ramsey70047ee2003-06-14 20:41:34 +0000212 *shortcutage = (shortcut *)nmalloc(sizeof(shortcut));
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000213 s = *shortcutage;
214 } else {
215 for (s = *shortcutage; s->next != NULL; s = s->next)
216 ;
David Lawrence Ramsey70047ee2003-06-14 20:41:34 +0000217 s->next = (shortcut *)nmalloc(sizeof(shortcut));
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000218 s = s->next;
219 }
220
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000221 s->ctrlval = ctrlval;
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000222 s->desc = _(desc);
Chris Allegrettadab017e2002-04-23 10:56:06 +0000223#ifndef DISABLE_HELP
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000224 s->help = _(help);
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000225#endif
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000226 s->metaval = metaval;
227 s->funcval = funcval;
228 s->miscval = miscval;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000229 s->viewok = view;
230 s->func = func;
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000231 s->next = NULL;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000232}
233
David Lawrence Ramsey1f1ebb82004-11-11 21:50:01 +0000234void shortcut_init(bool unjustify)
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000235{
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000236 const char *get_help_msg = N_("Get Help");
237 const char *exit_msg = N_("Exit");
238 const char *prev_page_msg = N_("Prev Page");
239 const char *next_page_msg = N_("Next Page");
240 const char *replace_msg = N_("Replace");
241 const char *go_to_line_msg = N_("Go To Line");
242 const char *cancel_msg = N_("Cancel");
243 const char *first_line_msg = N_("First Line");
244 const char *last_line_msg = N_("Last Line");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000245 const char *refresh_msg = N_("Refresh");
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000246#ifndef NANO_SMALL
247 const char *cut_till_end_msg = N_("CutTillEnd");
248#endif
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000249#ifndef DISABLE_JUSTIFY
250 const char *beg_of_par_msg = N_("Beg of Par");
251 const char *end_of_par_msg = N_("End of Par");
252 const char *fulljstify_msg = N_("FullJstify");
253#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000254#ifndef NANO_SMALL
255 const char *case_sens_msg = N_("Case Sens");
256 const char *direction_msg = N_("Direction");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000257#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000258#ifdef HAVE_REGEX_H
259 const char *regexp_msg = N_("Regexp");
260#endif
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000261#ifndef NANO_SMALL
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000262 const char *history_msg = N_("History");
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000263#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000264 const char *new_buffer_msg = N_("New Buffer");
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000265#endif
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000266#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000267#ifndef DISABLE_BROWSER
268 const char *to_files_msg = N_("To Files");
269#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +0000270#ifndef DISABLE_HELP
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000271 const char *nano_help_msg = N_("Invoke the help menu");
272 const char *nano_exit_msg =
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000273#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000274 N_("Close currently loaded file/Exit from nano")
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000275#else
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000276 N_("Exit from nano")
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000277#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000278 ;
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000279 const char *nano_writeout_msg =
280 N_("Write the current file to disk");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000281 const char *nano_justify_msg = N_("Justify the current paragraph");
282 const char *nano_insert_msg =
283 N_("Insert another file into the current one");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000284 const char *nano_whereis_msg =
285 N_("Search for text within the editor");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000286 const char *nano_prevpage_msg = N_("Move to the previous screen");
287 const char *nano_nextpage_msg = N_("Move to the next screen");
288 const char *nano_cut_msg =
289 N_("Cut the current line and store it in the cutbuffer");
290 const char *nano_uncut_msg =
291 N_("Uncut from the cutbuffer into the current line");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000292 const char *nano_cursorpos_msg =
293 N_("Show the position of the cursor");
294 const char *nano_spell_msg =
295 N_("Invoke the spell checker, if available");
David Lawrence Ramseyd3d37432005-05-17 21:49:19 +0000296 const char *nano_gotoline_msg =
297 N_("Go to a specific line number and column number");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000298 const char *nano_replace_msg = N_("Replace text within the editor");
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000299#ifndef NANO_SMALL
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000300 const char *nano_mark_msg = N_("Mark text at the cursor position");
301 const char *nano_whereis_next_msg = N_("Repeat last search");
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000302#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000303 const char *nano_prevline_msg = N_("Move to the previous line");
304 const char *nano_nextline_msg = N_("Move to the next line");
305 const char *nano_forward_msg = N_("Move forward one character");
306 const char *nano_back_msg = N_("Move back one character");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000307 const char *nano_home_msg =
308 N_("Move to the beginning of the current line");
309 const char *nano_end_msg =
310 N_("Move to the end of the current line");
311 const char *nano_refresh_msg =
312 N_("Refresh (redraw) the current screen");
313 const char *nano_delete_msg =
314 N_("Delete the character under the cursor");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000315 const char *nano_backspace_msg =
316 N_("Delete the character to the left of the cursor");
David Lawrence Ramseye7c41682004-10-23 14:53:07 +0000317 const char *nano_tab_msg =
318 N_("Insert a tab character at the cursor position");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000319 const char *nano_enter_msg =
320 N_("Insert a carriage return at the cursor position");
David Lawrence Ramsey00d77982004-08-07 21:27:37 +0000321#ifndef NANO_SMALL
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000322 const char *nano_nextword_msg = N_("Move forward one word");
323 const char *nano_prevword_msg = N_("Move backward one word");
David Lawrence Ramseye010edd2005-06-12 22:31:03 +0000324 const char *nano_wordcount_msg =
325 N_("Count the number of words in the file");
David Lawrence Ramsey00d77982004-08-07 21:27:37 +0000326#endif
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000327#ifndef DISABLE_JUSTIFY
328 const char *nano_parabegin_msg =
329 N_("Go to the beginning of the current paragraph");
330 const char *nano_paraend_msg =
331 N_("Go to the end of the current paragraph");
332#endif
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000333#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000334 const char *nano_openprev_msg =
335 N_("Switch to the previous file buffer");
336 const char *nano_opennext_msg =
337 N_("Switch to the next file buffer");
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000338#endif
339 const char *nano_verbatim_msg = N_("Insert character(s) verbatim");
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000340#ifndef NANO_SMALL
341 const char *nano_cut_till_end_msg =
342 N_("Cut from the cursor position to the end of the file");
343#endif
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000344#ifndef DISABLE_JUSTIFY
345 const char *nano_fulljustify_msg = N_("Justify the entire file");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000346#endif
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000347#if !defined(NANO_SMALL) && defined(HAVE_REGEX_H)
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000348 const char *nano_bracket_msg = N_("Find other bracket");
349#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000350 const char *nano_cancel_msg = N_("Cancel the current function");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000351 const char *nano_firstline_msg =
352 N_("Go to the first line of the file");
353 const char *nano_lastline_msg =
354 N_("Go to the last line of the file");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000355#ifndef NANO_SMALL
356 const char *nano_case_msg =
357 N_("Make the current search/replace case (in)sensitive");
358 const char *nano_reverse_msg =
359 N_("Make the current search/replace go backwards");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000360#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000361#ifdef HAVE_REGEX_H
362 const char *nano_regexp_msg = N_("Use regular expressions");
363#endif
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000364#ifndef NANO_SMALL
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000365 const char *nano_history_msg =
366 N_("Edit the previous search/replace strings");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000367#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000368#ifndef DISABLE_BROWSER
369 const char *nano_tofiles_msg = N_("Go to file browser");
370#endif
371#ifndef NANO_SMALL
372 const char *nano_dos_msg = N_("Write file out in DOS format");
373 const char *nano_mac_msg = N_("Write file out in Mac format");
374#endif
375 const char *nano_append_msg = N_("Append to the current file");
376 const char *nano_prepend_msg = N_("Prepend to the current file");
377#ifndef NANO_SMALL
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000378 const char *nano_backup_msg =
379 N_("Back up original file when saving");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000380 const char *nano_execute_msg = N_("Execute external command");
381#endif
David Lawrence Ramseyad96aff2005-02-22 23:22:37 +0000382#if !defined(NANO_SMALL) && defined(ENABLE_MULTIBUFFER)
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000383 const char *nano_multibuffer_msg = N_("Insert into new buffer");
384#endif
385#ifndef DISABLE_BROWSER
David Lawrence Ramseyc41d4282004-07-23 12:51:40 +0000386 const char *nano_exitbrowser_msg = N_("Exit from the file browser");
387 const char *nano_gotodir_msg = N_("Go to directory");
Chris Allegretta2bef1822001-09-28 19:53:11 +0000388#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +0000389#endif /* !DISABLE_HELP */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000390
David Lawrence Ramsey8e4adcd2004-05-20 03:29:33 +0000391/* The following macro is to be used in calling sc_init_one(). The
392 * point is that sc_init_one() takes 9 arguments, unless DISABLE_HELP is
393 * defined, when the 4th one should not be there. */
David Lawrence Ramseyea43a1d2004-03-02 22:52:57 +0000394#ifndef DISABLE_HELP
David Lawrence Ramseyeb509222005-03-22 04:50:11 +0000395#define IFHELP(help, nextvar) help, nextvar
David Lawrence Ramseyea43a1d2004-03-02 22:52:57 +0000396#else
David Lawrence Ramseyeb509222005-03-22 04:50:11 +0000397#define IFHELP(help, nextvar) nextvar
Chris Allegrettadab017e2002-04-23 10:56:06 +0000398#endif
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000399
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000400 free_shortcutage(&main_list);
401
Jordi Mallachf9390af2003-08-05 19:31:12 +0000402 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000403 sc_init_one(&main_list, NANO_HELP_KEY, get_help_msg,
404 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
405 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000406#ifndef DISABLE_HELP
407 do_help
408#else
409 nano_disabled_msg
410#endif
411 );
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000412
David Lawrence Ramsey5b3dd0f2004-11-25 04:39:07 +0000413 /* Translators: try to keep this string under 10 characters long */
414 sc_init_one(&main_list, NANO_EXIT_KEY,
Chris Allegretta355fbe52001-07-14 19:32:47 +0000415#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey5b3dd0f2004-11-25 04:39:07 +0000416 open_files != NULL && open_files != open_files->next ?
417 N_("Close") :
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000418#endif
David Lawrence Ramsey5b3dd0f2004-11-25 04:39:07 +0000419 exit_msg, IFHELP(nano_exit_msg, NANO_NO_KEY), NANO_EXIT_FKEY,
420 NANO_NO_KEY, VIEW, do_exit);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000421
Jordi Mallachf9390af2003-08-05 19:31:12 +0000422 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000423 sc_init_one(&main_list, NANO_WRITEOUT_KEY, N_("WriteOut"),
424 IFHELP(nano_writeout_msg, NANO_NO_KEY), NANO_WRITEOUT_FKEY,
425 NANO_NO_KEY, NOVIEW, do_writeout_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000426
Jordi Mallachf9390af2003-08-05 19:31:12 +0000427 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000428 sc_init_one(&main_list, NANO_JUSTIFY_KEY, N_("Justify"),
429 IFHELP(nano_justify_msg, NANO_NO_KEY),
430 NANO_JUSTIFY_FKEY, NANO_NO_KEY, NOVIEW,
David Lawrence Ramseya539fce2004-06-29 00:43:56 +0000431#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey8d3e7f32004-05-13 17:28:03 +0000432 do_justify_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000433#else
434 nano_disabled_msg
435#endif
436 );
Chris Allegretta32da4562002-01-02 15:12:21 +0000437
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000438 /* We allow inserting files in view mode if multibuffers are
439 * available, so that we can view multiple files. */
440 /* If we're using restricted mode, inserting files is disabled since
441 * it allows reading from or writing to files not specified on the
442 * command line. */
Jordi Mallachf9390af2003-08-05 19:31:12 +0000443 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000444 sc_init_one(&main_list, NANO_INSERTFILE_KEY, N_("Read File"),
445 IFHELP(nano_insert_msg, NANO_NO_KEY), NANO_INSERTFILE_FKEY,
446 NANO_NO_KEY,
Chris Allegretta32da4562002-01-02 15:12:21 +0000447#ifdef ENABLE_MULTIBUFFER
Chris Allegrettad8451932003-03-11 03:50:40 +0000448 VIEW
Chris Allegretta32da4562002-01-02 15:12:21 +0000449#else
Chris Allegrettad8451932003-03-11 03:50:40 +0000450 NOVIEW
Chris Allegretta32da4562002-01-02 15:12:21 +0000451#endif
David Lawrence Ramsey8001e272004-11-12 00:48:18 +0000452 , !ISSET(RESTRICTED) ? do_insertfile_void :
453 nano_disabled_msg);
Chris Allegrettaaf6414a2001-02-11 19:05:05 +0000454
Jordi Mallachf9390af2003-08-05 19:31:12 +0000455 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000456 sc_init_one(&main_list, NANO_WHEREIS_KEY, N_("Where Is"),
457 IFHELP(nano_whereis_msg, NANO_NO_KEY), NANO_WHEREIS_FKEY,
458 NANO_NO_KEY, VIEW, do_search);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000459
Jordi Mallachf9390af2003-08-05 19:31:12 +0000460 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000461 sc_init_one(&main_list, NANO_PREVPAGE_KEY, prev_page_msg,
462 IFHELP(nano_prevpage_msg, NANO_NO_KEY), NANO_PREVPAGE_FKEY,
463 NANO_NO_KEY, VIEW, do_page_up);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000464
Jordi Mallachf9390af2003-08-05 19:31:12 +0000465 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000466 sc_init_one(&main_list, NANO_NEXTPAGE_KEY, next_page_msg,
467 IFHELP(nano_nextpage_msg, NANO_NO_KEY), NANO_NEXTPAGE_FKEY,
468 NANO_NO_KEY, VIEW, do_page_down);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000469
Jordi Mallachf9390af2003-08-05 19:31:12 +0000470 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000471 sc_init_one(&main_list, NANO_CUT_KEY, N_("Cut Text"),
472 IFHELP(nano_cut_msg, NANO_NO_KEY), NANO_CUT_FKEY,
473 NANO_NO_KEY, NOVIEW, do_cut_text);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000474
Chris Allegretta07798352000-11-27 22:58:23 +0000475 if (unjustify)
Jordi Mallachf9390af2003-08-05 19:31:12 +0000476 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000477 sc_init_one(&main_list, NANO_UNJUSTIFY_KEY, N_("UnJustify"),
478 IFHELP(NULL, NANO_NO_KEY), NANO_UNJUSTIFY_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000479 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta07798352000-11-27 22:58:23 +0000480 else
Jordi Mallachf9390af2003-08-05 19:31:12 +0000481 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000482 sc_init_one(&main_list, NANO_UNCUT_KEY, N_("UnCut Txt"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000483 IFHELP(nano_uncut_msg, NANO_NO_KEY), NANO_UNCUT_FKEY,
484 NANO_NO_KEY, NOVIEW, do_uncut_text);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000485
Jordi Mallachf9390af2003-08-05 19:31:12 +0000486 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000487 sc_init_one(&main_list, NANO_CURSORPOS_KEY, N_("Cur Pos"),
488 IFHELP(nano_cursorpos_msg, NANO_NO_KEY), NANO_CURSORPOS_FKEY,
489 NANO_NO_KEY, VIEW, do_cursorpos_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000490
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000491 /* If we're using restricted mode, spell checking is disabled
492 * because it allows reading from or writing to files not specified
493 * on the command line. */
Jordi Mallachf9390af2003-08-05 19:31:12 +0000494 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000495 sc_init_one(&main_list, NANO_SPELL_KEY, N_("To Spell"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000496 IFHELP(nano_spell_msg, NANO_NO_KEY), NANO_SPELL_FKEY,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000497 NANO_NO_KEY, NOVIEW,
498#ifndef DISABLE_SPELLER
499 !ISSET(RESTRICTED) ? do_spell :
500#endif
501 nano_disabled_msg);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000502
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000503 sc_init_one(&main_list, NANO_GOTOLINE_KEY, go_to_line_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000504 IFHELP(nano_gotoline_msg, NANO_GOTOLINE_ALTKEY),
David Lawrence Ramsey9245f972005-05-17 18:06:26 +0000505 NANO_GOTOLINE_FKEY, NANO_NO_KEY, VIEW,
506 do_gotolinecolumn_void);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000507
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000508 sc_init_one(&main_list, NANO_REPLACE_KEY, replace_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000509 IFHELP(nano_replace_msg, NANO_ALT_REPLACE_KEY),
510 NANO_REPLACE_FKEY, NANO_NO_KEY, NOVIEW, do_replace);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000511
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000512#ifndef NANO_SMALL
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000513 sc_init_one(&main_list, NANO_MARK_KEY, N_("Mark Text"),
514 IFHELP(nano_mark_msg, NANO_MARK_ALTKEY), NANO_MARK_FKEY,
David Lawrence Ramseya049c832005-06-12 23:53:28 +0000515 NANO_NO_KEY, VIEW, do_mark);
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000516
517 sc_init_one(&main_list, NANO_NO_KEY, N_("Where Is Next"),
518 IFHELP(nano_whereis_next_msg, NANO_WHEREIS_NEXT_KEY),
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000519 NANO_WHEREIS_NEXT_FKEY, NANO_NO_KEY, VIEW, do_research);
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000520#endif
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000521
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000522 sc_init_one(&main_list, NANO_PREVLINE_KEY, N_("Prev Line"),
523 IFHELP(nano_prevline_msg, NANO_NO_KEY), NANO_NO_KEY,
524 NANO_NO_KEY, VIEW, do_up);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000525
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000526 sc_init_one(&main_list, NANO_NEXTLINE_KEY, N_("Next Line"),
527 IFHELP(nano_nextline_msg, NANO_NO_KEY), NANO_NO_KEY,
528 NANO_NO_KEY, VIEW, do_down);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000529
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000530 sc_init_one(&main_list, NANO_FORWARD_KEY, N_("Forward"),
531 IFHELP(nano_forward_msg, NANO_NO_KEY), NANO_NO_KEY,
532 NANO_NO_KEY, VIEW, do_right_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000533
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000534 sc_init_one(&main_list, NANO_BACK_KEY, N_("Back"),
535 IFHELP(nano_back_msg, NANO_NO_KEY), NANO_NO_KEY,
536 NANO_NO_KEY, VIEW, do_left_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000537
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000538 sc_init_one(&main_list, NANO_HOME_KEY, N_("Home"),
539 IFHELP(nano_home_msg, NANO_NO_KEY), NANO_NO_KEY,
540 NANO_NO_KEY, VIEW, do_home);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000541
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000542 sc_init_one(&main_list, NANO_END_KEY, N_("End"),
543 IFHELP(nano_end_msg, NANO_NO_KEY), NANO_NO_KEY,
544 NANO_NO_KEY, VIEW, do_end);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000545
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000546 sc_init_one(&main_list, NANO_REFRESH_KEY, refresh_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000547 IFHELP(nano_refresh_msg, NANO_NO_KEY), NANO_NO_KEY,
548 NANO_NO_KEY, VIEW, total_refresh);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000549
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000550 sc_init_one(&main_list, NANO_DELETE_KEY, N_("Delete"),
551 IFHELP(nano_delete_msg, NANO_NO_KEY), NANO_NO_KEY,
552 NANO_NO_KEY, NOVIEW, do_delete);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000553
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000554 sc_init_one(&main_list, NANO_BACKSPACE_KEY, N_("Backspace"),
555 IFHELP(nano_backspace_msg, NANO_NO_KEY), NANO_NO_KEY,
556 NANO_NO_KEY, NOVIEW, do_backspace);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000557
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000558 sc_init_one(&main_list, NANO_TAB_KEY, N_("Tab"),
559 IFHELP(nano_tab_msg, NANO_NO_KEY), NANO_NO_KEY,
560 NANO_NO_KEY, NOVIEW, do_tab);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000561
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000562 sc_init_one(&main_list, NANO_ENTER_KEY, N_("Enter"),
563 IFHELP(nano_enter_msg, NANO_NO_KEY), NANO_NO_KEY,
564 NANO_NO_KEY, NOVIEW, do_enter);
Chris Allegrettaaf6414a2001-02-11 19:05:05 +0000565
David Lawrence Ramseyc5967552002-06-21 03:20:06 +0000566#ifndef NANO_SMALL
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000567 sc_init_one(&main_list, NANO_NEXTWORD_KEY, N_("Next Word"),
568 IFHELP(nano_nextword_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramseye010edd2005-06-12 22:31:03 +0000569 NANO_NO_KEY, VIEW, do_next_word_void);
David Lawrence Ramseyc5967552002-06-21 03:20:06 +0000570
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000571 sc_init_one(&main_list, NANO_NO_KEY, N_("Prev Word"),
572 IFHELP(nano_prevword_msg, NANO_PREVWORD_KEY), NANO_NO_KEY,
573 NANO_NO_KEY, VIEW, do_prev_word);
David Lawrence Ramseye010edd2005-06-12 22:31:03 +0000574
575 sc_init_one(&main_list, NANO_NO_KEY, N_("Word Count"),
576 IFHELP(nano_wordcount_msg, NANO_WORDCOUNT_KEY), NANO_NO_KEY,
577 NANO_NO_KEY, VIEW, do_word_count);
Chris Allegretta8d990b52001-09-22 22:14:25 +0000578#endif
David Lawrence Ramseye0497062003-08-23 21:11:06 +0000579
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000580#ifndef DISABLE_JUSTIFY
581 /* Translators: try to keep this string under 10 characters long */
582 sc_init_one(&main_list, NANO_NO_KEY, beg_of_par_msg,
583 IFHELP(nano_parabegin_msg, NANO_PARABEGIN_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000584 NANO_PARABEGIN_ALTKEY2, VIEW, do_para_begin_void);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000585
586 /* Translators: try to keep this string under 10 characters long */
587 sc_init_one(&main_list, NANO_NO_KEY, end_of_par_msg,
588 IFHELP(nano_paraend_msg, NANO_PARAEND_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000589 NANO_PARAEND_ALTKEY2, VIEW, do_para_end_void);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000590#endif
David Lawrence Ramseye0497062003-08-23 21:11:06 +0000591
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000592#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000593 sc_init_one(&main_list, NANO_NO_KEY, N_("Previous File"),
594 IFHELP(nano_openprev_msg, NANO_OPENPREV_KEY), NANO_NO_KEY,
595 NANO_OPENPREV_ALTKEY, VIEW, open_prevfile_void);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000596
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000597 sc_init_one(&main_list, NANO_NO_KEY, N_("Next File"),
598 IFHELP(nano_opennext_msg, NANO_OPENNEXT_KEY), NANO_NO_KEY,
599 NANO_OPENNEXT_ALTKEY, VIEW, open_nextfile_void);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000600#endif
Chris Allegrettab3655b42001-10-22 03:15:31 +0000601
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000602 sc_init_one(&main_list, NANO_NO_KEY, N_("Verbatim Input"),
603 IFHELP(nano_verbatim_msg, NANO_VERBATIM_KEY), NANO_NO_KEY,
604 NANO_NO_KEY, NOVIEW, do_verbatim_input);
605
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000606#ifndef NANO_SMALL
607 /* Translators: try to keep this string under 10 characters long */
608 sc_init_one(&main_list, NANO_NO_KEY, cut_till_end_msg,
609 IFHELP(nano_cut_till_end_msg, NANO_CUTTILLEND_ALTKEY),
610 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_cut_till_end);
611#endif
612
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000613#ifndef DISABLE_JUSTIFY
614 /* Translators: try to keep this string under 10 characters long */
615 sc_init_one(&main_list, NANO_NO_KEY, fulljstify_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000616 IFHELP(nano_fulljustify_msg, NANO_FULLJUSTIFY_ALTKEY),
617 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_full_justify);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000618#endif
619
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000620#if !defined(NANO_SMALL) && defined(HAVE_REGEX_H)
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000621 sc_init_one(&main_list, NANO_NO_KEY, N_("Find Other Bracket"),
622 IFHELP(nano_bracket_msg, NANO_BRACKET_KEY), NANO_NO_KEY,
623 NANO_NO_KEY, VIEW, do_find_bracket);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000624#endif
625
Chris Allegrettadab017e2002-04-23 10:56:06 +0000626 free_shortcutage(&whereis_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +0000627
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000628 sc_init_one(&whereis_list, NANO_HELP_KEY, get_help_msg,
629 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
630 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000631#ifndef DISABLE_HELP
632 do_help
633#else
634 nano_disabled_msg
635#endif
636 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000637
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000638 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000639 sc_init_one(&whereis_list, NANO_CANCEL_KEY, cancel_msg,
640 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000641 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000642
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000643 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000644 sc_init_one(&whereis_list, NANO_FIRSTLINE_KEY, first_line_msg,
645 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_FIRSTLINE_FKEY,
646 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000647
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000648 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000649 sc_init_one(&whereis_list, NANO_LASTLINE_KEY, last_line_msg,
650 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_LASTLINE_FKEY,
651 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000652
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000653 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000654 sc_init_one(&whereis_list, NANO_TOOTHERSEARCH_KEY, replace_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000655 IFHELP(nano_replace_msg, NANO_NO_KEY), NANO_REPLACE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000656 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000657
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000658 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000659 sc_init_one(&whereis_list, NANO_TOGOTOLINE_KEY, go_to_line_msg,
660 IFHELP(nano_gotoline_msg, NANO_NO_KEY), NANO_GOTOLINE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000661 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta8c2b40f2000-06-29 01:30:04 +0000662
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000663#ifndef DISABLE_JUSTIFY
664 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000665 sc_init_one(&whereis_list, NANO_PARABEGIN_KEY, beg_of_par_msg,
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000666 IFHELP(nano_parabegin_msg, NANO_PARABEGIN_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000667 NANO_PARABEGIN_ALTKEY2, VIEW, do_para_begin_void);
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000668
669 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000670 sc_init_one(&whereis_list, NANO_PARAEND_KEY, end_of_par_msg,
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000671 IFHELP(nano_paraend_msg, NANO_PARAEND_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000672 NANO_PARAEND_ALTKEY2, VIEW, do_para_end_void);
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000673#endif
674
Chris Allegretta5f36c372001-07-16 00:48:53 +0000675#ifndef NANO_SMALL
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000676 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000677 sc_init_one(&whereis_list, NANO_NO_KEY, case_sens_msg,
678 IFHELP(nano_case_msg, TOGGLE_CASE_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000679 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000680
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000681 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000682 sc_init_one(&whereis_list, NANO_NO_KEY, direction_msg,
683 IFHELP(nano_reverse_msg, TOGGLE_BACKWARDS_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000684 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000685#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000686
Chris Allegretta658399a2001-06-14 02:54:22 +0000687#ifdef HAVE_REGEX_H
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000688 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000689 sc_init_one(&whereis_list, NANO_NO_KEY, regexp_msg,
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000690 IFHELP(nano_regexp_msg, NANO_REGEXP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000691 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000692#endif
Chris Allegretta5beed502003-01-05 20:41:21 +0000693
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000694#ifndef NANO_SMALL
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000695 /* Translators: try to keep this string under 10 characters long */
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000696 sc_init_one(&whereis_list, NANO_PREVLINE_KEY, history_msg,
697 IFHELP(nano_history_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000698 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000699
700 /* Translators: try to keep this string under 10 characters long */
701 sc_init_one(&whereis_list, NANO_CUTTILLEND_KEY, cut_till_end_msg,
702 IFHELP(nano_cut_till_end_msg, NANO_CUTTILLEND_ALTKEY),
703 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_cut_till_end);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000704#endif
David Lawrence Ramsey02085d72004-11-07 16:04:18 +0000705
706#ifndef DISABLE_JUSTIFY
707 /* Translators: try to keep this string under 10 characters long */
708 sc_init_one(&whereis_list, NANO_FULLJUSTIFY_KEY, fulljstify_msg,
709 IFHELP(nano_fulljustify_msg, NANO_FULLJUSTIFY_ALTKEY),
710 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_full_justify);
711#endif
Chris Allegretta5f36c372001-07-16 00:48:53 +0000712
Chris Allegrettadab017e2002-04-23 10:56:06 +0000713 free_shortcutage(&replace_list);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000714
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000715 sc_init_one(&replace_list, NANO_HELP_KEY, get_help_msg,
716 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
717 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000718#ifndef DISABLE_HELP
719 do_help
720#else
721 nano_disabled_msg
722#endif
723 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000724
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000725 sc_init_one(&replace_list, NANO_CANCEL_KEY, cancel_msg,
726 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000727 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta5f36c372001-07-16 00:48:53 +0000728
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000729 sc_init_one(&replace_list, NANO_FIRSTLINE_KEY, first_line_msg,
730 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_FIRSTLINE_FKEY,
731 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000732
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000733 sc_init_one(&replace_list, NANO_LASTLINE_KEY, last_line_msg,
734 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_LASTLINE_FKEY,
735 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000736
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000737 /* Translators: try to keep this string under 12 characters long */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000738 sc_init_one(&replace_list, NANO_TOOTHERSEARCH_KEY, N_("No Replace"),
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000739 IFHELP(nano_whereis_msg, NANO_NO_KEY), NANO_REPLACE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000740 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000741
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000742 sc_init_one(&replace_list, NANO_TOGOTOLINE_KEY, go_to_line_msg,
743 IFHELP(nano_gotoline_msg, NANO_NO_KEY), NANO_GOTOLINE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000744 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta8c2b40f2000-06-29 01:30:04 +0000745
Chris Allegretta5f36c372001-07-16 00:48:53 +0000746#ifndef NANO_SMALL
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000747 sc_init_one(&replace_list, NANO_NO_KEY, case_sens_msg,
748 IFHELP(nano_case_msg, TOGGLE_CASE_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000749 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000750
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000751 sc_init_one(&replace_list, NANO_NO_KEY, direction_msg,
752 IFHELP(nano_reverse_msg, TOGGLE_BACKWARDS_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000753 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000754#endif
Chris Allegretta105da332000-10-31 05:10:10 +0000755
Chris Allegretta658399a2001-06-14 02:54:22 +0000756#ifdef HAVE_REGEX_H
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000757 sc_init_one(&replace_list, NANO_NO_KEY, regexp_msg,
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000758 IFHELP(nano_regexp_msg, NANO_REGEXP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000759 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000760#endif
Chris Allegretta5beed502003-01-05 20:41:21 +0000761
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000762#ifndef NANO_SMALL
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000763 sc_init_one(&replace_list, NANO_PREVLINE_KEY, history_msg,
764 IFHELP(nano_history_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000765 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000766#endif
Chris Allegretta5f36c372001-07-16 00:48:53 +0000767
Chris Allegrettadab017e2002-04-23 10:56:06 +0000768 free_shortcutage(&replace_list_2);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000769
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000770 sc_init_one(&replace_list_2, NANO_HELP_KEY, get_help_msg,
771 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
772 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000773#ifndef DISABLE_HELP
774 do_help
775#else
776 nano_disabled_msg
777#endif
778 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000779
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000780 sc_init_one(&replace_list_2, NANO_CANCEL_KEY, cancel_msg,
781 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000782 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta105da332000-10-31 05:10:10 +0000783
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000784 sc_init_one(&replace_list_2, NANO_FIRSTLINE_KEY, first_line_msg,
785 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_NO_KEY,
786 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegretta105da332000-10-31 05:10:10 +0000787
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000788 sc_init_one(&replace_list_2, NANO_LASTLINE_KEY, last_line_msg,
789 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_NO_KEY,
790 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegretta105da332000-10-31 05:10:10 +0000791
David Lawrence Ramsey1addd602005-06-03 19:28:30 +0000792#ifndef NANO_SMALL
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000793 sc_init_one(&replace_list_2, NANO_PREVLINE_KEY, history_msg,
794 IFHELP(nano_history_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000795 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta5beed502003-01-05 20:41:21 +0000796#endif
797
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000798 free_shortcutage(&gotoline_list);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000799
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000800 sc_init_one(&gotoline_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000801 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
802 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000803#ifndef DISABLE_HELP
804 do_help
805#else
806 nano_disabled_msg
807#endif
808 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000809
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000810 sc_init_one(&gotoline_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000811 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000812 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000813
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000814 sc_init_one(&gotoline_list, NANO_FIRSTLINE_KEY, first_line_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000815 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_NO_KEY,
816 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000817
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000818 sc_init_one(&gotoline_list, NANO_LASTLINE_KEY, last_line_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000819 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_NO_KEY,
820 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000821
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000822 sc_init_one(&gotoline_list, NANO_TOOTHERWHEREIS_KEY,
823 N_("Go To Text"), IFHELP(nano_whereis_msg, NANO_NO_KEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000824 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000825
Chris Allegretta7662c862003-01-13 01:35:15 +0000826#ifndef DISABLE_HELP
Chris Allegrettadab017e2002-04-23 10:56:06 +0000827 free_shortcutage(&help_list);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000828
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000829 sc_init_one(&help_list, NANO_REFRESH_KEY, refresh_msg,
David Lawrence Ramsey64393302005-04-25 21:48:22 +0000830 IFHELP(nano_refresh_msg, NANO_NO_KEY), NANO_NO_KEY,
831 NANO_NO_KEY, VIEW, NULL);
832
833 sc_init_one(&help_list, NANO_EXIT_KEY, exit_msg,
834 IFHELP(nano_exit_msg, NANO_NO_KEY), NANO_EXIT_FKEY,
835 NANO_NO_KEY, VIEW, NULL);
836
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000837 sc_init_one(&help_list, NANO_PREVPAGE_KEY, prev_page_msg,
838 IFHELP(nano_prevpage_msg, NANO_NO_KEY), NANO_PREVPAGE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000839 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000840
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000841 sc_init_one(&help_list, NANO_NEXTPAGE_KEY, next_page_msg,
842 IFHELP(nano_nextpage_msg, NANO_NO_KEY), NANO_NEXTPAGE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000843 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseybe265612004-05-29 20:38:08 +0000844
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000845 sc_init_one(&help_list, NANO_PREVLINE_KEY, N_("Prev Line"),
846 IFHELP(nano_prevline_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000847 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseybe265612004-05-29 20:38:08 +0000848
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000849 sc_init_one(&help_list, NANO_NEXTLINE_KEY, N_("Next Line"),
850 IFHELP(nano_nextline_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000851 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta7662c862003-01-13 01:35:15 +0000852#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000853
Chris Allegrettadab017e2002-04-23 10:56:06 +0000854 free_shortcutage(&writefile_list);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000855
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000856 sc_init_one(&writefile_list, NANO_HELP_KEY, get_help_msg,
857 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
858 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000859#ifndef DISABLE_HELP
860 do_help
861#else
862 nano_disabled_msg
863#endif
864 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000865
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000866 sc_init_one(&writefile_list, NANO_CANCEL_KEY, cancel_msg,
867 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000868 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000869
Rocco Corsiaf5c3022001-01-12 07:51:05 +0000870#ifndef DISABLE_BROWSER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000871 /* If we're using restricted mode, the file browser is disabled.
872 * It's useless since inserting files is disabled. */
Jordi Mallachf9390af2003-08-05 19:31:12 +0000873 /* Translators: try to keep this string under 16 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000874 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000875 sc_init_one(&writefile_list, NANO_TOFILES_KEY, to_files_msg,
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000876 IFHELP(nano_tofiles_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000877 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000878#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000879
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000880#ifndef NANO_SMALL
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000881 /* If we're using restricted mode, the DOS format, Mac format,
882 * append, prepend, and backup toggles are disabled. The first and
883 * second are useless since inserting files is disabled, the third
884 * and fourth are disabled because they allow writing to files not
885 * specified on the command line, and the fifth is useless since
886 * backups are disabled. */
Jordi Mallachf9390af2003-08-05 19:31:12 +0000887 /* Translators: try to keep this string under 16 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000888 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000889 sc_init_one(&writefile_list, NANO_NO_KEY, N_("DOS Format"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000890 IFHELP(nano_dos_msg, TOGGLE_DOS_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000891 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000892
Jordi Mallachf9390af2003-08-05 19:31:12 +0000893 /* Translators: try to keep this string under 16 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000894 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000895 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Mac Format"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000896 IFHELP(nano_mac_msg, TOGGLE_MAC_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000897 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000898#endif
899
Jordi Mallachf9390af2003-08-05 19:31:12 +0000900 /* Translators: try to keep this string under 16 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000901 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000902 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Append"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000903 IFHELP(nano_append_msg, NANO_APPEND_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000904 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000905
Jordi Mallachf9390af2003-08-05 19:31:12 +0000906 /* Translators: try to keep this string under 16 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000907 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000908 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Prepend"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000909 IFHELP(nano_prepend_msg, NANO_PREPEND_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000910 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta0e9b7aa2002-04-16 03:15:47 +0000911
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000912#ifndef NANO_SMALL
Jordi Mallachf9390af2003-08-05 19:31:12 +0000913 /* Translators: try to keep this string under 16 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000914 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000915 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Backup File"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000916 IFHELP(nano_backup_msg, TOGGLE_BACKUP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000917 NANO_NO_KEY, NOVIEW, NULL);
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000918#endif
919
Chris Allegrettadab017e2002-04-23 10:56:06 +0000920 free_shortcutage(&insertfile_list);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000921
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000922 sc_init_one(&insertfile_list, NANO_HELP_KEY, get_help_msg,
923 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
924 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000925#ifndef DISABLE_HELP
926 do_help
927#else
928 nano_disabled_msg
929#endif
930 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000931
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000932 sc_init_one(&insertfile_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000933 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000934 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000935
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000936#ifndef DISABLE_BROWSER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000937 /* If we're using restricted mode, the file browser is disabled.
938 * It's useless since inserting files is disabled. */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000939 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000940 sc_init_one(&insertfile_list, NANO_TOFILES_KEY, to_files_msg,
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000941 IFHELP(nano_tofiles_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000942 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000943#endif
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000944
Chris Allegretta52c5a6e2002-03-21 05:07:28 +0000945#ifndef NANO_SMALL
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000946 /* If we're using restricted mode, command execution is disabled.
947 * It's useless since inserting files is disabled. */
Jordi Mallachf9390af2003-08-05 19:31:12 +0000948 /* Translators: try to keep this string under 22 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000949 if (!ISSET(RESTRICTED))
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000950 sc_init_one(&insertfile_list, NANO_TOOTHERINSERT_KEY,
951 N_("Execute Command"), IFHELP(nano_execute_msg,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000952 NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000953
Chris Allegrettaf7c68112002-09-03 22:58:40 +0000954#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000955 /* If we're using restricted mode, the multibuffer toggle is
956 * disabled. It's useless since inserting files is disabled. */
Jordi Mallachf9390af2003-08-05 19:31:12 +0000957 /* Translators: try to keep this string under 22 characters long */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000958 if (!ISSET(RESTRICTED))
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000959 sc_init_one(&insertfile_list, NANO_NO_KEY, new_buffer_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000960 IFHELP(nano_multibuffer_msg, TOGGLE_MULTIBUFFER_KEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000961 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaf7c68112002-09-03 22:58:40 +0000962#endif
David Lawrence Ramseye21adfa2002-09-13 18:14:04 +0000963#endif
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000964
Chris Allegretta7662c862003-01-13 01:35:15 +0000965#ifndef DISABLE_SPELLER
Chris Allegrettadab017e2002-04-23 10:56:06 +0000966 free_shortcutage(&spell_list);
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000967
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000968 sc_init_one(&spell_list, NANO_HELP_KEY, get_help_msg,
969 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
970 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000971#ifndef DISABLE_HELP
972 do_help
973#else
974 nano_disabled_msg
975#endif
976 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000977
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000978 sc_init_one(&spell_list, NANO_CANCEL_KEY, cancel_msg,
979 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000980 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta7662c862003-01-13 01:35:15 +0000981#endif
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000982
Chris Allegretta52c5a6e2002-03-21 05:07:28 +0000983#ifndef NANO_SMALL
Chris Allegrettadab017e2002-04-23 10:56:06 +0000984 free_shortcutage(&extcmd_list);
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000985
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000986 sc_init_one(&extcmd_list, NANO_HELP_KEY, get_help_msg,
987 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
988 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000989#ifndef DISABLE_HELP
990 do_help
991#else
992 nano_disabled_msg
993#endif
994 );
Chris Allegretta52c5a6e2002-03-21 05:07:28 +0000995
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000996 sc_init_one(&extcmd_list, NANO_CANCEL_KEY, cancel_msg,
997 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000998 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000999
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001000 sc_init_one(&extcmd_list, NANO_TOOTHERINSERT_KEY, N_("Insert File"),
1001 IFHELP(nano_insert_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001002 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001003
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +00001004#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +00001005 sc_init_one(&extcmd_list, NANO_NO_KEY, new_buffer_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +00001006 IFHELP(nano_multibuffer_msg, TOGGLE_MULTIBUFFER_KEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001007 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta52c5a6e2002-03-21 05:07:28 +00001008#endif
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +00001009#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +00001010
Rocco Corsiaf5c3022001-01-12 07:51:05 +00001011#ifndef DISABLE_BROWSER
Chris Allegrettadab017e2002-04-23 10:56:06 +00001012 free_shortcutage(&browser_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001013
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001014 sc_init_one(&browser_list, NANO_HELP_KEY, get_help_msg,
1015 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
1016 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001017#ifndef DISABLE_HELP
1018 do_help
1019#else
1020 nano_disabled_msg
1021#endif
1022 );
Chris Allegrettab3655b42001-10-22 03:15:31 +00001023
David Lawrence Ramsey8037fe02004-07-23 12:30:40 +00001024 sc_init_one(&browser_list, NANO_EXIT_KEY, exit_msg,
David Lawrence Ramseyc41d4282004-07-23 12:51:40 +00001025 IFHELP(nano_exitbrowser_msg, NANO_NO_KEY), NANO_EXIT_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001026 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +00001027
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001028 sc_init_one(&browser_list, NANO_PREVPAGE_KEY, prev_page_msg,
1029 IFHELP(nano_prevpage_msg, NANO_NO_KEY), NANO_PREVPAGE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001030 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001031
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001032 sc_init_one(&browser_list, NANO_NEXTPAGE_KEY, next_page_msg,
1033 IFHELP(nano_nextpage_msg, NANO_NO_KEY), NANO_NEXTPAGE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001034 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001035
Jordi Mallachf9390af2003-08-05 19:31:12 +00001036 /* Translators: try to keep this string under 22 characters long */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001037 sc_init_one(&browser_list, NANO_GOTOLINE_KEY, N_("Go To Dir"),
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +00001038 IFHELP(nano_gotodir_msg, NANO_GOTOLINE_ALTKEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001039 NANO_GOTOLINE_FKEY, NANO_NO_KEY, VIEW, NULL);
Rocco Corsi12f294c2001-04-14 06:50:24 +00001040
Chris Allegrettadab017e2002-04-23 10:56:06 +00001041 free_shortcutage(&gotodir_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001042
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001043 sc_init_one(&gotodir_list, NANO_HELP_KEY, get_help_msg,
1044 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY,
1045 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001046#ifndef DISABLE_HELP
1047 do_help
1048#else
1049 nano_disabled_msg
1050#endif
1051 );
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001052
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001053 sc_init_one(&gotodir_list, NANO_CANCEL_KEY, cancel_msg,
1054 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001055 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001056#endif
1057
Chris Allegrettaa8c22572002-02-15 19:17:02 +00001058 currshortcut = main_list;
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001059
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001060#ifndef NANO_SMALL
Chris Allegrettadab017e2002-04-23 10:56:06 +00001061 toggle_init();
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001062#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +00001063}
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001064
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001065/* Deallocate the given shortcut. */
1066void free_shortcutage(shortcut **shortcutage)
1067{
1068 assert(shortcutage != NULL);
David Lawrence Ramsey193b0e52005-06-06 18:41:17 +00001069
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001070 while (*shortcutage != NULL) {
1071 shortcut *ps = *shortcutage;
1072 *shortcutage = (*shortcutage)->next;
1073 free(ps);
1074 }
1075}
1076
1077#ifndef NANO_SMALL
1078/* Create one new toggle structure, at the end of the toggles linked
1079 * list. */
1080void toggle_init_one(int val, const char *desc, long flag)
1081{
1082 toggle *u;
1083
1084 if (toggles == NULL) {
David Lawrence Ramsey94b975c2004-07-20 12:57:34 +00001085 toggles = (toggle *)nmalloc(sizeof(toggle));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001086 u = toggles;
1087 } else {
1088 for (u = toggles; u->next != NULL; u = u->next)
1089 ;
David Lawrence Ramsey94b975c2004-07-20 12:57:34 +00001090 u->next = (toggle *)nmalloc(sizeof(toggle));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001091 u = u->next;
1092 }
1093
1094 u->val = val;
1095 u->desc = _(desc);
1096 u->flag = flag;
1097 u->next = NULL;
1098}
1099
1100void toggle_init(void)
1101{
1102 /* There is no need to reinitialize the toggles. They can't
1103 * change. */
1104 if (toggles != NULL)
1105 return;
1106
1107 toggle_init_one(TOGGLE_NOHELP_KEY, N_("Help mode"), NO_HELP);
1108#ifdef ENABLE_MULTIBUFFER
1109 /* If we're using restricted mode, the multibuffer toggle is
1110 * disabled. It's useless since inserting files is disabled. */
1111 if (!ISSET(RESTRICTED))
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +00001112 toggle_init_one(TOGGLE_MULTIBUFFER_KEY,
1113 N_("Multiple file buffers"), MULTIBUFFER);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001114#endif
1115 toggle_init_one(TOGGLE_CONST_KEY, N_("Constant cursor position"),
1116 CONSTUPDATE);
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +00001117 toggle_init_one(TOGGLE_AUTOINDENT_KEY, N_("Auto indent"),
1118 AUTOINDENT);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001119#ifndef DISABLE_WRAPPING
1120 toggle_init_one(TOGGLE_WRAP_KEY, N_("Auto line wrap"), NO_WRAP);
1121#endif
1122 toggle_init_one(TOGGLE_CUTTOEND_KEY, N_("Cut to end"), CUT_TO_END);
1123 /* If we're using restricted mode, the suspend toggle is disabled.
1124 * It's useless since suspending is disabled. */
1125 if (!ISSET(RESTRICTED))
1126 toggle_init_one(TOGGLE_SUSPEND_KEY, N_("Suspend"), SUSPEND);
1127#ifndef DISABLE_MOUSE
1128 toggle_init_one(TOGGLE_MOUSE_KEY, N_("Mouse support"), USE_MOUSE);
1129#endif
David Lawrence Ramsey74835712004-12-04 17:41:52 +00001130 /* If we're using restricted mode, the DOS/Mac conversion toggle is
1131 * disabled. It's useless since inserting files is disabled. */
1132 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001133 toggle_init_one(TOGGLE_NOCONVERT_KEY,
1134 N_("No conversion from DOS/Mac format"), NO_CONVERT);
David Lawrence Ramsey74835712004-12-04 17:41:52 +00001135 /* If we're using restricted mode, the backup toggle is disabled.
1136 * It's useless since backups are disabled. */
1137 if (!ISSET(RESTRICTED))
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +00001138 toggle_init_one(TOGGLE_BACKUP_KEY, N_("Backup files"),
1139 BACKUP_FILE);
1140 toggle_init_one(TOGGLE_SMOOTH_KEY, N_("Smooth scrolling"),
1141 SMOOTHSCROLL);
1142 toggle_init_one(TOGGLE_SMARTHOME_KEY, N_("Smart home key"),
1143 SMART_HOME);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001144#ifdef ENABLE_COLOR
1145 toggle_init_one(TOGGLE_SYNTAX_KEY, N_("Color syntax highlighting"),
David Lawrence Ramsey202d3c22005-03-10 20:55:11 +00001146 NO_COLOR_SYNTAX);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001147#endif
1148#ifdef ENABLE_NANORC
1149 toggle_init_one(TOGGLE_WHITESPACE_KEY, N_("Whitespace display"),
1150 WHITESPACE_DISPLAY);
1151#endif
David Lawrence Ramseyaeeb96e2005-06-12 16:00:09 +00001152 toggle_init_one(TOGGLE_MORESPACE_KEY,
1153 N_("Use of more space for editing"), MORE_SPACE);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001154}
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001155#endif /* !NANO_SMALL */
1156
Chris Allegretta6232d662002-05-12 19:52:15 +00001157/* This function is called just before calling exit(). Practically, the
1158 * only effect is to cause a segmentation fault if the various data
1159 * structures got bolloxed earlier. Thus, we don't bother having this
Chris Allegretta6df90f52002-07-19 01:08:59 +00001160 * function unless debugging is turned on. */
Chris Allegretta6232d662002-05-12 19:52:15 +00001161#ifdef DEBUG
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001162/* Added by SPK for memory cleanup; gracefully return our malloc()s. */
Chris Allegretta6df90f52002-07-19 01:08:59 +00001163void thanks_for_all_the_fish(void)
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001164{
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001165 delwin(topwin);
1166 delwin(edit);
1167 delwin(bottomwin);
1168
Chris Allegretta7662c862003-01-13 01:35:15 +00001169#ifndef DISABLE_JUSTIFY
1170 if (quotestr != NULL)
1171 free(quotestr);
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +00001172#ifdef HAVE_REGEX_H
1173 regfree(&quotereg);
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001174 if (quoteerr != NULL)
1175 free(quoteerr);
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +00001176#endif
Chris Allegretta7662c862003-01-13 01:35:15 +00001177#endif
David Lawrence Ramsey04e42a62004-02-28 16:24:31 +00001178#ifndef NANO_SMALL
1179 if (backup_dir != NULL)
1180 free(backup_dir);
1181#endif
Chris Allegretta2598c662002-03-28 01:59:34 +00001182#ifndef DISABLE_OPERATINGDIR
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001183 if (operating_dir != NULL)
1184 free(operating_dir);
1185 if (full_operating_dir != NULL)
1186 free(full_operating_dir);
1187#endif
1188 if (last_search != NULL)
1189 free(last_search);
1190 if (last_replace != NULL)
1191 free(last_replace);
1192 if (hblank != NULL)
1193 free(hblank);
1194#ifndef DISABLE_SPELLER
1195 if (alt_speller != NULL)
1196 free(alt_speller);
1197#endif
David Lawrence Ramseyad40fdb2002-09-06 20:35:28 +00001198#ifndef DISABLE_HELP
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001199 if (help_text != NULL)
1200 free(help_text);
David Lawrence Ramseyad40fdb2002-09-06 20:35:28 +00001201#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001202 if (filename != NULL)
1203 free(filename);
1204 if (answer != NULL)
1205 free(answer);
1206 if (cutbuffer != NULL)
Chris Allegretta7662c862003-01-13 01:35:15 +00001207 free_filestruct(cutbuffer);
David Lawrence Ramsey93c84052004-11-23 04:08:28 +00001208#ifndef DISABLE_JUSTIFY
1209 if (jusbuffer != NULL)
1210 free_filestruct(jusbuffer);
1211#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001212 free_shortcutage(&main_list);
1213 free_shortcutage(&whereis_list);
1214 free_shortcutage(&replace_list);
1215 free_shortcutage(&replace_list_2);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001216 free_shortcutage(&gotoline_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001217 free_shortcutage(&writefile_list);
1218 free_shortcutage(&insertfile_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001219#ifndef DISABLE_HELP
Chris Allegretta6df90f52002-07-19 01:08:59 +00001220 free_shortcutage(&help_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001221#endif
1222#ifndef DISABLE_SPELLER
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001223 free_shortcutage(&spell_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001224#endif
Chris Allegretta6df90f52002-07-19 01:08:59 +00001225#ifndef NANO_SMALL
1226 free_shortcutage(&extcmd_list);
1227#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001228#ifndef DISABLE_BROWSER
1229 free_shortcutage(&browser_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001230 free_shortcutage(&gotodir_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001231#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001232#ifndef NANO_SMALL
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001233 /* Free the memory associated with each toggle. */
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001234 while (toggles != NULL) {
1235 toggle *t = toggles;
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001236
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001237 toggles = toggles->next;
1238 free(t);
1239 }
1240#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001241#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey5d8d0b12005-05-26 05:53:29 +00001242 /* Free the memory associated with each open file buffer. */
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001243 if (open_files != NULL) {
1244 /* Make sure open_files->fileage is up to date, in case we've
1245 * cut the top line of the file. */
1246 open_files->fileage = fileage;
1247
Chris Allegretta6df90f52002-07-19 01:08:59 +00001248 free_openfilestruct(open_files);
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001249 }
Chris Allegrettaf2387fb2002-04-10 02:31:20 +00001250#else
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001251 if (fileage != NULL)
1252 free_filestruct(fileage);
Chris Allegrettaf2387fb2002-04-10 02:31:20 +00001253#endif
Chris Allegretta6df90f52002-07-19 01:08:59 +00001254#ifdef ENABLE_COLOR
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001255 if (syntaxstr != NULL)
1256 free(syntaxstr);
Chris Allegretta6df90f52002-07-19 01:08:59 +00001257 while (syntaxes != NULL) {
1258 syntaxtype *bill = syntaxes;
1259
1260 free(syntaxes->desc);
1261 while (syntaxes->extensions != NULL) {
1262 exttype *bob = syntaxes->extensions;
1263
1264 syntaxes->extensions = bob->next;
Chris Allegretta7662c862003-01-13 01:35:15 +00001265 regfree(&bob->val);
Chris Allegretta6df90f52002-07-19 01:08:59 +00001266 free(bob);
1267 }
1268 while (syntaxes->color != NULL) {
1269 colortype *bob = syntaxes->color;
1270
1271 syntaxes->color = bob->next;
Chris Allegretta7662c862003-01-13 01:35:15 +00001272 regfree(&bob->start);
1273 if (bob->end != NULL)
Chris Allegrettace452fb2003-02-03 02:56:44 +00001274 regfree(bob->end);
1275 free(bob->end);
Chris Allegretta6df90f52002-07-19 01:08:59 +00001276 free(bob);
1277 }
1278 syntaxes = syntaxes->next;
1279 free(bill);
1280 }
1281#endif /* ENABLE_COLOR */
Chris Allegretta5beed502003-01-05 20:41:21 +00001282#ifndef NANO_SMALL
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001283 /* Free the search and replace history lists. */
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001284 if (searchage != NULL)
1285 free_filestruct(searchage);
1286 if (replaceage != NULL)
1287 free_filestruct(replaceage);
Chris Allegretta5beed502003-01-05 20:41:21 +00001288#endif
David Lawrence Ramseya27bd652004-08-17 05:23:38 +00001289#ifdef ENABLE_NANORC
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001290 if (homedir != NULL)
1291 free(homedir);
David Lawrence Ramseya27bd652004-08-17 05:23:38 +00001292#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001293}
Chris Allegretta6232d662002-05-12 19:52:15 +00001294#endif /* DEBUG */