From: Pierre-Antoine Rouby <contact@parouby.fr>
To: 46055@debbugs.gnu.org
Cc: Pierre-Antoine Rouby <contact@parouby.fr>
Subject: bug#46055: [PATCH] Add rust lang to etags
Date: Sat, 23 Jan 2021 20:01:43 +0100 [thread overview]
Message-ID: <20210123190143.29246-1-contact@parouby.fr> (raw)
* lib-src/etags.c (Rust_functions): New function to make tags for rust
files.
(Rust_help, Rust_suffixes): New constant.
---
lib-src/etags.c | 49 +++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 49 insertions(+)
diff --git a/lib-src/etags.c b/lib-src/etags.c
index b5c18e0e01..8243861c69 100644
--- a/lib-src/etags.c
+++ b/lib-src/etags.c
@@ -366,6 +366,7 @@ #define xrnew(op, n, m) ((op) = xnrealloc (op, n, (m) * sizeof *(op)))
static void Prolog_functions (FILE *);
static void Python_functions (FILE *);
static void Ruby_functions (FILE *);
+static void Rust_functions (FILE *);
static void Scheme_functions (FILE *);
static void TeX_commands (FILE *);
static void Texinfo_nodes (FILE *);
@@ -752,6 +753,12 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
static const char *Ruby_interpreters [] =
{ "ruby", NULL };
+static const char *Rust_suffixes [] =
+ { "rs", NULL };
+static const char Rust_help [] =
+ "In Rust code, tags anything defined with 'fn', 'enum', \n\
+'struct' or 'macro_rules!'.";
+
/* Can't do the `SCM' or `scm' prefix with a version number. */
static const char *Scheme_suffixes [] =
{ "oak", "sch", "scheme", "SCM", "scm", "SM", "sm", "ss", "t", NULL };
@@ -836,6 +843,7 @@ #define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
NULL, Python_interpreters },
{ "ruby", Ruby_help, Ruby_functions, Ruby_suffixes,
Ruby_filenames, Ruby_interpreters },
+ { "rust", Rust_help, Rust_functions, Rust_suffixes },
{ "scheme", Scheme_help, Scheme_functions, Scheme_suffixes },
{ "tex", TeX_help, TeX_commands, TeX_suffixes },
{ "texinfo", Texinfo_help, Texinfo_nodes, Texinfo_suffixes },
@@ -5019,6 +5027,47 @@ Ruby_functions (FILE *inf)
}
}
+\f
+/*
+ * Rust support
+ * Look for:
+ * - fn: Function
+ * - struct: Structure
+ * - enum: Enumeration
+ * - macro_rules!: Macro
+ */
+static void
+Rust_functions (FILE *inf)
+{
+ char *cp, *name;
+
+ LOOP_ON_INPUT_LINES(inf, lb, cp)
+ {
+ cp = skip_spaces(cp);
+ name = cp;
+
+ // Skip 'pub' keyworld
+ (void)LOOKING_AT (cp, "pub");
+
+ // Look for define
+ if (LOOKING_AT (cp, "fn")
+ || LOOKING_AT (cp, "enum")
+ || LOOKING_AT (cp, "struct")
+ || LOOKING_AT (cp, "macro_rules!"))
+ {
+ cp = skip_spaces (cp);
+ name = cp;
+
+ while (!notinname (*cp))
+ cp++;
+
+ make_tag (name, cp - name, true,
+ lb.buffer, cp - lb.buffer + 1,
+ lineno, linecharno);
+ }
+ }
+}
+
\f
/*
* PHP support
--
2.29.2
next reply other threads:[~2021-01-23 19:01 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-23 19:01 Pierre-Antoine Rouby [this message]
2021-01-23 19:59 ` bug#46055: [PATCH] Add rust lang to etags Lars Ingebrigtsen
2021-01-23 20:23 ` Eli Zaretskii
2021-01-25 10:08 ` parouby
2021-01-25 10:09 ` Lars Ingebrigtsen
2021-04-21 3:19 ` Stefan Kangas
2021-04-21 8:54 ` Eli Zaretskii
2021-01-25 10:15 ` Pierre-Antoine Rouby
2021-01-25 14:33 ` Pierre-Antoine Rouby
2021-04-21 12:39 ` Stefan Kangas
2021-04-21 15:02 ` Francesco Potortì
2021-05-17 15:23 ` Lars Ingebrigtsen
2021-05-17 15:51 ` Eli Zaretskii
2021-05-17 16:08 ` Lars Ingebrigtsen
2021-05-17 16:14 ` Eli Zaretskii
2021-05-17 16:27 ` Lars Ingebrigtsen
2021-05-17 16:31 ` Lars Ingebrigtsen
2021-05-17 16:40 ` Eli Zaretskii
2021-05-18 13:44 ` Lars Ingebrigtsen
2021-05-20 10:03 ` Eli Zaretskii
2021-05-17 15:21 ` Lars Ingebrigtsen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20210123190143.29246-1-contact@parouby.fr \
--to=contact@parouby.fr \
--cc=46055@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).