GNU bug report logs - #70657
[PATCH] Add go-ts-mode font-locking for function var decls

Previous Next

Package: emacs;

Reported by: Noah Peart <noah.v.peart <at> gmail.com>

Date: Mon, 29 Apr 2024 23:24:02 UTC

Severity: normal

Tags: patch

Done: Randy Taylor <dev <at> rjt.dev>

To reply to this bug, email your comments to 70657 AT debbugs.gnu.org.
There is no need to reopen the bug first.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#70657; Package emacs. (Mon, 29 Apr 2024 23:24:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Noah Peart <noah.v.peart <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 29 Apr 2024 23:24:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Noah Peart <noah.v.peart <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: [PATCH] Add go-ts-mode font-locking for function var decls
Date: Mon, 29 Apr 2024 16:22:42 -0700
[Message part 1 (text/plain, inline)]
Tags: patch


Adds font-locking for functions in go-ts-mode declared in var specs.

Currently, all the identifiers in var specs are given
font-lock-variable-name-face font-locking.

This patch adds a rule to give identifiers in var specs
font-lock-function-name-face when they are function types.

For example, the following test is included in the patch, showing where
font-lock-function-name is applied:

var x, y, z int
//    ^ font-lock-variable-name-face
//        ^ font-lock-variable-name-face
//                ^ font-lock-type-face
var foo, bar func(x int) int
//     ^ font-lock-function-name-face
//             ^ font-lock-function-name-face
//                         ^ font-lock-variable-name-face
//                             ^ font-lock-type-face
//                                   ^ font-lock-type-face


In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.33, cairo version 1.16.0) of 2024-04-29 built on noah-X580VD
Repository revision: 3000edc6179dfe0b5f24ae2e472826530809dfd1
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Ubuntu 22.04.4 LTS

Configured using:
 'configure --prefix=/usr/local --with-modules --with-tree-sitter
