--- a/mail/util.c Sat Feb 21 12:03:19 2009 +++ b/mail/util.c Wed Mar 4 14:51:11 2009 @@ -62,8 +62,8 @@ if (cmd) { - /* Ignore comments */ - if (cmd[0] == '#') + /* Ignore comments, and also blank lines in noninteractive mode */ + if (cmd[0] == '#' || (!interactive && cmd[0] == '\0')) { free (cmd); return 0; @@ -82,16 +82,15 @@ return 0; } - if (mu_argcv_get (cmd, delim, NULL, &argc, &argv) == 0 && argc > 0) + if (mu_argcv_get (cmd, delim, NULL, &argc, &argv) == 0) { char *p; - /* Special case: a number alone implies "print" */ - if (argc == 1 - && ((strtoul (argv[0], &p, 10) > 0 && *p == 0) - || (argv[0][1] == 0 && strchr("^$", argv[0][0])))) + /* A blank line or a message list without a command name is + assumed to be a next command, according to the POSIX spec. */ + if (argc == 0 || strchr("^.$+-*0123456789/:", argv[0][0])) { - asprintf (&p, "print %s", argv[0]); + asprintf (&p, "next %s", cmd); mu_argcv_free (argc, argv); mu_argcv_get (p, delim, NULL, &argc, &argv); free (p); --- a/mail/table.c Sat Feb 21 12:03:19 2009 +++ b/mail/table.c Wed Mar 4 11:04:00 2009 @@ -176,14 +176,8 @@ mail_eq, no_compl }, { "#", "#", "# comment", 0, NULL, no_compl }, - { "*", "*", "*", 0, - mail_list, no_compl }, - { "+", "+", "+ [message]", 0, - mail_next, msglist_compl }, { "|", "|", "| [[msglist] command]", 0, mail_pipe, msglist_compl }, /* FIXME: msglist_exec_compl */ - { "-", "-", "- [message]", 0, - mail_previous, msglist_compl }, };