]> git.wh0rd.org Git - nano.git/commitdiff
- Update man page a little bit more
authorChris Allegretta <chrisa@asty.org>
Fri, 14 Mar 2008 04:08:51 +0000 (04:08 +0000)
committerChris Allegretta <chrisa@asty.org>
Fri, 14 Mar 2008 04:08:51 +0000 (04:08 +0000)
- Change do_prompt and get_prompt_line to pass meta_key and func_key
  so the calling program can DTRT when it calsl get_shortcut.  In
  particular this allows the "new file buffer" toggle on the insert file
  menu to work, and presumably other rebinding stuff should now work also.

git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4226 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

BUGS
doc/man/nanorc.5
src/browser.c
src/files.c
src/global.c
src/prompt.c
src/proto.h
src/search.c
src/text.c

diff --git a/BUGS b/BUGS
index 92e81b08fdd8378f95d6bb0f8122d352b502d0f6..5c3b1275b2b8765832123577fbc813197a4402bb 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1,10 +1,6 @@
 ** Open BUGS **
 - Cutting the line at the top of the screen recenters to center (71)
 - Many menu items are probably missing from the new backend (73)
-- Browser and prompt code still implement old switch on raw key input instead
-  of new if block for subnfunc values (75)
-- New backend code probably does not compile under anything but default options, 
-  if that (76)
 
 ** Fixed BUGS **
 - Marked cutting sometimes leaves a newline in the file unintelligently,
 - F-keys do not work with new shortcut backend (72) [FIXED]
 - Need a 'check-vitals-mapped' function to check that the end used didn't
   unbind all the keys for exit or cancel before starting up the editor (74) [FIXED]
+- Browser and prompt code still implement old switch on raw key input instead
+  of new if block for subnfunc values (75) [FIXED]
+- New backend code probably does not compile under anything but default options, 
+  if that (76) [FIXED]
 - -enable-tiny does not work with new code (78) [FIXED]
 - If a user only binds meta sequences to a function like left, right
   page up/down, insert, and unbinds all other control and F keys for it,
index ff8de18be82c3383e10e4f3eb66994304cce3179..1cb518bb0949ee5a009cb4e9d85cd2e5c49ac33e 100644 (file)
@@ -258,249 +258,259 @@ Rebinds the key \fIkey\fP to a new function named \fIfunction\fP in the
 context of menu \fImenu\fP.  The format of  \fIkey\fP should be one of:
 .TP
 .B ^ 
-followed by an alpha character or the word "Space"
+followed by an alpha character or the word "Space".
+Example: ^C
 .TP
 .B M- 
-followed by a prinable character or the word "Space"
+followed by a prinable character or the word "Space".
+Example: M-C
 .TP
-.B F# 
+.B F 
 followed by a numeric value from 1-16
+Example: F10
 .TP
 Valid function names to be bound include:
-.TP
+.TP 3
 .B help
-Invoke the help menu
+Invoke the help menu.
 .TP
 .B cancel
-Cancel the current command
+Cancel the current command.
 .TP
 .B exit
-Exit from the program
+Exit from the program.
 .TP
 .B writeout
-Write the current buffer to disk
+Write the current buffer to disk.
 .TP
 .B justify
-Justify text
+Justify the current text.
 .TP
 .B insert
-Insert a file into the current buffer (or a new buffer with multi-buffer enbled)
+Insert a file into the current buffer (or a new buffer with multi-buffer enbled).
 .TP
 .B whereis
-Search for text in the program
+Search for text in the program.
 .TP
 .B searchagain
-Repat the last search command
+Repat the last search command.
 .TP
 .B up
-Move up in the editor or browser
+Move up in the editor or browser.
 .TP
 .B down
-Move down in the editor or browser
+Move down in the editor or browser.
 .TP
 .B left
-Move left in the editor or browser
+Move left in the editor or browser.
 .TP
 .B right
-Move right in the editor or browser
+Move right in the editor or browser.
 .TP
 .B cut
-Cut the current line of text and store it
+Cut the current line of text and store it.
 .TP
 .B uncut
-Copy the currently stored text into the current file location
+Copy the currently stored text into the current file location.
 .TP
 .B curpos
