summary refs log tree commit diff
path: root/bin
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-12-29 17:13:26 -0500
committerJune McEnroe <june@causal.agency>2020-12-29 17:13:26 -0500
commitb53f448c0aac381ad9d58f62bd1cc5ab06562d2e (patch)
tree6abb0ee2951c9720f7e001f165b83edbe24893c4 /bin
parentMatch C type declarations as IdentifierTag (diff)
downloadsrc-b53f448c0aac381ad9d58f62bd1cc5ab06562d2e.tar.gz
src-b53f448c0aac381ad9d58f62bd1cc5ab06562d2e.zip
Match top-level C definitions as IdentifierTag
Diffstat (limited to '')
-rw-r--r--bin/hilex/c.l15
1 files changed, 15 insertions, 0 deletions
diff --git a/bin/hilex/c.l b/bin/hilex/c.l
index c5dc31ff..c8f4ba65 100644
--- a/bin/hilex/c.l
+++ b/bin/hilex/c.l
@@ -30,6 +30,7 @@ width "*"|[0-9]+
 
 %%
 	static int pop = INITIAL;
+	static int braces = 0;
 
 [[:blank:]]+ { return Normal; }
 
@@ -102,6 +103,11 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while |
 <MacroLine>{ident} { return Macro; }
 {ident} { return Identifier; }
 
+{ident}/("["[^]]*"]")*[[:space:]]*"=" |
+{ident}/"("[^)]*")"[[:space:]]*"{" {
+	return (!braces ? IdentifierTag : Identifier);
+}
+
 "//"([^\n]|"\\\n")* |
 "/*"([^*]|"*"[^/])*"*"+"/" {
 	return Comment;
@@ -147,6 +153,15 @@ register|restrict|return|static|struct|switch|typedef|union|volatile|while |
 	[^%\\""]+|. { return String; }
 }
 
+"{" {
+	braces++;
+	REJECT;
+}
+"}" {
+	braces--;
+	REJECT;
+}
+
 <MacroLine,MacroInclude,MacroDefine>. { return Macro; }
 
 .|\n { return Normal; }
June McEnroe Fixes mistaken highlight of: pngWrite(file, (uint8_t []) { 0, 0, 0 }, 3); 2019-02-18Match whitespace between * [] {}June McEnroe 2019-02-18Fix function-like #define regexJune McEnroe A define like #define FOO (1) is not function-like. 2019-02-18Match Tag in RustJune McEnroe 2019-02-18Match sh functions as TagJune McEnroe 2019-02-18Match Sh and Ss as Tag in mdocJune McEnroe 2019-02-18Match statics and typedefs as TagJune McEnroe 2019-02-18Clean up htmlHeaderJune McEnroe 2019-02-18Remove hi line numberingJune McEnroe Tags are much better for referring to specific parts of a file and line numbering is better done by a post-processing tool such as cat -n or producing a two-column HTML <table>. 2019-02-18Add Tag class to hiJune McEnroe 2019-02-17Generate HTML with hi -n -f html -o anchorJune McEnroe Running hi twice to insert stuff between the head and the content is a bit of a hack but oh well. 2019-02-17Add hi -f html -o anchor for line number linksJune McEnroe 2019-02-17Simplify temp trap in upJune McEnroe 2019-02-17Add line numbers to hiJune McEnroe Renames previous -n option to -m to stay consistent with cat -n. Prefixing lines with line numbers affects where the first tab indent ends up relative to the text above it. Not sure if it's worth fixing somehow. 2019-02-17Always split spans after newlinesJune McEnroe Simplifies ANSI and IRC output code, and prepares for line numbered output. 2019-02-15Color format specifiers light cyan in vimJune McEnroe 2019-02-15Highlight Interp as yellowJune McEnroe 2019-02-15Highlight strings in sh command substitutionsJune McEnroe 2019-02-15Add nmap gpJune McEnroe 2019-02-14Avoid newline when copying URL to pasteboardJune McEnroe 2019-02-13Add forgotten "sixth" book of H2G2June McEnroe