Subject: bug#59345: closed (Re: bug#59345: 28.2; peg.el: syntax-class PEX does not advance point)

From: [email-masked] (GNU bug Tracking System)
Date: Tue, 29 Nov 2022 16:12:02 +0000

Your bug report

#59345: 28.2; peg.el: syntax-class PEX does not advance point

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
59345: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=59345
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#59345: 28.2; peg.el: syntax-class PEX does not advance point
From: Eric Abrahamsen <[email-masked]>
To: Michael Heerdegen <[email-masked]>
Cc: Sean Devlin <[email-masked]>, Helmut Eller <[email-masked]>, Stefan Monnier <[email-masked]>, [email-masked]
Date: Tue, 29 Nov 2022 08:11:21 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

On 11/29/22 10:46 AM, Michael Heerdegen wrote:
> Eric Abrahamsen <[email-masked]> writes:
>
>> I guess the fix would look like the attached?
>
> Looks also good to me.  And I tested and can confirm that the patch
> fixes the reported issue.

Thanks for testing! I've added this to peg-tests.el for good measure.
Bumped the version number and pushed, and now closing this bug report,
thanks to Sean for reporting.

Eric

Subject: 28.2; peg.el: syntax-class PEX does not advance point
From: Sean Devlin <[email-masked]>
To: [email-masked]
Date: Thu, 17 Nov 2022 18:49:20 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi folks,

In version 1.0 of peg.el, there is a PEX to match the syntax class of
the character at point. I expected it to advance the point after
recognizing the correct class, but it seems that it does not. I expected
its behavior to be similar to character classes, sets and ranges, and
all of these seem to advance the point. Instead, it seems it is more
like a guard expression.

To demonstrate this, you can evaluate the following forms:

(require 'peg)

(with-temp-buffer
  (save-excursion
    (insert " "))
  (list 
   (save-excursion
     (cons
      (peg-run (peg (syntax-class whitespace)))
      (point)))
   (save-excursion
     (cons
      (peg-run (peg " "))
      (point)))))

While both PEGs match the character at point, only the latter advances
the point.

This might just be a matter of documenting the behavior of the
syntax-class PEX, but I think it would make more sense if it behaved
like character classes, sets, ranges and literals.

Thanks!

In GNU Emacs 28.2
System Description:  macOS

Configured using:
'configure --disable-silent-rules
--enable-locallisppath=/opt/homebrew/share/emacs/site-lisp
--infodir=/opt/homebrew/Cellar/emacs/28.2/share/info/emacs
--prefix=/opt/homebrew/Cellar/emacs/28.2 --with-gnutls --without-x
--with-xml2 --without-dbus --with-modules --without-ns
--without-imagemagick --without-selinux'

Configured features:
ACL GMP GNUTLS JSON LIBXML2 MODULES NOTIFY KQUEUE PDUMPER THREADS ZLIB

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

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  show-paren-mode: t
  electric-indent-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
  indent-tabs-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow regexp-opt sort mail-extr emacsbug message rmc puny dired
dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config
gnus-util rmail tool-bar rmail-loaddefs auth-source cl-seq eieio
eieio-core cl-macs eieio-loaddefs password-cache json map
text-property-search time-date subr-x seq mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs cl-lib
sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils
term/xterm xterm byte-opt gv bytecomp byte-compile cconv iso-transl
tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode tabulated-list replace newcomment text-mode
lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch
easymenu timer select mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice
button loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads kqueue multi-tty
make-network-process emacs)

Memory information:
((conses 16 53226 5880)
(symbols 48 6605 1)
(strings 32 18480 957)
(string-bytes 1 607151)
(vectors 16 10649)
(vector-slots 8 126128 10593)
(floats 8 24 302)
(intervals 56 220 0)
(buffers 992 11))