From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Noam Postavsky Newsgroups: gmane.emacs.bugs Subject: bug#15998: 24.3; forward-sexp (scan-sexps) doesn't do well with some SEXPs Date: Sat, 06 Jul 2019 22:08:39 -0400 Message-ID: <875zoe4mvs.fsf@gmail.com> References: <6CEED119478A9shigeru.fukaya@gmail.com> <7CEEED1244961shigeru.fukaya@gmail.com> <8CEF00CAB165Bshigeru.fukaya@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="156183"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.2.90 (gnu/linux) Cc: Lars Ingebrigtsen , Shigeru Fukaya , 15998@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Jul 07 04:09:24 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1hjwcF-000eVJ-HD for geb-bug-gnu-emacs@m.gmane.org; Sun, 07 Jul 2019 04:09:23 +0200 Original-Received: from localhost ([::1]:33616 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hjwcE-0003KT-3O for geb-bug-gnu-emacs@m.gmane.org; Sat, 06 Jul 2019 22:09:22 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40110) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1hjwbw-0003K8-B1 for bug-gnu-emacs@gnu.org; Sat, 06 Jul 2019 22:09:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hjwbu-0008J2-D2 for bug-gnu-emacs@gnu.org; Sat, 06 Jul 2019 22:09:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:47218) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hjwbt-0008IY-Rr for bug-gnu-emacs@gnu.org; Sat, 06 Jul 2019 22:09:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1hjwbt-0003KX-KG for bug-gnu-emacs@gnu.org; Sat, 06 Jul 2019 22:09:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 07 Jul 2019 02:09:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 15998 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 15998-submit@debbugs.gnu.org id=B15998.156246533012784 (code B ref 15998); Sun, 07 Jul 2019 02:09:01 +0000 Original-Received: (at 15998) by debbugs.gnu.org; 7 Jul 2019 02:08:50 +0000 Original-Received: from localhost ([127.0.0.1]:56039 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hjwbi-0003K8-0e for submit@debbugs.gnu.org; Sat, 06 Jul 2019 22:08:50 -0400 Original-Received: from mail-io1-f53.google.com ([209.85.166.53]:34043) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1hjwbf-0003Ju-Ic for 15998@debbugs.gnu.org; Sat, 06 Jul 2019 22:08:48 -0400 Original-Received: by mail-io1-f53.google.com with SMTP id k8so27258707iot.1 for <15998@debbugs.gnu.org>; Sat, 06 Jul 2019 19:08:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=mHWk1eDo+1fbGJI5ROaWrVKTLWxoSNTQZ04YZhLruxw=; b=s+y5mNLKFvpEXJTA97N6MPsXa70mdt7mtWht5JF4nfl+MwiQKmEht3U2UXC262A86F 5/5pf5A+eMRjxdub9CeAAGJYTKZ/Vgr9a/L7Hg0ZXeif1zvqP29TM44YdKGRQFmOmvzJ ZcacpH9ENKOXrC8iFXEk/5BOUcohviEVAyKmPe27GCCSM/IMQY0y6sXXYEABFgzrznCw UnuPJyqLrZAyQOWFy3UL+rrdBpd4LFQp3emTubjQ+dLJSKrzykQhpGN9JiYOKk4Ge9cW 4acmudteJJYHMs14uzs2rhqiykhVZRCNrlEV4GQBe9DPSI57JJjLDvS9FBsVMaApLaM1 CXtQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=mHWk1eDo+1fbGJI5ROaWrVKTLWxoSNTQZ04YZhLruxw=; b=DzXDZv1iuCmfatIzir9Q+C/Gk/To29BwfBlq279oRRoq3YTtXqwGCFHsinXDnfqDHo UG0IVMmWGEb85Vxk9ZL4+NYR71Nbki4G81ty+5U33h5n1FYV1erIwu+ExWeKFuthylRo wp6eQBrHJTS4RNJZFVH6voSp9Li+pL6SPqSuFXuAl0yHWXDBhSGB2bO62dcCxs2CaVg9 X3CiWv0dXhWZ4OJlDSjPPjktlS8t0KPRfcPyK9azshKVBWoZqfkCFAyXXos9detBoL2E /JxfIRet2TB0HHR8wLJg9fr9zvuzgRbMb/01yXlRVYDp3Dft/UNAOcrCi2qLB4ABYHmO pCSw== X-Gm-Message-State: APjAAAUkUvSZTc5jpoI5HKHdpyWtWQd/iGQU47TJ/mUPYWAq3a6o7vRJ sT6Yw0qkisaTD9TXT3m5V4KTk7j2 X-Google-Smtp-Source: APXvYqxM07dL1mASJ/IbTPNCkEmPhosiBue4ZvF/CypztqUw5RxBXk65D6h9++Ms2OnwcfEYT2AdkA== X-Received: by 2002:a5d:9448:: with SMTP id x8mr12430076ior.102.1562465321468; Sat, 06 Jul 2019 19:08:41 -0700 (PDT) Original-Received: from minid (cbl-45-2-119-34.yyz.frontiernetworks.ca. [45.2.119.34]) by smtp.gmail.com with ESMTPSA id r5sm10981750iom.42.2019.07.06.19.08.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 06 Jul 2019 19:08:40 -0700 (PDT) In-Reply-To: (Stefan Monnier's message of "Wed, 26 Jun 2019 13:06:22 -0400") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:162266 Archived-At: --=-=-= Content-Type: text/plain Stefan Monnier writes: >> But do we want to implement a brand new forward-sexp just for Emacs Lisp? > > No, but I think syntax-propertize can take care of those things. The patch below seems to work, no new sexp movement commands needed? --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Handle-elisp-syntax-better-Bug-15998.patch Content-Description: patch >From 463f98c55ff7d6bde576a9538d3ae3a33a576cf5 Mon Sep 17 00:00:00 2001 From: Noam Postavsky Date: Sat, 6 Jul 2019 21:55:03 -0400 Subject: [PATCH] Handle elisp #-syntax better (Bug#15998) * elisp-mode.el (elisp-mode-syntax-propertize): New function. (emacs-lisp-mode): Set it as syntax-propertize-function. --- lisp/progmodes/elisp-mode.el | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index cb1b17b447..c86277a309 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el @@ -213,6 +213,20 @@ emacs-lisp-macroexpand (if (bolp) (delete-char -1)) (indent-region start (point))))) +(defun elisp-mode-syntax-propertize (start end) + (goto-char start) + (funcall + (syntax-propertize-rules + ("##" (0 (unless (nth 8 (syntax-ppss)) ; Empty symbol. + (string-to-syntax "_")))) + ((rx "#" (or (seq (group-n 1 (+ digit) "=")) ; Object label. + (seq (group-n 1 "&" (+ digit)) ?\") ; Bool-vector. + (seq (group-n 1 "s") "(") ; Record. + (seq (group-n 1 (+ "^")) "["))) ; Char-table. + (1 (unless (save-excursion (nth 8 (syntax-ppss (match-beginning 0)))) + (string-to-syntax "'"))))) + start end)) + (defcustom emacs-lisp-mode-hook nil "Hook run when entering Emacs Lisp mode." :options '(eldoc-mode imenu-add-menubar-index checkdoc-minor-mode) @@ -242,6 +256,7 @@ emacs-lisp-mode #'elisp-eldoc-documentation-function) (add-hook 'xref-backend-functions #'elisp--xref-backend nil t) (setq-local project-vc-external-roots-function #'elisp-load-path-roots) + (setq-local syntax-propertize-function #'elisp-mode-syntax-propertize) (add-hook 'completion-at-point-functions #'elisp-completion-at-point nil 'local) (add-hook 'flymake-diagnostic-functions #'elisp-flymake-checkdoc nil t) -- 2.11.0 --=-=-=--