unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
@ 2014-11-17 11:34 Josh Berdine
  2022-05-12  1:44 ` Lars Ingebrigtsen
  0 siblings, 1 reply; 8+ messages in thread
From: Josh Berdine @ 2014-11-17 11:34 UTC (permalink / raw)
  To: 19080


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))





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
  2014-11-17 11:34 bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords Josh Berdine
@ 2022-05-12  1:44 ` Lars Ingebrigtsen
  2022-05-12  5:36   ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Lars Ingebrigtsen @ 2022-05-12  1:44 UTC (permalink / raw)
  To: Josh Berdine; +Cc: 19080

Josh Berdine <josh@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





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
  2022-05-12  1:44 ` Lars Ingebrigtsen
@ 2022-05-12  5:36   ` Eli Zaretskii
  2022-05-12 22:52     ` Yuan Fu
  0 siblings, 1 reply; 8+ messages in thread
From: Eli Zaretskii @ 2022-05-12  5:36 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Yuan Fu; +Cc: 19080, josh

> Cc: 19080@debbugs.gnu.org
> From: Lars Ingebrigtsen <larsi@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?





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
  2022-05-12  5:36   ` Eli Zaretskii
@ 2022-05-12 22:52     ` Yuan Fu
  2022-05-13  5:52       ` Eli Zaretskii
  0 siblings, 1 reply; 8+ messages in thread
From: Yuan Fu @ 2022-05-12 22:52 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19080, Lars Ingebrigtsen, josh



> On May 11, 2022, at 10:36 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> Cc: 19080@debbugs.gnu.org
>> From: Lars Ingebrigtsen <larsi@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






^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
  2022-05-12 22:52     ` Yuan Fu
@ 2022-05-13  5:52       ` Eli Zaretskii
  2022-05-13 11:48         ` Josh Berdine
  2022-05-14  5:05         ` Yuan Fu
  0 siblings, 2 replies; 8+ messages in thread
From: Eli Zaretskii @ 2022-05-13  5:52 UTC (permalink / raw)
  To: Yuan Fu; +Cc: 19080, larsi, josh

> From: Yuan Fu <casouri@gmail.com>
> Date: Thu, 12 May 2022 15:52:14 -0700
> Cc: Lars Ingebrigtsen <larsi@gnus.org>,
>  josh@berdine.net,
>  19080@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?





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
  2022-05-13  5:52       ` Eli Zaretskii
@ 2022-05-13 11:48         ` Josh Berdine
  2022-05-14  5:05         ` Yuan Fu
  1 sibling, 0 replies; 8+ messages in thread
From: Josh Berdine @ 2022-05-13 11:48 UTC (permalink / raw)
  To: Eli Zaretskii, Lars Ingebrigtsen, Yuan Fu; +Cc: 19080

>> 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.




^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
  2022-05-13  5:52       ` Eli Zaretskii
  2022-05-13 11:48         ` Josh Berdine
@ 2022-05-14  5:05         ` Yuan Fu
  2022-05-14  8:00           ` Visuwesh
  1 sibling, 1 reply; 8+ messages in thread
From: Yuan Fu @ 2022-05-14  5:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 19080, larsi, josh



> On May 12, 2022, at 10:52 PM, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: Yuan Fu <casouri@gmail.com>
>> Date: Thu, 12 May 2022 15:52:14 -0700
>> Cc: Lars Ingebrigtsen <larsi@gnus.org>,
>> josh@berdine.net,
>> 19080@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




^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords
  2022-05-14  5:05         ` Yuan Fu
@ 2022-05-14  8:00           ` Visuwesh
  0 siblings, 0 replies; 8+ messages in thread
From: Visuwesh @ 2022-05-14  8:00 UTC (permalink / raw)
  To: Yuan Fu; +Cc: 19080, Eli Zaretskii, larsi, josh

[வெள்ளி மே 13, 2022] Yuan Fu wrote:

>> On May 12, 2022, at 10:52 PM, Eli Zaretskii <eliz@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





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2022-05-14  8:00 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-11-17 11:34 bug#19080: 24.4; wish: enable show-paren-mode to highlight matching same-level keywords Josh Berdine
2022-05-12  1:44 ` Lars Ingebrigtsen
2022-05-12  5:36   ` Eli Zaretskii
2022-05-12 22:52     ` Yuan Fu
2022-05-13  5:52       ` Eli Zaretskii
2022-05-13 11:48         ` Josh Berdine
2022-05-14  5:05         ` Yuan Fu
2022-05-14  8:00           ` Visuwesh

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).