I asked on bug-bash: The bash-20191127 snapshot updated the manpage documentation for a function definition (to align with reality). It is now defined as: function fname [()] compound-command [redirection] and includes the description: When in posix mode, fname must be a valid shell name and may not be the name of one of the POSIX special builtins. In default mode, a function name can be any unquoted shell word that does not contain $. For context: word - A sequence of characters considered as a single unit by the shell. Also known as a token. name - A word consisting only of alphanumeric characters and underscores, and beginning with an alphabetic character or an underscore. Also referred to as an identifier. -- Eli Schwartz Bug Wrangler and Trusted User I guess you could go full-on and change the function name match pattern to be a "word" or just add the '-' to it for now to be safe. From: schwab@linux-m68k.org At: 08/12/20 10:54:40To: Matthew Persico (BLOOMBERG/ 919 3RD A ) Cc: stefan@marxist.se, 21477@debbugs.gnu.org Subject: Re: bug#21477: 24.4; Imenu - improper parse of shell function names On Aug 12 2020, Matthew Persico (BLOOMBERG/ 919 3RD A) wrote: > I can reproduce this behaviour, but is it really a bug? Aren't the > names with '-' invalid? It's a POSIX extension, enforced in POSIX mode: 13. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different."