From aa683853d4592e57a28dc8c65c99a265b3e945d0 Mon Sep 17 00:00:00 2001 From: David Lawrence Ramsey Date: Wed, 30 Mar 2005 18:11:59 +0000 Subject: [PATCH] in help_init(), avoid a warning when compiling with -pedantic by breaking overly long help text up into separate chunks, and add a few wording fixes to the help text as well git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2442 35c25a1d-7b9e-4130-9fde-d3aeb78583b8 --- ChangeLog | 4 + src/nano.c | 210 ++++++++++++++++++++++++++++++++--------------------- 2 files changed, 131 insertions(+), 83 deletions(-) diff --git a/ChangeLog b/ChangeLog index 6a7a6795..0e9d765b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -31,6 +31,10 @@ CVS code - help_init() - When calculating allocsize, take multibyte characters into account, and keep the column number limits consistent. (DLR) + - Break htx up into three chunks, in case the string is too long + for the compiler to handle (e.g. an ISO C89 compiler that can + only handle up to 509 characters). (DLR) + - Minor wording fixes. (DLR) print1opt() - Don't include longflag if HAVE_GETOPT_LONG isn't defined. Rename this function to print1opt_full(), leave out the diff --git a/src/nano.c b/src/nano.c index dce8e9ef..64b52fb4 100644 --- a/src/nano.c +++ b/src/nano.c @@ -265,7 +265,10 @@ void mouse_init(void) void help_init(void) { size_t allocsize = 0; /* Space needed for help_text. */ - const char *htx; /* Untranslated help message. */ + const char *htx[3]; /* Untranslated help message. We break + * it up into three chunks in case the + * full string is too long for the + * compiler to handle. */ char *ptr; const shortcut *s; #ifndef NANO_SMALL @@ -279,115 +282,151 @@ void help_init(void) /* First, set up the initial help text for the current function. */ if (currshortcut == whereis_list || currshortcut == replace_list - || currshortcut == replace_list_2) - htx = N_("Search Command Help Text\n\n " - "Enter the words or characters you would like to search " - "for, then hit Enter. If there is a match for the text you " - "entered, the screen will be updated to the location of the " - "nearest match for the search string.\n\n The previous " - "search string will be shown in brackets after the search " - "prompt. Hitting Enter without entering any text will " - "perform the previous search. If you have selected text " - "with the mark and then search to replace, only matches in " - "the selected text will be replaced.\n\n The following " - "function keys are available in Search mode:\n\n"); - else if (currshortcut == gotoline_list) - htx = N_("Go To Line Help Text\n\n " + || currshortcut == replace_list_2) { + htx[0] = N_("Search Command Help Text\n\n " + "Enter the words or characters you would like to " + "search for, and then press Enter. If there is a " + "match for the text you entered, the screen will be " + "updated to the location of the nearest match for the " + "search string.\n\n The previous search string will be " + "shown in brackets after the search prompt. Hitting " + "Enter without entering any text will perform the " + "previous search. "); + htx[1] = N_("If you have selected text with the mark and then " + "search to replace, only matches in the selected text " + "will be replaced.\n\n The following function keys are " + "available in Search mode:\n\n"); + htx[2] = NULL; + } else if (currshortcut == gotoline_list) { + htx[0] = N_("Go To Line Help Text\n\n " "Enter the line number that you wish to go to and hit " "Enter. If there are fewer lines of text than the " - "number you entered, you will be brought to the last line " - "of the file.\n\n The following function keys are " + "number you entered, you will be brought to the last " + "line of the file.\n\n The following function keys are " "available in Go To Line mode:\n\n"); - else if (currshortcut == insertfile_list) - htx = N_("Insert File Help Text\n\n " - "Type in the name of a file to be inserted into the current " - "file buffer at the current cursor location.\n\n " - "If you have compiled nano with multiple file buffer " - "support, and enable multiple buffers with the -F " - "or --multibuffer command line flags, the Meta-F toggle, or " - "a nanorc file, inserting a file will cause it to be " - "loaded into a separate buffer (use Meta-< and > to switch " - "between file buffers). If you need another blank buffer, " - "do not enter any filename, or type in a nonexistent " - "filename at the prompt and press Enter.\n\n The following " + htx[1] = NULL; + htx[2] = NULL; + } else if (currshortcut == insertfile_list) { + htx[0] = N_("Insert File Help Text\n\n " + "Type in the name of a file to be inserted into the " + "current file buffer at the current cursor " + "location.\n\n If you have compiled nano with multiple " + "file buffer support, and enable multiple file buffers " + "with the -F or --multibuffer command line flags, the " + "Meta-F toggle, or a nanorc file, inserting a file " + "will cause it to be loaded into a separate buffer " + "(use Meta-< and > to switch between file buffers). "); + htx[1] = N_("If you need another blank buffer, do not enter " + "any filename, or type in a nonexistent filename at " + "the prompt and press Enter.\n\n The following " "function keys are available in Insert File mode:\n\n"); - else if (currshortcut == writefile_list) - htx = N_("Write File Help Text\n\n " + htx[2] = NULL; + } else if (currshortcut == writefile_list) { + htx[0] = N_("Write File Help Text\n\n " "Type the name that you wish to save the current file " - "as and hit Enter to save the file.\n\n If you have " + "as and press Enter to save the file.\n\n If you have " "selected text with the mark, you will be prompted to " "save only the selected portion to a separate file. To " "reduce the chance of overwriting the current file with " "just a portion of it, the current filename is not the " "default in this mode.\n\n The following function keys " "are available in Write File mode:\n\n"); + htx[1] = NULL; + htx[2] = NULL; + } #ifndef DISABLE_BROWSER - else if (currshortcut == browser_list) - htx = N_("File Browser Help Text\n\n " + else if (currshortcut == browser_list) { + htx[0] = N_("File Browser Help Text\n\n " "The file browser is used to visually browse the " "directory structure to select a file for reading " "or writing. You may use the arrow keys or Page Up/" "Down to browse through the files, and S or Enter to " "choose the selected file or enter the selected " - "directory. To move up one level, select the directory " - "called \"..\" at the top of the file list.\n\n The " - "following function keys are available in the file " - "browser:\n\n"); - else if (currshortcut == gotodir_list) - htx = N_("Browser Go To Directory Help Text\n\n " + "directory. To move up one level, select the " + "directory called \"..\" at the top of the file " + "list.\n\n The following function keys are available " + "in the file browser:\n\n"); + htx[1] = NULL; + htx[2] = NULL; + } else if (currshortcut == gotodir_list) { + htx[0] = N_("Browser Go To Directory Help Text\n\n " "Enter the name of the directory you would like to " - "browse to.\n\n If tab completion has not been disabled, " - "you can use the Tab key to (attempt to) automatically " - "complete the directory name.\n\n The following function " - "keys are available in Browser Go To Directory mode:\n\n"); + "browse to.\n\n If tab completion has not been " + "disabled, you can use the Tab key to (attempt to) " + "automatically complete the directory name.\n\n The " + "following function keys are available in Browser Go " + "To Directory mode:\n\n"); + htx[1] = NULL; + htx[2] = NULL; + } #endif #ifndef DISABLE_SPELLER - else if (currshortcut == spell_list) - htx = N_("Spell Check Help Text\n\n " - "The spell checker checks the spelling of all text " - "in the current file. When an unknown word is " + else if (currshortcut == spell_list) { + htx[0] = N_("Spell Check Help Text\n\n " + "The spell checker checks the spelling of all text in " + "the current file. When an unknown word is " "encountered, it is highlighted and a replacement can " "be edited. It will then prompt to replace every " - "instance of the given misspelled word in the " - "current file, or, if you have selected text with the " - "mark, in the selected text.\n\n The following other " - "functions are available in Spell Check mode:\n\n"); + "instance of the given misspelled word in the current " + "file, or, if you have selected text with the mark, in " + "the selected text.\n\n The following other functions " + "are available in Spell Check mode:\n\n"); + htx[1] = NULL; + htx[2] = NULL; + } #endif #ifndef NANO_SMALL - else if (currshortcut == extcmd_list) - htx = N_("External Command Help Text\n\n " - "This menu allows you to insert the output of a command " - "run by the shell into the current buffer (or a new " - "buffer in multibuffer mode). If you need another blank " - "buffer, do not enter any command.\n\n The following keys " - "are available in this mode:\n\n"); + else if (currshortcut == extcmd_list) { + htx[0] = N_("Execute Command Help Text\n\n " + "This menu allows you to insert the output of a " + "command run by the shell into the current buffer (or " + "a new buffer in multiple file buffer mode). If you " + "need another blank buffer, do not enter any " + "command.\n\n The following keys are available in " + "Execute Command mode:\n\n"); + htx[1] = NULL; + htx[2] = NULL; + } #endif - else + else { /* Default to the main help list. */ - htx = N_(" nano help text\n\n " - "The nano editor is designed to emulate the functionality and " - "ease-of-use of the UW Pico text editor. There are four main " - "sections of the editor. The top line shows the program " - "version, the current filename being edited, and whether " - "or not the file has been modified. Next is the main editor " - "window showing the file being edited. The status line is " - "the third line from the bottom and shows important messages. " - "The bottom two lines show the most commonly used shortcuts " - "in the editor.\n\n " - "The notation for shortcuts is as follows: Control-key " - "sequences are notated with a caret (^) symbol and can be " - "entered either by using the Control (Ctrl) key or pressing the " - "Esc key twice. Escape-key sequences are notated with the Meta " - "(M) symbol and can be entered using either the Esc, Alt or " - "Meta key depending on your keyboard setup. Also, pressing Esc " - "twice and then typing a three-digit decimal number from 000 to " - "255 will enter the character with the corresponding value. " - "The following keystrokes are available in the main editor " - "window. Alternative keys are shown in parentheses:\n\n"); + htx[0] = N_(" nano help text\n\n " + "The nano editor is designed to emulate the " + "functionality and ease-of-use of the UW Pico text " + "editor. There are four main sections of the editor. " + "The top line shows the program version, the current " + "filename being edited, and whether or not the file " + "has been modified. Next is the main editor window " + "showing the file being edited. The status line is " + "the third line from the bottom and shows important " + "messages. The bottom two lines show the most " + "commonly used shortcuts in the editor.\n\n "); + htx[1] = N_("The notation for shortcuts is as follows: " + "Control-key sequences are notated with a caret (^) " + "symbol and can be entered either by using the Control " + "(Ctrl) key or pressing the Escape (Esc) key twice. " + "Escape-key sequences are notated with the Meta (M) " + "symbol and can be entered using either the Esc, Alt, " + "or Meta key depending on your keyboard setup. "); + htx[2] = N_("Also, pressing Esc twice and then typing a " + "three-digit decimal number from 000 to 255 will enter " + "the character with the corresponding value. The " + "following keystrokes are available in the main editor " + "window. Alternative keys are shown in " + "parentheses:\n\n"); + } - htx = _(htx); + htx[0] = _(htx[0]); + if (htx[1] != NULL) + htx[1] = _(htx[1]); + if (htx[2] != NULL) + htx[2] = _(htx[2]); - allocsize += strlen(htx); + allocsize += strlen(htx[0]); + if (htx[1] != NULL) + allocsize += strlen(htx[1]); + if (htx[2] != NULL) + allocsize += strlen(htx[2]); /* The space needed for the shortcut lists, at most COLS characters, * plus '\n'. */ @@ -414,7 +453,12 @@ void help_init(void) help_text = charalloc(allocsize + 1); /* Now add the text we want. */ - strcpy(help_text, htx); + strcpy(help_text, htx[0]); + if (htx[1] != NULL) + strcat(help_text, htx[1]); + if (htx[2] != NULL) + strcat(help_text, htx[2]); + ptr = help_text + strlen(help_text); /* Now add our shortcut info. Assume that each shortcut has, at the