nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit 2181853574a98ce7fb55a967a8452e3925cb2a51
parent 281197895f65e84147d233db204c002724eb0be9
Author: Benno Schulenberg <bensberg@telfort.nl>
Date:   Thu,  8 May 2025 08:56:30 +0200

syntaxes: use character classes instead of range expressions

In some locales certain normal ASCII characters are not included in
the ranges [A-Z] and [a-z].  So, use [[:upper:]] and [[:lower:]]
instead, and [[:alpha:]] for [A-Za-z], and similarly for others.

This fixes https://savannah.gnu.org/bugs/?67094.

Diffstat:
Msyntax/asm.nanorc | 4++--
Msyntax/autoconf.nanorc | 2+-
Msyntax/awk.nanorc | 2+-
Msyntax/c.nanorc | 4++--
Msyntax/changelog.nanorc | 12++++++------
Msyntax/cmake.nanorc | 2+-
Msyntax/go.nanorc | 2+-
Msyntax/makefile.nanorc | 2+-
Msyntax/nanohelp.nanorc | 2+-
Msyntax/nanorc.nanorc | 4++--
Msyntax/objc.nanorc | 2+-
Msyntax/ocaml.nanorc | 2+-
Msyntax/perl.nanorc | 4++--
Msyntax/php.nanorc | 4++--
Msyntax/po.nanorc | 2+-
Msyntax/python.nanorc | 2+-
Msyntax/ruby.nanorc | 4++--
Msyntax/rust.nanorc | 8++++----
Msyntax/sh.nanorc | 8++++----
Msyntax/tcl.nanorc | 2+-
Msyntax/tex.nanorc | 2+-
Msyntax/texinfo.nanorc | 6+++---
22 files changed, 41 insertions(+), 41 deletions(-)

