]> git.wh0rd.org Git - nano.git/commitdiff
2013-06-13 David Lawrence Ramsey <pooka109@gmail.com>
authorChris Allegretta <chrisa@asty.org>
Fri, 14 Jun 2013 02:44:54 +0000 (02:44 +0000)
committerChris Allegretta <chrisa@asty.org>
Fri, 14 Jun 2013 02:44:54 +0000 (02:44 +0000)
        * src/global.c (first_sc_for) - try and more consistently display keystrokes,
          useful when the user has re-binded a bunch of them.

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

ChangeLog
src/global.c

index 9f8c15e009d38cb7cf4f4e3bc99bcf06634067a1..6ac3de684a5b7ab82d2a5ea90760d974c5c93433 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2013-06-13  David Lawrence Ramsey <pooka109@gmail.com>
+       * src/global.c (first_sc_for) - try and more consistently display keystrokes,
+         useful when the user has re-binded a bunch of them.
+
 2013-06-13 Kamil Dudka <kdudka@redhat.com>
        * doc/man/nano.1 - Actually document the -P (--poslog) option.
 
index 566a81633b6d905c18ce4ff72e8a478add517dad..46bad8d74b72b5edb9265f2e21f890ceb9d8bbcd 100644 (file)
@@ -308,26 +308,41 @@ void add_to_funcs(void (*func)(void), int menus, const char *desc, const char *h
 #endif
 }
 
-const sc *first_sc_for(int menu, void (*func)(void)) {
+const sc *first_sc_for(int menu, void (*func)(void))
+{
     const sc *s;
+    const sc *fkeysc = NULL;
     const sc *metasc = NULL;
 
     for (s = sclist; s != NULL; s = s->next) {
        if ((s->menu & menu) && s->scfunc == func) {
-           /* try to use a meta sequence as a last resort.  Otherwise
-              we will run into problems when we try and handle things like
-              the arrow keys, home, etc, if for some reason the user bound
-              them to a meta sequence first *shrug* */
-           if (s->type == META) {
-               metasc = s;
+           /* Try to use function keys and meta sequences as last
+            * resorts.  Otherwise, we will run into problems when we
+            * try and handle things like the arrow keys, Home, etc., if
+            * for some reason the user bound them to a function key or
+            * meta sequence first *shrug*. */
+           if (s->type == FKEY) {
+               if (!fkeysc)
+                   fkeysc = s;
+               continue;
+           } else if (s->type == META) {
+               if (!metasc)
+                   metasc = s;
                continue;
-           } /* otherwise it was something else, use it */
+           }
+
+           /* Otherwise, it was something else, so use it. */
            return s;
        }
     }
 
-    /* If we're here we may have found only meta sequences, if so use one */
-    if (metasc)
+    /* If we're here, we may have found only function keys or meta
+     * sequences.  If so, use one, with the same priority as in the
+     * help browser: function keys come first, unless meta sequences are
+     * available, in which case meta sequences come first. */
+    if (fkeysc && !metasc)
+       return fkeysc;
+    else if (metasc)
        return metasc;
 
 #ifdef DEBUG