bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#13973: Subject: 24.3; thingatpt.el, end-of-sexp


From: Andreas Röhler
Subject: bug#13973: Subject: 24.3; thingatpt.el, end-of-sexp
Date: Mon, 23 Aug 2021 19:11:45 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:78.0) Gecko/20100101 Thunderbird/78.13.0


On 23.08.21 03:09, Lars Ingebrigtsen wrote:
Andreas Röhler <andreas.roehler@easy-emacs.de> writes:

(defun end-of-sexp ()
   "Move point to the end of the current sexp.
\[This is an internal function.]"
   (let ((char-syntax (char-syntax (char-after))))
     (if (or (eq char-syntax ?\))
            (and (eq char-syntax ?\") (in-string-p)))
        (forward-char 1)
       (forward-sexp 1))))

"or" asks if inside a string and calls (forward-char 1).

This must fail with some probability with
triple-quoted-strings as used in Python.

Solution:

When inside a string, jump to (nth 8 (syntax-ppss)) and
call (forward-sexp 1) from there.
(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

It's not quite clear to me what the actual problem here is.

It's only abstract reasoning when looking at the code.

Maybe put the Python code below at the top of some buffer and run the test delivered below:

# Python

def main():
    """Some hint"""
    if len(sys.argv) == 1:
        usage()

;; Elisp
(defun forward-sexp-text ()
  (interactive)
  (goto-char 30 )
  (forward-sexp))


  Do you have
a test case where thingatpt does the wrong thing in Python mode?






reply via email to

[Prev in Thread] Current Thread [Next in Thread]