diff --git a/syntax/asm.nanorc b/syntax/asm.nanorc @@ -6,11 +6,11 @@ syntax asm "\.(S|s|asm)$" magic "assembler source" comment "//" -color red "\<[A-Z_]{2,}\>" +color red "\<[[:alpha:]_]{2,}\>" color brightgreen "\.(data|subsection|text)\>" color green "\.(align|file|globl|global|hidden|section|size|type|weak)\>" color brightyellow "\.(ascii|asciz|byte|double|float|hword|int|long|short|single|struct|word)\>" -color brightred "^[[:blank:]]*[.0-9A-Za-z_]*:" +color brightred "^[[:blank:]]*[[:alnum:]_.]*:" color brightcyan "^[[:blank:]]*#[[:blank:]]*(define|undef|include|ifn?def|endif|elif|else|if|warning|error)\>" # Strings and names of included files. diff --git a/syntax/autoconf.nanorc b/syntax/autoconf.nanorc @@ -11,7 +11,7 @@ color yellow "\<(if|test|then|elif|else|fi|case|esac|ifelse|for|in|do|done)\>" color yellow "=|!=|&&|\|\|" # Macros: -color cyan "\<[[:upper:]_[:digit:]]+\>" +color cyan "\<[[:upper:][:digit:]_]+\>" # Version numbers: color red "\<[-_.0-9]+\>" diff --git a/syntax/awk.nanorc b/syntax/awk.nanorc @@ -8,7 +8,7 @@ magic "awk script" comment "#" # Records. -color brightred "\$[0-9A-Za-z_!@#$*?-]+" +color brightred "\$[[:alnum:]_!@#$*?-]+" # Awk-set variables. color red "\<(ARGC|ARGIND|ARGV|BINMODE|CONVFMT|ENVIRON|ERRNO|FIELDWIDTHS)\>" color red "\<(FILENAME|FNR|FS|IGNORECASE|LINT|NF|NR|OFMT|OFS|ORS)\>" diff --git a/syntax/c.nanorc b/syntax/c.nanorc @@ -6,9 +6,9 @@ magic "^(C|C\+\+) (source|program)" comment "//" # Constants. -color brightred "\<[A-Z_][0-9A-Z_]*\>" +color brightred "\<[[:upper:]_][[:upper:][:digit:]_]*\>" # Labels. -color brightmagenta "^[[:blank:]]*[A-Z_a-z][0-9A-Z_a-z]*:[[:blank:]]*$" +color brightmagenta "^[[:blank:]]*[[:alpha:]_][[:alnum:]_]*:[[:blank:]]*$" color normal ":[[:blank:]]*$" # Types and related keywords. diff --git a/syntax/changelog.nanorc b/syntax/changelog.nanorc @@ -8,24 +8,24 @@ syntax changelog "Change[Ll]og[^/]*$" # Author lines. color green "^(19|20).*" # Dates. -color red "^(19|20)[0-9-]{8}" +color red "^(19|20)[[:digit:]-]{8}" # Email addresses. color yellow "<[^>]*@[^>]*>" # Command-line options. -color cyan "[[:blank:]]-[a-zA-Z\$]|--[8a-z-]+" +color cyan "[[:blank:]]-[[:alpha:]$]|--[[:lower:]8-]+" # Bug and patch numbers. -color cyan "(BZ|bug|patch)[ ]#[0-9]+|PR [[:alnum:]]+/[0-9]+" +color cyan "(BZ|bug|patch) #[[:digit:]]+|PR [[:alnum:]]+/[[:digit:]]+" # Probable constants, for variety. -color brightred "\<[A-Z_][0-9A-Z_]+\>" +color brightred "\<[[:upper:]_][[:upper:][:digit:]_]+\>" # Key sequences. -color brightblue "\^[A-Z^\]|\<M-.|\<F1?[0-9]|(\^|M-)Space" +color brightblue "\^[[:upper:]\^_]|\<M-.|\<F1?[[:digit:]]|(\^|M-)Space" # Changed files. color magenta start="^( | {8})\* " end="(:( |$)|^$)" # Release markers. -color brightblue "^(GNU )?nano[- ][0-9]\.[0-9]\.[^ ]+" +color brightblue "^(GNU )?nano[- ][[:digit:]]\.[[:digit:]]\.[^ ]+" # Trailing whitespace. color ,green "[[:space:]]+$" diff --git a/syntax/cmake.nanorc b/syntax/cmake.nanorc @@ -5,7 +5,7 @@ syntax cmake "(CMakeLists\.txt|\.cmake)$" comment "#" -color green "^[[:blank:]]*[0-9A-Za-z_]+" +color green "^[[:blank:]]*[[:alnum:]_]+" icolor brightyellow "^[[:blank:]]*(include|include_directories|include_external_msproject)\>" icolor brightgreen "^[[:blank:]]*((else|end)?if|else|(end)?while|(end)?foreach|break)\>" diff --git a/syntax/go.nanorc b/syntax/go.nanorc @@ -42,7 +42,7 @@ color brightblue "//.*" color brightblue start="/\*" end="\*/" # Special comments. -color brightcyan "//[[:blank:]]*\+build[[:blank:]]+(([a-zA-Z_0-9]+[[:blank:]]*)+,[[:blank:]]*)*[a-zA-Z_0-9]+" +color brightcyan "//[[:blank:]]*\+build[[:blank:]]+(([[:alnum:]_]+[[:blank:]]*)+,[[:blank:]]*)*[[:alnum:]_]+" # Trailing whitespace. color ,green "[[:space:]]+$" diff --git a/syntax/makefile.nanorc b/syntax/makefile.nanorc @@ -14,7 +14,7 @@ color magenta "^(if|ifn?def|ifn?eq|else|endif|(-|s)?include)\>" color magenta "^((override +)?(un)?define|endef|(un)?export|private|vpath)\>" # Variable expansions. -color blue "\$+[{(][a-zA-Z0-9_-]+[})]" +color blue "\$+[{(][[:alnum:]_-]+[})]" # Targets. color brightblue "^[^ ].*:" diff --git a/syntax/nanohelp.nanorc b/syntax/nanohelp.nanorc @@ -4,7 +4,7 @@ syntax nanohelp # Key combos: -color cyan "\^[]/4-8@A-Z\^_`◂▸▴▾-]" "[◂▸▴▾]" "\<(M|S[Hh]-[Mm])-[^")”»“」]" "\<F([1-9]|1[0-9]|2[0-4])" +color cyan "\^[]/4-8@[:upper:]\^_`◂▸▴▾-]|[◂▸▴▾]|\<(M|S[Hh]-[Mm])-[^")”»“」]|\<F([1-9]|1[0-9]|2[0-4])" color cyan "\<((Sh-)?Tab|Enter|Ins|(Sh-\^?)?Del|Space|Bsp|Up|Down|Left|Right|Home|End|PgUp|PgDn)\>" # Colorize M-) and M-" only when between parentheses... diff --git a/syntax/nanorc.nanorc b/syntax/nanorc.nanorc @@ -17,8 +17,8 @@ color lime "^[[:blank:]]*extendsyntax[[:blank:]]+[[:alpha:]]+[[:blank:]]+(i?colo color brightgreen "^[[:blank:]]*(set|unset)[[:blank:]]+(afterends|allow_insecure_backup|atblanks|autoindent|backup|boldtext|bookstyle|breaklonglines|casesensitive|colonparsing|constantshow|cutfromcursor|emptyline|historylog|indicator|jumpyscrolling|linenumbers|locking|magic|minibar|mouse|multibuffer|noconvert|nohelp|nonewlines|positionlog|preserve|quickblank|rawsequences|rebinddelete|regexp|saveonexit|showcursor|smarthome|softwrap|stateflags|tabstospaces|trimblanks|unix|whitespacedisplay|wordbounds|zap|zero)\>" color brightgreen "^[[:blank:]]*set[[:blank:]]+(backupdir|brackets|errorcolor|functioncolor|keycolor|matchbrackets|minicolor|numbercolor|operatingdir|promptcolor|punct|quotestr|scrollercolor|selectedcolor|speller|spotlightcolor|statuscolor|stripecolor|titlecolor|whitespace|wordchars)[[:blank:]]+" color brightgreen "^[[:blank:]]*set[[:blank:]]+(fill[[:blank:]]+-?[[:digit:]]+|(guidestripe|tabsize)[[:blank:]]+[1-9][0-9]*)\>" -color brightgreen "^[[:blank:]]*bind[[:blank:]]+((\^([A-Za-z]|[]/@\^_`-]|Space)|([Ss][Hh]-)?[Mm]-[A-Za-z]|[Mm]-([][!"#$%&'()*+,./0-9:;<=>?@\^_`{|}~-]|Space))|F([1-9]|1[0-9]|2[0-4])|Ins|Del)[[:blank:]]+([a-z]+|".*")[[:blank:]]+(main|help|search|replace(with)?|yesno|gotoline|writeout|insert|execute|browser|whereisfile|gotodir|spell|linter|all)\>" -color brightgreen "^[[:blank:]]*unbind[[:blank:]]+((\^([A-Za-z]|[]/@\^_`-]|Space)|([Ss][Hh]-)?[Mm]-[A-Za-z]|[Mm]-([][!"#$%&'()*+,./0-9:;<=>?@\^_`{|}~-]|Space))|F([1-9]|1[0-9]|2[0-4])|Ins|Del)[[:blank:]]+(main|help|search|replace(with)?|yesno|gotoline|writeout|insert|execute|browser|whereisfile|gotodir|spell|linter|all)\>" +color brightgreen "^[[:blank:]]*bind[[:blank:]]+((\^([[:alpha:]]|[]/@\^_`-]|Space)|([Ss][Hh]-)?[Mm]-[[:alpha:]]|[Mm]-([][!"#$%&'()*+,./0-9:;<=>?@\^_`{|}~-]|Space))|F([1-9]|1[0-9]|2[0-4])|Ins|Del)[[:blank:]]+([[:lower:]]+|".*")[[:blank:]]+(main|help|search|replace(with)?|yesno|gotoline|writeout|insert|execute|browser|whereisfile|gotodir|spell|linter|all)\>" +color brightgreen "^[[:blank:]]*unbind[[:blank:]]+((\^([[:alpha:]]|[]/@\^_`-]|Space)|([Ss][Hh]-)?[Mm]-[[:alpha:]]|[Mm]-([][!"#$%&'()*+,./0-9:;<=>?@\^_`{|}~-]|Space))|F([1-9]|1[0-9]|2[0-4])|Ins|Del)[[:blank:]]+(main|help|search|replace(with)?|yesno|gotoline|writeout|insert|execute|browser|whereisfile|gotodir|spell|linter|all)\>" color brightgreen "^[[:blank:]]*extendsyntax[[:blank:]]+[[:alpha:]]+[[:blank:]]+" color brightgreen "^[[:blank:]]*(syntax[[:blank:]]+[^[:space:]]+|(formatter|linter)[[:blank:]]+.+)" diff --git a/syntax/objc.nanorc b/syntax/objc.nanorc @@ -7,7 +7,7 @@ magic "Objective-C source" comment "//" # Stuffs. -color brightwhite "\<[A-Z_][0-9A-Z_]+\>" +color brightwhite "\<[[:upper:]_][[:upper:][:digit:]_]+\>" color green "\<(float|double|BOOL|bool|char|int|short|long|id|sizeof|enum|void|static|const|struct|union|typedef|extern|(un)?signed|inline)\>" color green "\<[[:alpha:]_][[:alnum:]_]*_t\>" color green "\<(class|namespace|template|public|protected|private|typename|this|friend|virtual|using|mutable|volatile|register|explicit)\>" diff --git a/syntax/ocaml.nanorc b/syntax/ocaml.nanorc @@ -5,7 +5,7 @@ magic "OCaml" comment "(*|*)" # Uid: -color red "\<[A-Z][0-9a-z_]{2,}\>" +color red "\<[[:upper:]][[:lower:][:digit:]_]{2,}\>" # Declarations: color green "\<(let|val|method|in|and|rec|private|virtual|constraint)\>" # Structure items: diff --git a/syntax/perl.nanorc b/syntax/perl.nanorc @@ -23,8 +23,8 @@ color magenta "\<(and|cmp|eq|ge|gt|isa|le|lt|ne|not|or|x|xor)\>" color magenta "\<(my|no|our|package|sub|use)\>" # Variable names. -color cyan "[$%&@]([A-Za-z_][0-9A-Za-z_]*|\^[][A-Z?\^_]|[0-9]+)\>" -color cyan "[$%&@]\{(\^?[A-Za-z_][0-9A-Za-z_]*|\^[][?\^][0-9]+)\}" +color cyan "[$%&@]([[:alpha:]_][[:alnum:]_]*|\^[][[:upper:]?\^_]|[[:digit:]]+)\>" +color cyan "[$%&@]\{(\^?[[:alpha:]_][[:alnum:]_]*|\^[][?\^][[:digit:]]+)\}" color cyan "[$%&@]([][!"#'()*+,.:;<=>?`|~-]|\{[][!-/:-@\`|~]\})|\$[$%&@]" color cyan "(^|[[:blank:]])[$%@][/\]" diff --git a/syntax/php.nanorc b/syntax/php.nanorc @@ -10,9 +10,9 @@ comment "//" color brightgreen "(<\?(php|=)?|\?>)" # Function names. -color white "\<[A-Za-z_][A-Za-z_0-9]*\(" +color white "\<[[:alpha:]_][[:alnum:]_]*\(" # Variable names. -color cyan "\$[A-Za-z_][A-Za-z_0-9]*" +color cyan "\$[[:alpha:]_][[:alnum:]_]*" # Types. color green "\<(array|bool|callable|const|float|global|int|object|string|var)\>" diff --git a/syntax/po.nanorc b/syntax/po.nanorc @@ -20,7 +20,7 @@ color yellow "\<((pre|rc)?[0-9]+|[0-9]bit)\>" color brightblue "^(msgid|msgid_plural|msgstr)\>" # Flags. color red " fuzzy(,|$)" -color yellow " (no-)?([a-z-]+|c\+\+)-format(,|$)" +color yellow " (no-)?([[:lower:]-]+|c\+\+)-format(,|$)" # Format specifiers. color brightmagenta "%([1-9]\$)?[#0 +'I-]?(\*([1-9]\$)?|[0-9]\.?|[0-9]?\.[0-9])?(hh|ll|[hlLjzt])?([diouxXeEfFgGaAcspnmr]|<PRI[diouxX](32|64)>)|%%" color rosy "%\([[:alpha:]][[:alnum:]_]*\)([0-9]\.?|[0-9]?\.[0-9])?[#0 +-]?[diouxXeEfFgGcrs]" diff --git a/syntax/python.nanorc b/syntax/python.nanorc @@ -9,7 +9,7 @@ comment "#" linter pyflakes # Function definitions. -color brightblue "def [0-9A-Za-z_]+" +color brightblue "def [[:alnum:]_]+" # Keywords. color brightcyan "\<(and|as|assert|async|await|break|class|continue)\>" color brightcyan "\<(def|del|elif|else|except|finally|for|from)\>" diff --git a/syntax/ruby.nanorc b/syntax/ruby.nanorc @@ -10,12 +10,12 @@ comment "#" linter ruby -w -c # Constants. -color brightblue "\<[A-Z]+[0-9A-Z_a-z]*|(\$|@|@@)[0-9A-Z_a-z]+" +color brightblue "\<[[:upper:]]+[[:alnum:]_]*|(\$|@|@@)[[:alnum:]_]+" # Reserved words. color yellow "\<(BEGIN|END|alias|and|begin|break|case|class|def|defined\?|do|else|elsif|end|ensure|false|for|if|in|module)\>" color yellow "\<(next|nil|not|or|redo|rescue|retry|return|self|super|then|true|undef|unless|until|when|while|yield)\>" # Ruby "symbols". -color magenta "([ ]|^):[0-9A-Za-z_]+\>" +color magenta "([ ]|^):[[:alnum:]_]+\>" # Some unique things we want to stand out. color brightyellow "\<(__FILE__|__LINE__)\>" diff --git a/syntax/rust.nanorc b/syntax/rust.nanorc @@ -7,19 +7,19 @@ syntax rust "\.(rlib|rs)$" comment "//" # Function definitions -color magenta "fn [a-z_0-9]+" +color magenta "fn [[:lower:][:digit:]_]+" # Reserved words color yellow "\<(abstract|as|async|await|become|box|break|const|continue|crate|do|dyn|else|enum|extern|false|final|fn|for|if|impl|in|let|loop|macro|match|mod|move|mut|override|priv|pub|ref|return|self|static|struct|super|trait|true|try|type|typeof|unsafe|unsized|use|virtual|where|while|yield)\>" # Macros -color red "[a-z_]+!" +color red "[[:lower:]_]+!" # Constants -color magenta "[A-Z][A-Z_0-9]+" +color magenta "[[:upper:]][[:upper:][:digit:]_]+" # Traits/Enums/Structs/Types/... -color magenta "[A-Z][A-Za-z0-9]+" +color magenta "[[:upper:]][[:alnum:]]+" # Strings color green ""([^"]|\\")*"" diff --git a/syntax/sh.nanorc b/syntax/sh.nanorc @@ -11,7 +11,7 @@ comment "#" linter dash -n # Function declarations. -color brightgreen "^[A-Za-z0-9_-]+\(\)" +color brightgreen "^[[:alnum:]_-]+\(\)" # Keywords, symbols, and comparisons. color green "\<(break|case|continue|do|done|elif|else|esac|exit|fi|for|function|if|in|read|return|select|shift|then|time|until|while)\>" @@ -20,16 +20,16 @@ color green "[][{}():;|`$<>!=&\]" color green "-(eq|ne|gt|lt|ge|le|ef|ot|nt)\>" # Short and long options. -color brightmagenta "[[:blank:]](-[A-Za-z]|--\<[A-Za-z-]+)\>" +color brightmagenta "[[:blank:]](-[[:alpha:]]|--\<[[:alpha:]-]+)\>" # Common commands. color brightblue "\<(awk|cat|cd|ch(grp|mod|own)|cp|cut|echo|env|grep|head|install|ln|make|mkdir|mv|popd|printf|pushd|rm|rmdir|sed|set|sort|tail|tar|touch|umask|unset)\>" color normal "[.-]tar\>" # Basic variable names (no braces). -color brightred "\$([-@*#?$!0-9]|[[:alpha:]_][[:alnum:]_]*)" +color brightred "\$([-@*#?$![:digit:]]|[[:alpha:]_][[:alnum:]_]*)" # More complicated variable names; handles braces and replacements and arrays. -color brightred "\$\{[#!]?([-@*#?$!]|[0-9]+|[[:alpha:]_][[:alnum:]_]*)(\[([[:blank:]]*[[:alnum:]_]+[[:blank:]]*|@)\])?(([#%/]|:?[-=?+])[^}]*\}|\[|\})" +color brightred "\$\{[#!]?([-@*#?$!]|[[:digit:]]+|[[:alpha:]_][[:alnum:]_]*)(\[([[:blank:]]*[[:alnum:]_]+[[:blank:]]*|@)\])?(([#%/]|:?[-=?+])[^}]*\}|\[|\})" # Comments. color cyan "(^|[[:blank:]])#.*" diff --git a/syntax/tcl.nanorc b/syntax/tcl.nanorc @@ -31,7 +31,7 @@ color green "\<(sleep|sync|system|tclx_(findinit|fork|load_tndxs|sleep|system|wa color green "[!$&();<=>\`|]" color brightblue "\<proc[[:blank:]]|\{|\}" color brightyellow ""([^"\]|\\.)*"|'([^'\]|\\.)*'" -color brightred "\$\{?[0-9A-Za-z_!@#$*?-]+\}?" +color brightred "\$\{?[[:alnum:]_!@#$*?-]+\}?" # Trailing whitespace: color ,green "[[:space:]]+$" diff --git a/syntax/tex.nanorc b/syntax/tex.nanorc @@ -6,6 +6,6 @@ comment "%" linter chktex -v0 -q -I -color green "\\.|\\[A-Za-z]*" +color green "\\.|\\[[:alpha:]]*" color magenta "[{}]" color blue "(^|[^\])%.*" diff --git a/syntax/texinfo.nanorc b/syntax/texinfo.nanorc @@ -12,10 +12,10 @@ comment "@c " color purple start="^@direntry" end="^@end direntry" # Command arguments, trailing and enclosed. -color cyan "^@[a-z]+[[:space:]]+.*" -color lightmagenta "@([a-z]+|,|H|U)\{([^}]|@\}|@[a-z]+\{[^}]*\})*\}" +color cyan "^@[[:lower:]]+[[:space:]]+.*" +color lightmagenta "@([[:lower:]]+|,|H|U)\{([^}]|@\}|@[[:lower:]]+\{[^}]*\})*\}" # Commands themselves. -color yellow "^@[a-z]+([[:space:]]|$)|@([a-z]+|,|H|U|AA|AE|DH|L|OE?|(La)?TeX|TH)\{|\}" +color yellow "^@[[:lower:]]+([[:space:]]|$)|@([[:lower:]]+|,|H|U|AA|AE|DH|L|OE?|(La)?TeX|TH)\{|\}" color pink "@[!"'&*./:=?@\^`{}~-]" # Special separator for headings and footings.