nano-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH] possible new feature: option -z lists the names of available syn


From: Benno Schulenberg
Subject: [PATCH] possible new feature: option -z lists the names of available syntaxes
Date: Sat, 25 May 2024 10:45:31 +0200

When one has installed additional syntaxes, one tends to forget
what exactly is there.  So it's nice to be able to list them.

The syntaxes are listed in the reverse order in which they were
read: the most recent first.

The long form of the option is, of course, --listsyntaxes,
which can be abbreviated to --list.

This fulfills https://savannah.gnu.org/bugs/?65779.
---
 src/nano.c | 36 +++++++++++++++++++++++++++++++++++-
 1 file changed, 35 insertions(+), 1 deletion(-)

diff --git a/src/nano.c b/src/nano.c
index 123af18d..4339a605 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -642,6 +642,9 @@ void usage(void)
 #ifndef NANO_TINY
        print_opt("-y", "--afterends", N_("Make Ctrl+Right stop at word ends"));
 #endif
+#ifdef ENABLE_COLOR
+       print_opt("-z", "--listsyntaxes", N_("List the names of available 
syntaxes"));
+#endif
 #ifdef HAVE_LIBMAGIC
        print_opt("-!", "--magic", N_("Also try magic to determine syntax"));
 #endif
@@ -795,6 +798,27 @@ void version(void)
        printf("\n");
 }
 
+#ifdef ENABLE_COLOR
+/* List the names of the available syntaxes. */
+void list_syntax_names(void)
+{
+       int width = 0;
+
+       printf(_("Available syntaxes:\n"));
+
+       for (syntaxtype *sntx = syntaxes; sntx != NULL; sntx = sntx->next) {
+               if (width > 45) {
+                       printf("\n");
+                       width = 0;
+               }
+               printf(" %s", sntx->name);
+               width += wideness(sntx->name, 45 * 4);
+       }
+
+       printf("\n");
+}
+#endif
+
 /* Register that Ctrl+C was pressed during some system call. */
 void make_a_note(int signal)
 {
@@ -1772,6 +1796,9 @@ int main(int argc, char **argv)
                {"nowrap", 0, NULL, 'w'},
 #endif
                {"nohelp", 0, NULL, 'x'},
+#ifdef ENABLE_COLOR
+               {"listsyntaxes", 0, NULL, 'z'},
+#endif
                {"modernbindings", 0, NULL, '/'},
 #ifndef NANO_TINY
                {"smarthome", 0, NULL, 'A'},
@@ -1850,7 +1877,7 @@ int main(int argc, char **argv)
                SET(MODERN_BINDINGS);
 
        while ((optchr = getopt_long(argc, argv, 
"ABC:DEFGHIJ:KLMNOPQ:RS$T:UVWX:Y:Z"
-                               "abcdef:ghijklmno:pqr:s:tuvwxy!%_0/", 
long_options, NULL)) != -1) {
+                               "abcdef:ghijklmno:pqr:s:tuvwxyz!%_0/", 
long_options, NULL)) != -1) {
                switch (optchr) {
 #ifndef NANO_TINY
                        case 'A':
@@ -2083,6 +2110,13 @@ int main(int argc, char **argv)
                                SET(AFTER_ENDS);
                                break;
 #endif
+#ifdef ENABLE_COLOR
+                       case 'z':
+                               do_rcfiles();
+                               if (syntaxes)
+                                       list_syntax_names();
+                               exit(0);
+#endif
 #ifdef HAVE_LIBMAGIC
                        case '!':
                                SET(USE_MAGIC);
-- 
2.42.1




reply via email to

[Prev in Thread] Current Thread [Next in Thread]