--with-threads --with-x-toolkit=gtk3 --with-xwidgets --with-gnutls
--with-json --with-mailutils --with-jpeg --with-png --with-rsvg
--with-tiff --with-xml2 --with-xpm --with-imagemagick CC=gcc-12
CXX=gcc-12'
[Message part 2 (text/html, inline)]
[0001-Add-go-ts-mode-font-locking-for-function-var-decls.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70657; Package emacs. (Wed, 01 May 2024 02:40:01 GMT) Full text and rfc822 format available.

Message #8 received at 70657 <at> debbugs.gnu.org (full text, mbox):

From: Randy Taylor <dev <at> rjt.dev>
To: Noah Peart <noah.v.peart <at> gmail.com>
Cc: 70657 <at> debbugs.gnu.org
Subject: Re: bug#70657: [PATCH] Add go-ts-mode font-locking for function var
 decls
Date: Wed, 01 May 2024 02:38:43 +0000
On Monday, April 29th, 2024 at 19:22, Noah Peart <noah.v.peart <at> gmail.com> wrote:
> Tags: patch
> 
> 
> Adds font-locking for functions in go-ts-mode declared in var specs.
> 
> Currently, all the identifiers in var specs are given
> font-lock-variable-name-face font-locking.
> 
> This patch adds a rule to give identifiers in var specs
> font-lock-function-name-face when they are function types.
> 
> For example, the following test is included in the patch, showing where
> font-lock-function-name is applied:
> 
> var x, y, z int
> // ^ font-lock-variable-name-face
> // ^ font-lock-variable-name-face
> // ^ font-lock-type-face
> var foo, bar func(x int) int
> // ^ font-lock-function-name-face
> // ^ font-lock-function-name-face
> // ^ font-lock-variable-name-face
> // ^ font-lock-type-face
> // ^ font-lock-type-face

Thanks for working on this.

I'm not sure we want to do this though, since they are still variables.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70657; Package emacs. (Thu, 02 May 2024 04:32:01 GMT) Full text and rfc822 format available.

Message #11 received at 70657 <at> debbugs.gnu.org (full text, mbox):

From: Yuan Fu <casouri <at> gmail.com>
To: Randy Taylor <dev <at> rjt.dev>
Cc: Noah Peart <noah.v.peart <at> gmail.com>, 70657 <at> debbugs.gnu.org
Subject: Re: bug#70657: [PATCH] Add go-ts-mode font-locking for function var
 decls
Date: Wed, 1 May 2024 21:31:00 -0700

> On Apr 30, 2024, at 7:38 PM, Randy Taylor <dev <at> rjt.dev> wrote:
> 
> On Monday, April 29th, 2024 at 19:22, Noah Peart <noah.v.peart <at> gmail.com> wrote:
>> Tags: patch
>> 
>> 
>> Adds font-locking for functions in go-ts-mode declared in var specs.
>> 
>> Currently, all the identifiers in var specs are given
>> font-lock-variable-name-face font-locking.
>> 
>> This patch adds a rule to give identifiers in var specs
>> font-lock-function-name-face when they are function types.
>> 
>> For example, the following test is included in the patch, showing where
>> font-lock-function-name is applied:
>> 
>> var x, y, z int
>> // ^ font-lock-variable-name-face
>> // ^ font-lock-variable-name-face
>> // ^ font-lock-type-face
>> var foo, bar func(x int) int
>> // ^ font-lock-function-name-face
>> // ^ font-lock-function-name-face
>> // ^ font-lock-variable-name-face
>> // ^ font-lock-type-face
>> // ^ font-lock-type-face
> 
> Thanks for working on this.
> 
> I'm not sure we want to do this though, since they are still variables.
> 

Yes, thanks for working on this, Noah!

I don’t know Go enough to tell. Do we know how does other editors fontify this statement? Or maybe we can look at how does the official documentation highlight their code?

Yuan



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#70657; Package emacs. (Thu, 02 May 2024 10:29:01 GMT) Full text and rfc822 format available.

Message #14 received at 70657 <at> debbugs.gnu.org (full text, mbox):

From: Noah Peart <noah.v.peart <at> gmail.com>
To: Yuan Fu <casouri <at> gmail.com>
Cc: Randy Taylor <dev <at> rjt.dev>, 70657 <at> debbugs.gnu.org
Subject: Re: bug#70657: [PATCH] Add go-ts-mode font-locking for function var
 decls
Date: Thu, 2 May 2024 03:27:33 -0700
[Message part 1 (text/plain, inline)]
> Do we know how does other editors fontify this statement? Or maybe we can
look
> at how does the official documentation highlight their code?

From what I can tell, both neovim and vscode give them variable
font-locking (basic vim doesnt
give them any font).  The syntax highlighting is very basic in the official
docs I looked at (just the repl in Tour of Go), not
giving variables any highlight.

They are variables with function values like Randy said, and looking now at
other languages
it seems like they all give variable font-locking to named closures (eg.
rust-ts-mode, lambdas in ruby-ts-mode).

> I'm not sure we want to do this though, since they are still variables.

Sounds good, thanks for taking a look.


On Wed, May 1, 2024 at 9:31 PM Yuan Fu <casouri <at> gmail.com> wrote:

>
>
> > On Apr 30, 2024, at 7:38 PM, Randy Taylor <dev <at> rjt.dev> wrote:
> >
> > On Monday, April 29th, 2024 at 19:22, Noah Peart <noah.v.peart <at> gmail.com>
> wrote:
> >> Tags: patch
> >>
> >>
> >> Adds font-locking for functions in go-ts-mode declared in var specs.
> >>
> >> Currently, all the identifiers in var specs are given
> >> font-lock-variable-name-face font-locking.
> >>
> >> This patch adds a rule to give identifiers in var specs
> >> font-lock-function-name-face when they are function types.
> >>
> >> For example, the following test is included in the patch, showing where
> >> font-lock-function-name is applied:
> >>
> >> var x, y, z int
> >> // ^ font-lock-variable-name-face
> >> // ^ font-lock-variable-name-face
> >> // ^ font-lock-type-face
> >> var foo, bar func(x int) int
> >> // ^ font-lock-function-name-face
> >> // ^ font-lock-function-name-face
> >> // ^ font-lock-variable-name-face
> >> // ^ font-lock-type-face
> >> // ^ font-lock-type-face
> >
> > Thanks for working on this.
> >
> > I'm not sure we want to do this though, since they are still variables.
> >
>
> Yes, thanks for working on this, Noah!
>
> I don’t know Go enough to tell. Do we know how does other editors fontify
> this statement? Or maybe we can look at how does the official documentation
> highlight their code?
>
> Yuan
[Message part 2 (text/html, inline)]

Reply sent to Randy Taylor <dev <at> rjt.dev>:
You have taken responsibility. (Thu, 09 May 2024 00:31:02 GMT) Full text and rfc822 format available.

Notification sent to Noah Peart <noah.v.peart <at> gmail.com>:
bug acknowledged by developer. (Thu, 09 May 2024 00:31:02 GMT) Full text and rfc822 format available.

Message #19 received at 70657-done <at> debbugs.gnu.org (full text, mbox):

From: Randy Taylor <dev <at> rjt.dev>
To: Noah Peart <noah.v.peart <at> gmail.com>
Cc: Yuan Fu <casouri <at> gmail.com>,
 "70657-done <at> debbugs.gnu.org" <70657-done <at> debbugs.gnu.org>
Subject: Re: bug#70657: [PATCH] Add go-ts-mode font-locking for function var
 decls
Date: Thu, 09 May 2024 00:30:14 +0000
On Thursday, May 2nd, 2024 at 06:27, Noah Peart <noah.v.peart <at> gmail.com> wrote:
> > Do we know how does other editors fontify this statement? Or maybe we can look
> > at how does the official documentation highlight their code?
> 
> From what I can tell, both neovim and vscode give them variable font-locking (basic vim doesnt
> give them any font). The syntax highlighting is very basic in the official docs I looked at (just the repl in Tour of Go), not
> giving variables any highlight.
> 
> They are variables with function values like Randy said, and looking now at other languages
> it seems like they all give variable font-locking to named closures (eg. rust-ts-mode, lambdas in ruby-ts-mode).
> 
> > I'm not sure we want to do this though, since they are still variables.
> 
> Sounds good, thanks for taking a look.

Closing.




This bug report was last modified 8 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.