blob: 96a33e54fe43af28421bcbeec9f1f8b4b198400f [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 Ramsey315eb322005-11-28 19:35:29 +00005 * Copyright (C) 1999-2004 Chris Allegretta *
David Lawrence Ramseyd89617f2006-01-06 21:51:10 +00006 * Copyright (C) 2005-2006 David Lawrence Ramsey *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +00007 * This program is free software; you can redistribute it and/or modify *
8 * it under the terms of the GNU General Public License as published by *
Chris Allegretta3a24f3f2001-10-24 11:33:54 +00009 * the Free Software Foundation; either version 2, or (at your option) *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000010 * any later version. *
11 * *
David Lawrence Ramsey6e925cf2005-05-15 19:57:17 +000012 * This program is distributed in the hope that it will be useful, but *
13 * WITHOUT ANY WARRANTY; without even the implied warranty of *
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
15 * General Public License for more details. *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000016 * *
17 * You should have received a copy of the GNU General Public License *
18 * along with this program; if not, write to the Free Software *
David Lawrence Ramsey6e925cf2005-05-15 19:57:17 +000019 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *
20 * 02110-1301, USA. *
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000021 * *
22 **************************************************************************/
23
Chris Allegrettaa2ea1932000-06-06 05:53:49 +000024#include "proto.h"
25
Chris Allegretta7662c862003-01-13 01:35:15 +000026/* Global variables */
David Lawrence Ramseyf5b256b2003-10-03 20:26:25 +000027#ifndef DISABLE_WRAPJUSTIFY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000028ssize_t fill = 0;
29 /* The column where we will wrap lines. */
David Lawrence Ramsey691698a2005-07-24 19:57:51 +000030ssize_t wrap_at = -CHARS_FROM_EOL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000031 /* The position where we will wrap lines. fill is equal to this
32 * if it's greater than zero, and equal to (COLS + this) if it
33 * isn't. */
David Lawrence Ramseyf5b256b2003-10-03 20:26:25 +000034#endif
35
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000036char *last_search = NULL;
37 /* The last string we searched for. */
38char *last_replace = NULL;
39 /* The last replacement string we searched for. */
Chris Allegretta6df90f52002-07-19 01:08:59 +000040
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000041long flags = 0;
42 /* Our flag containing the states of all global options. */
43WINDOW *topwin;
44 /* The top portion of the window, where we display the version
45 * number of nano, the name of the current file, and whether the
46 * current file has been modified. */
47WINDOW *edit;
48 /* The middle portion of the window, i.e, the edit window, where
49 * we display the current file we're editing. */
50WINDOW *bottomwin;
51 /* The bottom portion of the window, where we display statusbar
52 * messages, the statusbar prompt, and a list of shortcuts. */
53int editwinrows = 0;
54 /* How many rows does the edit window take up? */
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +000055
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000056filestruct *cutbuffer = NULL;
57 /* The buffer where we store cut text. */
David Lawrence Ramsey93c84052004-11-23 04:08:28 +000058#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000059filestruct *jusbuffer = NULL;
60 /* The buffer where we store unjustified text. */
David Lawrence Ramsey93c84052004-11-23 04:08:28 +000061#endif
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000062partition *filepart = NULL;
63 /* The partition where we store a portion of the current
64 * file. */
David Lawrence Ramsey64661ac2005-07-08 19:57:25 +000065openfilestruct *openfile = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000066 /* The list of all open file buffers. */
Chris Allegretta2d7893d2001-07-11 02:08:33 +000067
David Lawrence Ramseyd89617f2006-01-06 21:51:10 +000068#ifndef NANO_TINY
69char *matchbrackets = NULL;
70 /* The opening and closing brackets that can be found by bracket
71 * searches. */
72#endif
73
David Lawrence Ramseyebe34252005-11-15 03:17:35 +000074#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000075char *whitespace = NULL;
76 /* The characters used when displaying the first characters of
77 * tabs and spaces. */
78int whitespace_len[2];
79 /* The length of these characters. */
David Lawrence Ramsey89bb9372004-05-29 16:47:52 +000080#endif
81
Chris Allegrettae4f940d2002-03-03 22:36:36 +000082#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000083char *punct = NULL;
84 /* The closing punctuation that can end sentences. */
85char *brackets = NULL;
86 /* The closing brackets that can follow closing punctuation and
87 * can end sentences. */
88char *quotestr = NULL;
89 /* The quoting string. The default value is set in main(). */
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +000090#ifdef HAVE_REGEX_H
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000091regex_t quotereg;
92 /* The compiled regular expression from the quoting string. */
93int quoterc;
94 /* Whether it actually compiled. */
95char *quoteerr = NULL;
96 /* The error message, if it didn't. */
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +000097#else
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000098size_t quotelen;
99 /* The length of the quoting string in bytes. */
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +0000100#endif
Chris Allegretta6df90f52002-07-19 01:08:59 +0000101#endif
Chris Allegrettae4f940d2002-03-03 22:36:36 +0000102
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000103char *answer = NULL;
104 /* The answer string used in the statusbar prompt. */
105
106ssize_t tabsize = -1;
107 /* The width of a tab in spaces. The default value is set in
108 * main(). */
109
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000110#ifndef NANO_TINY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000111char *backup_dir = NULL;
112 /* The directory where we store backup files. */
David Lawrence Ramsey04e42a62004-02-28 16:24:31 +0000113#endif
Chris Allegrettae1f14522001-09-19 03:19:43 +0000114#ifndef DISABLE_OPERATINGDIR
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000115char *operating_dir = NULL;
116 /* The relative path to the operating directory, which we can't
117 * move outside of. */
118char *full_operating_dir = NULL;
119 /* The full path to it. */
Chris Allegrettae1f14522001-09-19 03:19:43 +0000120#endif
121
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000122#ifndef DISABLE_SPELLER
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000123char *alt_speller = NULL;
124 /* The command to use for the alternate spell checker. */
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000125#endif
126
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000127shortcut *main_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000128 /* The main shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000129shortcut *whereis_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000130 /* The "Search" shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000131shortcut *replace_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000132 /* The "Search (to replace)" shortcut list. */
133shortcut *replace_list_2 = NULL;
134 /* The "Replace with" shortcut list. */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000135shortcut *gotoline_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000136 /* The "Enter line number, column number" shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000137shortcut *writefile_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000138 /* The "File Name to Write" shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000139shortcut *insertfile_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000140 /* The "File to insert" shortcut list. */
141#ifndef NANO_TINY
142shortcut *extcmd_list = NULL;
143 /* The "Command to execute" shortcut list. */
144#endif
Chris Allegretta7662c862003-01-13 01:35:15 +0000145#ifndef DISABLE_HELP
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000146shortcut *help_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000147 /* The help text shortcut list. */
Chris Allegretta7662c862003-01-13 01:35:15 +0000148#endif
149#ifndef DISABLE_SPELLER
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000150shortcut *spell_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000151 /* The internal spell checker shortcut list. */
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;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000155 /* The file browser shortcut list. */
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000156shortcut *whereis_file_list = NULL;
157 /* The file browser "Search" shortcut list. */
Chris Allegretta201f1d92003-02-05 02:51:19 +0000158shortcut *gotodir_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000159 /* The "Go To Directory" shortcut list. */
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000160#endif
Chris Allegretta201f1d92003-02-05 02:51:19 +0000161
Chris Allegretta8ce24132001-04-30 11:28:46 +0000162#ifdef ENABLE_COLOR
David Lawrence Ramsey9b13ff32002-12-22 16:30:00 +0000163syntaxtype *syntaxes = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000164 /* The global list of color syntaxes. */
David Lawrence Ramsey9b13ff32002-12-22 16:30:00 +0000165char *syntaxstr = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000166 /* The color syntax name specified on the command line. */
Chris Allegretta8ce24132001-04-30 11:28:46 +0000167#endif
168
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000169const shortcut *currshortcut;
170 /* The current shortcut list we're using. */
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000171#ifndef NANO_TINY
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000172toggle *toggles = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000173 /* The global toggle list. */
Chris Allegrettaf0b26df2001-01-20 22:18:18 +0000174#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000175
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000176#ifndef NANO_TINY
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000177filestruct *search_history = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000178 /* The search string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000179filestruct *searchage = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000180 /* The top of the search string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000181filestruct *searchbot = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000182 /* The bottom of the search string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000183filestruct *replace_history = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000184 /* The replace string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000185filestruct *replaceage = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000186 /* The top of the replace string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000187filestruct *replacebot = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000188 /* The bottom of the replace string history list. */
Chris Allegretta5beed502003-01-05 20:41:21 +0000189#endif
190
Chris Allegretta9fc8d432000-07-07 01:49:52 +0000191/* Regular expressions */
Chris Allegretta805c26d2000-09-06 13:39:17 +0000192#ifdef HAVE_REGEX_H
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000193regex_t search_regexp;
194 /* The compiled regular expression to use in searches. */
195regmatch_t regmatches[10];
196 /* The match positions for parenthetical subexpressions, 10
197 * maximum, used in regular expression searches. */
Chris Allegretta6df90f52002-07-19 01:08:59 +0000198#endif
Chris Allegretta3533a342002-03-24 23:19:32 +0000199
David Lawrence Ramsey4d72de72006-04-12 15:27:40 +0000200int reverse_attr = A_REVERSE;
201 /* The curses attribute we use for reverse video. */
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000202bool curses_ended = FALSE;
203 /* Whether endwin() has ended curses mode and statusbar()
204 * should hence write to stderr instead of displaying on the
205 * statusbar. */
Chris Allegrettaa0d89972003-02-03 03:32:08 +0000206
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000207char *homedir = NULL;
208 /* The user's home directory, from $HOME or
209 * /etc/passwd. */
David Lawrence Ramseya27bd652004-08-17 05:23:38 +0000210
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000211/* Return the number of entries in the shortcut list s. */
David Lawrence Ramseyebd0d7c2004-07-01 18:59:52 +0000212size_t length_of_list(const shortcut *s)
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000213{
David Lawrence Ramseyebd0d7c2004-07-01 18:59:52 +0000214 size_t i = 0;
David Lawrence Ramseye21adfa2002-09-13 18:14:04 +0000215
Chris Allegrettadab017e2002-04-23 10:56:06 +0000216 for (; s != NULL; s = s->next)
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000217 i++;
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000218 return i;
219}
220
David Lawrence Ramseya549a822005-07-01 23:11:52 +0000221/* Create a new shortcut structure, at the end of the shortcuts linked
222 * list. */
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000223void sc_init_one(shortcut **shortcutage, int ctrlval, const char *desc,
Chris Allegrettadab017e2002-04-23 10:56:06 +0000224#ifndef DISABLE_HELP
Chris Allegrettaf717f982003-02-13 22:25:01 +0000225 const char *help,
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000226#endif
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000227 int metaval, int funcval, int miscval, bool view, void
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000228 (*func)(void))
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000229{
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000230 shortcut *s;
231
232 if (*shortcutage == NULL) {
David Lawrence Ramsey70047ee2003-06-14 20:41:34 +0000233 *shortcutage = (shortcut *)nmalloc(sizeof(shortcut));
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000234 s = *shortcutage;
235 } else {
236 for (s = *shortcutage; s->next != NULL; s = s->next)
237 ;
David Lawrence Ramsey70047ee2003-06-14 20:41:34 +0000238 s->next = (shortcut *)nmalloc(sizeof(shortcut));
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000239 s = s->next;
240 }
241
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000242 s->ctrlval = ctrlval;
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000243 s->desc = _(desc);
Chris Allegrettadab017e2002-04-23 10:56:06 +0000244#ifndef DISABLE_HELP
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000245 s->help = _(help);
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000246#endif
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000247 s->metaval = metaval;
248 s->funcval = funcval;
249 s->miscval = miscval;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000250 s->viewok = view;
251 s->func = func;
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000252 s->next = NULL;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000253}
254
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000255/* Initialize all shortcut lists. If unjustify is TRUE, replace the
256 * Uncut shortcut in the main shortcut list with UnJustify. */
David Lawrence Ramsey1f1ebb82004-11-11 21:50:01 +0000257void shortcut_init(bool unjustify)
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000258{
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000259 /* TRANSLATORS: Try to keep this and following strings at most 10 characters. */
David Lawrence Ramsey12c08dd2006-03-25 15:56:40 +0000260 const char *cancel_msg = N_("Cancel");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000261 const char *get_help_msg = N_("Get Help");
262 const char *exit_msg = N_("Exit");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000263 const char *whereis_msg = N_("Where Is");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000264 const char *prev_page_msg = N_("Prev Page");
265 const char *next_page_msg = N_("Next Page");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000266 const char *go_to_line_msg = N_("Go To Line");
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000267 /* TRANSLATORS: Try to keep this and previous strings at most 10 characters. */
David Lawrence Ramsey12c08dd2006-03-25 15:56:40 +0000268 const char *replace_msg = N_("Replace");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000269#ifndef NANO_TINY
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000270 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000271 const char *whereis_next_msg = N_("Where Is Next");
272#endif
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000273 /* TRANSLATORS: Try to keep this and following strings at most 10 characters. */
David Lawrence Ramsey12c08dd2006-03-25 15:56:40 +0000274 const char *refresh_msg = N_("Refresh");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000275 const char *first_line_msg = N_("First Line");
276 const char *last_line_msg = N_("Last Line");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000277#ifndef NANO_TINY
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000278 const char *cut_till_end_msg = N_("CutTillEnd");
279#endif
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000280#ifndef DISABLE_JUSTIFY
281 const char *beg_of_par_msg = N_("Beg of Par");
282 const char *end_of_par_msg = N_("End of Par");
283 const char *fulljstify_msg = N_("FullJstify");
284#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000285#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000286 const char *case_sens_msg = N_("Case Sens");
David Lawrence Ramseyf3ecffd2005-06-16 18:48:30 +0000287 const char *backwards_msg = N_("Backwards");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000288#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000289#ifdef HAVE_REGEX_H
290 const char *regexp_msg = N_("Regexp");
291#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000292#ifndef NANO_TINY
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000293 /* TRANSLATORS: Try to keep this and previous strings at most 10 characters. */
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000294 const char *history_msg = N_("History");
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000295#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramseyaf318aa2006-04-12 12:54:23 +0000296 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000297 const char *new_buffer_msg = N_("New Buffer");
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000298#endif
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000299#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000300#ifndef DISABLE_BROWSER
David Lawrence Ramseyb61dc892006-04-15 17:21:52 +0000301 /* TRANSLATORS: Try to keep this and following strings at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000302 const char *to_files_msg = N_("To Files");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000303 const char *first_file_msg = N_("First File");
David Lawrence Ramseyb61dc892006-04-15 17:21:52 +0000304 /* TRANSLATORS: Try to keep this and previous strings at most 16 characters. */
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000305 const char *last_file_msg = N_("Last File");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000306#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +0000307#ifndef DISABLE_HELP
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000308 const char *nano_cancel_msg = N_("Cancel the current function");
David Lawrence Ramsey57c9afb2006-04-14 20:21:45 +0000309 const char *nano_help_msg = N_("Display this help text");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000310 const char *nano_exit_msg =
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000311#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey95f7a742005-06-16 03:11:39 +0000312 N_("Close the current file buffer/Exit from nano")
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000313#else
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000314 N_("Exit from nano")
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000315#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000316 ;
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000317 const char *nano_writeout_msg =
318 N_("Write the current file to disk");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000319 const char *nano_justify_msg = N_("Justify the current paragraph");
320 const char *nano_insert_msg =
321 N_("Insert another file into the current one");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000322 const char *nano_whereis_msg =
323 N_("Search for text within the editor");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000324 const char *nano_prevpage_msg = N_("Move to the previous screen");
325 const char *nano_nextpage_msg = N_("Move to the next screen");
326 const char *nano_cut_msg =
327 N_("Cut the current line and store it in the cutbuffer");
328 const char *nano_uncut_msg =
329 N_("Uncut from the cutbuffer into the current line");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000330 const char *nano_cursorpos_msg =
David Lawrence Ramseyf50bd4b2006-04-14 20:15:44 +0000331 N_("Display the position of the cursor");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000332 const char *nano_spell_msg =
333 N_("Invoke the spell checker, if available");
David Lawrence Ramsey16349c92005-07-11 20:50:43 +0000334 const char *nano_gotoline_msg = N_("Go to line and column number");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000335 const char *nano_replace_msg = N_("Replace text within the editor");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000336#ifndef NANO_TINY
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000337 const char *nano_mark_msg = N_("Mark text at the cursor position");
338 const char *nano_whereis_next_msg = N_("Repeat last search");
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000339#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000340 const char *nano_prevline_msg = N_("Move to the previous line");
341 const char *nano_nextline_msg = N_("Move to the next line");
342 const char *nano_forward_msg = N_("Move forward one character");
343 const char *nano_back_msg = N_("Move back one character");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000344 const char *nano_home_msg =
345 N_("Move to the beginning of the current line");
346 const char *nano_end_msg =
347 N_("Move to the end of the current line");
348 const char *nano_refresh_msg =
349 N_("Refresh (redraw) the current screen");
350 const char *nano_delete_msg =
351 N_("Delete the character under the cursor");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000352 const char *nano_backspace_msg =
353 N_("Delete the character to the left of the cursor");
David Lawrence Ramseye7c41682004-10-23 14:53:07 +0000354 const char *nano_tab_msg =
355 N_("Insert a tab character at the cursor position");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000356 const char *nano_enter_msg =
357 N_("Insert a carriage return at the cursor position");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000358#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000359 const char *nano_nextword_msg = N_("Move forward one word");
360 const char *nano_prevword_msg = N_("Move backward one word");
David Lawrence Ramseye010edd2005-06-12 22:31:03 +0000361 const char *nano_wordcount_msg =
David Lawrence Ramsey72936852005-07-25 03:47:08 +0000362 N_("Count the number of words, lines, and characters");
David Lawrence Ramseyae9eea72005-11-10 07:40:55 +0000363 const char *nano_scrollup_msg =
David Lawrence Ramsey2de84c12005-10-24 02:12:09 +0000364 N_("Scroll up one line without scrolling the cursor");
David Lawrence Ramseyae9eea72005-11-10 07:40:55 +0000365 const char *nano_scrolldown_msg =
David Lawrence Ramsey2de84c12005-10-24 02:12:09 +0000366 N_("Scroll down one line without scrolling the cursor");
David Lawrence Ramsey00d77982004-08-07 21:27:37 +0000367#endif
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000368#ifndef DISABLE_JUSTIFY
369 const char *nano_parabegin_msg =
370 N_("Go to the beginning of the current paragraph");
371 const char *nano_paraend_msg =
372 N_("Go to the end of the current paragraph");
373#endif
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000374#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +0000375 const char *nano_prevfile_msg =
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000376 N_("Switch to the previous file buffer");
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +0000377 const char *nano_nextfile_msg =
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000378 N_("Switch to the next file buffer");
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000379#endif
380 const char *nano_verbatim_msg = N_("Insert character(s) verbatim");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000381#ifndef NANO_TINY
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000382 const char *nano_cut_till_end_msg =
383 N_("Cut from the cursor position to the end of the file");
384#endif
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000385#ifndef DISABLE_JUSTIFY
386 const char *nano_fulljustify_msg = N_("Justify the entire file");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000387#endif
David Lawrence Ramseyc5c52302005-11-15 23:45:29 +0000388#ifndef NANO_TINY
David Lawrence Ramsey29fb9512005-11-16 07:35:01 +0000389 const char *nano_bracket_msg = N_("Find matching bracket");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000390#endif
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000391 const char *nano_firstline_msg =
392 N_("Go to the first line of the file");
393 const char *nano_lastline_msg =
394 N_("Go to the last line of the file");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000395#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000396 const char *nano_case_msg =
397 N_("Make the current search/replace case (in)sensitive");
398 const char *nano_reverse_msg =
399 N_("Make the current search/replace go backwards");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000400#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000401#ifdef HAVE_REGEX_H
402 const char *nano_regexp_msg = N_("Use regular expressions");
403#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000404#ifndef NANO_TINY
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000405 const char *nano_history_msg =
406 N_("Edit the previous search/replace strings");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000407#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000408#ifndef DISABLE_BROWSER
409 const char *nano_tofiles_msg = N_("Go to file browser");
410#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000411#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000412 const char *nano_dos_msg = N_("Write file out in DOS format");
413 const char *nano_mac_msg = N_("Write file out in Mac format");
414#endif
415 const char *nano_append_msg = N_("Append to the current file");
416 const char *nano_prepend_msg = N_("Prepend to the current file");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000417#ifndef NANO_TINY
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000418 const char *nano_backup_msg =
419 N_("Back up original file when saving");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000420 const char *nano_execute_msg = N_("Execute external command");
421#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000422#if !defined(NANO_TINY) && defined(ENABLE_MULTIBUFFER)
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000423 const char *nano_multibuffer_msg = N_("Insert into new buffer");
424#endif
425#ifndef DISABLE_BROWSER
David Lawrence Ramseyc41d4282004-07-23 12:51:40 +0000426 const char *nano_exitbrowser_msg = N_("Exit from the file browser");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000427 const char *nano_firstfile_msg =
428 N_("Go to the first file in the list");
429 const char *nano_lastfile_msg =
430 N_("Go to the last file in the list");
David Lawrence Ramseyc41d4282004-07-23 12:51:40 +0000431 const char *nano_gotodir_msg = N_("Go to directory");
Chris Allegretta2bef1822001-09-28 19:53:11 +0000432#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +0000433#endif /* !DISABLE_HELP */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000434
David Lawrence Ramsey8e4adcd2004-05-20 03:29:33 +0000435/* The following macro is to be used in calling sc_init_one(). The
436 * point is that sc_init_one() takes 9 arguments, unless DISABLE_HELP is
437 * defined, when the 4th one should not be there. */
David Lawrence Ramseyea43a1d2004-03-02 22:52:57 +0000438#ifndef DISABLE_HELP
David Lawrence Ramseyeb509222005-03-22 04:50:11 +0000439#define IFHELP(help, nextvar) help, nextvar
David Lawrence Ramseyea43a1d2004-03-02 22:52:57 +0000440#else
David Lawrence Ramseyeb509222005-03-22 04:50:11 +0000441#define IFHELP(help, nextvar) nextvar
Chris Allegrettadab017e2002-04-23 10:56:06 +0000442#endif
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000443
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000444 free_shortcutage(&main_list);
445
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000446 sc_init_one(&main_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000447 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
448 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000449#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000450 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000451#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000452 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000453#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000454 );
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000455
David Lawrence Ramsey5b3dd0f2004-11-25 04:39:07 +0000456 sc_init_one(&main_list, NANO_EXIT_KEY,
Chris Allegretta355fbe52001-07-14 19:32:47 +0000457#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000458 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000459 openfile != NULL && openfile != openfile->next ? N_("Close") :
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000460#endif
David Lawrence Ramsey5b3dd0f2004-11-25 04:39:07 +0000461 exit_msg, IFHELP(nano_exit_msg, NANO_NO_KEY), NANO_EXIT_FKEY,
462 NANO_NO_KEY, VIEW, do_exit);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000463
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000464 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000465 sc_init_one(&main_list, NANO_WRITEOUT_KEY, N_("WriteOut"),
466 IFHELP(nano_writeout_msg, NANO_NO_KEY), NANO_WRITEOUT_FKEY,
467 NANO_NO_KEY, NOVIEW, do_writeout_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000468
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000469 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000470 sc_init_one(&main_list, NANO_JUSTIFY_KEY, N_("Justify"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000471 IFHELP(nano_justify_msg, NANO_NO_KEY), NANO_JUSTIFY_FKEY,
472 NANO_NO_KEY, NOVIEW,
David Lawrence Ramseya539fce2004-06-29 00:43:56 +0000473#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000474 do_justify_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000475#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000476 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000477#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000478 );
Chris Allegretta32da4562002-01-02 15:12:21 +0000479
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000480 /* We allow inserting files in view mode if multibuffers are
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000481 * available, so that we can view multiple files. If we're using
482 * restricted mode, inserting files is disabled, since it allows
483 * reading from or writing to files not specified on the command
484 * line. */
485
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000486 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000487 sc_init_one(&main_list, NANO_INSERTFILE_KEY, N_("Read File"),
488 IFHELP(nano_insert_msg, NANO_NO_KEY), NANO_INSERTFILE_FKEY,
489 NANO_NO_KEY,
Chris Allegretta32da4562002-01-02 15:12:21 +0000490#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000491 VIEW
Chris Allegretta32da4562002-01-02 15:12:21 +0000492#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000493 NOVIEW
Chris Allegretta32da4562002-01-02 15:12:21 +0000494#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000495 , !ISSET(RESTRICTED) ? do_insertfile_void : nano_disabled_msg);
Chris Allegrettaaf6414a2001-02-11 19:05:05 +0000496
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000497 sc_init_one(&main_list, NANO_WHEREIS_KEY, whereis_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000498 IFHELP(nano_whereis_msg, NANO_NO_KEY), NANO_WHEREIS_FKEY,
499 NANO_NO_KEY, VIEW, do_search);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000500
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000501 sc_init_one(&main_list, NANO_PREVPAGE_KEY, prev_page_msg,
502 IFHELP(nano_prevpage_msg, NANO_NO_KEY), NANO_PREVPAGE_FKEY,
503 NANO_NO_KEY, VIEW, do_page_up);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000504
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000505 sc_init_one(&main_list, NANO_NEXTPAGE_KEY, next_page_msg,
506 IFHELP(nano_nextpage_msg, NANO_NO_KEY), NANO_NEXTPAGE_FKEY,
507 NANO_NO_KEY, VIEW, do_page_down);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000508
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000509 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000510 sc_init_one(&main_list, NANO_CUT_KEY, N_("Cut Text"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000511 IFHELP(nano_cut_msg, NANO_NO_KEY), NANO_CUT_FKEY, NANO_NO_KEY,
512 NOVIEW, do_cut_text);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000513
Chris Allegretta07798352000-11-27 22:58:23 +0000514 if (unjustify)
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000515 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000516 sc_init_one(&main_list, NANO_UNJUSTIFY_KEY, N_("UnJustify"),
517 IFHELP(NULL, NANO_NO_KEY), NANO_UNJUSTIFY_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000518 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta07798352000-11-27 22:58:23 +0000519 else
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000520 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000521 sc_init_one(&main_list, NANO_UNCUT_KEY, N_("UnCut Txt"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000522 IFHELP(nano_uncut_msg, NANO_NO_KEY), NANO_UNCUT_FKEY,
523 NANO_NO_KEY, NOVIEW, do_uncut_text);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000524
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000525 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000526 sc_init_one(&main_list, NANO_CURSORPOS_KEY, N_("Cur Pos"),
527 IFHELP(nano_cursorpos_msg, NANO_NO_KEY), NANO_CURSORPOS_FKEY,
528 NANO_NO_KEY, VIEW, do_cursorpos_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000529
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000530 /* If we're using restricted mode, spell checking is disabled
531 * because it allows reading from or writing to files not specified
532 * on the command line. */
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000533 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000534 sc_init_one(&main_list, NANO_SPELL_KEY, N_("To Spell"),
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000535 IFHELP(nano_spell_msg, NANO_NO_KEY), NANO_SPELL_FKEY,
536 NANO_NO_KEY, NOVIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000537#ifndef DISABLE_SPELLER
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000538 !ISSET(RESTRICTED) ? do_spell :
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000539#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000540 nano_disabled_msg);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000541
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000542 sc_init_one(&main_list, NANO_GOTOLINE_KEY, go_to_line_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000543 IFHELP(nano_gotoline_msg, NANO_GOTOLINE_ALTKEY),
David Lawrence Ramsey9245f972005-05-17 18:06:26 +0000544 NANO_GOTOLINE_FKEY, NANO_NO_KEY, VIEW,
545 do_gotolinecolumn_void);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000546
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000547 sc_init_one(&main_list, NANO_REPLACE_KEY, replace_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000548 IFHELP(nano_replace_msg, NANO_ALT_REPLACE_KEY),
549 NANO_REPLACE_FKEY, NANO_NO_KEY, NOVIEW, do_replace);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000550
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000551#ifndef NANO_TINY
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000552 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000553 sc_init_one(&main_list, NANO_MARK_KEY, N_("Mark Text"),
554 IFHELP(nano_mark_msg, NANO_MARK_ALTKEY), NANO_MARK_FKEY,
David Lawrence Ramseya049c832005-06-12 23:53:28 +0000555 NANO_NO_KEY, VIEW, do_mark);
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000556
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000557 sc_init_one(&main_list, NANO_NO_KEY, whereis_next_msg,
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000558 IFHELP(nano_whereis_next_msg, NANO_WHEREIS_NEXT_KEY),
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000559 NANO_WHEREIS_NEXT_FKEY, NANO_NO_KEY, VIEW, do_research);
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000560#endif
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000561
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000562 sc_init_one(&main_list, NANO_PREVLINE_KEY, N_("Prev Line"),
563 IFHELP(nano_prevline_msg, NANO_NO_KEY), NANO_NO_KEY,
564 NANO_NO_KEY, VIEW, do_up);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000565
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000566 sc_init_one(&main_list, NANO_NEXTLINE_KEY, N_("Next Line"),
567 IFHELP(nano_nextline_msg, NANO_NO_KEY), NANO_NO_KEY,
568 NANO_NO_KEY, VIEW, do_down);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000569
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000570 sc_init_one(&main_list, NANO_FORWARD_KEY, N_("Forward"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000571 IFHELP(nano_forward_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
572 VIEW, do_right);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000573
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000574 sc_init_one(&main_list, NANO_BACK_KEY, N_("Back"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000575 IFHELP(nano_back_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
576 VIEW, do_left);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000577
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000578 sc_init_one(&main_list, NANO_HOME_KEY, N_("Home"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000579 IFHELP(nano_home_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
580 VIEW, do_home);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000581
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000582 sc_init_one(&main_list, NANO_END_KEY, N_("End"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000583 IFHELP(nano_end_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
584 VIEW, do_end);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000585
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000586 sc_init_one(&main_list, NANO_REFRESH_KEY, refresh_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000587 IFHELP(nano_refresh_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
588 VIEW, total_refresh);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000589
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000590 sc_init_one(&main_list, NANO_DELETE_KEY, N_("Delete"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000591 IFHELP(nano_delete_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
592 NOVIEW, do_delete);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000593
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000594 sc_init_one(&main_list, NANO_BACKSPACE_KEY, N_("Backspace"),
595 IFHELP(nano_backspace_msg, NANO_NO_KEY), NANO_NO_KEY,
596 NANO_NO_KEY, NOVIEW, do_backspace);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000597
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000598 sc_init_one(&main_list, NANO_TAB_KEY, N_("Tab"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000599 IFHELP(nano_tab_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
600 NOVIEW, do_tab);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000601
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000602 sc_init_one(&main_list, NANO_ENTER_KEY, N_("Enter"),
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000603 IFHELP(nano_enter_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
604 NOVIEW, do_enter);
Chris Allegrettaaf6414a2001-02-11 19:05:05 +0000605
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000606#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000607 sc_init_one(&main_list, NANO_NEXTWORD_KEY, N_("Next Word"),
608 IFHELP(nano_nextword_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramseye010edd2005-06-12 22:31:03 +0000609 NANO_NO_KEY, VIEW, do_next_word_void);
David Lawrence Ramseyc5967552002-06-21 03:20:06 +0000610
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000611 sc_init_one(&main_list, NANO_NO_KEY, N_("Prev Word"),
612 IFHELP(nano_prevword_msg, NANO_PREVWORD_KEY), NANO_NO_KEY,
David Lawrence Ramseya8824a12005-06-26 19:03:48 +0000613 NANO_NO_KEY, VIEW, do_prev_word_void);
David Lawrence Ramseye010edd2005-06-12 22:31:03 +0000614
615 sc_init_one(&main_list, NANO_NO_KEY, N_("Word Count"),
616 IFHELP(nano_wordcount_msg, NANO_WORDCOUNT_KEY), NANO_NO_KEY,
David Lawrence Ramsey8e942342005-07-25 04:21:46 +0000617 NANO_NO_KEY, VIEW, do_wordlinechar_count);
David Lawrence Ramsey2de84c12005-10-24 02:12:09 +0000618
David Lawrence Ramseyae9eea72005-11-10 07:40:55 +0000619 sc_init_one(&main_list, NANO_NO_KEY, N_("Scroll Up"),
620 IFHELP(nano_scrollup_msg, NANO_SCROLLUP_KEY), NANO_NO_KEY,
621 NANO_SCROLLUP_ALTKEY, VIEW, do_scroll_up);
David Lawrence Ramsey2de84c12005-10-24 02:12:09 +0000622
David Lawrence Ramseyae9eea72005-11-10 07:40:55 +0000623 sc_init_one(&main_list, NANO_NO_KEY, N_("Scroll Down"),
624 IFHELP(nano_scrolldown_msg, NANO_SCROLLDOWN_KEY), NANO_NO_KEY,
625 NANO_SCROLLDOWN_ALTKEY, VIEW, do_scroll_down);
Chris Allegretta8d990b52001-09-22 22:14:25 +0000626#endif
David Lawrence Ramseye0497062003-08-23 21:11:06 +0000627
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000628#ifndef DISABLE_JUSTIFY
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000629 sc_init_one(&main_list, NANO_NO_KEY, beg_of_par_msg,
630 IFHELP(nano_parabegin_msg, NANO_PARABEGIN_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000631 NANO_PARABEGIN_ALTKEY2, VIEW, do_para_begin_void);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000632
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000633 sc_init_one(&main_list, NANO_NO_KEY, end_of_par_msg,
634 IFHELP(nano_paraend_msg, NANO_PARAEND_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000635 NANO_PARAEND_ALTKEY2, VIEW, do_para_end_void);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000636#endif
David Lawrence Ramseye0497062003-08-23 21:11:06 +0000637
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000638#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000639 sc_init_one(&main_list, NANO_NO_KEY, N_("Previous File"),
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +0000640 IFHELP(nano_prevfile_msg, NANO_PREVFILE_KEY), NANO_NO_KEY,
641 NANO_PREVFILE_ALTKEY, VIEW, switch_to_prev_buffer_void);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000642
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000643 sc_init_one(&main_list, NANO_NO_KEY, N_("Next File"),
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +0000644 IFHELP(nano_nextfile_msg, NANO_NEXTFILE_KEY), NANO_NO_KEY,
645 NANO_NEXTFILE_ALTKEY, VIEW, switch_to_next_buffer_void);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000646#endif
Chris Allegrettab3655b42001-10-22 03:15:31 +0000647
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000648 sc_init_one(&main_list, NANO_NO_KEY, N_("Verbatim Input"),
649 IFHELP(nano_verbatim_msg, NANO_VERBATIM_KEY), NANO_NO_KEY,
650 NANO_NO_KEY, NOVIEW, do_verbatim_input);
651
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000652#ifndef NANO_TINY
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000653 sc_init_one(&main_list, NANO_NO_KEY, cut_till_end_msg,
654 IFHELP(nano_cut_till_end_msg, NANO_CUTTILLEND_ALTKEY),
655 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_cut_till_end);
656#endif
657
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000658#ifndef DISABLE_JUSTIFY
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000659 sc_init_one(&main_list, NANO_NO_KEY, fulljstify_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000660 IFHELP(nano_fulljustify_msg, NANO_FULLJUSTIFY_ALTKEY),
661 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_full_justify);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000662#endif
663
David Lawrence Ramseyc5c52302005-11-15 23:45:29 +0000664#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000665 sc_init_one(&main_list, NANO_NO_KEY, N_("Find Other Bracket"),
666 IFHELP(nano_bracket_msg, NANO_BRACKET_KEY), NANO_NO_KEY,
667 NANO_NO_KEY, VIEW, do_find_bracket);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000668#endif
669
Chris Allegrettadab017e2002-04-23 10:56:06 +0000670 free_shortcutage(&whereis_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +0000671
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000672 sc_init_one(&whereis_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000673 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
674 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000675#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000676 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000677#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000678 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000679#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000680 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000681
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000682 sc_init_one(&whereis_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000683 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
684 VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000685
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000686 sc_init_one(&whereis_list, NANO_FIRSTLINE_KEY, first_line_msg,
687 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_FIRSTLINE_FKEY,
688 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000689
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000690 sc_init_one(&whereis_list, NANO_LASTLINE_KEY, last_line_msg,
691 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_LASTLINE_FKEY,
692 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000693
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000694 sc_init_one(&whereis_list, NANO_TOOTHERSEARCH_KEY, replace_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000695 IFHELP(nano_replace_msg, NANO_NO_KEY), NANO_REPLACE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000696 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000697
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000698 sc_init_one(&whereis_list, NANO_TOGOTOLINE_KEY, go_to_line_msg,
699 IFHELP(nano_gotoline_msg, NANO_NO_KEY), NANO_GOTOLINE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000700 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta8c2b40f2000-06-29 01:30:04 +0000701
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000702#ifndef DISABLE_JUSTIFY
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000703 sc_init_one(&whereis_list, NANO_PARABEGIN_KEY, beg_of_par_msg,
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000704 IFHELP(nano_parabegin_msg, NANO_PARABEGIN_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000705 NANO_PARABEGIN_ALTKEY2, VIEW, do_para_begin_void);
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000706
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000707 sc_init_one(&whereis_list, NANO_PARAEND_KEY, end_of_par_msg,
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000708 IFHELP(nano_paraend_msg, NANO_PARAEND_ALTKEY1), NANO_NO_KEY,
David Lawrence Ramseyff4a4872005-03-13 21:12:25 +0000709 NANO_PARAEND_ALTKEY2, VIEW, do_para_end_void);
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000710#endif
711
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000712#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000713 sc_init_one(&whereis_list, NANO_NO_KEY, case_sens_msg,
714 IFHELP(nano_case_msg, TOGGLE_CASE_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000715 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000716
David Lawrence Ramseyf3ecffd2005-06-16 18:48:30 +0000717 sc_init_one(&whereis_list, NANO_NO_KEY, backwards_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000718 IFHELP(nano_reverse_msg, TOGGLE_BACKWARDS_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000719 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000720#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000721
Chris Allegretta658399a2001-06-14 02:54:22 +0000722#ifdef HAVE_REGEX_H
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000723 sc_init_one(&whereis_list, NANO_NO_KEY, regexp_msg,
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000724 IFHELP(nano_regexp_msg, NANO_REGEXP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000725 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000726#endif
Chris Allegretta5beed502003-01-05 20:41:21 +0000727
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000728#ifndef NANO_TINY
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000729 sc_init_one(&whereis_list, NANO_PREVLINE_KEY, history_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000730 IFHELP(nano_history_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
731 VIEW, NULL);
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000732
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000733 sc_init_one(&whereis_list, NANO_CUTTILLEND_KEY, cut_till_end_msg,
734 IFHELP(nano_cut_till_end_msg, NANO_CUTTILLEND_ALTKEY),
735 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_cut_till_end);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000736#endif
David Lawrence Ramsey02085d72004-11-07 16:04:18 +0000737
738#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey02085d72004-11-07 16:04:18 +0000739 sc_init_one(&whereis_list, NANO_FULLJUSTIFY_KEY, fulljstify_msg,
740 IFHELP(nano_fulljustify_msg, NANO_FULLJUSTIFY_ALTKEY),
741 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_full_justify);
742#endif
Chris Allegretta5f36c372001-07-16 00:48:53 +0000743
Chris Allegrettadab017e2002-04-23 10:56:06 +0000744 free_shortcutage(&replace_list);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000745
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000746 sc_init_one(&replace_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000747 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
748 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000749#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000750 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000751#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000752 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000753#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000754 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000755
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000756 sc_init_one(&replace_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000757 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
758 VIEW, NULL);
Chris Allegretta5f36c372001-07-16 00:48:53 +0000759
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000760 sc_init_one(&replace_list, NANO_FIRSTLINE_KEY, first_line_msg,
761 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_FIRSTLINE_FKEY,
762 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000763
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000764 sc_init_one(&replace_list, NANO_LASTLINE_KEY, last_line_msg,
765 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_LASTLINE_FKEY,
766 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000767
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000768 /* TRANSLATORS: Try to keep this at most 12 characters. */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000769 sc_init_one(&replace_list, NANO_TOOTHERSEARCH_KEY, N_("No Replace"),
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000770 IFHELP(nano_whereis_msg, NANO_NO_KEY), NANO_REPLACE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000771 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000772
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000773 sc_init_one(&replace_list, NANO_TOGOTOLINE_KEY, go_to_line_msg,
774 IFHELP(nano_gotoline_msg, NANO_NO_KEY), NANO_GOTOLINE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000775 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta8c2b40f2000-06-29 01:30:04 +0000776
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000777#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000778 sc_init_one(&replace_list, NANO_NO_KEY, case_sens_msg,
779 IFHELP(nano_case_msg, TOGGLE_CASE_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000780 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000781
David Lawrence Ramseyf3ecffd2005-06-16 18:48:30 +0000782 sc_init_one(&replace_list, NANO_NO_KEY, backwards_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000783 IFHELP(nano_reverse_msg, TOGGLE_BACKWARDS_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000784 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000785#endif
Chris Allegretta105da332000-10-31 05:10:10 +0000786
Chris Allegretta658399a2001-06-14 02:54:22 +0000787#ifdef HAVE_REGEX_H
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000788 sc_init_one(&replace_list, NANO_NO_KEY, regexp_msg,
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000789 IFHELP(nano_regexp_msg, NANO_REGEXP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000790 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000791#endif
Chris Allegretta5beed502003-01-05 20:41:21 +0000792
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000793#ifndef NANO_TINY
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000794 sc_init_one(&replace_list, NANO_PREVLINE_KEY, history_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000795 IFHELP(nano_history_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
796 VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000797#endif
Chris Allegretta5f36c372001-07-16 00:48:53 +0000798
Chris Allegrettadab017e2002-04-23 10:56:06 +0000799 free_shortcutage(&replace_list_2);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000800
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000801 sc_init_one(&replace_list_2, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000802 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
803 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000804#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000805 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000806#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000807 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000808#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000809 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000810
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000811 sc_init_one(&replace_list_2, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000812 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
813 VIEW, NULL);
Chris Allegretta105da332000-10-31 05:10:10 +0000814
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000815 sc_init_one(&replace_list_2, NANO_FIRSTLINE_KEY, first_line_msg,
816 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_NO_KEY,
817 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegretta105da332000-10-31 05:10:10 +0000818
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000819 sc_init_one(&replace_list_2, NANO_LASTLINE_KEY, last_line_msg,
820 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_NO_KEY,
821 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegretta105da332000-10-31 05:10:10 +0000822
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000823#ifndef NANO_TINY
David Lawrence Ramsey5e73eec2005-05-03 20:57:13 +0000824 sc_init_one(&replace_list_2, NANO_PREVLINE_KEY, history_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000825 IFHELP(nano_history_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
826 VIEW, NULL);
Chris Allegretta5beed502003-01-05 20:41:21 +0000827#endif
828
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000829 free_shortcutage(&gotoline_list);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000830
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000831 sc_init_one(&gotoline_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000832 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
833 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000834#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000835 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000836#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000837 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000838#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000839 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000840
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000841 sc_init_one(&gotoline_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000842 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
843 VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000844
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000845 sc_init_one(&gotoline_list, NANO_FIRSTLINE_KEY, first_line_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000846 IFHELP(nano_firstline_msg, NANO_NO_KEY), NANO_NO_KEY,
847 NANO_NO_KEY, VIEW, do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000848
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000849 sc_init_one(&gotoline_list, NANO_LASTLINE_KEY, last_line_msg,
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000850 IFHELP(nano_lastline_msg, NANO_NO_KEY), NANO_NO_KEY,
851 NANO_NO_KEY, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000852
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000853 sc_init_one(&gotoline_list, NANO_TOOTHERWHEREIS_KEY,
854 N_("Go To Text"), IFHELP(nano_whereis_msg, NANO_NO_KEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000855 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000856
Chris Allegrettadab017e2002-04-23 10:56:06 +0000857 free_shortcutage(&writefile_list);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000858
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000859 sc_init_one(&writefile_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000860 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
861 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000862#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000863 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000864#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000865 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000866#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000867 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000868
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000869 sc_init_one(&writefile_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000870 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
871 VIEW, NULL);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000872
Rocco Corsiaf5c3022001-01-12 07:51:05 +0000873#ifndef DISABLE_BROWSER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000874 /* If we're using restricted mode, the file browser is disabled.
875 * It's useless since inserting files is disabled. */
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000876
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000877 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000878 sc_init_one(&writefile_list, NANO_TOFILES_KEY, to_files_msg,
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000879 IFHELP(nano_tofiles_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000880 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000881#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000882
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000883#ifndef NANO_TINY
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000884 /* If we're using restricted mode, the DOS format, Mac format,
885 * append, prepend, and backup toggles are disabled. The first and
886 * second are useless since inserting files is disabled, the third
887 * and fourth are disabled because they allow writing to files not
888 * specified on the command line, and the fifth is useless since
889 * backups are disabled. */
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000890
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000891 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000892 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000893 sc_init_one(&writefile_list, NANO_NO_KEY, N_("DOS Format"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000894 IFHELP(nano_dos_msg, TOGGLE_DOS_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000895 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000896
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000897 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000898 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000899 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Mac Format"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000900 IFHELP(nano_mac_msg, TOGGLE_MAC_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000901 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000902#endif
903
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000904 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000905 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000906 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Append"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000907 IFHELP(nano_append_msg, NANO_APPEND_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000908 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000909
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000910 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000911 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000912 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Prepend"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000913 IFHELP(nano_prepend_msg, NANO_PREPEND_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000914 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta0e9b7aa2002-04-16 03:15:47 +0000915
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000916#ifndef NANO_TINY
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000917 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000918 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000919 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Backup File"),
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000920 IFHELP(nano_backup_msg, TOGGLE_BACKUP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000921 NANO_NO_KEY, NOVIEW, NULL);
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000922#endif
923
Chris Allegrettadab017e2002-04-23 10:56:06 +0000924 free_shortcutage(&insertfile_list);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000925
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000926 sc_init_one(&insertfile_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000927 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
928 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000929#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000930 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000931#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000932 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000933#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000934 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000935
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000936 sc_init_one(&insertfile_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000937 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
938 VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000939
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000940#ifndef DISABLE_BROWSER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000941 /* If we're using restricted mode, the file browser is disabled.
942 * It's useless since inserting files is disabled. */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000943 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000944 sc_init_one(&insertfile_list, NANO_TOFILES_KEY, to_files_msg,
David Lawrence Ramseyf4276942003-12-24 03:33:09 +0000945 IFHELP(nano_tofiles_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000946 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000947#endif
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000948
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000949#ifndef NANO_TINY
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000950 /* If we're using restricted mode, command execution is disabled.
951 * It's useless since inserting files is disabled. */
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000952
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000953 if (!ISSET(RESTRICTED))
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000954 sc_init_one(&insertfile_list, NANO_TOOTHERINSERT_KEY,
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000955 /* TRANSLATORS: Try to keep this at most 22 characters. */
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000956 N_("Execute Command"), IFHELP(nano_execute_msg,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000957 NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000958
Chris Allegrettaf7c68112002-09-03 22:58:40 +0000959#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000960 /* If we're using restricted mode, the multibuffer toggle is
961 * disabled. It's useless since inserting files is disabled. */
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000962
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000963 if (!ISSET(RESTRICTED))
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000964 sc_init_one(&insertfile_list, NANO_NO_KEY, new_buffer_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000965 IFHELP(nano_multibuffer_msg, TOGGLE_MULTIBUFFER_KEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000966 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaf7c68112002-09-03 22:58:40 +0000967#endif
David Lawrence Ramseye21adfa2002-09-13 18:14:04 +0000968#endif
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000969
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000970#ifndef NANO_TINY
Chris Allegrettadab017e2002-04-23 10:56:06 +0000971 free_shortcutage(&extcmd_list);
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000972
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000973 sc_init_one(&extcmd_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +0000974 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
975 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000976#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000977 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000978#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000979 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000980#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000981 );
Chris Allegretta52c5a6e2002-03-21 05:07:28 +0000982
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000983 sc_init_one(&extcmd_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000984 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
985 VIEW, NULL);
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000986
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000987 sc_init_one(&extcmd_list, NANO_TOOTHERINSERT_KEY, N_("Insert File"),
988 IFHELP(nano_insert_msg, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000989 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000990
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000991#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000992 sc_init_one(&extcmd_list, NANO_NO_KEY, new_buffer_msg,
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000993 IFHELP(nano_multibuffer_msg, TOGGLE_MULTIBUFFER_KEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000994 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta52c5a6e2002-03-21 05:07:28 +0000995#endif
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000996#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000997
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000998#ifndef DISABLE_HELP
999 free_shortcutage(&help_list);
1000
1001 sc_init_one(&help_list, NANO_REFRESH_KEY, refresh_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +00001002 IFHELP(nano_refresh_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
1003 VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001004
1005 sc_init_one(&help_list, NANO_EXIT_KEY, exit_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +00001006 IFHELP(nano_exit_msg, NANO_NO_KEY), NANO_EXIT_FKEY, NANO_NO_KEY,
1007 VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001008
1009 sc_init_one(&help_list, NANO_PREVPAGE_KEY, prev_page_msg,
1010 IFHELP(nano_prevpage_msg, NANO_NO_KEY), NANO_PREVPAGE_FKEY,
1011 NANO_NO_KEY, VIEW, NULL);
1012
1013 sc_init_one(&help_list, NANO_NEXTPAGE_KEY, next_page_msg,
1014 IFHELP(nano_nextpage_msg, NANO_NO_KEY), NANO_NEXTPAGE_FKEY,
1015 NANO_NO_KEY, VIEW, NULL);
1016
1017 sc_init_one(&help_list, NANO_PREVLINE_KEY, N_("Prev Line"),
1018 IFHELP(nano_prevline_msg, NANO_NO_KEY), NANO_NO_KEY,
1019 NANO_NO_KEY, VIEW, NULL);
1020
1021 sc_init_one(&help_list, NANO_NEXTLINE_KEY, N_("Next Line"),
1022 IFHELP(nano_nextline_msg, NANO_NO_KEY), NANO_NO_KEY,
1023 NANO_NO_KEY, VIEW, NULL);
1024#endif
1025
1026#ifndef DISABLE_SPELLER
1027 free_shortcutage(&spell_list);
1028
1029 sc_init_one(&spell_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +00001030 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
1031 VIEW,
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001032#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001033 do_help_void
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001034#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001035 nano_disabled_msg
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001036#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001037 );
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001038
1039 sc_init_one(&spell_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +00001040 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
1041 VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001042#endif
1043
Rocco Corsiaf5c3022001-01-12 07:51:05 +00001044#ifndef DISABLE_BROWSER
Chris Allegrettadab017e2002-04-23 10:56:06 +00001045 free_shortcutage(&browser_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001046
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001047 sc_init_one(&browser_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +00001048 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
1049 VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +00001050
David Lawrence Ramsey8037fe02004-07-23 12:30:40 +00001051 sc_init_one(&browser_list, NANO_EXIT_KEY, exit_msg,
David Lawrence Ramseyc41d4282004-07-23 12:51:40 +00001052 IFHELP(nano_exitbrowser_msg, NANO_NO_KEY), NANO_EXIT_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001053 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +00001054
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001055 sc_init_one(&browser_list, NANO_PREVPAGE_KEY, prev_page_msg,
1056 IFHELP(nano_prevpage_msg, NANO_NO_KEY), NANO_PREVPAGE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001057 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001058
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001059 sc_init_one(&browser_list, NANO_NEXTPAGE_KEY, next_page_msg,
1060 IFHELP(nano_nextpage_msg, NANO_NO_KEY), NANO_NEXTPAGE_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001061 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001062
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001063 sc_init_one(&browser_list, NANO_WHEREIS_KEY, whereis_msg,
1064 IFHELP(nano_whereis_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
1065 VIEW, NULL);
1066
1067 sc_init_one(&browser_list, NANO_NO_KEY, whereis_next_msg,
1068 IFHELP(nano_whereis_next_msg, NANO_WHEREIS_NEXT_KEY),
1069 NANO_WHEREIS_NEXT_FKEY, NANO_NO_KEY, VIEW, NULL);
1070
David Lawrence Ramseycde90392006-04-09 18:27:42 +00001071 /* TRANSLATORS: Try to keep this at most 22 characters. */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001072 sc_init_one(&browser_list, NANO_GOTOLINE_KEY, N_("Go To Dir"),
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +00001073 IFHELP(nano_gotodir_msg, NANO_GOTOLINE_ALTKEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001074 NANO_GOTOLINE_FKEY, NANO_NO_KEY, VIEW, NULL);
Rocco Corsi12f294c2001-04-14 06:50:24 +00001075
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001076 free_shortcutage(&whereis_file_list);
1077
1078 sc_init_one(&whereis_file_list, NANO_HELP_KEY, get_help_msg,
1079 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
1080 VIEW,
1081#ifndef DISABLE_HELP
1082 do_browser_help
1083#else
1084 nano_disabled_msg
1085#endif
1086 );
1087
1088 sc_init_one(&whereis_file_list, NANO_CANCEL_KEY, cancel_msg,
1089 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
1090 VIEW, NULL);
1091
1092 sc_init_one(&whereis_file_list, NANO_FIRSTFILE_KEY, first_file_msg,
1093 IFHELP(nano_firstfile_msg, NANO_NO_KEY), NANO_FIRSTFILE_FKEY,
1094 NANO_NO_KEY, VIEW, do_first_file);
1095
1096 sc_init_one(&whereis_file_list, NANO_LASTFILE_KEY, last_file_msg,
1097 IFHELP(nano_lastfile_msg, NANO_NO_KEY), NANO_LASTFILE_FKEY,
1098 NANO_NO_KEY, VIEW, do_last_file);
1099
1100#ifndef NANO_SMALL
1101 sc_init_one(&whereis_file_list, NANO_NO_KEY, case_sens_msg,
1102 IFHELP(nano_case_msg, TOGGLE_CASE_KEY), NANO_NO_KEY,
1103 NANO_NO_KEY, VIEW, NULL);
1104
1105 sc_init_one(&whereis_file_list, NANO_NO_KEY, backwards_msg,
1106 IFHELP(nano_reverse_msg, TOGGLE_BACKWARDS_KEY), NANO_NO_KEY,
1107 NANO_NO_KEY, VIEW, NULL);
1108#endif
1109
1110#ifdef HAVE_REGEX_H
1111 sc_init_one(&whereis_file_list, NANO_NO_KEY, regexp_msg,
1112 IFHELP(nano_regexp_msg, NANO_REGEXP_KEY), NANO_NO_KEY,
1113 NANO_NO_KEY, VIEW, NULL);
1114#endif
1115
1116#ifndef NANO_SMALL
1117 sc_init_one(&whereis_file_list, NANO_PREVLINE_KEY, history_msg,
1118 IFHELP(nano_history_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
1119 VIEW, NULL);
1120#endif
1121
Chris Allegrettadab017e2002-04-23 10:56:06 +00001122 free_shortcutage(&gotodir_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001123
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001124 sc_init_one(&gotodir_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramsey1f479ee2006-03-29 19:58:49 +00001125 IFHELP(nano_help_msg, NANO_NO_KEY), NANO_HELP_FKEY, NANO_NO_KEY,
1126 VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001127#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001128 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001129#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001130 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001131#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001132 );
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001133
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001134 sc_init_one(&gotodir_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramsey804e1072006-03-29 19:43:32 +00001135 IFHELP(nano_cancel_msg, NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY,
1136 VIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001137#endif
1138
Chris Allegrettaa8c22572002-02-15 19:17:02 +00001139 currshortcut = main_list;
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001140
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001141#ifndef NANO_TINY
Chris Allegrettadab017e2002-04-23 10:56:06 +00001142 toggle_init();
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001143#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +00001144}
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001145
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001146/* Deallocate the given shortcut. */
1147void free_shortcutage(shortcut **shortcutage)
1148{
1149 assert(shortcutage != NULL);
David Lawrence Ramsey193b0e52005-06-06 18:41:17 +00001150
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001151 while (*shortcutage != NULL) {
1152 shortcut *ps = *shortcutage;
1153 *shortcutage = (*shortcutage)->next;
1154 free(ps);
1155 }
1156}
1157
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001158#ifndef NANO_TINY
David Lawrence Ramseya549a822005-07-01 23:11:52 +00001159/* Create a new toggle structure, at the end of the toggles linked
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001160 * list. */
1161void toggle_init_one(int val, const char *desc, long flag)
1162{
1163 toggle *u;
1164
1165 if (toggles == NULL) {
David Lawrence Ramsey94b975c2004-07-20 12:57:34 +00001166 toggles = (toggle *)nmalloc(sizeof(toggle));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001167 u = toggles;
1168 } else {
1169 for (u = toggles; u->next != NULL; u = u->next)
1170 ;
David Lawrence Ramsey94b975c2004-07-20 12:57:34 +00001171 u->next = (toggle *)nmalloc(sizeof(toggle));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001172 u = u->next;
1173 }
1174
1175 u->val = val;
1176 u->desc = _(desc);
1177 u->flag = flag;
1178 u->next = NULL;
1179}
1180
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001181/* Initialize the global toggle list. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001182void toggle_init(void)
1183{
1184 /* There is no need to reinitialize the toggles. They can't
1185 * change. */
1186 if (toggles != NULL)
1187 return;
1188
1189 toggle_init_one(TOGGLE_NOHELP_KEY, N_("Help mode"), NO_HELP);
David Lawrence Ramsey26e637b2005-06-18 03:37:56 +00001190 toggle_init_one(TOGGLE_MORESPACE_KEY,
1191 N_("Use of more space for editing"), MORE_SPACE);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001192#ifdef ENABLE_MULTIBUFFER
1193 /* If we're using restricted mode, the multibuffer toggle is
1194 * disabled. It's useless since inserting files is disabled. */
1195 if (!ISSET(RESTRICTED))
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +00001196 toggle_init_one(TOGGLE_MULTIBUFFER_KEY,
1197 N_("Multiple file buffers"), MULTIBUFFER);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001198#endif
David Lawrence Ramsey26e637b2005-06-18 03:37:56 +00001199 toggle_init_one(TOGGLE_CUTTOEND_KEY, N_("Cut to end"), CUT_TO_END);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001200#ifndef DISABLE_WRAPPING
David Lawrence Ramseyd8734472005-06-18 03:03:32 +00001201 toggle_init_one(TOGGLE_WRAP_KEY, N_("Long line wrapping"),
1202 NO_WRAP);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001203#endif
David Lawrence Ramsey26e637b2005-06-18 03:37:56 +00001204#ifndef DISABLE_MOUSE
1205 toggle_init_one(TOGGLE_MOUSE_KEY, N_("Mouse support"), USE_MOUSE);
1206#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001207 /* If we're using restricted mode, the suspend toggle is disabled.
1208 * It's useless since suspending is disabled. */
1209 if (!ISSET(RESTRICTED))
1210 toggle_init_one(TOGGLE_SUSPEND_KEY, N_("Suspend"), SUSPEND);
David Lawrence Ramsey26e637b2005-06-18 03:37:56 +00001211 toggle_init_one(TOGGLE_CONST_KEY,
1212 N_("Constant cursor position display"), CONST_UPDATE);
David Lawrence Ramsey26e637b2005-06-18 03:37:56 +00001213 toggle_init_one(TOGGLE_AUTOINDENT_KEY, N_("Auto indent"),
1214 AUTOINDENT);
1215 toggle_init_one(TOGGLE_TABSTOSPACES_KEY,
1216 N_("Conversion of typed tabs to spaces"), TABS_TO_SPACES);
David Lawrence Ramsey74835712004-12-04 17:41:52 +00001217 /* If we're using restricted mode, the DOS/Mac conversion toggle is
1218 * disabled. It's useless since inserting files is disabled. */
1219 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001220 toggle_init_one(TOGGLE_NOCONVERT_KEY,
1221 N_("No conversion from DOS/Mac format"), NO_CONVERT);
David Lawrence Ramsey74835712004-12-04 17:41:52 +00001222 /* If we're using restricted mode, the backup toggle is disabled.
1223 * It's useless since backups are disabled. */
1224 if (!ISSET(RESTRICTED))
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +00001225 toggle_init_one(TOGGLE_BACKUP_KEY, N_("Backup files"),
1226 BACKUP_FILE);
1227 toggle_init_one(TOGGLE_SMOOTH_KEY, N_("Smooth scrolling"),
David Lawrence Ramseyb2b69762005-06-16 02:13:10 +00001228 SMOOTH_SCROLL);
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +00001229 toggle_init_one(TOGGLE_SMARTHOME_KEY, N_("Smart home key"),
1230 SMART_HOME);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001231#ifdef ENABLE_COLOR
1232 toggle_init_one(TOGGLE_SYNTAX_KEY, N_("Color syntax highlighting"),
David Lawrence Ramsey202d3c22005-03-10 20:55:11 +00001233 NO_COLOR_SYNTAX);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001234#endif
1235#ifdef ENABLE_NANORC
1236 toggle_init_one(TOGGLE_WHITESPACE_KEY, N_("Whitespace display"),
1237 WHITESPACE_DISPLAY);
1238#endif
1239}
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001240#endif /* !NANO_TINY */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001241
Chris Allegretta6232d662002-05-12 19:52:15 +00001242/* This function is called just before calling exit(). Practically, the
1243 * only effect is to cause a segmentation fault if the various data
1244 * structures got bolloxed earlier. Thus, we don't bother having this
Chris Allegretta6df90f52002-07-19 01:08:59 +00001245 * function unless debugging is turned on. */
Chris Allegretta6232d662002-05-12 19:52:15 +00001246#ifdef DEBUG
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001247/* Added by SPK for memory cleanup; gracefully return our malloc()s. */
Chris Allegretta6df90f52002-07-19 01:08:59 +00001248void thanks_for_all_the_fish(void)
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001249{
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001250 delwin(topwin);
1251 delwin(edit);
1252 delwin(bottomwin);
1253
Chris Allegretta7662c862003-01-13 01:35:15 +00001254#ifndef DISABLE_JUSTIFY
1255 if (quotestr != NULL)
1256 free(quotestr);
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +00001257#ifdef HAVE_REGEX_H
1258 regfree(&quotereg);
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001259 if (quoteerr != NULL)
1260 free(quoteerr);
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +00001261#endif
Chris Allegretta7662c862003-01-13 01:35:15 +00001262#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001263#ifndef NANO_TINY
David Lawrence Ramsey04e42a62004-02-28 16:24:31 +00001264 if (backup_dir != NULL)
1265 free(backup_dir);
1266#endif
Chris Allegretta2598c662002-03-28 01:59:34 +00001267#ifndef DISABLE_OPERATINGDIR
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001268 if (operating_dir != NULL)
1269 free(operating_dir);
1270 if (full_operating_dir != NULL)
1271 free(full_operating_dir);
1272#endif
1273 if (last_search != NULL)
1274 free(last_search);
1275 if (last_replace != NULL)
1276 free(last_replace);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001277#ifndef DISABLE_SPELLER
1278 if (alt_speller != NULL)
1279 free(alt_speller);
1280#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001281 if (answer != NULL)
1282 free(answer);
1283 if (cutbuffer != NULL)
Chris Allegretta7662c862003-01-13 01:35:15 +00001284 free_filestruct(cutbuffer);
David Lawrence Ramsey93c84052004-11-23 04:08:28 +00001285#ifndef DISABLE_JUSTIFY
1286 if (jusbuffer != NULL)
1287 free_filestruct(jusbuffer);
1288#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001289 free_shortcutage(&main_list);
1290 free_shortcutage(&whereis_list);
1291 free_shortcutage(&replace_list);
1292 free_shortcutage(&replace_list_2);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001293 free_shortcutage(&gotoline_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001294 free_shortcutage(&writefile_list);
1295 free_shortcutage(&insertfile_list);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001296#ifndef NANO_TINY
1297 free_shortcutage(&extcmd_list);
1298#endif
Chris Allegretta7662c862003-01-13 01:35:15 +00001299#ifndef DISABLE_HELP
Chris Allegretta6df90f52002-07-19 01:08:59 +00001300 free_shortcutage(&help_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001301#endif
1302#ifndef DISABLE_SPELLER
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001303 free_shortcutage(&spell_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001304#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001305#ifndef DISABLE_BROWSER
1306 free_shortcutage(&browser_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001307 free_shortcutage(&gotodir_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001308#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001309#ifndef NANO_TINY
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001310 /* Free the memory associated with each toggle. */
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001311 while (toggles != NULL) {
1312 toggle *t = toggles;
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001313
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001314 toggles = toggles->next;
1315 free(t);
1316 }
1317#endif
David Lawrence Ramsey5d8d0b12005-05-26 05:53:29 +00001318 /* Free the memory associated with each open file buffer. */
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +00001319 if (openfile != NULL)
David Lawrence Ramsey64661ac2005-07-08 19:57:25 +00001320 free_openfilestruct(openfile);
Chris Allegretta6df90f52002-07-19 01:08:59 +00001321#ifdef ENABLE_COLOR
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001322 if (syntaxstr != NULL)
1323 free(syntaxstr);
Chris Allegretta6df90f52002-07-19 01:08:59 +00001324 while (syntaxes != NULL) {
1325 syntaxtype *bill = syntaxes;
1326
1327 free(syntaxes->desc);
1328 while (syntaxes->extensions != NULL) {
1329 exttype *bob = syntaxes->extensions;
1330
1331 syntaxes->extensions = bob->next;
David Lawrence Ramsey2385c1a2005-07-29 21:42:08 +00001332 free(bob->ext_regex);
David Lawrence Ramsey7fc0ada2005-08-29 18:52:06 +00001333 if (bob->ext != NULL) {
1334 regfree(bob->ext);
1335 free(bob->ext);
1336 }
Chris Allegretta6df90f52002-07-19 01:08:59 +00001337 free(bob);
1338 }
1339 while (syntaxes->color != NULL) {
1340 colortype *bob = syntaxes->color;
1341
1342 syntaxes->color = bob->next;
David Lawrence Ramsey2385c1a2005-07-29 21:42:08 +00001343 free(bob->start_regex);
David Lawrence Ramseydb958022005-07-13 20:18:46 +00001344 if (bob->start != NULL) {
1345 regfree(bob->start);
1346 free(bob->start);
1347 }
David Lawrence Ramseyd2361f02005-07-14 18:33:51 +00001348 if (bob->end_regex != NULL)
1349 free(bob->end_regex);
David Lawrence Ramseydb958022005-07-13 20:18:46 +00001350 if (bob->end != NULL) {
Chris Allegrettace452fb2003-02-03 02:56:44 +00001351 regfree(bob->end);
David Lawrence Ramseydb958022005-07-13 20:18:46 +00001352 free(bob->end);
1353 }
Chris Allegretta6df90f52002-07-19 01:08:59 +00001354 free(bob);
1355 }
1356 syntaxes = syntaxes->next;
1357 free(bill);
1358 }
1359#endif /* ENABLE_COLOR */
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001360#ifndef NANO_TINY
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001361 /* Free the search and replace history lists. */
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001362 if (searchage != NULL)
1363 free_filestruct(searchage);
1364 if (replaceage != NULL)
1365 free_filestruct(replaceage);
Chris Allegretta5beed502003-01-05 20:41:21 +00001366#endif
David Lawrence Ramseya27bd652004-08-17 05:23:38 +00001367#ifdef ENABLE_NANORC
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001368 if (homedir != NULL)
1369 free(homedir);
David Lawrence Ramseya27bd652004-08-17 05:23:38 +00001370#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001371}
Chris Allegretta6232d662002-05-12 19:52:15 +00001372#endif /* DEBUG */