From debbugs-submit-bounces@debbugs.gnu.org Mon May 13 22:50:12 2013 Received: (at submit) by debbugs.gnu.org; 14 May 2013 02:50:12 +0000 Received: from localhost ([127.0.0.1]:39223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Uc5Jb-0006nJ-BF for submit@debbugs.gnu.org; Mon, 13 May 2013 22:50:12 -0400 Received: from eggs.gnu.org ([208.118.235.92]:52865) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Uc5JW-0006n2-To for submit@debbugs.gnu.org; Mon, 13 May 2013 22:50:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uc5J1-0002H5-BK for submit@debbugs.gnu.org; Mon, 13 May 2013 22:49:36 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-102.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,T_DKIM_INVALID,USER_IN_WHITELIST autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([208.118.235.17]:59271) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uc5J1-0002H1-7q for submit@debbugs.gnu.org; Mon, 13 May 2013 22:49:35 -0400 Received: from eggs.gnu.org ([208.118.235.92]:35991) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uc5J0-00009z-5f for bug-gnu-emacs@gnu.org; Mon, 13 May 2013 22:49:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uc5Iy-0002FL-Uv for bug-gnu-emacs@gnu.org; Mon, 13 May 2013 22:49:34 -0400 Received: from mail-pa0-f48.google.com ([209.85.220.48]:39738) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uc5Iy-0002EP-Ih for bug-gnu-emacs@gnu.org; Mon, 13 May 2013 22:49:32 -0400 Received: by mail-pa0-f48.google.com with SMTP id kp6so95082pab.7 for ; Mon, 13 May 2013 19:49:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:subject:x-debbugs-cc:date:message-id :mime-version:content-type; bh=JrrxiLu+dl3gN8PcoYIw+jTzOi9uDloBDAEz6Bsgm6g=; b=vAoQOictJKUdlECsHV61+u6e5WSEpRzh/yRNUA0+MvcE/be2WmgWRyRs/9CNcMKpo2 G6THnfeWSHL+5vWwJ1wjDhr35PwUAGT2Jb1citk2ymNTuwnSbkqpLrDedYqYA0R+OIKh B5dcwYFzyzWi339cSOJwixfJ1g7USgx3KVBNfqLrm9Tk5bTbuL5BWBH94iWqYXdGE17A /tcem7PCMQ9UK32frxVW7yhzN05wIbCM9+Uy1/OZ1eqGIKpSkrw0c+DwhV5OZORAU2gM EK4Smrkq6aRcCiWvtRJOV2FzvivwL68BSjZyVPKgPAOW6tZXYoOzuBpIYKJobq1pxKyQ ppYg== X-Received: by 10.68.200.10 with SMTP id jo10mr32101420pbc.53.1368499771626; Mon, 13 May 2013 19:49:31 -0700 (PDT) Received: from Zeuss-MacBook.local (li511-224.members.linode.com. [66.175.216.224]) by mx.google.com with ESMTPSA id wp6sm16155672pbc.29.2013.05.13.19.49.27 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 13 May 2013 19:49:30 -0700 (PDT) From: Leo Liu To: bug-gnu-emacs@gnu.org Subject: 24.3; [PATCH] new feature smie-highlight-matching-block X-Debbugs-CC: Stefan Monnier Date: Tue, 14 May 2013 10:49:20 +0800 Message-ID: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 208.118.235.17 X-Spam-Score: -6.1 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.1 (------) --=-=-= Content-Type: text/plain Hi Stefan, I want something for octave mode that looks like something in the attached screenshot. But since this is generic I would like to put it in smie.el. Do you have any objections or comments? It doesn't make sense for this feature and smie-blink-matching-open to be on at the same time. So in the patch nothing is enabled. diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index bbdd9f83..ad23f78c 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -1021,6 +1021,61 @@ (defun smie-blink-matching-open () (let ((blink-matching-check-function #'smie-blink-matching-check)) (blink-matching-open)))))))) +(defface smie-matching-block-highlight (:inherit highlight) + "Face used to highlight matching block." + :group 'smie) + +(defvar-local smie-highlight-matching-block-overlay nil) +(defvar-local smie-highlight-matching-block-lastpos -1) + +(defun smie-highlight-matching-block () + (when (and (bound-and-true-p smie-closer-alist) + (/= (point) smie-highlight-matching-block-lastpos)) + (unless (overlayp smie-highlight-matching-block-overlay) + (setq smie-highlight-matching-block-overlay + (make-overlay (point) (point)))) + (setq smie-highlight-matching-block-lastpos (point)) + (let ((open-re (concat "\\_<" + (regexp-opt (mapcar 'car smie-closer-alist)) + "\\_>")) + (close-re (concat "\\_<" + (regexp-opt (mapcar 'cdr smie-closer-alist)) + "\\_>")) + (beg-of-tok + (lambda (re) + "Move to the beginning of current token if matching RE." + (or (looking-at-p re) + (let* ((start (point)) + (beg (progn + (funcall smie-backward-token-function) + (and (looking-at-p re) (point)))) + (end (and beg + (progn + (funcall smie-forward-token-function) + (point))))) + (if (and beg (<= beg start) (<= start end)) + (goto-char beg) + (goto-char start) + nil))))) + (highlight (lambda (beg end) + (move-overlay smie-highlight-matching-block-overlay + beg end) + (overlay-put smie-highlight-matching-block-overlay + 'face 'smie-matching-block-highlight)))) + (save-excursion + (cond + ((funcall beg-of-tok open-re) + (with-demoted-errors + (forward-sexp 1) + (when (looking-back close-re) + (funcall highlight (match-beginning 0) (match-end 0))))) + ((funcall beg-of-tok close-re) + (funcall smie-forward-token-function) + (forward-sexp -1) + (when (looking-at open-re) + (funcall highlight (match-beginning 0) (match-end 0)))) + (t (overlay-put smie-highlight-matching-block-overlay 'face nil))))))) + ;;; The indentation engine. (defcustom smie-indent-basic 4 --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=smie-highlight.png Content-Transfer-Encoding: base64 Content-Description: smie-highlight.png iVBORw0KGgoAAAANSUhEUgAAAIMAAAA0CAIAAAAmMBz8AAAntWlDQ1BJQ0MgUHJvZmlsZQAAaAWt mnVUVO/b7vd0MEMM3d3dIN3djaB0lzQCIoiggIKISIkCAhICioQICEg3KKB0SKgoINJ1tt/ve973 d9Y657+zWTP7Zs+zHvbMs4fr/lzXBgBec8eAAB8oKQD4+gUHmmqpsljb2LKg5gAYAAcIABOAc3QO ClAxNtYH/p/b/iQA+fviR8G/c/0/h/3fXyBzcQ1yBgCIMfjyNZcgZ1+w7gRrbeeAwGAAgOLAmiMs OOBvLQLWFIHgCYK1+t/a/d/a+m/t9G/99+9TBJqbqoFjbgIAGufoGOgOANgU8DhLqLM7OA+2EgCQ BD8XTz8AIG0DABpFZw9HFwDgBYcAAr6+/n9rAbDmcfqPedz/o3Z0dPrvOR0d3f+7/ve9/J0GoFbX 0NdnsRCTEBUzYFFz9PF0CnQMdgVn/v+9+fqEgJ/fP9vfVcC5+lmYgfu/588AqAMagD74wwJYAGKA BCAKPhuAv6kBjoAP4Ak4AYFgFQy4Ai7BruHgZwMAav4BEYGe7h7BLCrgaroKsOj4OQsJsIiJiIoD f6+Nv2MAYPfzP2sOoUL/z7EAKgCQBdcFVvQ/x5zoAKABPD9azP8c4ygFABJwzepvOocEhv47H/zv DgFgARKAAqAFrzt2gAcQBM9WCpADlMF3oQsYAeaADXAFcAY8AF/wvMOAKCAWSACSgTTgEZADPAWK gBfAS+A10AA0A+1ANzAAjAITwAywCKwCP4BtYB84gUAgKAgeQg6hhTBDOCH8EDGIDEQRogHRh5hC bCAOEHeIHyQEEgW5BUmGpENyIAWQMsgryFtIO6QPMgb5AlmCfIP8hhxDYVAclALKCOWCCkNloCpQ Pag51B7qDr0GvQ6Nh96HZkELoZXQemg7dAA6AV2E/oDuwQAYEYwKxgoThMnA1GBGMFuYGywQdgOW BMuEFcKqYE2wHthH2CJsE3YER8LJ4SxwQbgcXBtuAXeGX4PfgKfAc+Av4PXwTvhH+BJ8G36OwCMY EPyISwgdhDXCHRGGSEBkIkoQdYguxARiFbGPRCKpkNxIaaQ20gbphYxEpiCfIKuRbcgx5ApyD4VC 0aL4UQooI5QjKhiVgMpGVaLeo8ZRq6hDNBGaGS2G1kTbov3QcehMdDm6FT2OXkefYEgxnJhLGCOM CyYCk4p5jmnCjGBWMSdYMiw3VgFrjvXCxmKzsFXYLuwsdpeIiIiNSJbIhMiT6CZRFlENUS/REtER joDjw6nh7HAhuPu4Ulwb7gtuF4/Hc+GV8bb4YPx9fBn+A34ef0hMTixErEPsQhxDnEtcTzxO/IsE Q8JJokJyheQ6SSZJLckIySYphpSLVI3UkfQGaS7pW9Ip0j0ycjJRMiMyX7IUsnKyPrINAorARdAg uBDiCUWED4QVchg5O7kauTP5LfLn5F3kqxRICm4KHQovimSKlxTDFNuUBEoJSkvKcMpcyhbKRSoY FReVDpUPVSrVa6pJqmNqRmoValfqu9RV1OPUBzT0NMo0rjRJNNU0EzTHtCy0GrTetA9oG2jn6OB0 fHQmdGF0+XRddJv0FPRy9M70SfSv6acZoAx8DKYMkQxFDIMMe4xMjFqMAYzZjB8YN5momJSZvJgy mFqZvjGTMysyezJnML9n/s5CyaLC4sOSxdLJss3KwKrNGsJawDrMesLGzWbBFsdWzTbHjmWXYXdj z2DvYN/mYOYw4IjiqOCY5sRwynB6cD7m7OE84OLmsuJK5Grg2uCm4dbhvs5dwT3Lg+dR4rnGU8jz iRfJK8PrzfuEd5QPyifJ58GXyzfCD+WX4vfkf8I/JoAQkBXwEygUmBLECaoIhgpWCC4JUQnpC8UJ NQj9EuYQthV+INwjfC4iKeIj8lxkRpQgqisaJ9ok+luMT8xZLFfskzheXFM8RrxRfEeCX8JVIl/i syS5pIFkomSH5JmUtFSgVJXUN2kOaQfpPOkpGQoZY5kUmV5ZhKyqbIxss+zRJalLwZdeX9qSE5Tz liuX25DnlneVfy6/osCm4KhQoLCoyKLooPhMcVGJVclRqVBpWZld2UW5RHldhVfFS6VS5ZeqiGqg ap3qgdoltWi1NnWYupZ6kvqwBkHDQiNHY16TTdNds0JzW0tSK1KrTRuhraf9QHtKh1HHWadMZ1tX Wjdat1MPp2eml6O3rM+nH6jfZAA10DV4aDBryGnoZ9hgBBjpGD00mjPmNr5m/M4EaWJskmuyZipq GmXaY0ZudtWs3GzfXNU81XzGgscixKLDksTSzrLM8sBK3SrdatFa2DraesCGzsbTptEWZWtpW2K7 d1nj8qPLq3aSdgl2k/bc9uH2fVforvhcablKctXxaq0DwsHKodzh1NHIsdBxz0nHKc9p21nN+bHz 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 pZO9JVsgIAkCBDPCdUIBoZewTU5NrkTuRn6fvJ58ngJFIUxhTXGTooxinOKEkoPSgDKM8hllP+Uf KiYqbapAqjyqHqrf1AzUWtSB1PnUfdR7NCw0+jThNM9pRmnOaHlpLWlv0daAJIelk6FzpXtI1063 Rc9Er08fSV9O/4UBzSDN4M6QydDNsM/IxWjFmMjYyPiNiY5JnymaqZppCeQ3TeZw5grmeRYyFg2W cJZKlkVWCpDdolhrWFfZ6NiM2OLZ3rL9Yudgt2VPZe9iP+UQ4/DgeAqqDZ5TnTOS8zXndy42Lluu dK5+bii3HHcQdyX3Kg8TjzXPA54BXjivIm8Eby3vTz4ePme+fL4vYFdixJ/M3yMAE1ASiBRoFPgj KCroB5LahhCXkLNQgdCCMKOwnXCO8BcRGhErkUyRCVFKUQvRR6ITYpRiFmKZYlPiNOI24rnisxJM Eg4ShRJfJbklPSUrJbekxKVCpZqkzqVVpROk+2VIZMxlsmXmZTlkPWWrZfcuyV2Ku9QnRyJnJZcv tyovKB8i36KAVDBUeAxyGa9ikGKzElLJWClXaVVZRDlSuVuFoHJFpVxlX1VNNVV1Vo1PLUytS51c 3VG9Rv1cw0AjT2NTU04zWXNGS0ArSmtIm0k7QLtdh1zHVadBF6trp1utB9Wz1CvTO9M30S/WPzYw NCgyODQ0NCwyPDIyMio2OjU2NS4zAUysTKpNkaZXTOvNiM3czd6b05hfM++34LCItpiyFLVMtly1 UrbKtdqzNrautEHZONu02tLZhtp+vCx8OeXyhp2GXaHdhb29fdMVmiuhVz5dFbuadvWXg4FDpSPW 0dOx14nbKdFpzVnTudgF4eLq0uXK6Xrbdc1N063UHe3u4d7nweeRDPKWgWe1F6lXoNdHb0nvTO9D H1ufZl8m35u+y37qfiX+aH8v/8EA4YAHAbvXLK81BtIHRgcuBqkGFQejgr1A0hIOeRDyJ9Qy9G0Y fVh02GK4avjzCFSEZ8TAdcHrqdd/R5pH1kVRR0VEzUQrROffAG44gpzFEXM7Zu0fzsL8N2ft3bK+ 1RzPEn8rfuO2/u1XCVQJkQmLiZqJFXcId8LvzN/VuFuZRJ50PWk5WSf5VQptSmzK93um997d57h/ 7/5+6tXUvjSxtLwHyAcBD6bTNdKrH9I+jH+4lWGb0fVI5FFuJjLzWubsY+3HtVlMWUlZ+9mO2UM5 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 Hf44Yj4yP0o8ajr6ecx0bHx887jmeOGE+ET+xPMk86Tj5OcpzakqSPwZp82nK2eYM+Ezc1Dv885a zxbPoaDiq547nsec5503nn8637rAXLBdyF2YXnhexFxkXLy4eHcxBKr/1l/+D3ITF/vbAgAQogbw 9rPMi4tdKwBAgTcCnk1dXJw0XFyclYBh8zQAtO3/e1/g38Gk4P2DzyJF9PXNhsho1P8e+c/tfwHa pBTKlzmDigAAAZxpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADx4OnhtcG1ldGEgeG1sbnM6eD0i YWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IlhNUCBDb3JlIDUuMS4yIj4KICAgPHJkZjpSREYgeG1s bnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICAg ICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0i aHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1l bnNpb24+MTMxPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGlt ZW5zaW9uPjUyPC9leGlmOlBpeGVsWURpbWVuc2lvbj4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+ CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CtMRUTgAAArqSURBVHgB7VsLUFNXGj5JbrhEIDwC iy8KLqLCaLC4DuqqU6BrYdRltuKuq3YqPpDVVbpttQNOcaUjFLXWuN0q3QduAe2MtgOuiMMUcGVr dSzSsC6wIgVUEBAC3JDcPG5y99wkkJDchJAbiFDOOHjuf87/OP93zn/O/e8JC8MwYFK8vLxMnqar E+cBhKEqFotFK4EkSVr6NNGaB5giYSo3MeWtCAEP4E9yzhSa0hnWFX0dXTgveLYvQzkvOLvTkMiv keyI0jur8YlTkagvSFiWtk1CHh4nKPqaq0tKb1ZU1tRh8wqvf7zE3TWQsZ2kdvuKKF9F48VIGK1Y 4c5cEQBwUQEQejttylgMuKX0o+S0KgBa6qpa5GqL5okiMEcisaIdw/GCRQAgIRtvYjjWfitRbz2h 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 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Tue May 14 12:03:17 2013 Received: (at 14395) by debbugs.gnu.org; 14 May 2013 16:03:17 +0000 Received: from localhost ([127.0.0.1]:40240 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcHh5-0008ND-KU for submit@debbugs.gnu.org; Tue, 14 May 2013 12:03:17 -0400 Received: from chene.dit.umontreal.ca ([132.204.246.20]:53831) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcHh2-0008Mm-IU for 14395@debbugs.gnu.org; Tue, 14 May 2013 12:03:13 -0400 Received: from faina.iro.umontreal.ca (lechon.iro.umontreal.ca [132.204.27.242]) by chene.dit.umontreal.ca (8.14.1/8.14.1) with ESMTP id r4EG2cIT005702; Tue, 14 May 2013 12:02:38 -0400 Received: by faina.iro.umontreal.ca (Postfix, from userid 20848) id 9168DB4161; Tue, 14 May 2013 12:02:38 -0400 (EDT) From: Stefan Monnier To: Leo Liu Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block Message-ID: References: Date: Tue, 14 May 2013 12:02:38 -0400 In-Reply-To: (Leo Liu's message of "Tue, 14 May 2013 10:49:20 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 1 Rules triggered RV4579=0 X-NAI-Spam-Version: 2.3.0.9362 : core <4579> : streams <960527> : uri <1419976> X-Spam-Score: -4.2 (----) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.2 (----) > I want something for octave mode that looks like something in the > attached screenshot. But since this is generic I would like to put it in > smie.el. Do you have any objections or comments? Looks like a good feature, thank you. > It doesn't make sense for this feature and smie-blink-matching-open to > be on at the same time. So in the patch nothing is enabled. I don't think enabling it in octave-mode makes sense: this is more like "blink-paren vs show-paren-mode", i.e. a personal preference. So the enabling/disabling should be done via code in smie.el. > + (when (and (bound-and-true-p smie-closer-alist) It's defvarred to nil, so don't test if it's boundp. > + (let ((open-re (concat "\\_<" > + (regexp-opt (mapcar 'car smie-closer-alist)) > + "\\_>")) > + (close-re (concat "\\_<" > + (regexp-opt (mapcar 'cdr smie-closer-alist)) > + "\\_>")) The string returned by smie-forward-token-function is usually the same as the representation of the token in the buffer, but not always. So the above is not strictly correct. Instead you want to call smie-for/backward-token-function and then compare the result via (r?assoc tok smie-closer-alist). > + ((funcall beg-of-tok open-re) > + (with-demoted-errors > + (forward-sexp 1) > + (when (looking-back close-re) > + (funcall highlight (match-beginning 0) (match-end 0))))) I think this should not use with-demoted-errors but instead should explicitly catch the scan-error and turn it into a message. After all, the user doesn't want to be thrown in the debugger just because his sexp is not properly closed yet. And also this way you can provide a much nicer error message. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed May 15 03:14:11 2013 Received: (at 14395) by debbugs.gnu.org; 15 May 2013 07:14:11 +0000 Received: from localhost ([127.0.0.1]:45176 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcVub-0004Iy-Ua for submit@debbugs.gnu.org; Wed, 15 May 2013 03:14:10 -0400 Received: from mail-da0-f49.google.com ([209.85.210.49]:42362) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcVuZ-0004I9-Ho for 14395@debbugs.gnu.org; Wed, 15 May 2013 03:14:09 -0400 Received: by mail-da0-f49.google.com with SMTP id p5so802868dak.36 for <14395@debbugs.gnu.org>; Wed, 15 May 2013 00:13:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=huqmSu1CtxGNsJUe54aeGLd3ipXLqrfh7V/qSjIYYJI=; b=IUtys5RccJOSDy1T2D16ZryE2qbqmKeIS1DGrWXYYsapSz5LOGYNYYVvG2unVkMM7m YrAPMclwSFcK2+b9JR5R9cxadiEIfYJ93cGWdbqae479QJNebNq8Pat+9JOxFE4f7oEe oqR3YGpVyP7UArQ9cNqoHdc9qDyARbN1CB3gUGDbS5uDP8JCuK03d+11FnBa4D7bohog RuHCbLkuZS9c/lfXZzJf16tW+qEMtVFODha40qcoK4TNQJNXVe/jg5tSYVmOqTzVyb/D yHoErzQkXzgzsL0tkb+rr8HGG3XEjMOAyATRTn3q++m3XFual5rpeLBQ9kdtQIQky1/n Hr0w== X-Received: by 10.68.251.201 with SMTP id zm9mr2929095pbc.135.1368602038098; Wed, 15 May 2013 00:13:58 -0700 (PDT) Received: from Zeuss-MacBook.local (li511-224.members.linode.com. [66.175.216.224]) by mx.google.com with ESMTPSA id qh4sm2200686pac.8.2013.05.15.00.13.54 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 15 May 2013 00:13:57 -0700 (PDT) From: Leo Liu To: Stefan Monnier Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAMFBMVEUaFRZLMy1dTENxVzKQ WiCrXQ97cmO/dSqSh3akjGTApXy5sJ7Sxo/Sz8Xo6eP9//xJbkruAAAAAWJLR0QAiAUdSAAAAAlw SFlzAAACxQAAAsUBidZ/7wAAAAd0SU1FB9cBBwMJOwHXewoAAAIBSURBVCjPVdNBiNNAFADQ6J4F x3hThHZBBC+WCFI8SS0iezRDcMHLHkLAg6gJH/fgYQ9xYlj2sLK4KHgqCgXFhda2Idmr4kkQPZQ0 nkQMbTypbMmMM2m7ZgYSmMef/5OZPwo7HFnx3uKPcmj0Dht1LWZJ+Hvr7dIFZXRUwl9VRTuuKDJ+ U44gjscknK4hhJaCkYRsWjmBtLqXlJAG2wipNe18OZJu1BBq1E8xafl4s6Jq2mUZGftU1y7CCxnp FVUDWJXx4C66BKBnErbuoaYNtoRTu6EZBsCbMn7W+5qOAR6WvxNOby9jHWC9hAf3n304CdiAByXs 3Nh9roLDkyb/sWV712vYwaLSAn8CPMHIAAzOPDKP2COAFm4Y4ODVWc6xG7KXsN7UeUJjjimx2uwd gCgNhr0i8C/xyCD5CiCKAMY3Bf5oDzx//w/fimscdcAZU2jv9sedx6+nYPPFIoWI/GK6QZ+EFGOR ErAjCnV3vPZ7XqlTIMbOLY7fLcvvmT7rXNWaGDexIY44N12TG2PDp7vqyl57dnCeuWwyNpnEURxk fTbDYeBnKRn4oejPYI4sH6WviBumEZ/GxX4X/x6EcURFZ7E071bjQGAxpcOAEOJuTiroDEea5Szv rVWLYfl7ZiQwSUToxrkux7OLixAWGz22+HIyWTRYcVfomOwvzusfjtVIGgLHf3MAAAAASUVORK5C YII= Date: Wed, 15 May 2013 15:13:49 +0800 In-Reply-To: (Stefan Monnier's message of "Tue, 14 May 2013 12:02:38 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (OS X 10.8.3) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) On 2013-05-15 00:02 +0800, Stefan Monnier wrote: > I don't think enabling it in octave-mode makes sense: this is more like > "blink-paren vs show-paren-mode", i.e. a personal preference. So the > enabling/disabling should be done via code in smie.el. > >> + (when (and (bound-and-true-p smie-closer-alist) > > It's defvarred to nil, so don't test if it's boundp. > >> + (let ((open-re (concat "\\_<" >> + (regexp-opt (mapcar 'car smie-closer-alist)) >> + "\\_>")) >> + (close-re (concat "\\_<" >> + (regexp-opt (mapcar 'cdr smie-closer-alist)) >> + "\\_>")) > > The string returned by smie-forward-token-function is usually the same > as the representation of the token in the buffer, but not always. > So the above is not strictly correct. > > Instead you want to call smie-for/backward-token-function and then > compare the result via (r?assoc tok smie-closer-alist). > >> + ((funcall beg-of-tok open-re) >> + (with-demoted-errors >> + (forward-sexp 1) >> + (when (looking-back close-re) >> + (funcall highlight (match-beginning 0) (match-end 0))))) > > I think this should not use with-demoted-errors but instead should > explicitly catch the scan-error and turn it into a message. > After all, the user doesn't want to be thrown in the debugger just > because his sexp is not properly closed yet. And also this way you can > provide a much nicer error message. Thank you for your comments, Stefan. I have taken these into account and new patch attached. One thing in the patch that I dislike is having to forward-declare smie-highlight-matching-block-mode. Do you have a cleaner way? Leo === modified file 'lisp/emacs-lisp/smie.el' --- lisp/emacs-lisp/smie.el 2013-04-25 03:25:34 +0000 +++ lisp/emacs-lisp/smie.el 2013-05-15 07:03:02 +0000 @@ -966,12 +966,15 @@ (let ((starter (funcall smie-forward-token-function))) (not (member (cons starter ender) smie-closer-alist)))))))) +(defvar smie-highlight-matching-block-mode nil) ; Silence compiler warning + (defun smie-blink-matching-open () "Blink the matching opener when applicable. This uses SMIE's tables and is expected to be placed on `post-self-insert-hook'." (let ((pos (point)) ;Position after the close token. token) (when (and blink-matching-paren + (not smie-highlight-matching-block-mode) smie-closer-alist ; Optimization. (or (eq (char-before) last-command-event) ;; Sanity check. (save-excursion @@ -1021,6 +1024,80 @@ (let ((blink-matching-check-function #'smie-blink-matching-check)) (blink-matching-open)))))))) +(defface smie-matching-block-highlight '((t (:inherit highlight))) + "Face used to highlight matching block." + :group 'smie) + +(defvar smie-highlight-matching-block-timer nil) +(defvar-local smie-highlight-matching-block-overlay nil) +(defvar-local smie-highlight-matching-block-lastpos -1) + +(defun smie-highlight-matching-block () + (when (and smie-closer-alist + (/= (point) smie-highlight-matching-block-lastpos)) + (unless (overlayp smie-highlight-matching-block-overlay) + (setq smie-highlight-matching-block-overlay + (make-overlay (point) (point)))) + (setq smie-highlight-matching-block-lastpos (point)) + (let ((beg-of-tok + (lambda (&optional start) + "Move to the beginning of current token." + (let* ((token) + (start (or start (point))) + (beg (progn + (funcall smie-backward-token-function) + (point))) + (end (progn + (setq token (funcall smie-forward-token-function)) + (point)))) + (if (and (<= beg start) (<= start end) + (or (assoc token smie-closer-alist) + (rassoc token smie-closer-alist))) + (progn (goto-char beg) token) + (goto-char start) + nil)))) + (highlight (lambda (beg end) + (move-overlay smie-highlight-matching-block-overlay + beg end) + (overlay-put smie-highlight-matching-block-overlay + 'face 'smie-matching-block-highlight)))) + (save-excursion + (condition-case nil + (if (nth 8 (syntax-ppss)) + (overlay-put smie-highlight-matching-block-overlay 'face nil) + (let ((token + (or (funcall beg-of-tok) + (funcall beg-of-tok + (prog1 (point) + (funcall smie-forward-token-function)))))) + (cond + ((assoc token smie-closer-alist) ; opener + (forward-sexp 1) + (let ((end (point)) + (closer (funcall smie-backward-token-function))) + (when (rassoc closer smie-closer-alist) + (funcall highlight (point) end)))) + ((rassoc token smie-closer-alist) ; closer + (funcall smie-forward-token-function) + (forward-sexp -1) + (let ((beg (point)) + (opener (funcall smie-forward-token-function))) + (when (assoc opener smie-closer-alist) + (funcall highlight beg (point))))) + (t (overlay-put smie-highlight-matching-block-overlay + 'face nil))))) + (scan-error + (overlay-put smie-highlight-matching-block-overlay 'face nil))))))) + +;;;###autoload +(define-minor-mode smie-highlight-matching-block-mode nil + :global t :group 'smie + (if smie-highlight-matching-block-mode + (setq smie-highlight-matching-block-timer + (run-with-idle-timer 0.2 t #'smie-highlight-matching-block)) + (when (timerp smie-highlight-matching-block-timer) + (cancel-timer smie-highlight-matching-block-timer)))) + ;;; The indentation engine. (defcustom smie-indent-basic 4 From debbugs-submit-bounces@debbugs.gnu.org Wed May 15 22:32:06 2013 Received: (at 14395) by debbugs.gnu.org; 16 May 2013 02:32:06 +0000 Received: from localhost ([127.0.0.1]:46727 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcnzB-0003IF-HY for submit@debbugs.gnu.org; Wed, 15 May 2013 22:32:06 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:53731) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ucnz7-0003HM-BX for 14395@debbugs.gnu.org; Wed, 15 May 2013 22:32:02 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDh8HEhQYDSSIHgbBLY1VgzUDpHqBXoMTgUoE X-IPAS-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDh8HEhQYDSSIHgbBLY1VgzUDpHqBXoMTgUoE X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="12564964" Received: from 184-175-6-252.dsl.teksavvy.com (HELO fmsmemgm.homelinux.net) ([184.175.6.252]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 15 May 2013 22:31:43 -0400 Received: by fmsmemgm.homelinux.net (Postfix, from userid 20848) id 45FFEAE182; Wed, 15 May 2013 22:31:47 -0400 (EDT) From: Stefan Monnier To: Leo Liu Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block Message-ID: References: Date: Wed, 15 May 2013 22:31:47 -0400 In-Reply-To: (Leo Liu's message of "Wed, 15 May 2013 15:13:49 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > Thank you for your comments, Stefan. I have taken these into account and > new patch attached. See below. > One thing in the patch that I dislike is having to forward-declare > smie-highlight-matching-block-mode. Do you have a cleaner way? Move the define-minor-mode before the first use of the variable? > +(defvar smie-highlight-matching-block-mode nil) ; Silence compiler warning A forward declaration takes the form (defvar foo), not (defvar foo nil). > (defun smie-blink-matching-open () > "Blink the matching opener when applicable. > This uses SMIE's tables and is expected to be placed on `post-self-insert-hook'." > (let ((pos (point)) ;Position after the close token. > token) > (when (and blink-matching-paren > + (not smie-highlight-matching-block-mode) I suggest you instead remove smie-blink-matching-open from post-self-insert-hook (and refrain from adding it back) when enabling smie-highlight-matching-block-mode. > +(defvar smie-highlight-matching-block-timer nil) > +(defvar-local smie-highlight-matching-block-overlay nil) > +(defvar-local smie-highlight-matching-block-lastpos -1) Please use the "smie--" prefix for such internal variables. > +(define-minor-mode smie-highlight-matching-block-mode nil Please provide a docstring. > + :global t :group 'smie Don't bother with the ":group 'smie", it'll be added automatically anyway. > + (if smie-highlight-matching-block-mode > + (setq smie-highlight-matching-block-timer > + (run-with-idle-timer 0.2 t #'smie-highlight-matching-block)) > + (when (timerp smie-highlight-matching-block-timer) > + (cancel-timer smie-highlight-matching-block-timer)))) (progn (smie-highlight-matching-block-mode 1) (smie-highlight-matching-block-mode 1)) Will start 2 timers (and lose the reference to the first one, making it harder to cancel). Better structure minor mode bodies as "first unconditionally turn it off, then turn it on is needed" to avoid such problems. Similarly (progn (smie-highlight-matching-block-mode -1) (smie-highlight-matching-block-mode -1)) will try to cancel an already canceled timer, so better reset the timer var to nil after canceling. Stefan From debbugs-submit-bounces@debbugs.gnu.org Wed May 15 23:28:00 2013 Received: (at 14395) by debbugs.gnu.org; 16 May 2013 03:28:00 +0000 Received: from localhost ([127.0.0.1]:46769 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcorH-0005UR-Ph for submit@debbugs.gnu.org; Wed, 15 May 2013 23:28:00 -0400 Received: from mail-da0-f45.google.com ([209.85.210.45]:50677) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcorE-0005UE-5r for 14395@debbugs.gnu.org; Wed, 15 May 2013 23:27:57 -0400 Received: by mail-da0-f45.google.com with SMTP id w3so1369460dad.32 for <14395@debbugs.gnu.org>; Wed, 15 May 2013 20:27:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=7emrrDvKl7TfB7lwTaRhT0SilRwJP4asMMsCaIjPzCE=; b=z4gh+uS5hqjPvF/ErGSypsfRwyiybluMJnvREBncbJbKxzOAo+nL7ykN8yOofpVlsa XX7phVxqTzK/PrzDYKEf7/h9GmRawhbqDxApKSZXxVMs3kY3kpXPx7WSw8HMG1fFwYmd s9M6FiBNnTw/vv/wQt6Xn7DHeMk1Y8znLQ+VgSdTRvYL/Uy41AkEradthWuCzrmNzfIg EUBeYaYSD6+oQy+3fGZzpGQZEM2rgZcRFxRhnSdpT7ygQyazEUBXe/zE9YBWrqb88GYA JOOYruf0gM8eEgNbnkEMxyTee0+Eiha//+0YIevi2yb2gdo15WFaJ92X9BnC0C4k6Lr+ ISjw== X-Received: by 10.66.27.99 with SMTP id s3mr42235681pag.73.1368674862048; Wed, 15 May 2013 20:27:42 -0700 (PDT) Received: from Zeuss-MacBook.local (li511-224.members.linode.com. [66.175.216.224]) by mx.google.com with ESMTPSA id uv1sm4993853pbc.16.2013.05.15.20.27.38 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 15 May 2013 20:27:41 -0700 (PDT) From: Leo Liu To: Stefan Monnier Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block References: Face: iVBORw0KGgoAAAANSUhEUgAAACkAAAApAQAAAACAGz1bAAABKElEQVQYlWNg3NIt5FDPUPt7 4+X79Qyucz5/ugik+L2PBgKpyphaIK921q23QDnG0NBQoMr/vaWl9f8ZLL78uPv5PwN7RETfzXoG jhmFz27XM0RXmpuY/WfY+fv0Mc56BvFybfXA/wwL5t/wF61n2PU59axXPcOVzbmSW/8zrNt1benC /ww70hqUU/4zKCtrT9jwn8FhwynbufUMendE2aLqGRpdX9al1zM8eh17lKeeQcTMrdD5P8P3j/YT Q/8zXHSb7p1Qz/C4OM2JuZ7hgtI7K6AjqsMnf8j4z8C6xG1tw3+GqpqvsVn/GTzmpD9j/8/wP/oZ S/l/Bka+QO/g/wy15ueeFQL9N1O8mPU/g+umV3t1gdT0/1bTgHLqYVeXAlWKpMWt+w8Az82C9nHf X0cAAAAASUVORK5CYII= Date: Thu, 16 May 2013 11:27:31 +0800 In-Reply-To: (Stefan Monnier's message of "Wed, 15 May 2013 22:31:47 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (OS X 10.8.3) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) On 2013-05-16 10:31 +0800, Stefan Monnier wrote: >> +(define-minor-mode smie-highlight-matching-block-mode nil > > Please provide a docstring. Is the automatically-provided docstring good enough? New patch as follows. diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index bbdd9f83..de91c21f 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -1021,6 +1021,85 @@ (defun smie-blink-matching-open () (let ((blink-matching-check-function #'smie-blink-matching-check)) (blink-matching-open)))))))) +(defface smie-matching-block-highlight '((t (:inherit highlight))) + "Face used to highlight matching block." + :group 'smie) + +(defvar-local smie--highlight-matching-block-overlay nil) +(defvar-local smie--highlight-matching-block-lastpos -1) + +(defun smie-highlight-matching-block () + (when (and smie-closer-alist + (/= (point) smie--highlight-matching-block-lastpos)) + (unless (overlayp smie--highlight-matching-block-overlay) + (setq smie--highlight-matching-block-overlay + (make-overlay (point) (point)))) + (setq smie--highlight-matching-block-lastpos (point)) + (let ((beg-of-tok + (lambda (&optional start) + "Move to the beginning of current token at START." + (let* ((token) + (start (or start (point))) + (beg (progn + (funcall smie-backward-token-function) + (forward-comment (point-max)) + (point))) + (end (progn + (setq token (funcall smie-forward-token-function)) + (forward-comment (- (point))) + (point)))) + (if (and (<= beg start) (<= start end) + (or (assoc token smie-closer-alist) + (rassoc token smie-closer-alist))) + (progn (goto-char beg) token) + (goto-char start) + nil)))) + (highlight + (lambda (beg end) + (move-overlay smie--highlight-matching-block-overlay beg end) + (overlay-put smie--highlight-matching-block-overlay + 'face 'smie-matching-block-highlight)))) + (save-excursion + (condition-case nil + (if (nth 8 (syntax-ppss)) + (overlay-put smie--highlight-matching-block-overlay 'face nil) + (let ((token + (or (funcall beg-of-tok) + (funcall beg-of-tok + (prog1 (point) + (funcall smie-forward-token-function)))))) + (cond + ((assoc token smie-closer-alist) ; opener + (forward-sexp 1) + (let ((end (point)) + (closer (funcall smie-backward-token-function))) + (when (rassoc closer smie-closer-alist) + (funcall highlight (point) end)))) + ((rassoc token smie-closer-alist) ; closer + (funcall smie-forward-token-function) + (forward-sexp -1) + (let ((beg (point)) + (opener (funcall smie-forward-token-function))) + (when (assoc opener smie-closer-alist) + (funcall highlight beg (point))))) + (t (overlay-put smie--highlight-matching-block-overlay + 'face nil))))) + (scan-error + (overlay-put smie--highlight-matching-block-overlay 'face nil))))))) + +(defvar smie--highlight-matching-block-timer nil) + +;;;###autoload +(define-minor-mode smie-highlight-matching-block-mode nil :global t + (when (timerp smie--highlight-matching-block-timer) + (cancel-timer smie--highlight-matching-block-timer)) + (if smie-highlight-matching-block-mode + (setq smie--highlight-matching-block-timer + (run-with-idle-timer 0.2 t #'smie-highlight-matching-block)) + (when (timerp smie--highlight-matching-block-timer) + (cancel-timer smie--highlight-matching-block-timer)) + (setq smie--highlight-matching-block-timer nil))) + ;;; The indentation engine. (defcustom smie-indent-basic 4 @@ -1698,8 +1777,11 @@ (defun smie-setup (grammar rules-function &rest keywords) ;; Only needed for interactive calls to blink-matching-open. (set (make-local-variable 'blink-matching-check-function) #'smie-blink-matching-check) - (add-hook 'post-self-insert-hook - #'smie-blink-matching-open 'append 'local) + (if smie-highlight-matching-block-mode + (remove-hook 'post-self-insert-hook + #'smie-blink-matching-open 'local) + (add-hook 'post-self-insert-hook + #'smie-blink-matching-open 'append 'local)) (set (make-local-variable 'smie-blink-matching-triggers) (append smie-blink-matching-triggers ;; Rather than wait for SPC to blink, try to blink as From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 00:45:53 2013 Received: (at 14395) by debbugs.gnu.org; 16 May 2013 04:45:53 +0000 Received: from localhost ([127.0.0.1]:46827 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ucq4e-000077-BC for submit@debbugs.gnu.org; Thu, 16 May 2013 00:45:52 -0400 Received: from fencepost.gnu.org ([208.118.235.10]:36692 ident=Debian-exim) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ucq4c-000070-OF for 14395@debbugs.gnu.org; Thu, 16 May 2013 00:45:51 -0400 Received: from rgm by fencepost.gnu.org with local (Exim 4.71) (envelope-from ) id 1Ucq4S-0004fB-SD; Thu, 16 May 2013 00:45:40 -0400 From: Glenn Morris To: Stefan Monnier Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block References: X-Spook: satellite imagery Marxist New World Order FTS2000 X-Ran: -tWQSUr~gV@XF`N+o?P`"4ZKby0C)*fC3(%Q|zyzJ`I X-Hue: green X-Debbugs-No-Ack: yes X-Attribution: GM Date: Thu, 16 May 2013 00:45:40 -0400 In-Reply-To: (Stefan Monnier's message of "Wed, 15 May 2013 22:31:47 -0400") Message-ID: User-Agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -6.1 (------) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org, Leo Liu X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -7.5 (-------) Stefan Monnier wrote: >> +(define-minor-mode smie-highlight-matching-block-mode nil >> + :global t :group 'smie > > Don't bother with the ":group 'smie", it'll be added automatically anyway. That would be preferable, but it doesn't work like that. Instead it will automatically use a totally-bogus "smie-highlight-matching-block" group. I just fixed a bunch of such problems. From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 01:34:11 2013 Received: (at 14395) by debbugs.gnu.org; 16 May 2013 05:34:11 +0000 Received: from localhost ([127.0.0.1]:46886 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcqpP-00026k-EP for submit@debbugs.gnu.org; Thu, 16 May 2013 01:34:11 -0400 Received: from mail-pb0-f46.google.com ([209.85.160.46]:47614) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcqpN-00026I-VZ for 14395@debbugs.gnu.org; Thu, 16 May 2013 01:34:10 -0400 Received: by mail-pb0-f46.google.com with SMTP id rq13so2004034pbb.19 for <14395@debbugs.gnu.org>; Wed, 15 May 2013 22:33:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=b/Is616nN7megYWiNpZ+KKqJyBR7wvdtywxqVqQ9OjE=; b=RjS2gyzjyQJpv2TANvlS99QHXIf1snO2ywfnPTOlIBMF3VEAqZPmutkdSEm9QcHsbl 5kxaLS5PTCzsf8VOFR4anIguN4MzTvpw+zsSaeaiHxbLzA1TwXrH0+HuRcOVtDRCfccT gSVYeR73dD3OexnyPBCFRtKchkDrgRFqrM3YN8a0BO9+jqkZvYuykMVY9419glne4LEv RY/TodecVss/96GIsFaDhxS8prWWGeTGQsg9WRNQwGpWwg3KISPXlbgrEx19wlIiFwJ/ t7FNmlMN+ZUiDizPu143s3964eHm8YZvpdSvcUzIv77mlZKP3efpoCeazcwaujRQ1yWn O/xQ== X-Received: by 10.68.139.33 with SMTP id qv1mr35625391pbb.93.1368682435105; Wed, 15 May 2013 22:33:55 -0700 (PDT) Received: from localhost (li511-224.members.linode.com. [66.175.216.224]) by mx.google.com with ESMTPSA id fn9sm6111205pab.2.2013.05.15.22.33.51 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 15 May 2013 22:33:54 -0700 (PDT) From: Leo Liu To: Glenn Morris Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block References: Face: iVBORw0KGgoAAAANSUhEUgAAACkAAAApAQAAAACAGz1bAAABKElEQVQYlWNg3NIt5FDPUPt7 4+X79Qyucz5/ugik+L2PBgKpyphaIK921q23QDnG0NBQoMr/vaWl9f8ZLL78uPv5PwN7RETfzXoG jhmFz27XM0RXmpuY/WfY+fv0Mc56BvFybfXA/wwL5t/wF61n2PU59axXPcOVzbmSW/8zrNt1benC /ww70hqUU/4zKCtrT9jwn8FhwynbufUMendE2aLqGRpdX9al1zM8eh17lKeeQcTMrdD5P8P3j/YT Q/8zXHSb7p1Qz/C4OM2JuZ7hgtI7K6AjqsMnf8j4z8C6xG1tw3+GqpqvsVn/GTzmpD9j/8/wP/oZ S/l/Bka+QO/g/wy15ueeFQL9N1O8mPU/g+umV3t1gdT0/1bTgHLqYVeXAlWKpMWt+w8Az82C9nHf X0cAAAAASUVORK5CYII= Date: Thu, 16 May 2013 13:33:45 +0800 In-Reply-To: (Glenn Morris's message of "Thu, 16 May 2013 00:45:40 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (OS X 10.8.3) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) On 2013-05-16 12:45 +0800, Glenn Morris wrote: > That would be preferable, but it doesn't work like that. > Instead it will automatically use a totally-bogus > "smie-highlight-matching-block" group. Good catch. I have fixed it locally. Leo From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 09:24:28 2013 Received: (at 14395) by debbugs.gnu.org; 16 May 2013 13:24:28 +0000 Received: from localhost ([127.0.0.1]:47180 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcyAV-0003vm-Cw for submit@debbugs.gnu.org; Thu, 16 May 2013 09:24:27 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:11229) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UcyAT-0003vS-BF for 14395@debbugs.gnu.org; Thu, 16 May 2013 09:24:25 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IfAQVWIxALDiYSFBgNJIgkwS2RCgOkeoFegxM X-IPAS-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IfAQVWIxALDiYSFBgNJIgkwS2RCgOkeoFegxM X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="12845902" Received: from 184-175-6-252.dsl.teksavvy.com (HELO pastel.home) ([184.175.6.252]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 16 May 2013 09:24:04 -0400 Received: by pastel.home (Postfix, from userid 20848) id E13D5630F3; Thu, 16 May 2013 09:24:08 -0400 (EDT) From: Stefan Monnier To: Leo Liu Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block Message-ID: References: Date: Thu, 16 May 2013 09:24:08 -0400 In-Reply-To: (Leo Liu's message of "Thu, 16 May 2013 11:27:31 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) >>> +(define-minor-mode smie-highlight-matching-block-mode nil >> Please provide a docstring. > Is the automatically-provided docstring good enough? Oh, right, I guess it is, sorry I forgot that I tried to make define-minor-mode DTRT. > +(define-minor-mode smie-highlight-matching-block-mode nil :global t > + (when (timerp smie--highlight-matching-block-timer) > + (cancel-timer smie--highlight-matching-block-timer)) > + (if smie-highlight-matching-block-mode > + (setq smie--highlight-matching-block-timer > + (run-with-idle-timer 0.2 t #'smie-highlight-matching-block)) > + (when (timerp smie--highlight-matching-block-timer) > + (cancel-timer smie--highlight-matching-block-timer)) > + (setq smie--highlight-matching-block-timer nil))) No, need to "cancel" twice when disabling the mode. > - (add-hook 'post-self-insert-hook > - #'smie-blink-matching-open 'append 'local) > + (if smie-highlight-matching-block-mode > + (remove-hook 'post-self-insert-hook > + #'smie-blink-matching-open 'local) > + (add-hook 'post-self-insert-hook > + #'smie-blink-matching-open 'append 'local)) I think the `remove-hook' should be done within the body of the smie-highlight-matching-block-mode minor mode rather than here. In here, you just need to wrap the add-hook within a test of smie-highlight-matching-block-mode. BTW. Is there a non-SMIE version of "highlight-matching-block-mode", which does it for parentheses? If yes, maybe smie-highlight-matching-block-mode should integrate into it. One more thought, maybe you were right that futzing around with add/remove-hook is too complicated and it's easier to check a variable. But then maybe smie-highlight-matching-block-mode should set blink-matching-paren to nil (which brings us back to whether there's a global highlight-matching-block-mode working not just for modes using SMIE). Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 12:06:56 2013 Received: (at 14395) by debbugs.gnu.org; 16 May 2013 16:06:56 +0000 Received: from localhost ([127.0.0.1]:47569 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud0hh-0001xs-Gi for submit@debbugs.gnu.org; Thu, 16 May 2013 12:06:55 -0400 Received: from mail-pb0-f45.google.com ([209.85.160.45]:48324) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud0hf-0001xe-1U for 14395@debbugs.gnu.org; Thu, 16 May 2013 12:06:52 -0400 Received: by mail-pb0-f45.google.com with SMTP id mc8so2454159pbc.18 for <14395@debbugs.gnu.org>; Thu, 16 May 2013 09:06:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=X1Oei4pbv47ell/5Ye1+JVK/zGtS2/lC96S5n6Kll2A=; b=JU6npMtet7AMVhDilSkjHX5oXsdrfwc5/TGJ85XRDIFT/PSqW2kHK7pZRKA0C1QOzT 3on6DWhP7ualowuhEyNlxDEanguxrYOjyXakI7P8vzhKvuEVRHNtNRFFLXg6vyNhSDXt Yr14XD/IWruCEfspo5rrZzXLUi18AlnhjxpX5maoHH8nhvzw/x4TWVGBMGHlxDIOrL8n fEBYcxUEKjrzrrcwOzbc3+P8qvjxaOrw/7/s6/ey/5uoRGz0t58hQ13ITfZ+S9j5tBhs yHBqfaYBVHj7KbE5XQR35Tn31mlgld8jR7wm+OM5SosFfG6+xMw7L30zpt117nl4Q1hu 3Zzg== X-Received: by 10.68.89.36 with SMTP id bl4mr43658093pbb.59.1368720393904; Thu, 16 May 2013 09:06:33 -0700 (PDT) Received: from Zeuss-MacBook.local ([119.161.133.157]) by mx.google.com with ESMTPSA id b7sm7281284pba.39.2013.05.16.09.06.31 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 16 May 2013 09:06:33 -0700 (PDT) From: Leo Liu To: Stefan Monnier Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAG1BMVEUAAAA9Cgm3Hx1WWFWA gn+WmJWsrqv4+vcCAwCRl2MkAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAYoA AAGKATOXMFgAAAAHdElNRQfXAQwDNR+ZJmElAAABIklEQVQoz22SPW+DQAyGWUq65qasd9PNUSX4 AZHK2C1rJy5jpDS4IwRVup9dn7GNafpKIPPgzztXFSujqq1eM2n8h22oMkvxI/i9C97kRfMRUN55 dS3BrsAwBXUtMLAO4lryh8kTjOxKpQNniNxAgZOEe4bZwsDTFhKdqZRLNII4OQNHhEuq/RMkm6Cj TnnEA/fk0BorcYn5qA3oaeAxbaBOLrX+9G48NZ2Fzc2tzDM8Q+tMypEOqYHh8mAWaaK3U/cDMOT5 aMZMABgPXc7zPMs1A8DXO756GFJ/4fMEq47hTsAdn5avoxZ4ywl0c2w4Flu2Ybeyb3S+EqxX2DYA H8veJGEDTnHnrXvRaPyt+2kSfK6rfBZ2tUtfP/mR+pR6sX8BUZ/cDV7tvkoAAAAASUVORK5CYII= Date: Fri, 17 May 2013 00:06:23 +0800 In-Reply-To: (Stefan Monnier's message of "Thu, 16 May 2013 09:24:08 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (OS X 10.8.3) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) On 2013-05-16 21:24 +0800, Stefan Monnier wrote: > I think the `remove-hook' should be done within the body of the > smie-highlight-matching-block-mode minor mode rather than here. > In here, you just need to wrap the add-hook within a test of > smie-highlight-matching-block-mode. But the post insert hook is buffer-local. Seems too much trouble to find all of them and remove-hook. > BTW. Is there a non-SMIE version of "highlight-matching-block-mode", > which does it for parentheses? If yes, maybe > smie-highlight-matching-block-mode should integrate into it. I am not sure there is. > One more thought, maybe you were right that futzing around with > add/remove-hook is too complicated and it's easier to check a variable. > But then maybe smie-highlight-matching-block-mode should set > blink-matching-paren to nil (which brings us back to whether there's > a global highlight-matching-block-mode working not just for modes using > SMIE). Maybe checking smie-highlight-matching-block-mode in smie-blink-matching-open is the better solution because post-self-insert-hook is buffer-local. Leo From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 13:51:40 2013 Received: (at 14395) by debbugs.gnu.org; 16 May 2013 17:51:40 +0000 Received: from localhost ([127.0.0.1]:47687 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud2L1-0005lo-Sg for submit@debbugs.gnu.org; Thu, 16 May 2013 13:51:40 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:65333) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud2Kv-0005lW-Sw for 14395@debbugs.gnu.org; Thu, 16 May 2013 13:51:34 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJC6HcAbBLZEKA6R6gV6DEw X-IPAS-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJC6HcAbBLZEKA6R6gV6DEw X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="12980637" Received: from 184-175-6-252.dsl.teksavvy.com (HELO pastel.home) ([184.175.6.252]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 16 May 2013 13:51:08 -0400 Received: by pastel.home (Postfix, from userid 20848) id 8554663364; Thu, 16 May 2013 13:51:12 -0400 (EDT) From: Stefan Monnier To: Leo Liu Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block Message-ID: References: Date: Thu, 16 May 2013 13:51:12 -0400 In-Reply-To: (Leo Liu's message of "Fri, 17 May 2013 00:06:23 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) >> I think the `remove-hook' should be done within the body of the >> smie-highlight-matching-block-mode minor mode rather than here. >> In here, you just need to wrap the add-hook within a test of >> smie-highlight-matching-block-mode. > But the post insert hook is buffer-local. I know, but removing it where you remove it has mostly no effect (it's normally run from a major-mode body, so all the vars have been set back to their global value). > Seems too much trouble to find all of them and remove-hook. That's fine. But doing it where you currently do it is a waste. >> BTW. Is there a non-SMIE version of "highlight-matching-block-mode", >> which does it for parentheses? If yes, maybe >> smie-highlight-matching-block-mode should integrate into it. > I am not sure there is. Doesn't show-paren-mode do that? >> One more thought, maybe you were right that futzing around with >> add/remove-hook is too complicated and it's easier to check a variable. >> But then maybe smie-highlight-matching-block-mode should set >> blink-matching-paren to nil (which brings us back to whether there's >> a global highlight-matching-block-mode working not just for modes using >> SMIE). > Maybe checking smie-highlight-matching-block-mode in > smie-blink-matching-open is the better solution because > post-self-insert-hook is buffer-local. OK. BTW, feel free to commit your current code in the mean time. Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 19:10:22 2013 Received: (at 14395-done) by debbugs.gnu.org; 16 May 2013 23:10:22 +0000 Received: from localhost ([127.0.0.1]:47984 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud7JS-00021A-Ue for submit@debbugs.gnu.org; Thu, 16 May 2013 19:10:22 -0400 Received: from mail-da0-f53.google.com ([209.85.210.53]:55304) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud7JO-00020Z-2d for 14395-done@debbugs.gnu.org; Thu, 16 May 2013 19:10:16 -0400 Received: by mail-da0-f53.google.com with SMTP id t11so1944310daj.40 for <14395-done@debbugs.gnu.org>; Thu, 16 May 2013 16:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=tvrRRqk+gFoelibGXH4l95XBsfd18oeo9pswiWs5yCg=; b=cBuVOFb1fJlQDEIfXk2B6z2LEPhuz3gW4l3Q9/jt+8eDgMgie7VHT/fkgdKa3Jrlut KszUIsffwR1TIdA6Q5WpQJ9BoDPHWt8ET8lAEjlS96cNfHCG8QhjHEDGRvmIBU+TdsIx Q6IWK0pabhZgdf6+H04iCPsun+eaYfB1kRoXUGOWqkFAqWxYSZ7fGi4Jftr0hkEAsIzr GT1rMqTC0dsfNvJnLEgcXqP60TUN07PatV9ifu+nXQesjLc1Y6ywjfintEEVyB+xxzZq viefdhyl2tDy96rtknn4lI5wzZFaPkJJ0fnAvdJqZvmkCY6q/kj69FimxgPKqbLKtBqc rrVA== X-Received: by 10.68.219.70 with SMTP id pm6mr41364174pbc.154.1368745795150; Thu, 16 May 2013 16:09:55 -0700 (PDT) Received: from Zeuss-MacBook.local (li511-224.members.linode.com. [66.175.216.224]) by mx.google.com with ESMTPSA id j10sm8478779pbh.23.2013.05.16.16.09.52 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 16 May 2013 16:09:54 -0700 (PDT) From: Leo Liu To: Stefan Monnier Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAG1BMVEUAAAA9Cgm3Hx1WWFWA gn+WmJWsrqv4+vcCAwCRl2MkAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAAAYoA AAGKATOXMFgAAAAHdElNRQfXAQwDNR+ZJmElAAABIklEQVQoz22SPW+DQAyGWUq65qasd9PNUSX4 AZHK2C1rJy5jpDS4IwRVup9dn7GNafpKIPPgzztXFSujqq1eM2n8h22oMkvxI/i9C97kRfMRUN55 dS3BrsAwBXUtMLAO4lryh8kTjOxKpQNniNxAgZOEe4bZwsDTFhKdqZRLNII4OQNHhEuq/RMkm6Cj TnnEA/fk0BorcYn5qA3oaeAxbaBOLrX+9G48NZ2Fzc2tzDM8Q+tMypEOqYHh8mAWaaK3U/cDMOT5 aMZMABgPXc7zPMs1A8DXO756GFJ/4fMEq47hTsAdn5avoxZ4ywl0c2w4Flu2Ybeyb3S+EqxX2DYA H8veJGEDTnHnrXvRaPyt+2kSfK6rfBZ2tUtfP/mR+pR6sX8BUZ/cDV7tvkoAAAAASUVORK5CYII= Date: Fri, 17 May 2013 07:09:48 +0800 In-Reply-To: (Stefan Monnier's message of "Thu, 16 May 2013 13:51:12 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (OS X 10.8.3) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 14395-done Cc: 14395-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) Fixed in trunk. On 2013-05-17 01:51 +0800, Stefan Monnier wrote: > I know, but removing it where you remove it has mostly no effect (it's > normally run from a major-mode body, so all the vars have been set > back to their global value). OK, corrected as suggested. >> I am not sure there is. > > Doesn't show-paren-mode do that? I didn't do anything to integrate with show-paren-mode. Not sure what to do. There are packages outside emacs that replace show-paren-mode. > OK. > BTW, feel free to commit your current code in the mean time. OK, committed and thanks for all the help. Leo From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 20:41:01 2013 Received: (at 14395-done) by debbugs.gnu.org; 17 May 2013 00:41:01 +0000 Received: from localhost ([127.0.0.1]:48060 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud8jE-00058v-Qi for submit@debbugs.gnu.org; Thu, 16 May 2013 20:41:00 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:20666) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud8jC-00058h-8H for 14395-done@debbugs.gnu.org; Thu, 16 May 2013 20:40:58 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IeAQEEAVYjEAsOJhIUGA0kiB4GwS2RCgOkeoFegxM X-IPAS-Result: Av4EABK/CFG4rwb8/2dsb2JhbABEvw4Xc4IeAQEEAVYjEAsOJhIUGA0kiB4GwS2RCgOkeoFegxM X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="13147940" Received: from 184-175-6-252.dsl.teksavvy.com (HELO pastel.home) ([184.175.6.252]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 16 May 2013 20:40:35 -0400 Received: by pastel.home (Postfix, from userid 20848) id 465A26751E; Thu, 16 May 2013 20:40:39 -0400 (EDT) From: Stefan Monnier To: Leo Liu Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block Message-ID: References: Date: Thu, 16 May 2013 20:40:39 -0400 In-Reply-To: (Leo Liu's message of "Fri, 17 May 2013 07:09:48 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -1.9 (-) X-Debbugs-Envelope-To: 14395-done Cc: 14395-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) >> Doesn't show-paren-mode do that? > I didn't do anything to integrate with show-paren-mode. But in terms of functionality, your minor mode provides a behavior comparable to show-paren-mode, I think. So maybe the better thing to do now is to try and see how to integrate so that it "just works" for people who use show-paren-mode. Just like smie-blink-matching-open makes blink-matching-paren "just work". Stefan From debbugs-submit-bounces@debbugs.gnu.org Thu May 16 21:31:03 2013 Received: (at 14395) by debbugs.gnu.org; 17 May 2013 01:31:03 +0000 Received: from localhost ([127.0.0.1]:48091 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud9Vf-0006a0-AG for submit@debbugs.gnu.org; Thu, 16 May 2013 21:31:03 -0400 Received: from mail-pa0-f50.google.com ([209.85.220.50]:47599) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1Ud9Vd-0006ZM-C7 for 14395@debbugs.gnu.org; Thu, 16 May 2013 21:31:02 -0400 Received: by mail-pa0-f50.google.com with SMTP id fb10so3045585pad.9 for <14395@debbugs.gnu.org>; Thu, 16 May 2013 18:30:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=x-received:from:to:cc:subject:references:face:date:in-reply-to :message-id:user-agent:mime-version:content-type; bh=T6xi1SlUX2Kl8C7lz/ElNVlUCdJYAHkLv30O7kJ3xkk=; b=bZP0LwElO/fkMEW3dfUfxQ53eIfXoB4z+PxvDSTtjEM/qRYD6Pn8yqGY2QiK4bUwdZ ifrCVT5e1rPOUBD9LjaEbZgkvaQZETe+j54KCD5F8vijseB0tO5R5RW05y2SZ74v6XUa 4KNvwUYVBYCMn1USAdsnEd9Qzd0w6XjEYfP3uRHcXQNm6BFD4eRQYTR3EH9vf4ZnqniX eJaLSJHz1GOmQ1/VLq10jFLVSgCpQGuNOtK8x1l7w8HE/GouaQEuqUepQoG7FiLzAxB6 tXarR/jt7KA44xhOpUGgB7Jo4uG38YZnTExMu2PY2pu1VusCVSl6p4dJcdkbkd9JGvar q5TA== X-Received: by 10.66.250.131 with SMTP id zc3mr28095666pac.157.1368754242103; Thu, 16 May 2013 18:30:42 -0700 (PDT) Received: from localhost (li511-224.members.linode.com. [66.175.216.224]) by mx.google.com with ESMTPSA id xu10sm9813460pab.3.2013.05.16.18.30.39 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Thu, 16 May 2013 18:30:41 -0700 (PDT) From: Leo Liu To: Stefan Monnier Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block References: Face: iVBORw0KGgoAAAANSUhEUgAAACgAAAAoBAMAAAB+0KVeAAAAElBMVEUAAAAAAP+LRRP0pGC+ vr7///+7mT1iAAAAAWJLR0QAiAUdSAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9cBBwMO DhglKe4AAAEsSURBVCjPbZNBboQwDEV/Cd4X9QJRThApmn0XYW+Jyf2v0m+HhqDBgiAe9rcTG7QH w/1Vn2Ar8gBb/ocywSN3qK9T3z4eFDB4eApocBpeBs1RSykoJd8gQcm8pGmHXFso3ajnmsqV0TnY DQkOfXUfN5NwaI7AWTVOyEhcu1aHmdWItHddUVUcUgUBCkitu8V6ditHVOVdqzl2EQ1ZVGTbdK0V 7cqn8vWzoU5Q/bF9Y/Y0cRU1xwkys5dJ+Dt6pBDWifcNQml8Gh2JVmPSoQzo7en0grswkxrUGYJ7 0hSxxAGr7ZMwYcHIzprpi7TENEE1xtiYxixRlCfPBsUUrwHD7uGIwATrbnODJcVrPpVn3hxiGloe m/S+z3CtuzUSMo83N4DPH+F0evwR3P4A2k+75838OKQAAAAASUVORK5CYII= Date: Fri, 17 May 2013 09:30:34 +0800 In-Reply-To: (Stefan Monnier's message of "Thu, 16 May 2013 20:40:39 -0400") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3 (OS X 10.8.3) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.6 (--) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.6 (--) On 2013-05-17 08:40 +0800, Stefan Monnier wrote: > But in terms of functionality, your minor mode provides a behavior > comparable to show-paren-mode, I think. I agree. > So maybe the better thing to do now is to try and see how to integrate > so that it "just works" for people who use show-paren-mode. Just like > smie-blink-matching-open makes blink-matching-paren "just work". Would it be OK if we let show-paren-mode turn on smie-highlight-matching-block-mode? I just realised that it doesn't clean up the overlays when smie-highlight-matching-block-mode is turned off. Should I install something like this? An alternative fix might be not to make smie--highlight-matching-block-overlay buffer-local which is easier to clean up. diff --git a/lisp/emacs-lisp/smie.el b/lisp/emacs-lisp/smie.el index 21134578..3e78b76b 100644 --- a/lisp/emacs-lisp/smie.el +++ b/lisp/emacs-lisp/smie.el @@ -1095,10 +1095,17 @@ (define-minor-mode smie-highlight-matching-block-mode nil (when (timerp smie--highlight-matching-block-timer) (cancel-timer smie--highlight-matching-block-timer)) (setq smie--highlight-matching-block-timer nil) - (when smie-highlight-matching-block-mode - (remove-hook 'post-self-insert-hook #'smie-blink-matching-open 'local) - (setq smie--highlight-matching-block-timer - (run-with-idle-timer 0.2 t #'smie-highlight-matching-block)))) + (if smie-highlight-matching-block-mode + (progn + (remove-hook 'post-self-insert-hook #'smie-blink-matching-open 'local) + (setq smie--highlight-matching-block-timer + (run-with-idle-timer 0.2 t #'smie-highlight-matching-block))) + ;; Clean up. + (dolist (b (buffer-list)) + (with-current-buffer b + (when (overlayp smie--highlight-matching-block-overlay) + (delete-overlay smie--highlight-matching-block-overlay) + (kill-local-variable smie--highlight-matching-block-overlay)))))) ;;; The indentation engine. From debbugs-submit-bounces@debbugs.gnu.org Wed May 22 14:51:01 2013 Received: (at 14395) by debbugs.gnu.org; 22 May 2013 18:51:01 +0000 Received: from localhost ([127.0.0.1]:56638 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfE7p-0006fw-6J for submit@debbugs.gnu.org; Wed, 22 May 2013 14:51:01 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.182]:57333) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfE7m-0006fg-Ov for 14395@debbugs.gnu.org; Wed, 22 May 2013 14:50:59 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: Av4EABK/CFFFpZoF/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJIgeBsEtkQoDpHqBXoMT X-IPAS-Result: Av4EABK/CFFFpZoF/2dsb2JhbABEvw4Xc4IeAQEEAVYjBQsLDiYSFBgNJIgeBsEtkQoDpHqBXoMT X-IronPort-AV: E=Sophos;i="4.84,565,1355115600"; d="scan'208";a="14139828" Received: from 69-165-154-5.dsl.teksavvy.com (HELO ceviche.home) ([69.165.154.5]) by ironport2-out.teksavvy.com with ESMTP/TLS/ADH-AES256-SHA; 22 May 2013 14:50:02 -0400 Received: by ceviche.home (Postfix, from userid 20848) id D99CB66107; Wed, 22 May 2013 14:50:06 -0400 (EDT) From: Stefan Monnier To: Leo Liu Subject: Re: bug#14395: 24.3; [PATCH] new feature smie-highlight-matching-block Message-ID: References: Date: Wed, 22 May 2013 14:50:06 -0400 In-Reply-To: (Leo Liu's message of "Fri, 17 May 2013 09:30:34 +0800") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 14395 Cc: 14395@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -0.5 (/) > Would it be OK if we let show-paren-mode turn on > smie-highlight-matching-block-mode? I think so, yes. Even better would be to add some hook(s) to show-paren-mode, which smie-setup can use so that smie's highlighting (re)uses show-paren's code (e.g. so smie-highlight doesn't have its own timer nor its own overlay). That will also save us the trouble of disabling blink-paren, since blink-matching-open already checks show-paren-mode (which is slightly more refined than to just disable blink-matching-open when show-paren-mode is enabled). Stefan From unknown Mon Jun 23 20:18:27 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 20 Jun 2013 11:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator