GNU bug report logs - #19080
24.4; wish: enable show-paren-mode to highlight matching same-level keywords

Previous Next

Package: emacs;

Reported by: Josh Berdine <josh <at> berdine.net>

Date: Mon, 17 Nov 2014 14:03:03 UTC

Severity: wishlist

Tags: wontfix

Found in version 24.4

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 19080 in the body.
You can then email your comments to 19080 AT debbugs.gnu.org in the normal way.

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#19080; Package emacs. (Mon, 17 Nov 2014 14:03:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Josh Berdine <josh <at> berdine.net>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Mon, 17 Nov 2014 14:03:04 GMT) Full text and rfc822 format available.

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

From: Josh Berdine <josh <at> berdine.net>
To: bug-gnu-emacs <at> gnu.org
Subject: 24.4; wish: enable show-paren-mode to highlight matching same-level
 keywords
Date: Mon, 17 Nov 2014 11:34:43 +0000
emacs -Q
M-x load-file
~/.opam/4.02.1/share/tuareg/tuareg.el
M-x tuareg-mode
M-x show-paren-mode
let f () =
  let x = 0 in
  ()
C-u 17 C-b

This starts a fresh emacs, loads the tuareg mode, enables
show-paren-mode, enters some ocaml code, and puts the point on a 'let'
keyword.

In this situation, it would be helpful if the 'let' and corresponding
'in' were highlighted in 'show-paren-match-face'.  And similarly for
"fun", "if", "match", and "try".

See related discussion at
<https://github.com/ocaml/tuareg/issues/26#issuecomment-63101028>.




In GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.8)
 of 2014-11-11 on juniper, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.11501000
System Description:	Ubuntu 14.04.1 LTS

Configured using:
 `configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-lisp:/usr/share/emacs/site-lisp
 --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-lisp:/usr/share/emacs/site-lisp
 --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars
 'CFLAGS=-g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat
 -Werror=format-security -Wall' CPPFLAGS=-D_FORTIFY_SOURCE=2
 'LDFLAGS=-Wl,-Bsymbolic-functions -Wl,-z,relro''

Important settings:
  value of $LC_COLLATE: C
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Tuareg

Minor modes in effect:
  show-paren-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
M-x l o a d - f i l e <return> C-y <return> M-x t u 
a r e g - m o d e <return> M-x s h o w - p a r e n 
- m o d e <return> <help-echo> <help-echo> C-y C-u 
1 7 C-b M-x r e p o r t - e m <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Loading /home/jjb/.opam/4.02.1/share/tuareg/tuareg.el (source)...done
Show-Paren mode enabled

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
help-fns mail-prsvr mail-utils cus-start cus-load paren caml tuareg
speedbar sb-image ezimage dframe skeleton compile comint ansi-color ring
derived smie cl-macs easymenu cl gv cl-loaddefs cl-lib time-date tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 109132 5468)
 (symbols 48 20890 0)
 (miscs 40 45 136)
 (strings 32 17549 4306)
 (string-bytes 1 487656)
 (vectors 16 11154)
 (vector-slots 8 402826 5044)
 (floats 8 65 238)
 (intervals 56 286 0)
 (buffers 960 12)
 (heap 1024 17476 1105))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19080; Package emacs. (Thu, 12 May 2022 01:46:02 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Josh Berdine <josh <at> berdine.net>
Cc: 19080 <at> debbugs.gnu.org
Subject: Re: bug#19080: 24.4; wish: enable show-paren-mode to highlight
 matching same-level keywords
Date: Thu, 12 May 2022 03:44:43 +0200
Josh Berdine <josh <at> berdine.net> writes:

> emacs -Q
> M-x load-file
> ~/.opam/4.02.1/share/tuareg/tuareg.el
> M-x tuareg-mode
> M-x show-paren-mode
> let f () =
>   let x = 0 in
>   ()
> C-u 17 C-b
>
> This starts a fresh emacs, loads the tuareg mode, enables
> show-paren-mode, enters some ocaml code, and puts the point on a 'let'
> keyword.
>
> In this situation, it would be helpful if the 'let' and corresponding
> 'in' were highlighted in 'show-paren-match-face'.  And similarly for
> "fun", "if", "match", and "try".

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

I think this is rather beyond the scope of show-paren-mode (which is a
pretty simple mode that just blinks parentheses, and not much more).  A
new different mode that relies on language semantics to identify these
things would be nice, but I don't think there's anything actionable to
be done here, so I'm closing this bug report.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Added tag(s) wontfix. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 12 May 2022 01:46:03 GMT) Full text and rfc822 format available.

bug closed, send any further explanations to 19080 <at> debbugs.gnu.org and Josh Berdine <josh <at> berdine.net> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Thu, 12 May 2022 01:46:03 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19080; Package emacs. (Thu, 12 May 2022 05:37:01 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Lars Ingebrigtsen <larsi <at> gnus.org>, Yuan Fu <casouri <at> gmail.com>
Cc: 19080 <at> debbugs.gnu.org, josh <at> berdine.net
Subject: Re: bug#19080: 24.4;
 wish: enable show-paren-mode to highlight matching same-level keywords
Date: Thu, 12 May 2022 08:36:18 +0300
> Cc: 19080 <at> debbugs.gnu.org
> From: Lars Ingebrigtsen <larsi <at> gnus.org>
> Date: Thu, 12 May 2022 03:44:43 +0200
> 
> > This starts a fresh emacs, loads the tuareg mode, enables
> > show-paren-mode, enters some ocaml code, and puts the point on a 'let'
> > keyword.
> >
> > In this situation, it would be helpful if the 'let' and corresponding
> > 'in' were highlighted in 'show-paren-match-face'.  And similarly for
> > "fun", "if", "match", and "try".
> 
> (I'm going through old bug reports that unfortunately weren't resolved
> at the time.)
> 
> I think this is rather beyond the scope of show-paren-mode (which is a
> pretty simple mode that just blinks parentheses, and not much more).

Indeed.

> A new different mode that relies on language semantics to identify
> these things would be nice, but I don't think there's anything
> actionable to be done here, so I'm closing this bug report.

We could perhaps add a new feature, based on tree-sitter, to highlight
a block of code, where the block is defined by PL rules, not by
parens, braces, and similar simple syntactic elements.

Yuan, WDYT?  Can this be added to the tree-sitter branch perhaps?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19080; Package emacs. (Thu, 12 May 2022 22:53:01 GMT) Full text and rfc822 format available.

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

From: Yuan Fu <casouri <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 19080 <at> debbugs.gnu.org, Lars Ingebrigtsen <larsi <at> gnus.org>, josh <at> berdine.net
Subject: Re: bug#19080: 24.4; wish: enable show-paren-mode to highlight
 matching same-level keywords
Date: Thu, 12 May 2022 15:52:14 -0700

> On May 11, 2022, at 10:36 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
>> Cc: 19080 <at> debbugs.gnu.org
>> From: Lars Ingebrigtsen <larsi <at> gnus.org>
>> Date: Thu, 12 May 2022 03:44:43 +0200
>> 
>>> This starts a fresh emacs, loads the tuareg mode, enables
>>> show-paren-mode, enters some ocaml code, and puts the point on a 'let'
>>> keyword.
>>> 
>>> In this situation, it would be helpful if the 'let' and corresponding
>>> 'in' were highlighted in 'show-paren-match-face'.  And similarly for
>>> "fun", "if", "match", and "try".
>> 
>> (I'm going through old bug reports that unfortunately weren't resolved
>> at the time.)
>> 
>> I think this is rather beyond the scope of show-paren-mode (which is a
>> pretty simple mode that just blinks parentheses, and not much more).
> 
> Indeed.
> 
>> A new different mode that relies on language semantics to identify
>> these things would be nice, but I don't think there's anything
>> actionable to be done here, so I'm closing this bug report.
> 
> We could perhaps add a new feature, based on tree-sitter, to highlight
> a block of code, where the block is defined by PL rules, not by
> parens, braces, and similar simple syntactic elements.
> 
> Yuan, WDYT?  Can this be added to the tree-sitter branch perhaps?

That sounds interesting, and it should be easy. But what do we want the API be? First of all, should we make a separate mode or extend show-paren-mode? Extending show-paren-mode entails doing some non-trivial refactoring to paren.el. That is also kind of the situation for many existing packages, I think, that adding tree-sitter “backend” needs refactoring existing code non-trivially.

Yuan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19080; Package emacs. (Fri, 13 May 2022 05:53:02 GMT) Full text and rfc822 format available.

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

From: Eli Zaretskii <eliz <at> gnu.org>
To: Yuan Fu <casouri <at> gmail.com>
Cc: 19080 <at> debbugs.gnu.org, larsi <at> gnus.org, josh <at> berdine.net
Subject: Re: bug#19080: 24.4; wish: enable show-paren-mode to highlight
 matching same-level keywords
Date: Fri, 13 May 2022 08:52:50 +0300
> From: Yuan Fu <casouri <at> gmail.com>
> Date: Thu, 12 May 2022 15:52:14 -0700
> Cc: Lars Ingebrigtsen <larsi <at> gnus.org>,
>  josh <at> berdine.net,
>  19080 <at> debbugs.gnu.org
> 
> > We could perhaps add a new feature, based on tree-sitter, to highlight
> > a block of code, where the block is defined by PL rules, not by
> > parens, braces, and similar simple syntactic elements.
> > 
> > Yuan, WDYT?  Can this be added to the tree-sitter branch perhaps?
> 
> That sounds interesting, and it should be easy. But what do we want the API be? First of all, should we make a separate mode or extend show-paren-mode? Extending show-paren-mode entails doing some non-trivial refactoring to paren.el.

IMO, it should be a separate minor mode; show-paren-mode is not
necessarily about program blocks, since parentheses appear not only
(and mostly not) as block delimiters.

The API should be probably: given a buffer POSITION, return the 2
positions of the innermost enclosing block, or nil if POSITION is not
in any block.  A possible extension could be to return a list of
position pairs that provide also the blocks enclosed inside the
POSITION's block.

> I think, that adding tree-sitter “backend” needs refactoring existing code non-trivially.

If show-paren-mode would want to use tree-sitter, it will need
refactoring, yes.  Which other packages you envision could benefit
from using tree-sitter?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19080; Package emacs. (Fri, 13 May 2022 11:49:02 GMT) Full text and rfc822 format available.

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

From: Josh Berdine <josh <at> berdine.net>
To: Eli Zaretskii <eliz <at> gnu.org>, Lars Ingebrigtsen <larsi <at> gnus.org>,
 Yuan Fu <casouri <at> gmail.com>
Cc: 19080 <at> debbugs.gnu.org
Subject: Re: bug#19080: 24.4; wish: enable show-paren-mode to highlight
 matching same-level keywords
Date: Fri, 13 May 2022 12:48:25 +0100
>> I think, that adding tree-sitter “backend” needs refactoring existing code non-trivially.
> 
> If show-paren-mode would want to use tree-sitter, it will need
> refactoring, yes.  Which other packages you envision could benefit
> from using tree-sitter?

For some context, this originally came up in discussion of
https://github.com/ocaml/tuareg/issues/26 and the related https://debbugs.gnu.org/cgi/bugreport.cgi?bug=19079 . This issue is about incorrect highlighting due to an smie bug, which tuareg-mode uses. As far as I understand, the incorrect highlighting prevents implementing navigation functions e.g. from a `let` to the matching `in`. I expect that tree-sitter can have a better understanding of the actual code structure than smie, and so tuareg-mode would be a package that could benefit. There is an ocaml (the language tuareg-mode supports) grammar for tree-sitter. I don't have the expertise to volunteer to work on that though.



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19080; Package emacs. (Sat, 14 May 2022 05:06:02 GMT) Full text and rfc822 format available.

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

From: Yuan Fu <casouri <at> gmail.com>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 19080 <at> debbugs.gnu.org, larsi <at> gnus.org, josh <at> berdine.net
Subject: Re: bug#19080: 24.4; wish: enable show-paren-mode to highlight
 matching same-level keywords
Date: Fri, 13 May 2022 22:05:51 -0700

> On May 12, 2022, at 10:52 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
>> From: Yuan Fu <casouri <at> gmail.com>
>> Date: Thu, 12 May 2022 15:52:14 -0700
>> Cc: Lars Ingebrigtsen <larsi <at> gnus.org>,
>> josh <at> berdine.net,
>> 19080 <at> debbugs.gnu.org
>> 
>>> We could perhaps add a new feature, based on tree-sitter, to highlight
>>> a block of code, where the block is defined by PL rules, not by
>>> parens, braces, and similar simple syntactic elements.
>>> 
>>> Yuan, WDYT?  Can this be added to the tree-sitter branch perhaps?
>> 
>> That sounds interesting, and it should be easy. But what do we want the API be? First of all, should we make a separate mode or extend show-paren-mode? Extending show-paren-mode entails doing some non-trivial refactoring to paren.el.
> 
> IMO, it should be a separate minor mode; show-paren-mode is not
> necessarily about program blocks, since parentheses appear not only
> (and mostly not) as block delimiters.

Cool! I can do whatever I want then ;-)

> 
> The API should be probably: given a buffer POSITION, return the 2
> positions of the innermost enclosing block, or nil if POSITION is not
> in any block.  A possible extension could be to return a list of
> position pairs that provide also the blocks enclosed inside the
> POSITION's block.

Ok.

> 
>> I think, that adding tree-sitter “backend” needs refactoring existing code non-trivially.
> 
> If show-paren-mode would want to use tree-sitter, it will need
> refactoring, yes.  Which other packages you envision could benefit
> from using tree-sitter?

I remember looking at some structured editing tool, but I can’t think of one on top of my head :-(

Yuan



Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#19080; Package emacs. (Sat, 14 May 2022 08:01:01 GMT) Full text and rfc822 format available.

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

From: Visuwesh <visuweshm <at> gmail.com>
To: Yuan Fu <casouri <at> gmail.com>
Cc: 19080 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>, larsi <at> gnus.org,
 josh <at> berdine.net
Subject: Re: bug#19080: 24.4; wish: enable show-paren-mode to highlight
 matching same-level keywords
Date: Sat, 14 May 2022 13:30:14 +0530
[வெள்ளி மே 13, 2022] Yuan Fu wrote:

>> On May 12, 2022, at 10:52 PM, Eli Zaretskii <eliz <at> gnu.org> wrote:
>> 
>> [...]
>> 
>>> I think, that adding tree-sitter “backend” needs refactoring
>>> existing code non-trivially.
>> 
>> If show-paren-mode would want to use tree-sitter, it will need
>> refactoring, yes.  Which other packages you envision could benefit
>> from using tree-sitter?
>
> I remember looking at some structured editing tool, but I can’t think
> of one on top of my head :-(
>

I at least know of two:

    1. https://github.com/mickeynp/combobulate
    2. https://github.com/meain/evil-textobj-tree-sitter/

> Yuan




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sat, 11 Jun 2022 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 292 days ago.

Previous Next


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