-Show the current line, column, word positions in the file
+Show the current line, column, word positions in the file.
 .TP
 .B firstline
 Move to the first line of the file
 .TP
 .B lastline
-Move to the last line of the file
+Move to the last line of the file.
 .TP
 .B gotoline
-Move to a specific line (and column if specified)
+Move to a specific line (and column if specified).
 .TP
 .B replace
-Interactively replace text within the editor
+Interactively replace text within the editor.
 .TP
 .B mark
-Begin selecting text for cutting or pasting at the current position
+Begin selecting text for cutting or pasting at the current position.
 .TP
 .B copytext
-Copy the currently marked text without deleting it
+Copy the currently marked text without deleting it.
 .TP
 .B indent
-Indent the currently marked text (shift to the right)
+Indent the currently marked text (shift to the right).
 .TP
 .B unindent
-Un-indent the currently marked text (shift to the left)
+Un-indent the currently marked text (shift to the left).
 .TP
 .B nextword
-Move the cursor to the beginning of the next word
+Move the cursor to the beginning of the next word.
 .TP
 .B prevword
-Move the cursor to the beginning of the previous word
+Move the cursor to the beginning of the previous word.
 .TP
 .B home
-Move the cursor to the beginning of the current line
+Move the cursor to the beginning of the current line.
 .TP
 .B end
-Move the cursor to the end of the current line
+Move the cursor to the end of the current line.
 .TP
 .B beginpara
 Move the cursor to the beginning of the current paragraph
 .TP
 .B endpara
-Move the cursor to the beginning of the current paragraph
+Move the cursor to the beginning of the current paragraph.
 .TP
 .B findbracket
-Move the cursor to the matching bracket (brace, etc) of the one under the cursor
+Move the cursor to the matching bracket (brace, etc) of the one under the cursor.
 .TP
 .B scrollup
-Scroll up one line of text from the current position
+Scroll up one line of text from the current position.
 .TP
 .B scrolldown
-Scroll down one line of text from the current position
+Scroll down one line of text from the current position.
 .TP
 .B prevbuf
-Switch to editing/viewing the previous buffer when using multibuffer mode
+Switch to editing/viewing the previous buffer when using multibuffer mode.
 .TP
 .B nextbuf
-Switch to editing/viewing the next buffer when using multibuffer mode
+Switch to editing/viewing the next buffer when using multibuffer mode.
 .TP
 .B verbatim
-Insert the next character verbatim into the file
+Insert the next character verbatim into the file.
 .TP
 .B tab
-Insert a tab at the current cursor location
+Insert a tab at the current cursor location.
 .TP
 .B enter
-Insert a new line below the current one
+Insert a new line below the current one.
 .TP
 .B delete
-Delete the character under the cursor
+Delete the character under the cursor.
 .TP
 .B fulljustify
-Justify the entire current file
+Justify the entire current file.
 .TP
 .B wordcount
-Count the number of words in the current buffer
+Count the number of words in the current buffer.
 .TP
 .B refresh
 Refresh the screen
 .TP
