blob: 2eb31b3b209a7598cbcd1938f7239c2c5b59a99a [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 Ramseycb801d62006-11-10 02:47:11 +00005 * Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Chris Allegretta *
6 * 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
David Lawrence Ramseyfc0f8f82006-05-10 13:41:53 +000026/* Global variables. */
27#ifndef NANO_TINY
David Lawrence Ramsey1c5af642006-05-10 15:15:06 +000028sigjmp_buf jump_buf;
David Lawrence Ramseyb6fb6882006-11-27 07:28:52 +000029 /* Used to return to either main() or the unjustify routine in
David Lawrence Ramseyfc0f8f82006-05-10 13:41:53 +000030 * do_justify() after a SIGWINCH. */
David Lawrence Ramsey1c5af642006-05-10 15:15:06 +000031bool jump_buf_main = FALSE;
32 /* Have we set jump_buf so that we return to main() after a
33 * SIGWINCH? */
David Lawrence Ramseyfc0f8f82006-05-10 13:41:53 +000034#endif
35
David Lawrence Ramseyf5b256b2003-10-03 20:26:25 +000036#ifndef DISABLE_WRAPJUSTIFY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000037ssize_t fill = 0;
38 /* The column where we will wrap lines. */
David Lawrence Ramsey691698a2005-07-24 19:57:51 +000039ssize_t wrap_at = -CHARS_FROM_EOL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000040 /* The position where we will wrap lines. fill is equal to this
41 * if it's greater than zero, and equal to (COLS + this) if it
42 * isn't. */
David Lawrence Ramseyf5b256b2003-10-03 20:26:25 +000043#endif
44
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000045char *last_search = NULL;
46 /* The last string we searched for. */
47char *last_replace = NULL;
48 /* The last replacement string we searched for. */
Chris Allegretta6df90f52002-07-19 01:08:59 +000049
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000050long flags = 0;
51 /* Our flag containing the states of all global options. */
52WINDOW *topwin;
53 /* The top portion of the window, where we display the version
54 * number of nano, the name of the current file, and whether the
55 * current file has been modified. */
56WINDOW *edit;
David Lawrence Ramseyb159f942006-07-28 17:06:27 +000057 /* The middle portion of the window, i.e. the edit window, where
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000058 * we display the current file we're editing. */
59WINDOW *bottomwin;
60 /* The bottom portion of the window, where we display statusbar
61 * messages, the statusbar prompt, and a list of shortcuts. */
62int editwinrows = 0;
63 /* How many rows does the edit window take up? */
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +000064
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000065filestruct *cutbuffer = NULL;
66 /* The buffer where we store cut text. */
David Lawrence Ramsey93c84052004-11-23 04:08:28 +000067#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000068filestruct *jusbuffer = NULL;
69 /* The buffer where we store unjustified text. */
David Lawrence Ramsey93c84052004-11-23 04:08:28 +000070#endif
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000071partition *filepart = NULL;
72 /* The partition where we store a portion of the current
73 * file. */
David Lawrence Ramsey64661ac2005-07-08 19:57:25 +000074openfilestruct *openfile = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000075 /* The list of all open file buffers. */
Chris Allegretta2d7893d2001-07-11 02:08:33 +000076
David Lawrence Ramseyd89617f2006-01-06 21:51:10 +000077#ifndef NANO_TINY
78char *matchbrackets = NULL;
79 /* The opening and closing brackets that can be found by bracket
80 * searches. */
81#endif
82
David Lawrence Ramseyebe34252005-11-15 03:17:35 +000083#if !defined(NANO_TINY) && defined(ENABLE_NANORC)
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000084char *whitespace = NULL;
85 /* The characters used when displaying the first characters of
86 * tabs and spaces. */
87int whitespace_len[2];
88 /* The length of these characters. */
David Lawrence Ramsey89bb9372004-05-29 16:47:52 +000089#endif
90
Chris Allegrettae4f940d2002-03-03 22:36:36 +000091#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +000092char *punct = NULL;
93 /* The closing punctuation that can end sentences. */
94char *brackets = NULL;
95 /* The closing brackets that can follow closing punctuation and
96 * can end sentences. */
97char *quotestr = NULL;
98 /* The quoting string. The default value is set in main(). */
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +000099#ifdef HAVE_REGEX_H
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000100regex_t quotereg;
101 /* The compiled regular expression from the quoting string. */
102int quoterc;
David Lawrence Ramsey88165642006-05-22 18:30:09 +0000103 /* Whether it was compiled successfully. */
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000104char *quoteerr = NULL;
105 /* The error message, if it didn't. */
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +0000106#else
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000107size_t quotelen;
108 /* The length of the quoting string in bytes. */
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +0000109#endif
Chris Allegretta6df90f52002-07-19 01:08:59 +0000110#endif
Chris Allegrettae4f940d2002-03-03 22:36:36 +0000111
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000112char *answer = NULL;
113 /* The answer string used in the statusbar prompt. */
114
115ssize_t tabsize = -1;
116 /* The width of a tab in spaces. The default value is set in
117 * main(). */
118
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000119#ifndef NANO_TINY
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000120char *backup_dir = NULL;
121 /* The directory where we store backup files. */
David Lawrence Ramsey04e42a62004-02-28 16:24:31 +0000122#endif
Chris Allegrettae1f14522001-09-19 03:19:43 +0000123#ifndef DISABLE_OPERATINGDIR
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000124char *operating_dir = NULL;
125 /* The relative path to the operating directory, which we can't
126 * move outside of. */
127char *full_operating_dir = NULL;
128 /* The full path to it. */
Chris Allegrettae1f14522001-09-19 03:19:43 +0000129#endif
130
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000131#ifndef DISABLE_SPELLER
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000132char *alt_speller = NULL;
133 /* The command to use for the alternate spell checker. */
Chris Allegretta8d8e0122001-04-18 04:28:54 +0000134#endif
135
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000136shortcut *main_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000137 /* The main shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000138shortcut *whereis_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000139 /* The "Search" shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000140shortcut *replace_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000141 /* The "Search (to replace)" shortcut list. */
142shortcut *replace_list_2 = NULL;
143 /* The "Replace with" shortcut list. */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000144shortcut *gotoline_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000145 /* The "Enter line number, column number" shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000146shortcut *writefile_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000147 /* The "File Name to Write" shortcut list. */
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000148shortcut *insertfile_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000149 /* The "File to insert" shortcut list. */
150#ifndef NANO_TINY
151shortcut *extcmd_list = NULL;
152 /* The "Command to execute" shortcut list. */
153#endif
Chris Allegretta7662c862003-01-13 01:35:15 +0000154#ifndef DISABLE_HELP
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000155shortcut *help_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000156 /* The help text shortcut list. */
Chris Allegretta7662c862003-01-13 01:35:15 +0000157#endif
158#ifndef DISABLE_SPELLER
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000159shortcut *spell_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000160 /* The internal spell checker shortcut list. */
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000161#endif
Rocco Corsiaf5c3022001-01-12 07:51:05 +0000162#ifndef DISABLE_BROWSER
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000163shortcut *browser_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000164 /* The file browser shortcut list. */
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000165shortcut *whereis_file_list = NULL;
166 /* The file browser "Search" shortcut list. */
Chris Allegretta201f1d92003-02-05 02:51:19 +0000167shortcut *gotodir_list = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000168 /* The "Go To Directory" shortcut list. */
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000169#endif
Chris Allegretta201f1d92003-02-05 02:51:19 +0000170
Chris Allegretta8ce24132001-04-30 11:28:46 +0000171#ifdef ENABLE_COLOR
David Lawrence Ramsey9b13ff32002-12-22 16:30:00 +0000172syntaxtype *syntaxes = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000173 /* The global list of color syntaxes. */
David Lawrence Ramsey9b13ff32002-12-22 16:30:00 +0000174char *syntaxstr = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000175 /* The color syntax name specified on the command line. */
Chris Allegretta8ce24132001-04-30 11:28:46 +0000176#endif
177
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000178const shortcut *currshortcut;
179 /* The current shortcut list we're using. */
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000180#ifndef NANO_TINY
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000181toggle *toggles = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000182 /* The global toggle list. */
Chris Allegrettaf0b26df2001-01-20 22:18:18 +0000183#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000184
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000185#ifndef NANO_TINY
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000186filestruct *search_history = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000187 /* The search string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000188filestruct *searchage = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000189 /* The top of the search string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000190filestruct *searchbot = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000191 /* The bottom of the search string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000192filestruct *replace_history = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000193 /* The replace string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000194filestruct *replaceage = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000195 /* The top of the replace string history list. */
David Lawrence Ramsey934f9682005-05-23 16:30:06 +0000196filestruct *replacebot = NULL;
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000197 /* The bottom of the replace string history list. */
Chris Allegretta5beed502003-01-05 20:41:21 +0000198#endif
199
David Lawrence Ramseyfc0f8f82006-05-10 13:41:53 +0000200/* Regular expressions. */
Chris Allegretta805c26d2000-09-06 13:39:17 +0000201#ifdef HAVE_REGEX_H
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000202regex_t search_regexp;
203 /* The compiled regular expression to use in searches. */
204regmatch_t regmatches[10];
205 /* The match positions for parenthetical subexpressions, 10
206 * maximum, used in regular expression searches. */
Chris Allegretta6df90f52002-07-19 01:08:59 +0000207#endif
Chris Allegretta3533a342002-03-24 23:19:32 +0000208
David Lawrence Ramsey4d72de72006-04-12 15:27:40 +0000209int reverse_attr = A_REVERSE;
210 /* The curses attribute we use for reverse video. */
Chris Allegrettaa0d89972003-02-03 03:32:08 +0000211
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000212char *homedir = NULL;
David Lawrence Ramseyc1c818e2006-05-14 18:22:01 +0000213 /* The user's home directory, from $HOME or /etc/passwd. */
David Lawrence Ramseya27bd652004-08-17 05:23:38 +0000214
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000215/* Return the number of entries in the shortcut list s. */
David Lawrence Ramseyebd0d7c2004-07-01 18:59:52 +0000216size_t length_of_list(const shortcut *s)
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000217{
David Lawrence Ramseyebd0d7c2004-07-01 18:59:52 +0000218 size_t i = 0;
David Lawrence Ramseye21adfa2002-09-13 18:14:04 +0000219
Chris Allegrettadab017e2002-04-23 10:56:06 +0000220 for (; s != NULL; s = s->next)
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000221 i++;
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000222 return i;
223}
224
David Lawrence Ramseye6757b92006-04-19 13:36:56 +0000225/* Add a new shortcut to the end of the shortcut list. */
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000226void sc_init_one(shortcut **shortcutage, int ctrlval, const char *desc
Chris Allegrettadab017e2002-04-23 10:56:06 +0000227#ifndef DISABLE_HELP
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000228 , const char *help, bool blank_after
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000229#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000230 , int metaval, int funcval, int miscval, bool view,
231 void (*func)(void))
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000232{
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000233 shortcut *s;
234
235 if (*shortcutage == NULL) {
David Lawrence Ramsey70047ee2003-06-14 20:41:34 +0000236 *shortcutage = (shortcut *)nmalloc(sizeof(shortcut));
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000237 s = *shortcutage;
238 } else {
239 for (s = *shortcutage; s->next != NULL; s = s->next)
240 ;
David Lawrence Ramsey70047ee2003-06-14 20:41:34 +0000241 s->next = (shortcut *)nmalloc(sizeof(shortcut));
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000242 s = s->next;
243 }
244
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000245 s->ctrlval = ctrlval;
David Lawrence Ramseyefb4b0a2006-04-19 14:09:01 +0000246 s->desc = (desc == NULL) ? "" : _(desc);
Chris Allegrettadab017e2002-04-23 10:56:06 +0000247#ifndef DISABLE_HELP
David Lawrence Ramseyefb4b0a2006-04-19 14:09:01 +0000248 s->help = (help == NULL) ? "" : _(help);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000249 s->blank_after = blank_after;
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000250#endif
David Lawrence Ramsey1576d532004-03-19 21:46:34 +0000251 s->metaval = metaval;
252 s->funcval = funcval;
253 s->miscval = miscval;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000254 s->viewok = view;
255 s->func = func;
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000256 s->next = NULL;
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000257}
258
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000259/* Initialize all shortcut lists. If unjustify is TRUE, replace the
260 * Uncut shortcut in the main shortcut list with UnJustify. */
David Lawrence Ramsey1f1ebb82004-11-11 21:50:01 +0000261void shortcut_init(bool unjustify)
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000262{
David Lawrence Ramseyed467e52006-07-03 18:40:53 +0000263 /* TRANSLATORS: Try to keep this and following strings at most 10
264 * characters. */
David Lawrence Ramsey12c08dd2006-03-25 15:56:40 +0000265 const char *cancel_msg = N_("Cancel");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000266 const char *get_help_msg = N_("Get Help");
267 const char *exit_msg = N_("Exit");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000268 const char *whereis_msg = N_("Where Is");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000269 const char *prev_page_msg = N_("Prev Page");
270 const char *next_page_msg = N_("Next Page");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000271 const char *go_to_line_msg = N_("Go To Line");
David Lawrence Ramseyed467e52006-07-03 18:40:53 +0000272 /* TRANSLATORS: Try to keep this and previous strings at most 10
273 * characters. */
David Lawrence Ramsey12c08dd2006-03-25 15:56:40 +0000274 const char *replace_msg = N_("Replace");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000275#ifndef NANO_TINY
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +0000276 /* TRANSLATORS: Try to keep this at most 12 characters. */
277 const char *whereis_next_msg = N_("WhereIs Next");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000278#endif
David Lawrence Ramseyed467e52006-07-03 18:40:53 +0000279 /* TRANSLATORS: Try to keep this and following strings at most 10
280 * characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000281 const char *first_line_msg = N_("First Line");
282 const char *last_line_msg = N_("Last Line");
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000283#ifndef DISABLE_JUSTIFY
284 const char *beg_of_par_msg = N_("Beg of Par");
285 const char *end_of_par_msg = N_("End of Par");
286 const char *fulljstify_msg = N_("FullJstify");
287#endif
David Lawrence Ramsey81378762006-04-24 20:53:43 +0000288 const char *refresh_msg = N_("Refresh");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000289#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000290 const char *case_sens_msg = N_("Case Sens");
David Lawrence Ramseyf3ecffd2005-06-16 18:48:30 +0000291 const char *backwards_msg = N_("Backwards");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000292#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000293#ifdef HAVE_REGEX_H
294 const char *regexp_msg = N_("Regexp");
295#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000296#ifndef NANO_TINY
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000297 const char *prev_history_msg = N_("PrevHstory");
David Lawrence Ramseyed467e52006-07-03 18:40:53 +0000298 /* TRANSLATORS: Try to keep this and previous strings at most 10
299 * characters. */
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000300 const char *next_history_msg = N_("NextHstory");
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000301#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramseyaf318aa2006-04-12 12:54:23 +0000302 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +0000303 const char *new_buffer_msg = N_("New Buffer");
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +0000304#endif
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000305#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000306#ifndef DISABLE_BROWSER
David Lawrence Ramsey602199d2006-05-06 15:31:32 +0000307 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000308 const char *to_files_msg = N_("To Files");
David Lawrence Ramseybe231d32006-05-21 21:37:21 +0000309 /* TRANSLATORS: Try to keep this at most 12 characters. */
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000310 const char *first_file_msg = N_("First File");
David Lawrence Ramseybe231d32006-05-21 21:37:21 +0000311 /* TRANSLATORS: Try to keep this at most 12 characters. */
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000312 const char *last_file_msg = N_("Last File");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000313#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +0000314#ifndef DISABLE_HELP
David Lawrence Ramsey804e1072006-03-29 19:43:32 +0000315 const char *nano_cancel_msg = N_("Cancel the current function");
David Lawrence Ramsey57c9afb2006-04-14 20:21:45 +0000316 const char *nano_help_msg = N_("Display this help text");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000317 const char *nano_exit_msg =
Chris Allegretta7162e3d2002-04-06 05:02:14 +0000318#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramseybe231d32006-05-21 21:37:21 +0000319 N_("Close the current file buffer / Exit from nano")
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000320#else
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000321 N_("Exit from nano")
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000322#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000323 ;
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000324 const char *nano_writeout_msg =
325 N_("Write the current file to disk");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000326 const char *nano_justify_msg = N_("Justify the current paragraph");
327 const char *nano_insert_msg =
328 N_("Insert another file into the current one");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000329 const char *nano_whereis_msg =
David Lawrence Ramseybe231d32006-05-21 21:37:21 +0000330 N_("Search for a string or a regular expression");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000331 const char *nano_prevpage_msg = N_("Move to the previous screen");
332 const char *nano_nextpage_msg = N_("Move to the next screen");
333 const char *nano_cut_msg =
334 N_("Cut the current line and store it in the cutbuffer");
335 const char *nano_uncut_msg =
336 N_("Uncut from the cutbuffer into the current line");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000337 const char *nano_cursorpos_msg =
David Lawrence Ramseyf50bd4b2006-04-14 20:15:44 +0000338 N_("Display the position of the cursor");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000339 const char *nano_spell_msg =
340 N_("Invoke the spell checker, if available");
David Lawrence Ramsey16349c92005-07-11 20:50:43 +0000341 const char *nano_gotoline_msg = N_("Go to line and column number");
David Lawrence Ramseybe231d32006-05-21 21:37:21 +0000342 const char *nano_replace_msg =
343 N_("Replace a string or a regular expression");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000344#ifndef NANO_TINY
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000345 const char *nano_mark_msg = N_("Mark text at the cursor position");
346 const char *nano_whereis_next_msg = N_("Repeat last search");
David Lawrence Ramseycf1879b2006-04-27 23:39:49 +0000347 const char *nano_copy_msg =
348 N_("Copy the current line and store it in the cutbuffer");
David Lawrence Ramseyaee00d42006-07-05 18:42:22 +0000349 const char *nano_indent_msg = N_("Indent the current line");
350 const char *nano_unindent_msg = N_("Unindent the current line");
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000351#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000352 const char *nano_forward_msg = N_("Move forward one character");
353 const char *nano_back_msg = N_("Move back one character");
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000354#ifndef NANO_TINY
355 const char *nano_nextword_msg = N_("Move forward one word");
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000356 const char *nano_prevword_msg = N_("Move back one word");
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000357#endif
358 const char *nano_prevline_msg = N_("Move to the previous line");
359 const char *nano_nextline_msg = N_("Move to the next line");
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000360 const char *nano_home_msg =
361 N_("Move to the beginning of the current line");
362 const char *nano_end_msg =
363 N_("Move to the end of the current line");
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000364#ifndef DISABLE_JUSTIFY
365 const char *nano_parabegin_msg =
David Lawrence Ramsey40e05722006-04-23 19:21:12 +0000366 N_("Move to the beginning of the current paragraph");
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000367 const char *nano_paraend_msg =
David Lawrence Ramsey40e05722006-04-23 19:21:12 +0000368 N_("Move to the end of the current paragraph");
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000369#endif
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000370 const char *nano_firstline_msg =
371 N_("Move to the first line of the file");
372 const char *nano_lastline_msg =
373 N_("Move to the last line of the file");
374#ifndef NANO_TINY
375 const char *nano_bracket_msg = N_("Move to the matching bracket");
376 const char *nano_scrollup_msg =
377 N_("Scroll up one line without scrolling the cursor");
378 const char *nano_scrolldown_msg =
379 N_("Scroll down one line without scrolling the cursor");
380#endif
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000381#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +0000382 const char *nano_prevfile_msg =
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000383 N_("Switch to the previous file buffer");
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +0000384 const char *nano_nextfile_msg =
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000385 N_("Switch to the next file buffer");
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000386#endif
David Lawrence Ramsey40e05722006-04-23 19:21:12 +0000387 const char *nano_verbatim_msg =
David Lawrence Ramsey939d4232006-04-24 21:00:17 +0000388 N_("Insert the next keystroke verbatim");
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000389 const char *nano_tab_msg =
David Lawrence Ramseybf784202006-04-29 13:59:04 +0000390 N_("Insert a tab at the cursor position");
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000391 const char *nano_enter_msg =
David Lawrence Ramseycf1879b2006-04-27 23:39:49 +0000392 N_("Insert a newline at the cursor position");
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000393 const char *nano_delete_msg =
394 N_("Delete the character under the cursor");
395 const char *nano_backspace_msg =
396 N_("Delete the character to the left of the cursor");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000397#ifndef NANO_TINY
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000398 const char *nano_cut_till_end_msg =
399 N_("Cut from the cursor position to the end of the file");
400#endif
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000401#ifndef DISABLE_JUSTIFY
402 const char *nano_fulljustify_msg = N_("Justify the entire file");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000403#endif
David Lawrence Ramseyc5c52302005-11-15 23:45:29 +0000404#ifndef NANO_TINY
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000405 const char *nano_wordcount_msg =
406 N_("Count the number of words, lines, and characters");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000407#endif
David Lawrence Ramsey854a44a2006-04-24 21:14:55 +0000408 const char *nano_refresh_msg =
409 N_("Refresh (redraw) the current screen");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000410#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000411 const char *nano_case_msg =
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000412 N_("Toggle the case sensitivity of the search");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000413 const char *nano_reverse_msg =
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000414 N_("Reverse the direction of the search");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000415#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000416#ifdef HAVE_REGEX_H
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000417 const char *nano_regexp_msg =
418 N_("Toggle the use of regular expressions");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000419#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000420#ifndef NANO_TINY
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000421 const char *nano_prev_history_msg =
David Lawrence Ramsey7b0531a2006-07-31 01:30:31 +0000422 N_("Recall the previous search/replace string");
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000423 const char *nano_next_history_msg =
David Lawrence Ramsey7b0531a2006-07-31 01:30:31 +0000424 N_("Recall the next search/replace string");
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000425#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000426#ifndef DISABLE_BROWSER
427 const char *nano_tofiles_msg = N_("Go to file browser");
428#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000429#ifndef NANO_TINY
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000430 const char *nano_dos_msg = N_("Toggle the use of DOS format");
431 const char *nano_mac_msg = N_("Toggle the use of Mac format");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000432#endif
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000433 const char *nano_append_msg = N_("Toggle appending");
434 const char *nano_prepend_msg = N_("Toggle prepending");
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000435#ifndef NANO_TINY
David Lawrence Ramsey9b108c22005-06-06 18:38:16 +0000436 const char *nano_backup_msg =
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000437 N_("Toggle backing up of the original file");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000438 const char *nano_execute_msg = N_("Execute external command");
439#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000440#if !defined(NANO_TINY) && defined(ENABLE_MULTIBUFFER)
David Lawrence Ramsey69e1ce52006-06-08 02:37:45 +0000441 const char *nano_multibuffer_msg =
442 N_("Toggle the use of a new buffer");
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000443#endif
444#ifndef DISABLE_BROWSER
David Lawrence Ramseyc41d4282004-07-23 12:51:40 +0000445 const char *nano_exitbrowser_msg = N_("Exit from the file browser");
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000446 const char *nano_firstfile_msg =
447 N_("Go to the first file in the list");
448 const char *nano_lastfile_msg =
449 N_("Go to the last file in the list");
David Lawrence Ramseyc41d4282004-07-23 12:51:40 +0000450 const char *nano_gotodir_msg = N_("Go to directory");
Chris Allegretta2bef1822001-09-28 19:53:11 +0000451#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +0000452#endif /* !DISABLE_HELP */
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000453
David Lawrence Ramsey8e4adcd2004-05-20 03:29:33 +0000454/* The following macro is to be used in calling sc_init_one(). The
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000455 * point is that sc_init_one() takes 10 arguments, unless DISABLE_HELP
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000456 * is defined, when the 4th and 5th ones should not be there. */
David Lawrence Ramseyea43a1d2004-03-02 22:52:57 +0000457#ifndef DISABLE_HELP
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000458#define IFSCHELP(help, blank, nextvar) help, blank, nextvar
David Lawrence Ramseyea43a1d2004-03-02 22:52:57 +0000459#else
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000460#define IFSCHELP(help, blank, nextvar) nextvar
Chris Allegrettadab017e2002-04-23 10:56:06 +0000461#endif
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000462
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000463 free_shortcutage(&main_list);
464
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000465 sc_init_one(&main_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000466 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000467 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000468#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000469 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000470#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000471 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000472#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000473 );
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000474
David Lawrence Ramsey5b3dd0f2004-11-25 04:39:07 +0000475 sc_init_one(&main_list, NANO_EXIT_KEY,
Chris Allegretta355fbe52001-07-14 19:32:47 +0000476#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000477 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000478 openfile != NULL && openfile != openfile->next ? N_("Close") :
Chris Allegretta2d7893d2001-07-11 02:08:33 +0000479#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000480 exit_msg, IFSCHELP(nano_exit_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000481 NANO_EXIT_FKEY, NANO_NO_KEY, VIEW, do_exit);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000482
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000483 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000484 sc_init_one(&main_list, NANO_WRITEOUT_KEY, N_("WriteOut"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000485 IFSCHELP(nano_writeout_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000486 NANO_WRITEOUT_FKEY, NANO_NO_KEY, NOVIEW, do_writeout_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000487
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000488 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000489 sc_init_one(&main_list, NANO_JUSTIFY_KEY, N_("Justify"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000490 IFSCHELP(nano_justify_msg, TRUE, NANO_NO_KEY),
491 NANO_JUSTIFY_FKEY, NANO_NO_KEY, NOVIEW,
David Lawrence Ramseya539fce2004-06-29 00:43:56 +0000492#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000493 do_justify_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000494#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000495 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000496#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000497 );
Chris Allegretta32da4562002-01-02 15:12:21 +0000498
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000499 /* We allow inserting files in view mode if multibuffers are
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +0000500 * available, so that we can view multiple files. If we're using
501 * restricted mode, inserting files is disabled, since it allows
502 * reading from or writing to files not specified on the command
503 * line. */
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000504 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000505 sc_init_one(&main_list, NANO_INSERTFILE_KEY, N_("Read File"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000506 IFSCHELP(nano_insert_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000507 NANO_INSERTFILE_FKEY, NANO_NO_KEY,
Chris Allegretta32da4562002-01-02 15:12:21 +0000508#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000509 VIEW
Chris Allegretta32da4562002-01-02 15:12:21 +0000510#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000511 NOVIEW
Chris Allegretta32da4562002-01-02 15:12:21 +0000512#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000513 , !ISSET(RESTRICTED) ? do_insertfile_void : nano_disabled_msg);
Chris Allegrettaaf6414a2001-02-11 19:05:05 +0000514
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000515 sc_init_one(&main_list, NANO_WHEREIS_KEY, whereis_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000516 IFSCHELP(nano_whereis_msg, FALSE, NANO_NO_KEY),
517 NANO_WHEREIS_FKEY, NANO_NO_KEY, VIEW, do_search);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000518
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000519 sc_init_one(&main_list, NANO_PREVPAGE_KEY, prev_page_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000520 IFSCHELP(nano_prevpage_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000521 NANO_PREVPAGE_FKEY, NANO_NO_KEY, VIEW, do_page_up);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000522
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000523 sc_init_one(&main_list, NANO_NEXTPAGE_KEY, next_page_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000524 IFSCHELP(nano_nextpage_msg, TRUE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000525 NANO_NEXTPAGE_FKEY, NANO_NO_KEY, VIEW, do_page_down);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000526
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000527 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000528 sc_init_one(&main_list, NANO_CUT_KEY, N_("Cut Text"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000529 IFSCHELP(nano_cut_msg, FALSE, NANO_NO_KEY), NANO_CUT_FKEY,
David Lawrence Ramseyc87e0c02006-04-25 02:23:28 +0000530 NANO_NO_KEY, NOVIEW, do_cut_text_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000531
Chris Allegretta07798352000-11-27 22:58:23 +0000532 if (unjustify)
David Lawrence Ramseyed467e52006-07-03 18:40:53 +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_UNJUSTIFY_KEY, N_("UnJustify"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000535 IFSCHELP(NULL, FALSE, NANO_NO_KEY), NANO_UNJUSTIFY_FKEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000536 NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta07798352000-11-27 22:58:23 +0000537 else
David Lawrence Ramseyed467e52006-07-03 18:40:53 +0000538 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +0000539 sc_init_one(&main_list, NANO_UNCUT_KEY, N_("UnCut Text"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000540 IFSCHELP(nano_uncut_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000541 NANO_UNCUT_FKEY, NANO_NO_KEY, NOVIEW, do_uncut_text);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000542
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000543 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000544 sc_init_one(&main_list, NANO_CURSORPOS_KEY, N_("Cur Pos"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000545 IFSCHELP(nano_cursorpos_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000546 NANO_CURSORPOS_FKEY, NANO_NO_KEY, VIEW, do_cursorpos_void);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000547
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000548 /* If we're using restricted mode, spell checking is disabled
549 * because it allows reading from or writing to files not specified
550 * on the command line. */
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000551 /* TRANSLATORS: Try to keep this at most 10 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000552 sc_init_one(&main_list, NANO_SPELL_KEY, N_("To Spell"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000553 IFSCHELP(nano_spell_msg, TRUE, NANO_NO_KEY), NANO_SPELL_FKEY,
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000554 NANO_NO_KEY, NOVIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000555#ifndef DISABLE_SPELLER
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000556 !ISSET(RESTRICTED) ? do_spell :
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000557#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000558 nano_disabled_msg);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000559
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +0000560 sc_init_one(&main_list, NANO_GOTOLINE_KEY, go_to_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000561 IFSCHELP(nano_gotoline_msg, FALSE, NANO_GOTOLINE_METAKEY),
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +0000562 NANO_GOTOLINE_FKEY, NANO_NO_KEY, VIEW,
563 do_gotolinecolumn_void);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000564
David Lawrence Ramseyf1e56272006-05-22 18:28:20 +0000565 sc_init_one(&main_list, NANO_REPLACE_KEY, replace_msg
566#ifndef NANO_TINY
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000567 , IFSCHELP(nano_replace_msg, FALSE, NANO_REPLACE_METAKEY)
David Lawrence Ramseyf1e56272006-05-22 18:28:20 +0000568#else
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000569 , IFSCHELP(nano_replace_msg, TRUE, NANO_REPLACE_METAKEY)
David Lawrence Ramseyf1e56272006-05-22 18:28:20 +0000570#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000571 , NANO_REPLACE_FKEY, NANO_NO_KEY, NOVIEW, do_replace);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000572
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000573#ifndef NANO_TINY
David Lawrence Ramsey8381fdd2004-11-01 22:40:02 +0000574 sc_init_one(&main_list, NANO_MARK_KEY, N_("Mark Text"),
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000575 IFSCHELP(nano_mark_msg, FALSE, NANO_MARK_METAKEY),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000576 NANO_MARK_FKEY, NANO_NO_KEY, VIEW, do_mark);
David Lawrence Ramseyefb4b0a2006-04-19 14:09:01 +0000577
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +0000578 sc_init_one(&main_list, NANO_NO_KEY, whereis_next_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000579 IFSCHELP(nano_whereis_next_msg, TRUE, NANO_WHEREIS_NEXT_KEY),
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +0000580 NANO_WHEREIS_NEXT_FKEY, NANO_NO_KEY, VIEW, do_research);
David Lawrence Ramseycf1879b2006-04-27 23:39:49 +0000581
582 sc_init_one(&main_list, NANO_NO_KEY, N_("Copy Text"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000583 IFSCHELP(nano_copy_msg, FALSE, NANO_COPY_KEY), NANO_NO_KEY,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000584 NANO_COPY_METAKEY, NOVIEW, do_copy_text);
David Lawrence Ramseyf85001a2006-04-28 13:19:56 +0000585
586 sc_init_one(&main_list, NANO_NO_KEY, N_("Indent Text"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000587 IFSCHELP(nano_indent_msg, FALSE, NANO_INDENT_KEY), NANO_NO_KEY,
David Lawrence Ramseyaee00d42006-07-05 18:42:22 +0000588 NANO_NO_KEY, NOVIEW, do_indent_void);
David Lawrence Ramseyf85001a2006-04-28 13:19:56 +0000589
590 sc_init_one(&main_list, NANO_NO_KEY, N_("Unindent Text"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000591 IFSCHELP(nano_unindent_msg, TRUE, NANO_UNINDENT_KEY),
592 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_unindent);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000593#endif
594
595 sc_init_one(&main_list, NANO_FORWARD_KEY, N_("Forward"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000596 IFSCHELP(nano_forward_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000597 NANO_NO_KEY, VIEW, do_right);
598
599 sc_init_one(&main_list, NANO_BACK_KEY, N_("Back"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000600 IFSCHELP(nano_back_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000601 NANO_NO_KEY, VIEW, do_left);
602
603#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000604 sc_init_one(&main_list, NANO_NEXTWORD_KEY, N_("Next Word"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000605 IFSCHELP(nano_nextword_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramseye010edd2005-06-12 22:31:03 +0000606 NANO_NO_KEY, VIEW, do_next_word_void);
David Lawrence Ramseyc5967552002-06-21 03:20:06 +0000607
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000608 sc_init_one(&main_list, NANO_NO_KEY, N_("Prev Word"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000609 IFSCHELP(nano_prevword_msg, FALSE, NANO_PREVWORD_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000610 NANO_NO_KEY, NANO_NO_KEY, VIEW, do_prev_word_void);
Chris Allegretta8d990b52001-09-22 22:14:25 +0000611#endif
David Lawrence Ramseye0497062003-08-23 21:11:06 +0000612
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000613 sc_init_one(&main_list, NANO_PREVLINE_KEY, N_("Prev Line"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000614 IFSCHELP(nano_prevline_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey2c36e2e2006-07-06 22:17:47 +0000615 NANO_NO_KEY, VIEW, do_up_void);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000616
617 sc_init_one(&main_list, NANO_NEXTLINE_KEY, N_("Next Line"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000618 IFSCHELP(nano_nextline_msg, TRUE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey2c36e2e2006-07-06 22:17:47 +0000619 NANO_NO_KEY, VIEW, do_down_void);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000620
621 sc_init_one(&main_list, NANO_HOME_KEY, N_("Home"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000622 IFSCHELP(nano_home_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000623 NANO_NO_KEY, VIEW, do_home);
624
625 sc_init_one(&main_list, NANO_END_KEY, N_("End"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000626 IFSCHELP(nano_end_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000627 NANO_NO_KEY, VIEW, do_end);
628
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000629#ifndef DISABLE_JUSTIFY
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000630 sc_init_one(&main_list, NANO_NO_KEY, beg_of_par_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000631 IFSCHELP(nano_parabegin_msg, FALSE, NANO_PARABEGIN_METAKEY),
632 NANO_NO_KEY, NANO_PARABEGIN_METAKEY2, VIEW, do_para_begin_void);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000633
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000634 sc_init_one(&main_list, NANO_NO_KEY, end_of_par_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000635 IFSCHELP(nano_paraend_msg, FALSE, NANO_PARAEND_METAKEY),
636 NANO_NO_KEY, NANO_PARAEND_METAKEY2, VIEW, do_para_end_void);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000637#endif
David Lawrence Ramseye0497062003-08-23 21:11:06 +0000638
David Lawrence Ramseydf453652006-04-21 02:05:09 +0000639 sc_init_one(&main_list, NANO_NO_KEY, first_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000640 IFSCHELP(nano_firstline_msg, FALSE, NANO_FIRSTLINE_METAKEY),
641 NANO_NO_KEY, NANO_FIRSTLINE_METAKEY2, VIEW, do_first_line);
David Lawrence Ramseydf453652006-04-21 02:05:09 +0000642
643 sc_init_one(&main_list, NANO_NO_KEY, last_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000644 IFSCHELP(nano_lastline_msg, TRUE, NANO_LASTLINE_METAKEY),
645 NANO_NO_KEY, NANO_LASTLINE_METAKEY2, VIEW, do_last_line);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000646
647#ifndef NANO_TINY
David Lawrence Ramseyf5d6d992006-05-12 12:37:53 +0000648 sc_init_one(&main_list, NANO_NO_KEY, N_("Find Other Bracket"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000649 IFSCHELP(nano_bracket_msg, FALSE, NANO_BRACKET_KEY),
650 NANO_NO_KEY, NANO_NO_KEY, VIEW, do_find_bracket);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000651
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000652 sc_init_one(&main_list, NANO_NO_KEY, N_("Scroll Up"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000653 IFSCHELP(nano_scrollup_msg, FALSE, NANO_SCROLLUP_KEY),
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000654 NANO_NO_KEY, NANO_SCROLLUP_METAKEY, VIEW, do_scroll_up);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000655
656 sc_init_one(&main_list, NANO_NO_KEY, N_("Scroll Down"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000657 IFSCHELP(nano_scrolldown_msg, TRUE, NANO_SCROLLDOWN_KEY),
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000658 NANO_NO_KEY, NANO_SCROLLDOWN_METAKEY, VIEW, do_scroll_down);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000659#endif
David Lawrence Ramseydf453652006-04-21 02:05:09 +0000660
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000661#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000662 sc_init_one(&main_list, NANO_NO_KEY, N_("Previous File"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000663 IFSCHELP(nano_prevfile_msg, FALSE, NANO_PREVFILE_KEY),
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000664 NANO_NO_KEY, NANO_PREVFILE_METAKEY, VIEW,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000665 switch_to_prev_buffer_void);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000666
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000667 sc_init_one(&main_list, NANO_NO_KEY, N_("Next File"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000668 IFSCHELP(nano_nextfile_msg, TRUE, NANO_NEXTFILE_KEY),
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000669 NANO_NO_KEY, NANO_NEXTFILE_METAKEY, VIEW,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000670 switch_to_next_buffer_void);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000671#endif
Chris Allegrettab3655b42001-10-22 03:15:31 +0000672
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000673 sc_init_one(&main_list, NANO_NO_KEY, N_("Verbatim Input"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000674 IFSCHELP(nano_verbatim_msg, FALSE, NANO_VERBATIM_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000675 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_verbatim_input);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000676
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000677 sc_init_one(&main_list, NANO_TAB_KEY, N_("Tab"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000678 IFSCHELP(nano_tab_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000679 NANO_NO_KEY, NOVIEW, do_tab);
680
681 sc_init_one(&main_list, NANO_ENTER_KEY, N_("Enter"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000682 IFSCHELP(nano_enter_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000683 NANO_NO_KEY, NOVIEW, do_enter);
684
685 sc_init_one(&main_list, NANO_DELETE_KEY, N_("Delete"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000686 IFSCHELP(nano_delete_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000687 NANO_NO_KEY, NOVIEW, do_delete);
688
David Lawrence Ramseybf487982006-04-24 20:50:52 +0000689 sc_init_one(&main_list, NANO_BACKSPACE_KEY, N_("Backspace")
690#ifndef NANO_TINY
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000691 , IFSCHELP(nano_backspace_msg, FALSE, NANO_NO_KEY)
David Lawrence Ramseybf487982006-04-24 20:50:52 +0000692#else
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000693 , IFSCHELP(nano_backspace_msg, TRUE, NANO_NO_KEY)
David Lawrence Ramseybf487982006-04-24 20:50:52 +0000694#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000695 , NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_backspace);
David Lawrence Ramsey295d1722005-01-01 07:43:32 +0000696
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +0000697#ifndef NANO_TINY
David Lawrence Ramseyf7b87832006-08-22 18:48:13 +0000698 sc_init_one(&main_list, NANO_NO_KEY, N_("CutTillEnd"),
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000699 IFSCHELP(nano_cut_till_end_msg, TRUE, NANO_CUTTILLEND_METAKEY),
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +0000700 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_cut_till_end);
701#endif
702
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000703#ifndef DISABLE_JUSTIFY
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000704 sc_init_one(&main_list, NANO_NO_KEY, fulljstify_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000705 IFSCHELP(nano_fulljustify_msg, FALSE, NANO_FULLJUSTIFY_METAKEY),
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000706 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_full_justify);
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000707#endif
708
David Lawrence Ramseyc5c52302005-11-15 23:45:29 +0000709#ifndef NANO_TINY
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000710 sc_init_one(&main_list, NANO_NO_KEY, N_("Word Count"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000711 IFSCHELP(nano_wordcount_msg, FALSE, NANO_WORDCOUNT_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000712 NANO_NO_KEY, NANO_NO_KEY, VIEW, do_wordlinechar_count);
713#endif
David Lawrence Ramseyefb4b0a2006-04-19 14:09:01 +0000714
David Lawrence Ramsey97415df2006-04-22 20:03:05 +0000715 sc_init_one(&main_list, NANO_REFRESH_KEY, refresh_msg
David Lawrence Ramsey03252d42006-04-22 20:00:23 +0000716#ifndef NANO_TINY
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000717 , IFSCHELP(nano_refresh_msg, TRUE, NANO_NO_KEY)
David Lawrence Ramsey03252d42006-04-22 20:00:23 +0000718#else
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000719 , IFSCHELP(nano_refresh_msg, FALSE, NANO_NO_KEY)
David Lawrence Ramsey03252d42006-04-22 20:00:23 +0000720#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000721 , NANO_NO_KEY, NANO_NO_KEY, VIEW, total_refresh);
David Lawrence Ramseya593f532003-11-28 19:47:42 +0000722
Chris Allegrettadab017e2002-04-23 10:56:06 +0000723 free_shortcutage(&whereis_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +0000724
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000725 sc_init_one(&whereis_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000726 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000727 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000728#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000729 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000730#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000731 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000732#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000733 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000734
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000735 sc_init_one(&whereis_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000736 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000737 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000738
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000739 sc_init_one(&whereis_list, NANO_FIRSTLINE_KEY, first_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000740 IFSCHELP(nano_firstline_msg, FALSE, NANO_FIRSTLINE_METAKEY),
741 NANO_FIRSTLINE_FKEY, NANO_FIRSTLINE_METAKEY2, VIEW,
David Lawrence Ramsey5f0a58b2006-04-21 02:24:34 +0000742 do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000743
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000744 sc_init_one(&whereis_list, NANO_LASTLINE_KEY, last_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000745 IFSCHELP(nano_lastline_msg, FALSE, NANO_LASTLINE_METAKEY),
746 NANO_LASTLINE_FKEY, NANO_LASTLINE_METAKEY2, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000747
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000748 sc_init_one(&whereis_list, NANO_TOOTHERSEARCH_KEY, replace_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000749 IFSCHELP(nano_replace_msg, FALSE, NANO_NO_KEY),
750 NANO_REPLACE_FKEY, NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000751
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000752 sc_init_one(&whereis_list, NANO_TOGOTOLINE_KEY, go_to_line_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000753 IFSCHELP(nano_gotoline_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000754 NANO_GOTOLINE_FKEY, NANO_NO_KEY, VIEW, NULL);
Chris Allegretta8c2b40f2000-06-29 01:30:04 +0000755
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000756#ifndef DISABLE_JUSTIFY
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000757 sc_init_one(&whereis_list, NANO_PARABEGIN_KEY, beg_of_par_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000758 IFSCHELP(nano_parabegin_msg, FALSE, NANO_PARABEGIN_METAKEY),
759 NANO_NO_KEY, NANO_PARABEGIN_METAKEY2, VIEW, do_para_begin_void);
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000760
David Lawrence Ramseydb6015c2004-09-11 21:41:13 +0000761 sc_init_one(&whereis_list, NANO_PARAEND_KEY, end_of_par_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000762 IFSCHELP(nano_paraend_msg, FALSE, NANO_PARAEND_METAKEY),
763 NANO_NO_KEY, NANO_PARAEND_METAKEY2, VIEW, do_para_end_void);
David Lawrence Ramsey8faf3052003-09-04 20:25:29 +0000764#endif
765
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000766#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000767 sc_init_one(&whereis_list, NANO_NO_KEY, case_sens_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000768 IFSCHELP(nano_case_msg, FALSE, TOGGLE_CASE_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000769 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000770
David Lawrence Ramseyf3ecffd2005-06-16 18:48:30 +0000771 sc_init_one(&whereis_list, NANO_NO_KEY, backwards_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000772 IFSCHELP(nano_reverse_msg, FALSE, TOGGLE_BACKWARDS_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000773 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000774#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000775
Chris Allegretta658399a2001-06-14 02:54:22 +0000776#ifdef HAVE_REGEX_H
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000777 sc_init_one(&whereis_list, NANO_NO_KEY, regexp_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000778 IFSCHELP(nano_regexp_msg, FALSE, NANO_REGEXP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000779 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000780#endif
Chris Allegretta5beed502003-01-05 20:41:21 +0000781
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000782#ifndef NANO_TINY
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000783 sc_init_one(&whereis_list, NANO_PREVLINE_KEY, prev_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000784 IFSCHELP(nano_prev_history_msg, FALSE, NANO_NO_KEY),
785 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000786
787 sc_init_one(&whereis_list, NANO_NEXTLINE_KEY, next_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000788 IFSCHELP(nano_next_history_msg, FALSE, NANO_NO_KEY),
789 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000790#endif
David Lawrence Ramsey02085d72004-11-07 16:04:18 +0000791
792#ifndef DISABLE_JUSTIFY
David Lawrence Ramsey02085d72004-11-07 16:04:18 +0000793 sc_init_one(&whereis_list, NANO_FULLJUSTIFY_KEY, fulljstify_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000794 IFSCHELP(nano_fulljustify_msg, FALSE, NANO_FULLJUSTIFY_METAKEY),
David Lawrence Ramsey02085d72004-11-07 16:04:18 +0000795 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, do_full_justify);
796#endif
Chris Allegretta5f36c372001-07-16 00:48:53 +0000797
Chris Allegrettadab017e2002-04-23 10:56:06 +0000798 free_shortcutage(&replace_list);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000799
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000800 sc_init_one(&replace_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000801 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000802 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000803#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000804 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000805#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000806 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000807#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000808 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000809
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000810 sc_init_one(&replace_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000811 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000812 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta5f36c372001-07-16 00:48:53 +0000813
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000814 sc_init_one(&replace_list, NANO_FIRSTLINE_KEY, first_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000815 IFSCHELP(nano_firstline_msg, FALSE, NANO_FIRSTLINE_METAKEY),
816 NANO_FIRSTLINE_FKEY, NANO_FIRSTLINE_METAKEY2, VIEW,
David Lawrence Ramsey5f0a58b2006-04-21 02:24:34 +0000817 do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000818
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000819 sc_init_one(&replace_list, NANO_LASTLINE_KEY, last_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000820 IFSCHELP(nano_lastline_msg, FALSE, NANO_LASTLINE_METAKEY),
821 NANO_LASTLINE_FKEY, NANO_LASTLINE_METAKEY2, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000822
David Lawrence Ramseye328ae92006-05-25 04:02:50 +0000823 /* TRANSLATORS: Try to keep this at most 12 characters. */
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000824 sc_init_one(&replace_list, NANO_TOOTHERSEARCH_KEY, N_("No Replace"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000825 IFSCHELP(nano_whereis_msg, FALSE, NANO_NO_KEY),
826 NANO_REPLACE_FKEY, NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000827
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000828#ifndef NANO_TINY
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000829 sc_init_one(&replace_list, NANO_NO_KEY, case_sens_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000830 IFSCHELP(nano_case_msg, FALSE, TOGGLE_CASE_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000831 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000832
David Lawrence Ramseyf3ecffd2005-06-16 18:48:30 +0000833 sc_init_one(&replace_list, NANO_NO_KEY, backwards_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000834 IFSCHELP(nano_reverse_msg, FALSE, TOGGLE_BACKWARDS_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000835 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000836#endif
Chris Allegretta105da332000-10-31 05:10:10 +0000837
Chris Allegretta658399a2001-06-14 02:54:22 +0000838#ifdef HAVE_REGEX_H
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000839 sc_init_one(&replace_list, NANO_NO_KEY, regexp_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000840 IFSCHELP(nano_regexp_msg, FALSE, NANO_REGEXP_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +0000841 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta658399a2001-06-14 02:54:22 +0000842#endif
Chris Allegretta5beed502003-01-05 20:41:21 +0000843
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000844#ifndef NANO_TINY
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000845 sc_init_one(&replace_list, NANO_PREVLINE_KEY, prev_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000846 IFSCHELP(nano_prev_history_msg, FALSE, NANO_NO_KEY),
847 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000848
849 sc_init_one(&replace_list, NANO_NEXTLINE_KEY, next_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000850 IFSCHELP(nano_next_history_msg, FALSE, NANO_NO_KEY),
851 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseyc10d8ff2005-06-03 20:51:39 +0000852#endif
Chris Allegretta5f36c372001-07-16 00:48:53 +0000853
Chris Allegrettadab017e2002-04-23 10:56:06 +0000854 free_shortcutage(&replace_list_2);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000855
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000856 sc_init_one(&replace_list_2, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000857 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000858 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000859#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000860 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000861#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000862 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000863#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000864 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000865
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000866 sc_init_one(&replace_list_2, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000867 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000868 NANO_NO_KEY, VIEW, NULL);
Chris Allegretta105da332000-10-31 05:10:10 +0000869
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000870 sc_init_one(&replace_list_2, NANO_FIRSTLINE_KEY, first_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000871 IFSCHELP(nano_firstline_msg, FALSE, NANO_FIRSTLINE_METAKEY),
872 NANO_FIRSTLINE_FKEY, NANO_FIRSTLINE_METAKEY2, VIEW,
David Lawrence Ramsey5f0a58b2006-04-21 02:24:34 +0000873 do_first_line);
Chris Allegretta105da332000-10-31 05:10:10 +0000874
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000875 sc_init_one(&replace_list_2, NANO_LASTLINE_KEY, last_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000876 IFSCHELP(nano_lastline_msg, FALSE, NANO_LASTLINE_METAKEY),
877 NANO_LASTLINE_FKEY, NANO_LASTLINE_METAKEY2, VIEW, do_last_line);
Chris Allegretta105da332000-10-31 05:10:10 +0000878
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000879#ifndef NANO_TINY
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000880 sc_init_one(&replace_list_2, NANO_PREVLINE_KEY, prev_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000881 IFSCHELP(nano_prev_history_msg, FALSE, NANO_NO_KEY),
882 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey305d8892006-05-24 19:48:03 +0000883
884 sc_init_one(&replace_list_2, NANO_NEXTLINE_KEY, next_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000885 IFSCHELP(nano_next_history_msg, FALSE, NANO_NO_KEY),
886 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
Chris Allegretta5beed502003-01-05 20:41:21 +0000887#endif
888
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000889 free_shortcutage(&gotoline_list);
Chris Allegrettab3655b42001-10-22 03:15:31 +0000890
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000891 sc_init_one(&gotoline_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000892 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000893 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000894#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000895 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000896#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000897 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000898#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000899 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000900
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000901 sc_init_one(&gotoline_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000902 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000903 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000904
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000905 sc_init_one(&gotoline_list, NANO_FIRSTLINE_KEY, first_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000906 IFSCHELP(nano_firstline_msg, FALSE, NANO_FIRSTLINE_METAKEY),
907 NANO_FIRSTLINE_FKEY, NANO_FIRSTLINE_METAKEY2, VIEW,
David Lawrence Ramsey5f0a58b2006-04-21 02:24:34 +0000908 do_first_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000909
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000910 sc_init_one(&gotoline_list, NANO_LASTLINE_KEY, last_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +0000911 IFSCHELP(nano_lastline_msg, FALSE, NANO_LASTLINE_METAKEY),
912 NANO_LASTLINE_FKEY, NANO_LASTLINE_METAKEY2, VIEW, do_last_line);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000913
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +0000914 sc_init_one(&gotoline_list, NANO_TOOTHERWHEREIS_KEY,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000915 N_("Go To Text"), IFSCHELP(nano_whereis_msg, FALSE,
916 NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +0000917
Chris Allegrettadab017e2002-04-23 10:56:06 +0000918 free_shortcutage(&writefile_list);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000919
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000920 sc_init_one(&writefile_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000921 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000922 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000923#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000924 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000925#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000926 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000927#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000928 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000929
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000930 sc_init_one(&writefile_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000931 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000932 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000933
Rocco Corsiaf5c3022001-01-12 07:51:05 +0000934#ifndef DISABLE_BROWSER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000935 /* If we're using restricted mode, the file browser is disabled.
936 * It's useless since inserting files is disabled. */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000937 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000938 sc_init_one(&writefile_list, NANO_TOFILES_KEY, to_files_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000939 IFSCHELP(nano_tofiles_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000940 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +0000941#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000942
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000943#ifndef NANO_TINY
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +0000944 /* If we're using restricted mode, the DOS format, Mac format,
945 * append, prepend, and backup toggles are disabled. The first and
946 * second are useless since inserting files is disabled, the third
947 * and fourth are disabled because they allow writing to files not
948 * specified on the command line, and the fifth is useless since
949 * backups are disabled. */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000950 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000951 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000952 sc_init_one(&writefile_list, NANO_NO_KEY, N_("DOS Format"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000953 IFSCHELP(nano_dos_msg, FALSE, TOGGLE_DOS_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000954 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000955
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000956 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000957 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000958 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Mac Format"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000959 IFSCHELP(nano_mac_msg, FALSE, TOGGLE_MAC_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000960 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000961#endif
962
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000963 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000964 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000965 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Append"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000966 IFSCHELP(nano_append_msg, FALSE, NANO_APPEND_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000967 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000968
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000969 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000970 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000971 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Prepend"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000972 IFSCHELP(nano_prepend_msg, FALSE, NANO_PREPEND_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000973 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta0e9b7aa2002-04-16 03:15:47 +0000974
David Lawrence Ramseyebe34252005-11-15 03:17:35 +0000975#ifndef NANO_TINY
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000976 if (!ISSET(RESTRICTED))
David Lawrence Ramseycde90392006-04-09 18:27:42 +0000977 /* TRANSLATORS: Try to keep this at most 16 characters. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000978 sc_init_one(&writefile_list, NANO_NO_KEY, N_("Backup File"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000979 IFSCHELP(nano_backup_msg, FALSE, TOGGLE_BACKUP_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000980 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
David Lawrence Ramsey5db0cdc2002-06-28 22:45:14 +0000981#endif
982
Chris Allegrettadab017e2002-04-23 10:56:06 +0000983 free_shortcutage(&insertfile_list);
Chris Allegrettaa8c22572002-02-15 19:17:02 +0000984
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000985 sc_init_one(&insertfile_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000986 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000987 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000988#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +0000989 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000990#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000991 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +0000992#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +0000993 );
Chris Allegrettab3655b42001-10-22 03:15:31 +0000994
David Lawrence Ramsey576bf332004-07-12 03:10:30 +0000995 sc_init_one(&insertfile_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +0000996 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +0000997 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaa2ea1932000-06-06 05:53:49 +0000998
Chris Allegrettacc197ef2001-05-29 04:21:44 +0000999#ifndef DISABLE_BROWSER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +00001000 /* If we're using restricted mode, the file browser is disabled.
1001 * It's useless since inserting files is disabled. */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001002 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001003 sc_init_one(&insertfile_list, NANO_TOFILES_KEY, to_files_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001004 IFSCHELP(nano_tofiles_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001005 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegrettacc197ef2001-05-29 04:21:44 +00001006#endif
David Lawrence Ramseya593f532003-11-28 19:47:42 +00001007
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001008#ifndef NANO_TINY
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +00001009 /* If we're using restricted mode, command execution is disabled.
1010 * It's useless since inserting files is disabled. */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001011 if (!ISSET(RESTRICTED))
David Lawrence Ramsey4b4b6082004-11-01 22:54:40 +00001012 sc_init_one(&insertfile_list, NANO_TOOTHERINSERT_KEY,
David Lawrence Ramseyed467e52006-07-03 18:40:53 +00001013 /* TRANSLATORS: Try to keep this at most 22
1014 * characters. */
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001015 N_("Execute Command"), IFSCHELP(nano_execute_msg, FALSE,
1016 NANO_NO_KEY), NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
David Lawrence Ramseya593f532003-11-28 19:47:42 +00001017
Chris Allegrettaf7c68112002-09-03 22:58:40 +00001018#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey32e3b882004-05-29 01:20:17 +00001019 /* If we're using restricted mode, the multibuffer toggle is
1020 * disabled. It's useless since inserting files is disabled. */
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001021 if (!ISSET(RESTRICTED))
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +00001022 sc_init_one(&insertfile_list, NANO_NO_KEY, new_buffer_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001023 IFSCHELP(nano_multibuffer_msg, FALSE,
1024 TOGGLE_MULTIBUFFER_KEY), NANO_NO_KEY, NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001025 NOVIEW, NULL);
Chris Allegrettaf7c68112002-09-03 22:58:40 +00001026#endif
David Lawrence Ramseye21adfa2002-09-13 18:14:04 +00001027#endif
Chris Allegrettacc197ef2001-05-29 04:21:44 +00001028
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001029#ifndef NANO_TINY
Chris Allegrettadab017e2002-04-23 10:56:06 +00001030 free_shortcutage(&extcmd_list);
Chris Allegretta7162e3d2002-04-06 05:02:14 +00001031
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001032 sc_init_one(&extcmd_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001033 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001034 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001035#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001036 do_help_void
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001037#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001038 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001039#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001040 );
Chris Allegretta52c5a6e2002-03-21 05:07:28 +00001041
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001042 sc_init_one(&extcmd_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001043 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001044 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +00001045
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001046 sc_init_one(&extcmd_list, NANO_TOOTHERINSERT_KEY, N_("Insert File"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001047 IFSCHELP(nano_insert_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001048 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001049
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +00001050#ifdef ENABLE_MULTIBUFFER
David Lawrence Ramsey04a8d1c2004-09-28 22:14:58 +00001051 sc_init_one(&extcmd_list, NANO_NO_KEY, new_buffer_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001052 IFSCHELP(nano_multibuffer_msg, FALSE, TOGGLE_MULTIBUFFER_KEY),
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001053 NANO_NO_KEY, NANO_NO_KEY, NOVIEW, NULL);
Chris Allegretta52c5a6e2002-03-21 05:07:28 +00001054#endif
David Lawrence Ramsey47e82b12004-09-28 22:21:46 +00001055#endif
Chris Allegrettaa2ea1932000-06-06 05:53:49 +00001056
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001057#ifndef DISABLE_HELP
1058 free_shortcutage(&help_list);
1059
1060 sc_init_one(&help_list, NANO_REFRESH_KEY, refresh_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001061 IFSCHELP(nano_refresh_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001062 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001063
1064 sc_init_one(&help_list, NANO_EXIT_KEY, exit_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001065 IFSCHELP(nano_exit_msg, FALSE, NANO_NO_KEY), NANO_EXIT_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001066 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001067
1068 sc_init_one(&help_list, NANO_PREVPAGE_KEY, prev_page_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001069 IFSCHELP(nano_prevpage_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001070 NANO_PREVPAGE_FKEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001071
1072 sc_init_one(&help_list, NANO_NEXTPAGE_KEY, next_page_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001073 IFSCHELP(nano_nextpage_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001074 NANO_NEXTPAGE_FKEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001075
1076 sc_init_one(&help_list, NANO_PREVLINE_KEY, N_("Prev Line"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001077 IFSCHELP(nano_prevline_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001078 NANO_NO_KEY, VIEW, NULL);
1079
1080 sc_init_one(&help_list, NANO_NEXTLINE_KEY, N_("Next Line"),
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001081 IFSCHELP(nano_nextline_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001082 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey6e7d24d2006-05-06 02:26:18 +00001083
1084 sc_init_one(&help_list, NANO_NO_KEY, first_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +00001085 IFSCHELP(nano_firstline_msg, FALSE, NANO_FIRSTLINE_METAKEY),
1086 NANO_NO_KEY, NANO_FIRSTLINE_METAKEY2, VIEW, NULL);
David Lawrence Ramsey6e7d24d2006-05-06 02:26:18 +00001087
1088 sc_init_one(&help_list, NANO_NO_KEY, last_line_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +00001089 IFSCHELP(nano_lastline_msg, TRUE, NANO_LASTLINE_METAKEY),
1090 NANO_NO_KEY, NANO_LASTLINE_METAKEY2, VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001091#endif
1092
1093#ifndef DISABLE_SPELLER
1094 free_shortcutage(&spell_list);
1095
1096 sc_init_one(&spell_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001097 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001098 NANO_NO_KEY, VIEW,
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001099#ifndef DISABLE_HELP
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001100 do_help_void
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001101#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001102 nano_disabled_msg
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001103#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001104 );
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001105
1106 sc_init_one(&spell_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001107 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001108 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001109#endif
1110
Rocco Corsiaf5c3022001-01-12 07:51:05 +00001111#ifndef DISABLE_BROWSER
Chris Allegrettadab017e2002-04-23 10:56:06 +00001112 free_shortcutage(&browser_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001113
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001114 sc_init_one(&browser_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001115 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001116 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +00001117
David Lawrence Ramsey8037fe02004-07-23 12:30:40 +00001118 sc_init_one(&browser_list, NANO_EXIT_KEY, exit_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001119 IFSCHELP(nano_exitbrowser_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001120 NANO_EXIT_FKEY, NANO_NO_KEY, VIEW, NULL);
Chris Allegrettab3655b42001-10-22 03:15:31 +00001121
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001122 sc_init_one(&browser_list, NANO_WHEREIS_KEY, whereis_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001123 IFSCHELP(nano_whereis_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001124 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001125
1126 sc_init_one(&browser_list, NANO_NO_KEY, whereis_next_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001127 IFSCHELP(nano_whereis_next_msg, FALSE, NANO_WHEREIS_NEXT_KEY),
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001128 NANO_WHEREIS_NEXT_FKEY, NANO_NO_KEY, VIEW, NULL);
1129
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +00001130 sc_init_one(&browser_list, NANO_PREVPAGE_KEY, prev_page_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001131 IFSCHELP(nano_prevpage_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +00001132 NANO_PREVPAGE_FKEY, NANO_NO_KEY, VIEW, NULL);
1133
1134 sc_init_one(&browser_list, NANO_NEXTPAGE_KEY, next_page_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001135 IFSCHELP(nano_nextpage_msg, FALSE, NANO_NO_KEY),
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +00001136 NANO_NEXTPAGE_FKEY, NANO_NO_KEY, VIEW, NULL);
1137
1138 sc_init_one(&browser_list, NANO_NO_KEY, first_file_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +00001139 IFSCHELP(nano_firstfile_msg, FALSE, NANO_FIRSTFILE_METAKEY),
1140 NANO_NO_KEY, NANO_FIRSTFILE_METAKEY2, VIEW, NULL);
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +00001141
1142 sc_init_one(&browser_list, NANO_NO_KEY, last_file_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +00001143 IFSCHELP(nano_lastfile_msg, FALSE, NANO_LASTFILE_METAKEY),
1144 NANO_NO_KEY, NANO_LASTFILE_METAKEY2, VIEW, NULL);
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +00001145
David Lawrence Ramsey602199d2006-05-06 15:31:32 +00001146 /* TRANSLATORS: Try to keep this at most 12 characters. */
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +00001147 sc_init_one(&browser_list, NANO_GOTODIR_KEY, N_("Go To Dir"),
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +00001148 IFSCHELP(nano_gotodir_msg, FALSE, NANO_GOTODIR_METAKEY),
David Lawrence Ramsey0ec909c2006-05-06 15:07:26 +00001149 NANO_GOTODIR_FKEY, NANO_NO_KEY, VIEW, NULL);
Rocco Corsi12f294c2001-04-14 06:50:24 +00001150
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001151 free_shortcutage(&whereis_file_list);
1152
1153 sc_init_one(&whereis_file_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001154 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001155 NANO_NO_KEY, VIEW,
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001156#ifndef DISABLE_HELP
1157 do_browser_help
1158#else
1159 nano_disabled_msg
1160#endif
1161 );
1162
1163 sc_init_one(&whereis_file_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001164 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001165 NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001166
1167 sc_init_one(&whereis_file_list, NANO_FIRSTFILE_KEY, first_file_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +00001168 IFSCHELP(nano_firstfile_msg, FALSE, NANO_FIRSTFILE_METAKEY),
1169 NANO_FIRSTFILE_FKEY, NANO_FIRSTFILE_METAKEY2, VIEW,
David Lawrence Ramsey5f0a58b2006-04-21 02:24:34 +00001170 do_first_file);
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001171
1172 sc_init_one(&whereis_file_list, NANO_LASTFILE_KEY, last_file_msg,
David Lawrence Ramsey5a8182e2006-11-21 04:20:53 +00001173 IFSCHELP(nano_lastfile_msg, FALSE, NANO_LASTFILE_METAKEY),
1174 NANO_LASTFILE_FKEY, NANO_LASTFILE_METAKEY2, VIEW, do_last_file);
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001175
1176#ifndef NANO_SMALL
1177 sc_init_one(&whereis_file_list, NANO_NO_KEY, case_sens_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001178 IFSCHELP(nano_case_msg, FALSE, TOGGLE_CASE_KEY), NANO_NO_KEY,
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001179 NANO_NO_KEY, VIEW, NULL);
1180
1181 sc_init_one(&whereis_file_list, NANO_NO_KEY, backwards_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001182 IFSCHELP(nano_reverse_msg, FALSE, TOGGLE_BACKWARDS_KEY),
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001183 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001184#endif
1185
1186#ifdef HAVE_REGEX_H
1187 sc_init_one(&whereis_file_list, NANO_NO_KEY, regexp_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001188 IFSCHELP(nano_regexp_msg, FALSE, NANO_REGEXP_KEY), NANO_NO_KEY,
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001189 NANO_NO_KEY, VIEW, NULL);
1190#endif
1191
1192#ifndef NANO_SMALL
David Lawrence Ramsey305d8892006-05-24 19:48:03 +00001193 sc_init_one(&whereis_file_list, NANO_PREVLINE_KEY, prev_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001194 IFSCHELP(nano_prev_history_msg, FALSE, NANO_NO_KEY),
1195 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramsey305d8892006-05-24 19:48:03 +00001196
1197 sc_init_one(&whereis_file_list, NANO_NEXTLINE_KEY, next_history_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001198 IFSCHELP(nano_next_history_msg, FALSE, NANO_NO_KEY),
1199 NANO_NO_KEY, NANO_NO_KEY, VIEW, NULL);
David Lawrence Ramseye38b8082006-03-30 07:03:04 +00001200#endif
1201
Chris Allegrettadab017e2002-04-23 10:56:06 +00001202 free_shortcutage(&gotodir_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001203
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001204 sc_init_one(&gotodir_list, NANO_HELP_KEY, get_help_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001205 IFSCHELP(nano_help_msg, FALSE, NANO_NO_KEY), NANO_HELP_FKEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001206 NANO_NO_KEY, VIEW,
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001207#ifndef DISABLE_HELP
David Lawrence Ramsey56ec5922006-08-25 19:26:48 +00001208 do_browser_help
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001209#else
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001210 nano_disabled_msg
David Lawrence Ramseyd893fa92004-04-30 04:49:02 +00001211#endif
David Lawrence Ramsey017dde22006-03-24 05:28:03 +00001212 );
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001213
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001214 sc_init_one(&gotodir_list, NANO_CANCEL_KEY, cancel_msg,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001215 IFSCHELP(nano_cancel_msg, FALSE, NANO_NO_KEY), NANO_NO_KEY,
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001216 NANO_NO_KEY, VIEW, NULL);
Chris Allegrettaf4b96012001-01-03 07:11:47 +00001217#endif
1218
Chris Allegrettaa8c22572002-02-15 19:17:02 +00001219 currshortcut = main_list;
David Lawrence Ramsey35e97132005-01-08 06:04:19 +00001220
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001221#ifndef NANO_TINY
Chris Allegrettadab017e2002-04-23 10:56:06 +00001222 toggle_init();
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001223#endif
Chris Allegrettadab017e2002-04-23 10:56:06 +00001224}
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001225
David Lawrence Ramseye6757b92006-04-19 13:36:56 +00001226/* Free the given shortcut. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001227void free_shortcutage(shortcut **shortcutage)
1228{
1229 assert(shortcutage != NULL);
David Lawrence Ramsey193b0e52005-06-06 18:41:17 +00001230
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001231 while (*shortcutage != NULL) {
1232 shortcut *ps = *shortcutage;
1233 *shortcutage = (*shortcutage)->next;
1234 free(ps);
1235 }
1236}
1237
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001238#ifndef NANO_TINY
David Lawrence Ramseye6757b92006-04-19 13:36:56 +00001239/* Add a new toggle to the end of the global toggle list. */
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001240void toggle_init_one(int val
1241#ifndef DISABLE_HELP
1242 , const char *desc, bool blank_after
1243#endif
1244 , long flag)
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001245{
1246 toggle *u;
1247
1248 if (toggles == NULL) {
David Lawrence Ramsey94b975c2004-07-20 12:57:34 +00001249 toggles = (toggle *)nmalloc(sizeof(toggle));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001250 u = toggles;
1251 } else {
1252 for (u = toggles; u->next != NULL; u = u->next)
1253 ;
David Lawrence Ramsey94b975c2004-07-20 12:57:34 +00001254 u->next = (toggle *)nmalloc(sizeof(toggle));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001255 u = u->next;
1256 }
1257
1258 u->val = val;
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001259#ifndef DISABLE_HELP
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001260 u->desc = (desc == NULL) ? "" : _(desc);
David Lawrence Ramsey1df3e2d2006-04-22 19:45:26 +00001261 u->blank_after = blank_after;
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001262#endif
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001263 u->flag = flag;
1264 u->next = NULL;
1265}
1266
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001267/* Initialize the global toggle list. */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001268void toggle_init(void)
1269{
1270 /* There is no need to reinitialize the toggles. They can't
1271 * change. */
1272 if (toggles != NULL)
1273 return;
1274
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001275/* The following macro is to be used in calling toggle_init_one(). The
1276 * point is that toggle_init_one() takes 4 arguments, unless
1277 * DISABLE_HELP is defined, when the 2nd and 3rd ones should not be
1278 * there. */
1279#ifndef DISABLE_HELP
1280#define IFTHELP(help, blank, nextvar) help, blank, nextvar
1281#else
1282#define IFTHELP(help, blank, nextvar) nextvar
1283#endif
1284
1285 toggle_init_one(TOGGLE_NOHELP_KEY, IFTHELP(N_("Help mode"), FALSE,
1286 NO_HELP));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001287
David Lawrence Ramsey8ff785c2006-04-19 23:13:44 +00001288 toggle_init_one(TOGGLE_CONST_KEY,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001289 IFTHELP(N_("Constant cursor position display"), FALSE,
1290 CONST_UPDATE));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001291
1292 toggle_init_one(TOGGLE_MORESPACE_KEY,
David Lawrence Ramsey7b0531a2006-07-31 01:30:31 +00001293 IFTHELP(N_("Use of one more line for editing"), FALSE,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001294 MORE_SPACE));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001295
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001296 toggle_init_one(TOGGLE_SMOOTH_KEY,
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +00001297#ifdef ENABLE_NANORC
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001298 IFTHELP(N_("Smooth scrolling"), FALSE, SMOOTH_SCROLL)
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +00001299#else
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001300 IFTHELP(N_("Smooth scrolling"), TRUE, SMOOTH_SCROLL)
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +00001301#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001302 );
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001303
1304#ifdef ENABLE_NANORC
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001305 toggle_init_one(TOGGLE_WHITESPACE_KEY,
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +00001306#ifdef ENABLE_COLOR
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001307 IFTHELP(N_("Whitespace display"), FALSE, WHITESPACE_DISPLAY)
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +00001308#else
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001309 IFTHELP(N_("Whitespace display"), TRUE, WHITESPACE_DISPLAY)
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +00001310#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001311 );
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001312#endif
1313
1314#ifdef ENABLE_COLOR
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001315 toggle_init_one(TOGGLE_SYNTAX_KEY,
1316 IFTHELP(N_("Color syntax highlighting"), TRUE, NO_COLOR_SYNTAX));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001317#endif
1318
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001319 toggle_init_one(TOGGLE_SMARTHOME_KEY, IFTHELP(N_("Smart home key"),
1320 FALSE, SMART_HOME));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001321
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001322 toggle_init_one(TOGGLE_AUTOINDENT_KEY, IFTHELP(N_("Auto indent"),
1323 FALSE, AUTOINDENT));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001324
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001325 toggle_init_one(TOGGLE_CUTTOEND_KEY, IFTHELP(N_("Cut to end"),
1326 FALSE, CUT_TO_END));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001327
1328#ifndef DISABLE_WRAPPING
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001329 toggle_init_one(TOGGLE_WRAP_KEY, IFTHELP(N_("Long line wrapping"),
1330 FALSE, NO_WRAP));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001331#endif
1332
1333 toggle_init_one(TOGGLE_TABSTOSPACES_KEY,
David Lawrence Ramsey2f702282006-07-25 22:24:48 +00001334#ifndef DISABLE_MOUSE
1335 IFTHELP(N_("Conversion of typed tabs to spaces"), TRUE,
1336 TABS_TO_SPACES)
1337#else
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001338 IFTHELP(N_("Conversion of typed tabs to spaces"),
1339 !ISSET(RESTRICTED) ? TRUE : FALSE, TABS_TO_SPACES)
David Lawrence Ramsey2ca23562006-04-23 19:15:15 +00001340#endif
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001341 );
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001342
1343 /* If we're using restricted mode, the backup toggle is disabled.
1344 * It's useless since backups are disabled. */
1345 if (!ISSET(RESTRICTED))
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001346 toggle_init_one(TOGGLE_BACKUP_KEY, IFTHELP(N_("Backup files"),
1347 FALSE, BACKUP_FILE));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001348
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001349#ifdef ENABLE_MULTIBUFFER
1350 /* If we're using restricted mode, the multibuffer toggle is
1351 * disabled. It's useless since inserting files is disabled. */
1352 if (!ISSET(RESTRICTED))
David Lawrence Ramsey637b8bb2005-01-17 05:06:55 +00001353 toggle_init_one(TOGGLE_MULTIBUFFER_KEY,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001354 IFTHELP(N_("Multiple file buffers"), FALSE,
1355 MULTIBUFFER));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001356#endif
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001357
David Lawrence Ramsey6397b592006-04-20 22:36:10 +00001358#ifndef DISABLE_MOUSE
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001359 toggle_init_one(TOGGLE_MOUSE_KEY, IFTHELP(N_("Mouse support"),
1360 FALSE, USE_MOUSE));
David Lawrence Ramsey6397b592006-04-20 22:36:10 +00001361#endif
1362
David Lawrence Ramsey74835712004-12-04 17:41:52 +00001363 /* If we're using restricted mode, the DOS/Mac conversion toggle is
1364 * disabled. It's useless since inserting files is disabled. */
1365 if (!ISSET(RESTRICTED))
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001366 toggle_init_one(TOGGLE_NOCONVERT_KEY,
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001367 IFTHELP(N_("No conversion from DOS/Mac format"), FALSE,
1368 NO_CONVERT));
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001369
David Lawrence Ramseye313f5b2006-04-20 22:29:02 +00001370 /* If we're using restricted mode, the suspend toggle is disabled.
1371 * It's useless since suspending is disabled. */
David Lawrence Ramsey74835712004-12-04 17:41:52 +00001372 if (!ISSET(RESTRICTED))
David Lawrence Ramseybd28ee42006-07-25 21:13:30 +00001373 toggle_init_one(TOGGLE_SUSPEND_KEY, IFTHELP(N_("Suspension"),
1374 FALSE, SUSPEND));
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001375}
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001376#endif /* !NANO_TINY */
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001377
David Lawrence Ramseye6757b92006-04-19 13:36:56 +00001378#ifdef DEBUG
1379/* This function is used to gracefully return all the memory we've used.
1380 * It should be called just before calling exit(). Practically, the
Chris Allegretta6232d662002-05-12 19:52:15 +00001381 * only effect is to cause a segmentation fault if the various data
1382 * structures got bolloxed earlier. Thus, we don't bother having this
Chris Allegretta6df90f52002-07-19 01:08:59 +00001383 * function unless debugging is turned on. */
Chris Allegretta6df90f52002-07-19 01:08:59 +00001384void thanks_for_all_the_fish(void)
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001385{
David Lawrence Ramsey576bf332004-07-12 03:10:30 +00001386 delwin(topwin);
1387 delwin(edit);
1388 delwin(bottomwin);
1389
Chris Allegretta7662c862003-01-13 01:35:15 +00001390#ifndef DISABLE_JUSTIFY
1391 if (quotestr != NULL)
1392 free(quotestr);
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +00001393#ifdef HAVE_REGEX_H
1394 regfree(&quotereg);
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001395 if (quoteerr != NULL)
1396 free(quoteerr);
David Lawrence Ramsey819c7f02004-07-30 03:54:34 +00001397#endif
Chris Allegretta7662c862003-01-13 01:35:15 +00001398#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001399#ifndef NANO_TINY
David Lawrence Ramsey04e42a62004-02-28 16:24:31 +00001400 if (backup_dir != NULL)
1401 free(backup_dir);
1402#endif
Chris Allegretta2598c662002-03-28 01:59:34 +00001403#ifndef DISABLE_OPERATINGDIR
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001404 if (operating_dir != NULL)
1405 free(operating_dir);
1406 if (full_operating_dir != NULL)
1407 free(full_operating_dir);
1408#endif
1409 if (last_search != NULL)
1410 free(last_search);
1411 if (last_replace != NULL)
1412 free(last_replace);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001413#ifndef DISABLE_SPELLER
1414 if (alt_speller != NULL)
1415 free(alt_speller);
1416#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001417 if (answer != NULL)
1418 free(answer);
1419 if (cutbuffer != NULL)
Chris Allegretta7662c862003-01-13 01:35:15 +00001420 free_filestruct(cutbuffer);
David Lawrence Ramsey93c84052004-11-23 04:08:28 +00001421#ifndef DISABLE_JUSTIFY
1422 if (jusbuffer != NULL)
1423 free_filestruct(jusbuffer);
1424#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001425 free_shortcutage(&main_list);
1426 free_shortcutage(&whereis_list);
1427 free_shortcutage(&replace_list);
1428 free_shortcutage(&replace_list_2);
David Lawrence Ramseye5d8f322004-09-30 22:07:21 +00001429 free_shortcutage(&gotoline_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001430 free_shortcutage(&writefile_list);
1431 free_shortcutage(&insertfile_list);
David Lawrence Ramsey6d6a36c2005-12-08 07:09:08 +00001432#ifndef NANO_TINY
1433 free_shortcutage(&extcmd_list);
1434#endif
Chris Allegretta7662c862003-01-13 01:35:15 +00001435#ifndef DISABLE_HELP
Chris Allegretta6df90f52002-07-19 01:08:59 +00001436 free_shortcutage(&help_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001437#endif
1438#ifndef DISABLE_SPELLER
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001439 free_shortcutage(&spell_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001440#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001441#ifndef DISABLE_BROWSER
1442 free_shortcutage(&browser_list);
Chris Allegretta7662c862003-01-13 01:35:15 +00001443 free_shortcutage(&gotodir_list);
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001444#endif
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001445#ifndef NANO_TINY
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001446 /* Free the memory associated with each toggle. */
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001447 while (toggles != NULL) {
1448 toggle *t = toggles;
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001449
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001450 toggles = toggles->next;
1451 free(t);
1452 }
1453#endif
David Lawrence Ramsey5d8d0b12005-05-26 05:53:29 +00001454 /* Free the memory associated with each open file buffer. */
David Lawrence Ramsey6ad59cd2005-07-08 20:09:16 +00001455 if (openfile != NULL)
David Lawrence Ramsey64661ac2005-07-08 19:57:25 +00001456 free_openfilestruct(openfile);
Chris Allegretta6df90f52002-07-19 01:08:59 +00001457#ifdef ENABLE_COLOR
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001458 if (syntaxstr != NULL)
1459 free(syntaxstr);
Chris Allegretta6df90f52002-07-19 01:08:59 +00001460 while (syntaxes != NULL) {
1461 syntaxtype *bill = syntaxes;
1462
1463 free(syntaxes->desc);
1464 while (syntaxes->extensions != NULL) {
1465 exttype *bob = syntaxes->extensions;
1466
1467 syntaxes->extensions = bob->next;
David Lawrence Ramsey2385c1a2005-07-29 21:42:08 +00001468 free(bob->ext_regex);
David Lawrence Ramsey7fc0ada2005-08-29 18:52:06 +00001469 if (bob->ext != NULL) {
1470 regfree(bob->ext);
1471 free(bob->ext);
1472 }
Chris Allegretta6df90f52002-07-19 01:08:59 +00001473 free(bob);
1474 }
1475 while (syntaxes->color != NULL) {
1476 colortype *bob = syntaxes->color;
1477
1478 syntaxes->color = bob->next;
David Lawrence Ramsey2385c1a2005-07-29 21:42:08 +00001479 free(bob->start_regex);
David Lawrence Ramseydb958022005-07-13 20:18:46 +00001480 if (bob->start != NULL) {
1481 regfree(bob->start);
1482 free(bob->start);
1483 }
David Lawrence Ramseyd2361f02005-07-14 18:33:51 +00001484 if (bob->end_regex != NULL)
1485 free(bob->end_regex);
David Lawrence Ramseydb958022005-07-13 20:18:46 +00001486 if (bob->end != NULL) {
Chris Allegrettace452fb2003-02-03 02:56:44 +00001487 regfree(bob->end);
David Lawrence Ramseydb958022005-07-13 20:18:46 +00001488 free(bob->end);
1489 }
Chris Allegretta6df90f52002-07-19 01:08:59 +00001490 free(bob);
1491 }
1492 syntaxes = syntaxes->next;
1493 free(bill);
1494 }
1495#endif /* ENABLE_COLOR */
David Lawrence Ramseyebe34252005-11-15 03:17:35 +00001496#ifndef NANO_TINY
David Lawrence Ramsey40e4acf2005-05-26 06:09:07 +00001497 /* Free the search and replace history lists. */
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001498 if (searchage != NULL)
1499 free_filestruct(searchage);
1500 if (replaceage != NULL)
1501 free_filestruct(replaceage);
Chris Allegretta5beed502003-01-05 20:41:21 +00001502#endif
David Lawrence Ramseya27bd652004-08-17 05:23:38 +00001503#ifdef ENABLE_NANORC
David Lawrence Ramsey31b159c2005-05-26 05:17:13 +00001504 if (homedir != NULL)
1505 free(homedir);
David Lawrence Ramseya27bd652004-08-17 05:23:38 +00001506#endif
Chris Allegrettaf5de33a2002-02-27 04:14:16 +00001507}
Chris Allegretta6232d662002-05-12 19:52:15 +00001508#endif /* DEBUG */