From 0193f411a44b7f20e97a93d52274582043589c2e Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Tue, 19 Jan 2021 20:08:20 -0500 Subject: Support BSD make syntax and match *.am These don't really go together, but... --- bin/hilex.c | 2 +- bin/make.l | 30 ++++++++++++++++++++++++++---- bin/man1/hilex.1 | 8 +++++--- 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/bin/hilex.c b/bin/hilex.c index 1f9b98a5..9fa0b5a9 100644 --- a/bin/hilex.c +++ b/bin/hilex.c @@ -51,7 +51,7 @@ static const struct { const char *linePatt; } Lexers[] = { { &LexC, "c", "[.][chlmy]$", NULL }, - { &LexMake, "make", "[.]mk$|^Makefile$", NULL }, + { &LexMake, "make", "[.](mk|am)$|^Makefile$", NULL }, { &LexMdoc, "mdoc", "[.][1-9]$", "^[.]Dd" }, { &LexText, "text", "[.]txt$", NULL }, }; diff --git a/bin/make.l b/bin/make.l index 88f286dc..027fefa3 100644 --- a/bin/make.l +++ b/bin/make.l @@ -21,7 +21,7 @@ #include "hilex.h" %} -%s Assign +%s Assign Preproc %x Variable Shell ident [._[:alnum:]]+ @@ -54,6 +54,30 @@ operator [:!]|:: return Keyword; } +{target}/{operator} { return Ident; } + +^"."{ident} | +^"-"?include { + BEGIN(pop = Preproc); + return Macro; +} +{ + "\n" { + BEGIN(pop = INITIAL); + return Normal; + } + "\\\n""\t"? { return Normal; } + + "\""[^""]*"\"" | + "<"[^>]*">" { + return String; + } + + [!<>=]"="?|"||"|"&&" { return Operator; } + [0-9]+|"0x"[[:xdigit:]]+ { return Number; } + defined|make|empty|exists|target|commands|in { return Keyword; } +} + ^{ident}/[[:blank:]]*{assign} { return Ident; } @@ -67,12 +91,10 @@ operator [:!]|:: BEGIN(pop = INITIAL); return Normal; } - "\\\n""\t"? { return String; } + "\\\n""\t"? { return Escape; } [^\\$[:space:]]+|. { return String; } } -^"-"?include { return Macro; } - {target} { return Ident; } "#"([^\\\n]|"\\"[^\n]|"\\\n")* { return Comment; } diff --git a/bin/man1/hilex.1 b/bin/man1/hilex.1 index a151476a..e07695a3 100644 --- a/bin/man1/hilex.1 +++ b/bin/man1/hilex.1 @@ -166,12 +166,14 @@ Inferred for files. . .It Cm make -The portable subset of -.Xr make 1 . +The BSD +.Xr make 1 +language. Inferred for +.Pa Makefile , .Pa *.mk and -.Pa Makefile +.Pa *.am files. . .It Cm mdoc -- cgit 1.4.1 ge'>range
Commit message (Collapse)Author
2018-03-31Link against ncursesJune McEnroe
2018-03-05Miscellaneous code cleanupJune McEnroe
2018-03-05Pass message structs by valueJune McEnroe
2018-03-05Use stdio in merge and metaJune McEnroe
2018-03-05Clean up spawn constantsJune McEnroe
2018-03-05Rename Tile timestamps {create,modify,access}TimeJune McEnroe
2018-03-05Pack message type enumsJune McEnroe
2018-03-05Undef COLOR_ constants in torus.hJune McEnroe
2018-03-05Generate tagsJune McEnroe
2017-10-03Simplify Makefile with pattern ruleJune McEnroe
Insert rant about how GNU make handles the .c rule with extra dependencies. Also I don't care that everything links curses now.
2017-09-27Remove leading blank linesJune McEnroe
2017-09-27Add merge.c to READMEJune McEnroe
2017-09-03Assert client coords are valid after movementJune McEnroe
2017-09-03Relicense AGPLJune McEnroe
I know it's already published under a permissive license in what is probably its final form, but I want to license it AGPL anyway on principle following some conversations I had about open source, corporations and copyleft.
2017-09-01Revert "Add client readOnly mode"June McEnroe
This reverts commit 34f25ae40a3db9369e9d98b3814f2b93bbc21451.
2017-09-01Remove clientRemove call from clientCastJune McEnroe
If an error occurs on a client socket during a broadcast, that client will show up in the kqueue loop with EV_EOF and get removed that way. Tested by sending SIGKILL to a client and watching its cursor disappear.
2017-09-01Add client readOnly modeJune McEnroe
2017-08-31Clean up merge toolJune McEnroe
Choose the version with the most recent access if the modify times are the same.
2017-08-31Choose B for tiles with equal modify timesJune McEnroe
This way newer access counts and times will be preserved.
2017-08-31Add quick data file merge toolJune McEnroe
Hopefully I won't have to use it ever again.
2017-08-30Use only foreground color for selecting spawnJune McEnroe
2017-08-29Add four additional spawnsJune McEnroe
2017-08-28Add respawningJune McEnroe
2017-08-26Move license above includesJune McEnroe
Why was it down there?
2017-08-26Snapshot metadataJune McEnroe
2017-08-26Add meta.c to READMEJune McEnroe
2017-08-26Use MakefileJune McEnroe