From: Noah Peart <noah.v.peart@gmail.com>
To: Vladimir Kazanov <vekazanov@gmail.com>
Cc: Yuan Fu <casouri@gmail.com>, 70464@debbugs.gnu.org
Subject: bug#70464: [PATCH] Add font-locking for Rust macro variables
Date: Fri, 19 Apr 2024 10:38:07 -0700 [thread overview]
Message-ID: <CAPVBTSeOOPCkYRD6F_9B=gXSXPScy-gddvbbTBgd8Y5JmdLo_g@mail.gmail.com> (raw)
In-Reply-To: <CAPVBTSdOqXzZKEmmKB6GEEdN4ac0c44tGNU_PbGmLsmJuiyVaw@mail.gmail.com>
[-- Attachment #1.1: Type: text/plain, Size: 2627 bytes --]
I've attached a patch with font-locking tests for the recent additions
in (bug#70464) and (bug#70465). So, it will fail without those being
merged.
Thanks!
On Fri, Apr 19, 2024 at 9:44 AM Noah Peart <noah.v.peart@gmail.com> wrote:
> Sounds good!
>
> > If you’re interested, maybe you can take a look at ert-font-lock, and
> add some tests that cover the bugs your patches fixes?
>
> Sure thing, Ill look into that.
>
> On Fri, Apr 19, 2024 at 1:02 AM Vladimir Kazanov <vekazanov@gmail.com>
> wrote:
>
>> Noah,
>>
>> ...and if you decide to add ert-font-lock tests and something is not
>> working as expected - let me know, happy to fix or extend
>> ert-font-lock.
>>
>> Thanks!
>>
>> On Fri, 19 Apr 2024 at 08:42, Yuan Fu <casouri@gmail.com> wrote:
>> >
>> >
>> > Noah Peart <noah.v.peart@gmail.com> writes:
>> >
>> > > Tags: patch
>> > >
>> > > Adds some tree-sitter font-locking rules in rust-ts-mode to fontify
>> > > meta variables, their types, and repetition operators in macros.
>> > >
>> > > These rules add new font-locking as indicated in the following
>> > > snippet:
>> > >
>> > > macro_rules! unsafe_raw_call {
>> > > ($env:expr, $name:ident $(, $args:expr)*) => {
>> > > // ^ font-lock-variable-name-face
>> > > // ^ font-lock-type-face
>> > > // ^
>> font-lock-operator-face
>> > > //
>> ^ font-lock-operator-face
>> > > {
>> > > let env = $env;
>> > > // ^ font-lock-variable-use-face
>> > > let result = unsafe {
>> > > let $name = raw_fn!(env, $name);
>> > > $name(env.raw $(, $args)*)
>> > > };
>> > > env.handle_exit(result)
>> > > }
>> > > };
>> > > }
>> > >
>> > > I also removed the last occurrence of the following duplicated rule
>> from the `type` feature:
>> > > (type_identifier) @font-lock-type-face
>> > >
>> >
>> > Great! Thanks! I’ll merge this in some time once I figure out whether
>> > should we apply it to emacs-29 or master.
>> >
>> > Meanwhile, it seems that you’ve recently working on tree-sitter modes.
>> > If you’re interested, maybe you can take a look at ert-font-lock, and
>> > add some tests that cover the bugs your patches fixes? This is
>> > completely optional, of course. I bought it up because I think you might
>> > be interested.
>> >
>> > Yuan
>> >
>> >
>> >
>>
>>
>> --
>> Regards,
>>
>> Vladimir Kazanov
>>
>
[-- Attachment #1.2: Type: text/html, Size: 3930 bytes --]
[-- Attachment #2: 0001-Add-rust-ts-mode-font-locking-tests.patch --]
[-- Type: text/x-patch, Size: 3414 bytes --]
From a090b6dc06d43ec5904db0028710d00c2a0e7acb Mon Sep 17 00:00:00 2001
From: Noah Peart <noah.v.peart@gmail.com>
Date: Fri, 19 Apr 2024 10:27:10 -0700
Subject: [PATCH] Add rust-ts-mode font-locking tests
* test/lisp/progmodes/rust-ts-mode-tests.el: New file for
rust-ts-mode tests.
* test/lisp/progmodes/rust-ts-mode-resources/font-lock.rs: New
file with rust-ts-mode font-locking tests. New tests added for
macro font-locking (bug#70464) and function signatures
(bug#70465).
---
.../rust-ts-mode-resources/font-lock.rs | 25 ++++++++++++++
test/lisp/progmodes/rust-ts-mode-tests.el | 34 +++++++++++++++++++
2 files changed, 59 insertions(+)
create mode 100644 test/lisp/progmodes/rust-ts-mode-resources/font-lock.rs
create mode 100644 test/lisp/progmodes/rust-ts-mode-tests.el
diff --git a/test/lisp/progmodes/rust-ts-mode-resources/font-lock.rs b/test/lisp/progmodes/rust-ts-mode-resources/font-lock.rs
new file mode 100644
index 00000000000..377cda0e3b9
--- /dev/null
+++ b/test/lisp/progmodes/rust-ts-mode-resources/font-lock.rs
@@ -0,0 +1,25 @@
+// -*- rust-ts-mode-indent-offset: 0 -*-
+// Trait with function signature
+trait Foo {
+ fn foo();
+// ^ font-lock-function-name-face
+}
+
+// Macros
+macro_rules! unsafe_foo {
+ ($env:expr, $name:ident $(, $args:expr)*) => {
+// ^ font-lock-variable-name-face
+// ^ font-lock-type-face
+// ^ font-lock-variable-name-face
+// ^ font-lock-type-face
+// ^ font-lock-operator-face
+// ^ font-lock-variable-name-face
+// ^ font-lock-type-face
+// ^ font-lock-operator-face
+ {
+ foo!($env, $name $(, $args)*);
+// ^ font-lock-variable-use-face
+// ^ font-lock-operator-face
+// ^ font-lock-operator-face
+ }
+ };
diff --git a/test/lisp/progmodes/rust-ts-mode-tests.el b/test/lisp/progmodes/rust-ts-mode-tests.el
new file mode 100644
index 00000000000..f718a57fc9e
--- /dev/null
+++ b/test/lisp/progmodes/rust-ts-mode-tests.el
@@ -0,0 +1,34 @@
+;;; rust-ts-mode-tests.el --- Tests for rust-ts-mode -*- lexical-binding: t; -*-
+
+;; Copyright (C) 2023-2024 Free Software Foundation, Inc.
+
+;; This file is part of GNU Emacs.
+
+;; GNU Emacs is free software: you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; GNU Emacs is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'ert)
+(require 'ert-font-lock)
+(require 'ert-x)
+(require 'treesit)
+
+(ert-deftest rust-ts-test-font-lock ()
+ (skip-unless (treesit-ready-p 'rust))
+ (let ((treesit-font-lock-level 4))
+ (ert-font-lock-test-file (ert-resource-file "font-lock.rs") 'rust-ts-mode)))
+
+(provide 'rust-ts-mode-tests)
+
+;;; rust-ts-mode-tests.el ends here
--
2.34.1
next prev parent reply other threads:[~2024-04-19 17:38 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-19 1:42 bug#70464: [PATCH] Add font-locking for Rust macro variables Noah Peart
2024-04-19 7:41 ` Yuan Fu
2024-04-19 8:02 ` Vladimir Kazanov
2024-04-19 16:44 ` Noah Peart
2024-04-19 17:38 ` Noah Peart [this message]
2024-04-22 5:00 ` Yuan Fu
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAPVBTSeOOPCkYRD6F_9B=gXSXPScy-gddvbbTBgd8Y5JmdLo_g@mail.gmail.com' \
--to=noah.v.peart@gmail.com \
--cc=70464@debbugs.gnu.org \
--cc=casouri@gmail.com \
--cc=vekazanov@gmail.com \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.