+.B suspend
+Suspend the editor (if the suspend functino is enabled, see the 
+"suspendenable" entry below.
+.TP
 .B casesens
-Toggle case sensitivity in searching (search/replace menus only)
+Toggle case sensitivity in searching (search/replace menus only).
 .TP
 .B regexp
-Toggle whether searches/replaces are based on literal strings or regular expressions
+Toggle whether searches/replaces are based on literal strings or regular expressions.
 .TP
 .B prevhistory
-Show the previous history entry in the prompt menus (e.g. search)
+Show the previous history entry in the prompt menus (e.g. search).
 .TP
 .B nexthistory
-Show the next history entry in the prompt menus (e.g. search)
+Show the next history entry in the prompt menus (e.g. search).
 .TP
 .B dontreplace
-Switch back to searching instead of replacing
+Switch back to searching instead of replacing.
 .TP
 .B gototext
 Search for files matching a string in the file browser (reading or writing files)
 .TP
 .B dosformat
-When writing a file, switch to writing a DOS format (CR/LF) 
+When writing a file, switch to writing a DOS format (CR/LF).
 .TP
 .B macformat
-When writing a file, switch to writing a Mac format
+When writing a file, switch to writing a Mac format.
 .TP
 .B append
-When writing a file, append to the end instead of overwriting
+When writing a file, append to the end instead of overwriting.
 .TP
 .B prepend
-When writing a file, 'prepend' (write at the beginning) instead of overwriting
+When writing a file, 'prepend' (write at the beginning) instead of overwriting.
 .TP
 .B backup
-When writing a file, create a backup of the current file
+When writing a file, create a backup of the current file.
 .TP
 .B firstfile
-Move to the first file when using the file browser (reading or writing files)
+Move to the first file when using the file browser (reading or writing files).
 .TP
 .B lastfile
-Move to the last file when using the file browser (reading or writing files)
+Move to the last file when using the file browser (reading or writing files).
 .TP
 .B nohelp
-Toggle showing/hiding the two line list of key bindings at the bottom of the screen
+Toggle showing/hiding the two line list of key bindings at the bottom of the screen.
 .TP
 .B constupdate
-Constantly display the current line, column, etc position
+Constantly display the current line, column, etc position.
 .TP
 .B morespace
-Toggle showing/hiding the blank space which 'seperates' the 'title' from the file text
+Toggle showing/hiding the blank space which 'seperates' the 'title' from the file text.
 .TP
 .B smoothscroll
-Toggle smooth scrolling when moving via the arrow keys
+Toggle smooth scrolling when moving via the arrow keys.
 .TP
 .B whitesplacedisplay
 .TP
 .B smarthome
-Toggle whether the smart home key function is enabled
+Toggle whether the smart home key function is enabled.
 .TP
 .B autoindent
-Toggle whether new lines will conain the same amount of whitespace as the line above
+Toggle whether new lines will conain the same amount of whitespace as the line above.
 .TP
 .B cuttoend
-Toggle whether cutting text will cut the whole line or just from the current cursor 
+Toggle whether cutting text will cut the whole line or just from the current cursor. 
 position to the end of the line
 .TP
 .B nowrap
 Toggle whether long lines will be wrapped to the next line.
 .TP
+.B suspendenable
+Toggle whether the suspend sequence (normally ^Z) will suspend the editor window.
+.TP
 
 Valid menu sections are:
 .TP
 .B main
-The main editor window where text is entered
+The main editor window where text is entered.
 .TP
 .B search
-The search menu (AKA whereis)
+The search menu (AKA whereis).
 .TP
 .B replace
-The 'search to replace' menu
+The 'search to replace' menu.
 .TP
 .B replacewith
-The 'replace with' menu, which comes up after 'search to replace'
+The 'replace with' menu, which comes up after 'search to replace'.
 .TP
 .B gotoline
-The 'goto line (and column) menu
+The 'goto line (and column)' menu.
 .TP
 .B writeout
-The 'write file' menu
+The 'write file' menu.
 .TP
 .B insert
-The 'insert file' menu
+The 'insert file' menu.
 .TP
 .B extcmd
-The menu for inserting output from an external comman, reached from the insert menu
+The menu for inserting output from an external comman, reached from the insert menu.
 .TP
 .B help
-The help menu
+The help menu.
 .TP
 .B spell
-The interactive spell checker Yes/no menu
+The interactive spell checker Yes/no menu.
 .TP
 .B browser
-The file browser for inserting or writing a file
+The file browser for inserting or writing a file.
 .TP
 .B whereisfile
-The 'search for a file' menu in the file browser
+The 'search for a file' menu in the file browser.
 .TP
 .B gotodir
 The 'go to directory' menu
 .TP
 .B all
-Special symbol for all menus (except the help menu)
+Special name meaning apply to all menus where this function exists.
 .SH FILES
 .TP
 .I SYSCONFDIR/nanorc
index 78c0d9159fd84916e92353597be3cb3905b3bf00..b75214728de460add26181463fd9b91b621222f7 100644 (file)
@@ -213,6 +213,7 @@ char *do_browser(char *path, DIR *dir)
                        FALSE,
 #endif
                        MGOTODIR, ans,
+                       &meta_key, &func_key,
 #ifndef NANO_TINY
                        NULL,
 #endif
@@ -791,6 +792,7 @@ int filesearch_init(void)
        TRUE,
 #endif
        MWHEREISFILE, backupstring,
+       &meta_key, &func_key, 
 #ifndef NANO_TINY
        &search_history,
 #endif
index 88ba0fc47c68ae56ebe51368fab94f54400a5b31..74ce172527082d24a52fc1093bbaee01987fd80e 100644 (file)
@@ -706,6 +706,8 @@ void do_insertfile(
     bool right_side_up = FALSE, single_line = FALSE;
 #endif
 
+    currmenu = MINSERTFILE;
+
     while (TRUE) {
 #ifndef NANO_TINY
        if (execute) {
@@ -735,11 +737,12 @@ void do_insertfile(
                execute ? MEXTCMD :
 #endif
                MINSERTFILE, ans,
+               &meta_key, &func_key,
+#ifndef DISABLE_OPERATINGDIR
 #ifndef NANO_TINY
                NULL,
 #endif
                edit_refresh, msg,
-#ifndef DISABLE_OPERATINGDIR
                operating_dir != NULL && strcmp(operating_dir,
                ".") != 0 ? operating_dir :
 #endif
@@ -765,7 +768,7 @@ void do_insertfile(
 #ifdef ENABLE_MULTIBUFFER
            s = get_shortcut(currmenu, &i, &meta_key, &func_key);
 
-           if (s && s->scfunc == (void *) do_toggle && s->toggle == MULTIBUFFER) {
+           if (s && s->scfunc == (void *) new_buffer_msg) {
                /* Don't allow toggling if we're in view mode. */
                if (!ISSET(VIEW_MODE))
                    TOGGLE(MULTIBUFFER);
@@ -1871,6 +1874,7 @@ bool do_writeout(bool exiting)
                TRUE,
 #endif
                MWRITEFILE, ans,
+               &meta_key, &func_key,
 #ifndef NANO_TINY
                NULL,
 #endif
index 5d1e367eff46d5245b5fc15f7bc91d004ec41691..39e5a3df280f3a91c86e99e0b3a22689bf637df4 100644 (file)
@@ -925,7 +925,7 @@ void shortcut_init(bool unjustify)
        no_replace_msg, IFSCHELP(nano_whereis_msg), FALSE, VIEW);
 
     add_to_funcs((void *) gototext_msg, MGOTOLINE,
-       gototext_msg, IFSCHELP(nano_whereis_msg), FALSE, VIEW);
+       gototext_msg, IFSCHELP(nano_whereis_msg), TRUE, VIEW);
 
 #ifndef DISABLE_BROWSER
     if (!ISSET(RESTRICTED))
@@ -973,7 +973,7 @@ void shortcut_init(bool unjustify)
     /* If we're using restricted mode, the multibuffer toggle is
      * disabled.  It's useless since inserting files is disabled. */
     if (!ISSET(RESTRICTED))
-       add_to_funcs((void *) new_buffer_msg, MWRITEFILE,
+       add_to_funcs((void *) new_buffer_msg, MINSERTFILE,
        new_buffer_msg, nano_multibuffer_msg, FALSE, NOVIEW);
 #endif
 
@@ -1127,17 +1127,10 @@ void shortcut_init(bool unjustify)
     add_to_sclist(MMAIN, "M-.", switch_to_next_buffer_void, 0, TRUE);
 #endif
     add_to_sclist(MMAIN, "M-V", do_verbatim_input, 0, TRUE);
-    add_to_sclist(MALL, "^I", do_tab, 0, TRUE);
-    add_to_sclist(MALL, "^M", do_enter, 0, TRUE);
-    add_to_sclist(MALL, "kenter", do_enter, 0, TRUE);
-    add_to_sclist(MALL, "^D", do_delete, 0, TRUE);
-    add_to_sclist(MALL, "kdel", do_delete, 0, TRUE);
-    add_to_sclist(MALL, "^H", do_backspace, 0, TRUE);
-    add_to_sclist(MALL, "kbsp", do_backspace, 0, TRUE);
 #ifndef NANO_TINY
     add_to_sclist(MALL, "M-T", do_cut_till_end, 0, TRUE);
     add_to_sclist(MALL, "M-J", do_full_justify, 0, TRUE);
-    add_to_sclist(MALL, "M-D", do_wordlinechar_count, 0, TRUE);
+    add_to_sclist(MMAIN, "M-D", do_wordlinechar_count, 0, TRUE);
     add_to_sclist(MMAIN, "M-X", do_toggle, NO_HELP, TRUE);
     add_to_sclist(MMAIN, "M-C", do_toggle, CONST_UPDATE, TRUE);
     add_to_sclist(MMAIN, "M-O", do_toggle, MORE_SPACE, TRUE);
@@ -1155,6 +1148,8 @@ void shortcut_init(bool unjustify)
     add_to_sclist(MMAIN, "M-N", do_toggle, NO_CONVERT, TRUE);
     add_to_sclist(MMAIN, "M-Z", do_toggle, SUSPEND, TRUE);
 #endif
+    add_to_sclist(MGOTOLINE, "^T", (void *) gototext_msg, 0, FALSE);
+    add_to_sclist(MINSERTFILE|MEXTCMD, "M-F", (void *) new_buffer_msg, 0, FALSE);
     add_to_sclist((MWHEREIS|MREPLACE|MREPLACE2|MGOTOLINE|MWRITEFILE|MINSERTFILE|MEXTCMD|MSPELL|MWHEREISFILE|MGOTODIR), 
        "^C", (void *) cancel_msg, 0, FALSE);
     add_to_sclist(MHELP, "^X", do_exit, 0, TRUE);
@@ -1169,6 +1164,13 @@ void shortcut_init(bool unjustify)
     add_to_sclist(MINSERTFILE, "^X", (void *) ext_cmd_msg, 0, FALSE);
     add_to_sclist(MMAIN, "^Z", do_suspend_void, 0, FALSE);
     add_to_sclist(MMAIN, "^L", total_refresh, 0, TRUE);
+    add_to_sclist(MALL, "^I", do_tab, 0, TRUE);
+    add_to_sclist(MALL, "^M", do_enter, 0, TRUE);
+    add_to_sclist(MALL, "kenter", do_enter, 0, TRUE);
+    add_to_sclist(MALL, "^D", do_delete, 0, TRUE);
+    add_to_sclist(MALL, "kdel", do_delete, 0, TRUE);
+    add_to_sclist(MALL, "^H", do_backspace, 0, TRUE);
+    add_to_sclist(MALL, "kbsp", do_backspace, 0, TRUE);
 
 #ifdef DEBUG
     print_sclist();
index f214f79524b08a21805d25d960b911d7eecb61cb..f92b72595cd0bca7daed6771934807498987cce6 100644 (file)
@@ -899,6 +899,7 @@ const sc *get_prompt_string(int *actual, bool allow_tabs,
        bool allow_files,
 #endif
        const char *curranswer,
+       bool *meta_key, bool *func_key,
 #ifndef NANO_TINY
        filestruct **history_list,
 #endif
@@ -909,7 +910,7 @@ const sc *get_prompt_string(int *actual, bool allow_tabs,
        )
 {
     int kbinput = ERR;
-    bool meta_key, func_key, have_shortcut, ran_func, finished;
+    bool have_shortcut, ran_func, finished;
     size_t curranswer_len;
     const sc *s;
 #ifndef DISABLE_TABCOMP
@@ -971,11 +972,11 @@ fprintf(stderr, "get_prompt_string: answer = \"%s\", statusbar_x = %d\n", answer
      * this case, disable all keys that would change the text if the
      * filename isn't blank and we're at the "Write File" prompt. */
     while (1) {
-       kbinput = do_statusbar_input(&meta_key, &func_key, &have_shortcut,
+       kbinput = do_statusbar_input(meta_key, func_key, &have_shortcut,
            &ran_func, &finished, TRUE, refresh_func);
        assert(statusbar_x <= strlen(answer));
 
-       s = get_shortcut(currmenu, &kbinput, &meta_key, &func_key);
+       s = get_shortcut(currmenu, &kbinput, meta_key, func_key);
 
        if (s)
            if (s->scfunc == (void *) cancel_msg || s->scfunc == do_enter)
@@ -1150,6 +1151,7 @@ int do_prompt(bool allow_tabs,
        bool allow_files,
 #endif
        int menu, const char *curranswer,
+       bool *meta_key, bool *func_key,
 #ifndef NANO_TINY
        filestruct **history_list,
 #endif
@@ -1181,6 +1183,7 @@ int do_prompt(bool allow_tabs,
        allow_files,
 #endif
        curranswer,
+       meta_key, func_key,
 #ifndef NANO_TINY
        history_list,
 #endif
index 27ea8abd50a62308a53192043a060dd13530c052..d068ee4c9ca080637bfff0b029326549bf49ead6 100644 (file)
@@ -509,6 +509,7 @@ const sc *get_prompt_string(int *value, bool allow_tabs,
        bool allow_files,
 #endif
        const char *curranswer,
+       bool *meta_key, bool *func_key,
 #ifndef NANO_TINY
        filestruct **history_list,
 #endif
@@ -522,6 +523,7 @@ int do_prompt(bool allow_tabs,
        bool allow_files,
 #endif
        int menu, const char *curranswer,
+       bool *meta_key, bool *func_key,
 #ifndef NANO_TINY
        filestruct **history_list,
 #endif
@@ -806,7 +808,8 @@ const char *mac_format_msg;
 const char *append_msg;
 const char *prepend_msg;
 const char *backup_file_msg;
-
+const char *gototext_msg;
+const char *new_buffer_msg;
 
 #ifdef HAVE_REGEX_H
 const char *regexp_msg;
index e7e52cdd56ac2dcd5d3f20650da64553b545de82..cee7ac1f44c0f7b0aec27f4d017afd155781d7a0 100644 (file)
@@ -138,6 +138,7 @@ int search_init(bool replacing, bool use_answer)
     char *buf;
     sc *s;
     void *func = NULL;
+    bool meta_key = FALSE, func_key = FALSE;
     static char *backupstring = NULL;
        /* The search string we'll be using. */
 
@@ -176,6 +177,7 @@ int search_init(bool replacing, bool use_answer)
        TRUE,
 #endif
        replacing ? MREPLACE : MWHEREIS, backupstring,
+       &meta_key, &func_key,
 #ifndef NANO_TINY
        &search_history,
 #endif
@@ -883,6 +885,7 @@ void do_replace(void)
 {
     filestruct *edittop_save, *begin;
     size_t begin_x, pww_save;
+    bool meta_key = FALSE, func_key = FALSE;
     ssize_t numreplaced;
     int i;
 
@@ -925,6 +928,7 @@ void do_replace(void)
        TRUE,
 #endif
        MREPLACE2, last_replace,
+       &meta_key, &func_key,
 #ifndef NANO_TINY
        &replace_history,
 #endif
@@ -984,7 +988,7 @@ void do_replace(void)
 void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
        bool interactive, bool save_pos, bool allow_update)
 {
-    bool meta_key, func_key;
+    bool meta_key = FALSE, func_key = FALSE;
     const sc *s;
 
     if (interactive) {
@@ -996,6 +1000,7 @@ void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
                TRUE,
 #endif
                MGOTOLINE, use_answer ? ans : "",
+               &meta_key, &func_key,
 #ifndef NANO_TINY
                NULL,
 #endif
@@ -1012,7 +1017,7 @@ void do_gotolinecolumn(ssize_t line, ssize_t column, bool use_answer,
 
 
        s = get_shortcut(currmenu, &i, &meta_key, &func_key);
-       if (s && s->scfunc == do_search) {
+       if (s && s->scfunc == (void *) gototext_msg) {
            /* Keep answer up on the statusbar. */
            search_init(TRUE, TRUE);
 
index b544ad021e51ae2a1b6b8328c1a1b33efad56753..93277e9426aa483291a5b75f547921b76f4aa0ca 100644 (file)
@@ -1770,6 +1770,7 @@ bool do_int_spell_fix(const char *word)
     char *save_search, *save_replace;
     size_t match_len, current_x_save = openfile->current_x;
     size_t pww_save = openfile->placewewant;
+    bool meta_key = FALSE, func_key = FALSE;
     filestruct *edittop_save = openfile->edittop;
     filestruct *current_save = openfile->current;
        /* Save where we are. */
@@ -1857,6 +1858,7 @@ bool do_int_spell_fix(const char *word)
                TRUE,
 #endif
                MSPELL, word,
+               &meta_key, &func_key,
 #ifndef NANO_TINY
                NULL,
 #endif