unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dmitry@gutov.dev>
To: Denis Zubarev <dvzubarev@yandex.ru>, Eli Zaretskii <eliz@gnu.org>
Cc: "casouri@gmail.com" <casouri@gmail.com>,
	"67061@debbugs.gnu.org" <67061@debbugs.gnu.org>
Subject: bug#67061: [PATCH] Improve syntax highlighting for python-ts-mode
Date: Mon, 11 Dec 2023 02:00:57 +0200	[thread overview]
Message-ID: <0c6e2e14-b494-a8cb-3893-ffb39577baf9@gutov.dev> (raw)
In-Reply-To: <212931702208489@mail.yandex.ru>

On 10/12/2023 14:04, Denis Zubarev wrote:
>  > Arguably, the last 2 lines are "variable references" rather than 
> definitions
> `var := 3`  is assignment expressions. It allows variable assignments to 
> occur inside of larger expressions. For example `if (match := 
> pattern.search(data)) is not None:`.
> It mostly used to define new variables and act on them if some condition 
> is met.

Ah, thanks! This feature is newer than my working experience with Python.

> My rationale for `var *= 3` was that it is shorthand for `var = var * 3` 
> and currently the `var` on the left hand side is fontified with 
> `font-lock-variable-name-face`.

I think ideally, in cases when "var =" is not the first occurrence for 
the same var in a given scope, we wouldn't highlight it as "definition" 
either.

Speaking of font-lock-variable-use-face, I think it would be most useful 
if it helped with noticing typos (meaning, it would only be used for 
references to variables that have been defined previously, according to 
the rules of the language). But for that we still need to implement the 
scope tracking. And before that, well, my personal preference is not to 
highlight the references at all, but opinions differ.

> I wanted shorthand form to be consistent with the full form.
> Your point makes sense too, I don't have strong opinion about this.
> Also I'm not sure now about `var[ii] = 1`, since it is actually 
> accessing the list or dictionary element and 
> `font-lock-variable-use-face` may suit better here.

Yep. To sum up, I would add highlighting to your examples `for var in 
range(3)` and `var := 3` but not others.

> Question about new changes.
> Should I push them to this patch and provide description of new changes,
> or it would be better to wait for review and send them as new patch?

I suggest sending an updated patch for review in this case, but you can 
also wait for Yuan's comments first.

Also, please double-check that the tests pass. It might be something in 
the way I applied your latest patch, but in the example that you gave 
regarding the "type" feature,

   def func(v:dict[ list[ tuple[str] ], int | None] | None):

, only the last "None" gets highlighted for me with font-lock-type-face. 
There are corresponding test failures too. Again, could be something on 
my side, but it would help to verify.





  reply	other threads:[~2023-12-11  0:00 UTC|newest]

Thread overview: 54+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-11  2:21 bug#67061: [PATCH] Improve syntax highlighting for python-ts-mode Denis Zubarev
2023-11-11  7:32 ` Eli Zaretskii
2023-11-11 10:52   ` Denis Zubarev
2023-11-11 11:00     ` Eli Zaretskii
2023-11-11 12:09       ` Denis Zubarev
2023-11-26  2:12       ` Dmitry Gutov
2023-11-15 13:28   ` Eli Zaretskii
2023-11-25  9:35     ` Eli Zaretskii
2023-11-26  2:17       ` Dmitry Gutov
2023-11-29 14:05         ` Eli Zaretskii
2023-12-09  0:39           ` Denis Zubarev
2023-12-09  7:32             ` Eli Zaretskii
2023-12-10 10:16               ` Yuan Fu
2023-12-09 18:18             ` Dmitry Gutov
2023-12-10 12:04               ` Denis Zubarev
2023-12-11  0:00                 ` Dmitry Gutov [this message]
2023-12-11  7:10                   ` Yuan Fu
2023-12-11 12:02                     ` Dmitry Gutov
2023-12-12  1:18                     ` Denis Zubarev
2023-12-12  8:24                       ` Yuan Fu
2023-12-13  0:44                         ` Dmitry Gutov
2023-12-13  3:49                           ` Yuan Fu
2023-12-13 18:28                             ` Dmitry Gutov
2023-12-14  5:54                               ` Yuan Fu
2023-12-14 11:51                                 ` Dmitry Gutov
2023-12-17  1:07                                   ` Yuan Fu
2023-12-17 21:36                                     ` Dmitry Gutov
2023-12-23 21:46                                     ` Denis Zubarev
2023-12-16 13:03                                 ` Eli Zaretskii
2023-12-17  1:56                               ` Denis Zubarev
2023-12-17 23:38                                 ` Dmitry Gutov
2023-12-13 11:52                         ` Eli Zaretskii
2023-12-17  0:26                         ` Denis Zubarev
2023-12-17  1:10                           ` Yuan Fu
2023-12-17  2:07                             ` Denis Zubarev
2023-12-23  9:42                               ` Eli Zaretskii
2023-12-30 10:53                                 ` Denis Zubarev
2023-12-30 11:19                                   ` Eli Zaretskii
2023-12-18  0:25                           ` Dmitry Gutov
2023-12-19  0:14                             ` Denis Zubarev
2023-12-20 23:34                               ` Dmitry Gutov
2023-12-21  7:04                                 ` Yuan Fu
2023-12-23 21:45                                 ` Denis Zubarev
2024-01-01 17:42                                   ` Dmitry Gutov
2024-01-09 20:03                                     ` Eli Zaretskii
2024-01-20  9:08                                       ` Eli Zaretskii
2024-01-27  9:49                                         ` Eli Zaretskii
2024-01-27 10:47                                           ` Denis Zubarev
2024-01-27 11:30                                             ` Eli Zaretskii
2023-12-13 21:16         ` Stefan Kangas
2023-12-14  1:31           ` Dmitry Gutov
2023-12-14 22:49             ` Stefan Kangas
2023-12-15  7:14               ` Yuan Fu
2023-12-11  6:53 ` 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

  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=0c6e2e14-b494-a8cb-3893-ffb39577baf9@gutov.dev \
    --to=dmitry@gutov.dev \
    --cc=67061@debbugs.gnu.org \
    --cc=casouri@gmail.com \
    --cc=dvzubarev@yandex.ru \
    --cc=eliz@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).